export type JSONSerializable = string | number | boolean | null | JSONSerializable[] | { [key: string]: JSONSerializable; }; export type JSONSerializableObject = { [key: string]: JSONSerializable; }; export interface ToJSONSerializableOptions { debugUnsafe?: boolean; addBinary?: AddBinary; } type AddBinaryIfIncluded = I extends { '$binary'?: infer BinaryType; } ? Omit & { '$binary': NonNullable; } : I; type IsTuple = T extends readonly any[] ? number extends T['length'] ? false : true : false; type JSONDepthLimit = [never, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; export type ToJSONSerializable = T extends never ? never : Depth extends never ? never : symbol extends keyof T ? { [key: symbol]: never; } : T extends JSONSerializable ? T : T extends undefined ? never : T extends bigint ? string : T extends Date ? string : T extends Buffer | ArrayBuffer ? string : T extends { toJSON(): infer U; } ? Options['addBinary'] extends true ? ToJSONSerializable, Options, JSONDepthLimit[Depth]> : ToJSONSerializable : IsTuple extends true ? { [K in keyof T]: undefined extends T[K] ? ToJSONSerializable, Options, JSONDepthLimit[Depth]> | null : ToJSONSerializable; } : T extends readonly (infer U)[] ? Array, Options, JSONDepthLimit[Depth]> | null : ToJSONSerializable> : T extends object ? (string extends keyof T ? { [K in keyof T]: ToJSONSerializable; } : number extends keyof T ? { [K in keyof T]: ToJSONSerializable; } : // number index signature type { [K in keyof T as ({} extends Pick ? never : undefined extends T[K] ? never : K)]: ToJSONSerializable; } & { [K in keyof T as ({} extends Pick ? K : undefined extends T[K] ? K : never)]?: ToJSONSerializable, Options, JSONDepthLimit[Depth]>; }) : never; export declare function toJSONSerializable(data: Value, opts?: Options): ToJSONSerializable; export declare function objectToBuffer(data: any, opts?: ToJSONSerializableOptions): Buffer; export declare function parseHexBigIntString(input: string): bigint; export {};