import { Primitive, ToString } from "../utils"; export interface ObjectSerializer { serializeKey(key: U): T; serializeValue(value: U): T; end(): T; } export interface IterableSerializer { serializeElement(element: U): T; end(): T; } interface TypeSerializer { serializeString(value: string): T; serializeNumber(value: number): T; serializeBigInt(value: bigint): T; serializeBoolean(value: boolean): T; serializeSymbol(value: Symbol): T; serializeNull(): T; serializeObject(): ObjectSerializer; serializeIterable?(): IterableSerializer; } interface AnySerializer { serializeAny?(value?: any): T; } export declare function isGenericSerializer(value: any): boolean; export type Serializer = Partial> & Partial>; export type Serializable = Primitive | ToString | Serialize; export interface Serialize { serialize>(serializer: S): T; } export {};