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    interface Human {
198c339a94Sopenharmony_ci        name: string;
208c339a94Sopenharmony_ci        age: number;
218c339a94Sopenharmony_ci    }
228c339a94Sopenharmony_ci
238c339a94Sopenharmony_ci    interface GrandFar extends Human{
248c339a94Sopenharmony_ci        eyesType: number;
258c339a94Sopenharmony_ci        getSkin(v: number): string;
268c339a94Sopenharmony_ci        getSkinSync(v: number, skin: Callback<string>): void;
278c339a94Sopenharmony_ci        getSkinAsync(v: number, skin: AsyncCallback<string>): void;
288c339a94Sopenharmony_ci    }
298c339a94Sopenharmony_ci
308c339a94Sopenharmony_ci    interface Farther extends GrandFar {
318c339a94Sopenharmony_ci        getShoes(): string;
328c339a94Sopenharmony_ci        getShoesSync(shoes: Callback<string>): void;
338c339a94Sopenharmony_ci        getShoesAsync(shoes: AsyncCallback<string>): void;
348c339a94Sopenharmony_ci    }
358c339a94Sopenharmony_ci
368c339a94Sopenharmony_ci    class Animal {
378c339a94Sopenharmony_ci        aniName: string;
388c339a94Sopenharmony_ci        size: number;
398c339a94Sopenharmony_ci        static getAnimalType(aniId: number): string;
408c339a94Sopenharmony_ci        setAnimalId(id: number): void;
418c339a94Sopenharmony_ci    }
428c339a94Sopenharmony_ci
438c339a94Sopenharmony_ci    class Cat extends Animal {
448c339a94Sopenharmony_ci        catName:string;
458c339a94Sopenharmony_ci        static getCatType(catId: number): string;
468c339a94Sopenharmony_ci    }
478c339a94Sopenharmony_ci    
488c339a94Sopenharmony_ci    interface SuperAnimal {
498c339a94Sopenharmony_ci        aniName: string;
508c339a94Sopenharmony_ci        size: number;
518c339a94Sopenharmony_ci        setAnimalId(id: number): void;
528c339a94Sopenharmony_ci    }
538c339a94Sopenharmony_ci    
548c339a94Sopenharmony_ci    class SuperHuman {
558c339a94Sopenharmony_ci        name: string;
568c339a94Sopenharmony_ci        age: number;
578c339a94Sopenharmony_ci        static getAnimalType(aniId: number): string;
588c339a94Sopenharmony_ci    }
598c339a94Sopenharmony_ci    
608c339a94Sopenharmony_ci    interface Bob extends Human, Animal {
618c339a94Sopenharmony_ci        bobSkill: string;
628c339a94Sopenharmony_ci        getBobCardId(): number;
638c339a94Sopenharmony_ci    }
648c339a94Sopenharmony_ci
658c339a94Sopenharmony_ci    class Juliya extends SuperHuman implements SuperAnimal {
668c339a94Sopenharmony_ci        aniName: string;
678c339a94Sopenharmony_ci        size: number;
688c339a94Sopenharmony_ci        setAnimalId(id: number): void;
698c339a94Sopenharmony_ci        juliyaSkill: string;
708c339a94Sopenharmony_ci        getJuliyaCardId(): number;
718c339a94Sopenharmony_ci    }
728c339a94Sopenharmony_ci
738c339a94Sopenharmony_ci    function findJuliya(v1: Juliya): Juliya;
748c339a94Sopenharmony_ci    function findJuliyaSync(v1: string, callback: Callback<Juliya>): void;
758c339a94Sopenharmony_ci    function findJuliyaAsync(v1: string, callback: AsyncCallback<Juliya>): void;
768c339a94Sopenharmony_ci    
778c339a94Sopenharmony_ci    interface Tom {
788c339a94Sopenharmony_ci        name: string;
798c339a94Sopenharmony_ci        friends: Cat;
808c339a94Sopenharmony_ci    }
818c339a94Sopenharmony_ci
828c339a94Sopenharmony_ci    interface TestMember {
838c339a94Sopenharmony_ci        getTomcat(v1: string, v2: Array<Tom>): Tom;
848c339a94Sopenharmony_ci    }
858c339a94Sopenharmony_ci}
868c339a94Sopenharmony_ci
878c339a94Sopenharmony_ciexport default napitest;
88