Keeta LogoKeeta Logo@keetanetwork/keetanet-client
    Preparing search index...

    Type Alias ToJSONSerializable<T, Options, Depth>

    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(): U }
                                        ? Options["addBinary"] extends true
                                            ? ToJSONSerializable<
                                                AddBinaryIfIncluded<U>,
                                                Options,
                                                JSONDepthLimit[Depth],
                                            >
                                            : ToJSONSerializable<U, Options, JSONDepthLimit[Depth]>
                                        : IsTuple<T> extends true
                                            ? {
                                                [K in keyof T]: undefined extends T[K]
                                                    ? | ToJSONSerializable<
                                                        Exclude<T[K], undefined>,
                                                        Options,
                                                        JSONDepthLimit[Depth],
                                                    >
                                                    | null
                                                    : ToJSONSerializable<T[K], Options, JSONDepthLimit[Depth]>
                                            }
                                            : T extends readonly (infer U)[]
                                                ? (
                                                    undefined extends U
                                                        ? | ToJSONSerializable<
                                                            Exclude<U, undefined>,
                                                            Options,
                                                            JSONDepthLimit[Depth],
                                                        >
                                                        | null
                                                        : ToJSONSerializable<U, Options, JSONDepthLimit[Depth]>
                                                )[]
                                                : T extends object
                                                    ? string extends keyof T
                                                        ? {
                                                            [K in keyof T]: ToJSONSerializable<
                                                                T[K],
                                                                Options,
                                                                JSONDepthLimit[Depth],
                                                            >
                                                        }
                                                        : number extends keyof T
                                                            ? {
                                                                [K in keyof T]: ToJSONSerializable<
                                                                    T[K],
                                                                    Options,
                                                                    JSONDepthLimit[Depth],
                                                                >
                                                            }
                                                            : {
                                                                [K in keyof T as {} extends Pick<T, K>
                                                                    ? never
                                                                    : undefined extends T[K] ? never : K]: ToJSONSerializable<
                                                                    T[K],
                                                                    Options,
                                                                    JSONDepthLimit[Depth],
                                                                >
                                                            } & {
                                                                [K in keyof T as {} extends Pick<T, K>
                                                                    ? K
                                                                    : undefined extends T[K] ? K : never]?: ToJSONSerializable<
                                                                    Exclude<T[K], undefined>,
                                                                    Options,
                                                                    JSONDepthLimit[Depth],
                                                                >
                                                            }
                                                    : never

    Type Parameters