import type { QuickJSContext, QuickJSHandle } from 'quickjs-emscripten-core'; export type SyncMode = 'both' | 'vm' | 'host'; export type Wrapped = T & { __qes_wrapped: never; }; export declare function wrap(ctx: QuickJSContext, target: T, proxyKeySymbol: symbol, proxyKeySymbolHandle: QuickJSHandle, marshal: (target: any) => [QuickJSHandle, boolean], syncMode?: (target: T) => SyncMode | undefined, wrappable?: (target: unknown) => boolean): Wrapped | undefined; export declare function wrapHandle(ctx: QuickJSContext, handle: QuickJSHandle, proxyKeySymbol: symbol, proxyKeySymbolHandle: QuickJSHandle, unmarshal: (handle: QuickJSHandle) => any, syncMode?: (target: QuickJSHandle) => SyncMode | undefined, wrappable?: (target: QuickJSHandle, ctx: QuickJSContext) => boolean): [Wrapped | undefined, boolean]; export declare function unwrap(obj: T, key: string | symbol): T; export declare function unwrapHandle(ctx: QuickJSContext, handle: QuickJSHandle, key: QuickJSHandle): [QuickJSHandle, boolean]; export declare function isWrapped(obj: T, key: string | symbol): obj is Wrapped; export declare function isHandleWrapped(ctx: QuickJSContext, handle: QuickJSHandle, key: QuickJSHandle): handle is Wrapped;