45 lines
1.6 KiB
TypeScript
45 lines
1.6 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>;
|
|
serializeClass(name: string): 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;
|
|
serializeObject(): ISerializeObject<T>;
|
|
serializeClass(_name: string): ISerializeObject<T>;
|
|
}
|
|
export interface Serialize<T> {
|
|
<U, S extends Serializer<U>>(serializer: S, value: T): U;
|
|
}
|