18c339a94Sopenharmony_ci/*
28c339a94Sopenharmony_ci* Copyright (c) 2022 Shenzhen Kaihong Digital Industry Development Co., Ltd. 
38c339a94Sopenharmony_ci* Licensed under the Apache License, Version 2.0 (the "License"); 
48c339a94Sopenharmony_ci* you may not use this file except in compliance with the License. 
58c339a94Sopenharmony_ci* You may obtain a copy of the License at 
68c339a94Sopenharmony_ci*
78c339a94Sopenharmony_ci* http://www.apache.org/licenses/LICENSE-2.0 
88c339a94Sopenharmony_ci*
98c339a94Sopenharmony_ci* Unless required by applicable law or agreed to in writing, software 
108c339a94Sopenharmony_ci* distributed under the License is distributed on an "AS IS" BASIS, 
118c339a94Sopenharmony_ci* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
128c339a94Sopenharmony_ci* See the License for the specific language governing permissions and 
138c339a94Sopenharmony_ci* limitations under the License. 
148c339a94Sopenharmony_ci*/
158c339a94Sopenharmony_ciimport { AsyncCallback, Callback } from './../basic';
168c339a94Sopenharmony_ci
178c339a94Sopenharmony_cideclare namespace napitest {
188c339a94Sopenharmony_ci    class ModelEvent{
198c339a94Sopenharmony_ci        topic: string;
208c339a94Sopenharmony_ci        message: string;
218c339a94Sopenharmony_ci    }
228c339a94Sopenharmony_ci
238c339a94Sopenharmony_ci    function on(type: string, callback: Callback<number>): void;
248c339a94Sopenharmony_ci    function off(type: string, callback?: Callback<number>): void;
258c339a94Sopenharmony_ci    function on(type: string, callback: Callback<ModelEvent>): void; // Callback为interface
268c339a94Sopenharmony_ci    function off(type: string, callback?: Callback<ModelEvent>): void;
278c339a94Sopenharmony_ci    function on(type: string, callback: Callback<{topic:string,message:string}>): void; // Callback为匿名interface
288c339a94Sopenharmony_ci    function off(type: string, callback?: Callback<{topic:string,message:string}>): void;
298c339a94Sopenharmony_ci    // function on(type: string, callback: Callback<string>): void; // Callback为string
308c339a94Sopenharmony_ci    function on(type: 'onEvents', callback: (wid: number) => void): void; // 箭头函数支持
318c339a94Sopenharmony_ci    function off(type: 'onEvents', callback?: (wid: number) => void): void;
328c339a94Sopenharmony_ci    function on(type: 'onEventFunc', callback: (wid: number, mol: ModelEvent) => void): void; // 箭头函数支持
338c339a94Sopenharmony_ci    function off(type: 'onEventFunc', callback?: (wid: number, mol: ModelEvent) => void): void;
348c339a94Sopenharmony_ci
358c339a94Sopenharmony_ci    class TestClass1 {
368c339a94Sopenharmony_ci        on(type: string, callback: Callback<boolean>): void;
378c339a94Sopenharmony_ci        off(type: string, callback?: Callback<boolean>): void;
388c339a94Sopenharmony_ci    }
398c339a94Sopenharmony_ci
408c339a94Sopenharmony_ci    class TestClass2 {
418c339a94Sopenharmony_ci        on(type: string, callback: Callback<ModelEvent>): void; // Callback为interface
428c339a94Sopenharmony_ci        off(type: string, callback?: Callback<ModelEvent>): void;
438c339a94Sopenharmony_ci    }
448c339a94Sopenharmony_ci
458c339a94Sopenharmony_ci    class TestClass3 {
468c339a94Sopenharmony_ci        on(type: string, callback: Callback<{topic:string,message:string}>): void; // Callback为匿名interface
478c339a94Sopenharmony_ci        off(type: string, callback?: Callback<{topic:string,message:string}>): void;
488c339a94Sopenharmony_ci    }
498c339a94Sopenharmony_ci
508c339a94Sopenharmony_ci    class TestClass4 {
518c339a94Sopenharmony_ci        on(type: 'heartbeat', callback: (wid: boolean) => void): void; // 箭头函数支持
528c339a94Sopenharmony_ci        off(type: 'heartbeat', callback?: (wid: boolean) => void): void; // 固定事件,去注册事件
538c339a94Sopenharmony_ci    }
548c339a94Sopenharmony_ci
558c339a94Sopenharmony_ci    class TestClass5 {
568c339a94Sopenharmony_ci        on(type: 'inputStart', callback: (wid: boolean, modeEv: ModelEvent) => void): void; // 回调函数参数个数大于1,支持
578c339a94Sopenharmony_ci        off(type: 'inputStart', callback?: (wid: boolean, modeEv: ModelEvent) => void): void;
588c339a94Sopenharmony_ci    }
598c339a94Sopenharmony_ci
608c339a94Sopenharmony_ci    class TestClass6 {
618c339a94Sopenharmony_ci        on(type: string, asyncCallback: AsyncCallback<boolean>): void;
628c339a94Sopenharmony_ci        off(type: string, asyncCallback?: AsyncCallback<boolean>): void;
638c339a94Sopenharmony_ci    }
648c339a94Sopenharmony_ci
658c339a94Sopenharmony_ci    class TestClass7 {
668c339a94Sopenharmony_ci        on(type: string, asyncCallback: AsyncCallback<ModelEvent>): void; // Callback为interface
678c339a94Sopenharmony_ci        off(type: string, asyncCallback?: AsyncCallback<ModelEvent>): void;
688c339a94Sopenharmony_ci    }
698c339a94Sopenharmony_ci
708c339a94Sopenharmony_ci    class TestClass10 {
718c339a94Sopenharmony_ci        on(type: "heartbeat", callback: Callback<boolean>): void; // 固定事件,回调参数为boolean支持
728c339a94Sopenharmony_ci        off(type: "hearbeat", callback?: Callback<boolean>): void;
738c339a94Sopenharmony_ci        on(type: "enableChange", callback: Callback<ModelEvent>): void; // 固定事件,回调参数为ModelEvent支持
748c339a94Sopenharmony_ci        off(type: "enableChange", callback?: Callback<ModelEvent>): void;
758c339a94Sopenharmony_ci        on(type: string, asyncCallback: AsyncCallback<string>): void;
768c339a94Sopenharmony_ci        off(type: string, asyncCallback?: AsyncCallback<string>): void;
778c339a94Sopenharmony_ci        on(type: string, callback: (wid: number) => void): void; // 箭头函数支持
788c339a94Sopenharmony_ci        off(type: string, callback?: (wid: number) => void): void; 
798c339a94Sopenharmony_ci        // on(type: string, callback: (wid: boolean) => string): void; // 返回值待支持
808c339a94Sopenharmony_ci        on(type: "inputStart", callback: (wid: boolean, modeEv: ModelEvent) => void): void; // 回调函数参数个数大于1,支持
818c339a94Sopenharmony_ci        off(type: "inputStart", callback?: (wid: boolean, modeEv: ModelEvent) => void): void; 
828c339a94Sopenharmony_ci    }
838c339a94Sopenharmony_ci
848c339a94Sopenharmony_ci    interface TestClass11 {
858c339a94Sopenharmony_ci        registerTestfunc11(cb: Function);
868c339a94Sopenharmony_ci        unRegisterTestfunc11(cb: Function);
878c339a94Sopenharmony_ci
888c339a94Sopenharmony_ci        registerTestfunc12(cb : (wid: number) => string);
898c339a94Sopenharmony_ci        unRegisterTestfunc12(cb : (wid: number) => string);
908c339a94Sopenharmony_ci
918c339a94Sopenharmony_ci        registerTestfunc13(cb : Callback<boolean>);
928c339a94Sopenharmony_ci        unRegisterTestfunc13(cb : Callback<boolean>);
938c339a94Sopenharmony_ci    }
948c339a94Sopenharmony_ci    function registerNamespacefunc20(cb: Function);
958c339a94Sopenharmony_ci    function unRegisterNamespacefunc20(cb: Function);
968c339a94Sopenharmony_ci
978c339a94Sopenharmony_ci    function registerNamespacefunc21(cb : (wid: number) => string);
988c339a94Sopenharmony_ci    function unRegisterNamespacefunc21(cb : (wid: number) => string);
998c339a94Sopenharmony_ci
1008c339a94Sopenharmony_ci    function registerNamespacefunc22(cb : Callback<boolean>);
1018c339a94Sopenharmony_ci
1028c339a94Sopenharmony_ci    function unRegisterNamespacefunc22(cb : Callback<boolean>); 
1038c339a94Sopenharmony_ci    
1048c339a94Sopenharmony_ci    function registerNamespacefunc24(cb : (wid: ModelEvent) => string);
1058c339a94Sopenharmony_ci    function unRegisterNamespacefunc24(cb : (wid: ModelEvent) => string);
1068c339a94Sopenharmony_ci
1078c339a94Sopenharmony_ci    export class NodeISayHello
1088c339a94Sopenharmony_ci    {
1098c339a94Sopenharmony_ci        addSayHelloListener(listener: NodeISayHelloListener);
1108c339a94Sopenharmony_ci        sayHello(from: string, to: string, sayType: SayType);
1118c339a94Sopenharmony_ci        removeSayHelloListener(listener: NodeISayHelloListener);
1128c339a94Sopenharmony_ci    }
1138c339a94Sopenharmony_ci
1148c339a94Sopenharmony_ci    export class NodeISayHelloListener
1158c339a94Sopenharmony_ci    {
1168c339a94Sopenharmony_ci        onSayHelloStart(info: SayInfo);
1178c339a94Sopenharmony_ci        onSayHelloEnd(info: SayInfo);
1188c339a94Sopenharmony_ci    }
1198c339a94Sopenharmony_ci
1208c339a94Sopenharmony_ci    export enum SayType
1218c339a94Sopenharmony_ci    {
1228c339a94Sopenharmony_ci        /** 0  主动说话 */
1238c339a94Sopenharmony_ci        kInitiative,
1248c339a94Sopenharmony_ci        /** 1  回应对方 */
1258c339a94Sopenharmony_ci        kResponse,
1268c339a94Sopenharmony_ci    }
1278c339a94Sopenharmony_ci
1288c339a94Sopenharmony_ci    class TestClass12 {
1298c339a94Sopenharmony_ci        registerTestfunc14(cb: (wid: SayInfo, test: TestOptional) => void);
1308c339a94Sopenharmony_ci        unRegisterTestfunc14(cb: (wid: SayInfo, test: TestOptional) => void);
1318c339a94Sopenharmony_ci    }
1328c339a94Sopenharmony_ci    function registerNamespacefunc23(cb: (wid: SayInfo, test: TestOptional) => void);
1338c339a94Sopenharmony_ci    function unRegisterNamespacefunc23(cb: (wid: SayInfo, test: TestOptional) => void);
1348c339a94Sopenharmony_ci    
1358c339a94Sopenharmony_ci    export type SayInfo =
1368c339a94Sopenharmony_ci    {
1378c339a94Sopenharmony_ci        from: string;
1388c339a94Sopenharmony_ci        fromId?: number;
1398c339a94Sopenharmony_ci        content: string;
1408c339a94Sopenharmony_ci        saidTime?: string;
1418c339a94Sopenharmony_ci        isEnd?: boolean;
1428c339a94Sopenharmony_ci    }
1438c339a94Sopenharmony_ci
1448c339a94Sopenharmony_ci    export interface TestOptional
1458c339a94Sopenharmony_ci    {
1468c339a94Sopenharmony_ci        v1: string;
1478c339a94Sopenharmony_ci        v2?: boolean;
1488c339a94Sopenharmony_ci        v3: number;
1498c339a94Sopenharmony_ci        v4?: string;
1508c339a94Sopenharmony_ci        v5?: number;
1518c339a94Sopenharmony_ci    }
1528c339a94Sopenharmony_ci}
1538c339a94Sopenharmony_ci
1548c339a94Sopenharmony_ciexport default napitest;
155