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