1cb93a386Sopenharmony_cideclare namespace public_api {
2cb93a386Sopenharmony_ci  export interface CanvasKit {
3cb93a386Sopenharmony_ci    publicExtension(myRects: InputFlattenedRectArray): number;
4cb93a386Sopenharmony_ci    sayHello(x: number, y: number): void;
5cb93a386Sopenharmony_ci    publicFunction(input: string): void;
6cb93a386Sopenharmony_ci    withObject(obj: CompoundObj): void;
7cb93a386Sopenharmony_ci
8cb93a386Sopenharmony_ci    readonly Extension: ExtensionConstructor;
9cb93a386Sopenharmony_ci    readonly Something: SomethingConstructor;
10cb93a386Sopenharmony_ci  }
11cb93a386Sopenharmony_ci
12cb93a386Sopenharmony_ci  export interface ExtensionConstructor {
13cb93a386Sopenharmony_ci    new(): Extension;
14cb93a386Sopenharmony_ci    new(name: string): Extension;
15cb93a386Sopenharmony_ci  }
16cb93a386Sopenharmony_ci
17cb93a386Sopenharmony_ci  export interface SomethingConstructor {
18cb93a386Sopenharmony_ci    new(name: string): Something;
19cb93a386Sopenharmony_ci  }
20cb93a386Sopenharmony_ci
21cb93a386Sopenharmony_ci  export interface Extension extends EmbindObject<Extension> {
22cb93a386Sopenharmony_ci    getProp(): string;
23cb93a386Sopenharmony_ci    setProp(p: string): void;
24cb93a386Sopenharmony_ci  }
25cb93a386Sopenharmony_ci
26cb93a386Sopenharmony_ci  export interface Something extends EmbindObject<Something> {
27cb93a386Sopenharmony_ci    getName(): string;
28cb93a386Sopenharmony_ci    setName(name: string): void;
29cb93a386Sopenharmony_ci  }
30cb93a386Sopenharmony_ci
31cb93a386Sopenharmony_ci  export interface CompoundObj {
32cb93a386Sopenharmony_ci    alpha: number;
33cb93a386Sopenharmony_ci    beta: string;
34cb93a386Sopenharmony_ci    gamma?: number;
35cb93a386Sopenharmony_ci  }
36cb93a386Sopenharmony_ci
37cb93a386Sopenharmony_ci  export type InputFlattenedRectArray = Float32Array | number[];
38cb93a386Sopenharmony_ci  export type TypedArray = Float32Array | Int32Array;
39cb93a386Sopenharmony_ci
40cb93a386Sopenharmony_ci  export interface EmbindObject<T extends EmbindObject<T>> {
41cb93a386Sopenharmony_ci    clone(): T;
42cb93a386Sopenharmony_ci    delete(): void;
43cb93a386Sopenharmony_ci    deleteAfter(): void;
44cb93a386Sopenharmony_ci    isAliasOf(other: any): boolean;
45cb93a386Sopenharmony_ci    isDeleted(): boolean;
46cb93a386Sopenharmony_ci  }
47cb93a386Sopenharmony_ci}
48