serde-ts/dist/ser/interface.d.ts

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;
serializeObject(): ISerializeObject<T>;
serializeIterable(): ISerializeIterable<T>;
serializeClass(name: string): ISerializeObject<T>;
}
export declare class Serializer<T> implements ISerializer<T> {
serializeIterable(): ISerializeIterable<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;
serializeObject(): ISerializeObject<T>;
serializeClass(_name: string): ISerializeObject<T>;
}
export interface Serialize<T, U> {
(serializer: ISerializer<T>, value: U): T;
}