serde-ts/dist/ser/interface.d.ts
2025-05-18 20:05:52 -05:00

31 lines
1.1 KiB
TypeScript

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