• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (c) 2022-2025 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16import { float32, int32, int64 } from "#koalaui/common";
17import { pointer, KPointer } from "./InteropTypes";
18import { ResourceId } from "../arkts/ResourceManager";
19/**
20 * Value representing possible JS runtime object type.
21 * Must be synced with "enum RuntimeType" in C++.
22 */
23export declare enum RuntimeType {
24    UNEXPECTED = -1,
25    NUMBER = 1,
26    STRING = 2,
27    OBJECT = 3,
28    BOOLEAN = 4,
29    UNDEFINED = 5,
30    BIGINT = 6,
31    FUNCTION = 7,
32    SYMBOL = 8,
33    MATERIALIZED = 9
34}
35/**
36 * Value representing object type in serialized data.
37 * Must be synced with "enum Tags" in C++.
38 */
39export declare enum Tags {
40    UNDEFINED = 101,
41    INT32 = 102,
42    FLOAT32 = 103,
43    STRING = 104,
44    LENGTH = 105,
45    RESOURCE = 106,
46    OBJECT = 107
47}
48export declare function runtimeType(value: any): int32;
49export declare function isResource(value: unknown): boolean;
50export declare function isInstanceOf(className: string, value: object | undefined): boolean;
51export declare function registerCallback(value: object | undefined): int32;
52export declare function registerMaterialized(value: object | undefined): number;
53export interface CallbackResource {
54    resourceId: int32;
55    hold: pointer;
56    release: pointer;
57}
58export declare abstract class CustomSerializer {
59    protected supported: Array<string>;
60    constructor(supported: Array<string>);
61    supports(kind: string): boolean;
62    abstract serialize(serializer: SerializerBase, value: any, kind: string): void;
63    next: CustomSerializer | undefined;
64}
65export declare class SerializerBase {
66    private position;
67    private buffer;
68    private view;
69    private static customSerializers;
70    static registerCustomSerializer(serializer: CustomSerializer): void;
71    constructor();
72    release(): void;
73    asArray(): Uint8Array;
74    length(): int32;
75    currentPosition(): int32;
76    private checkCapacity;
77    private heldResources;
78    holdAndWriteCallback(callback: object, hold?: KPointer, release?: KPointer, call?: KPointer, callSync?: KPointer): ResourceId;
79    holdAndWriteCallbackForPromiseVoid(hold?: KPointer, release?: KPointer, call?: KPointer, callSync?: number): [Promise<void>, ResourceId];
80    holdAndWriteCallbackForPromise<T>(hold?: KPointer, release?: KPointer, call?: KPointer): [Promise<T>, ResourceId];
81    writeCallbackResource(resource: CallbackResource): void;
82    private releaseResources;
83    writeCustomObject(kind: string, value: any): void;
84    writeNumber(value: number | undefined): void;
85    writeInt8(value: int32): void;
86    writeInt32(value: int32): void;
87    writeInt64(value: int64): void;
88    writePointer(value: pointer): void;
89    writeFloat32(value: float32): void;
90    writeBoolean(value: boolean | undefined): void;
91    writeFunction(value: object | undefined): void;
92    writeString(value: string): void;
93    writeBuffer(buffer: ArrayBuffer): void;
94}
95export declare function unsafeCast<T>(value: unknown): T;
96//# sourceMappingURL=SerializerBase.d.ts.map