serde-ts/dist/ser/interface.d.ts
2025-05-24 23:00:35 -05:00

47 lines
1.7 KiB
TypeScript

export interface ISerializeObject<T> {
serializeKey(key: string): void;
serializeValue<U>(value: U): void;
serializeEntry<U>(key: string, value: U): void;
end(): T;
}
export declare abstract class SerializeObject<T> implements ISerializeObject<T> {
abstract serializeKey(key: string): void;
abstract serializeValue<U>(value: U): void;
abstract end(): T;
serializeEntry<U>(key: string, value: U): void;
}
export interface ISerializeIterable<T> {
serializeElement<U>(value: U): void;
end(): T;
}
export declare abstract class SerializeIterable<T> implements ISerializeIterable<T> {
abstract serializeElement<U>(value: U): void;
abstract end(): T;
}
export interface ISerializer<T> {
serializeAny?(value: any): T;
serializeBoolean(value: boolean): T;
serializeNumber(value: number): T;
serializeBigInt(value: bigint): T;
serializeString(value: string): T;
serializeSymbol(value: symbol): T;
serializeNull(): T;
serializeIterable(len?: number): ISerializeIterable<T>;
serializeObject(len?: number): ISerializeObject<T>;
serializeClass(name: string, len?: number): ISerializeObject<T>;
}
export declare class Serializer<T> implements ISerializer<T> {
serializeAny(_value: any): T;
serializeBoolean(_value: boolean): T;
serializeNumber(_value: number): T;
serializeBigInt(_value: bigint): T;
serializeString(_value: string): T;
serializeSymbol(_value: symbol): T;
serializeNull(): T;
serializeIterable(_len: number): ISerializeIterable<T>;
serializeObject(_len: number): ISerializeObject<T>;
serializeClass(_name: string, _len: number): ISerializeObject<T>;
}
export interface Serialize<T, U> {
(serializer: ISerializer<T>, value: U): T;
}