import { SerdeOptions } from '../option';
import { IDeserializer, IIterableAccess, IMapAccess, IVisitor } from './interface';
export declare class GenericSeed<T> {
    readonly visitor: IVisitor<T>;
    constructor(visitor?: IVisitor<T>);
    static deserialize<T, D extends IDeserializer>(deserializer: D, visitor?: IVisitor<T>): T;
    deserialize<D extends IDeserializer>(deserializer: D): T;
}
export declare class ProxyVisitor<T> implements IVisitor<T> {
    private overrides?;
    private options?;
    constructor(overrides?: Partial<IVisitor<T>>, options?: SerdeOptions);
    visitBoolean(value: boolean): T;
    visitNumber(value: number): T;
    visitBigInt(value: bigint): T;
    visitString(value: string): T;
    visitSymbol(value: symbol): T;
    visitNull(): T;
    visitObject(access: IMapAccess): T;
    visitIterable(access: IIterableAccess): T;
}
export declare class ProxyDeserializer implements IDeserializer {
    private readonly deserializer;
    private readonly options?;
    constructor(deserializer: IDeserializer, options?: SerdeOptions);
    deserializeAny<T, V extends IVisitor<T>>(visitor: V): T;
    deserializeBoolean<T, V extends IVisitor<T>>(visitor: V): T;
    deserializeNumber<T, V extends IVisitor<T>>(visitor: V): T;
    deserializeBigInt<T, V extends IVisitor<T>>(visitor: V): T;
    deserializeString<T, V extends IVisitor<T>>(visitor: V): T;
    deserializeSymbol<T, V extends IVisitor<T>>(visitor: V): T;
    deserializeNull<T, V extends IVisitor<T>>(visitor: V): T;
    deserializeObject<T, V extends IVisitor<T>>(visitor: V): T;
    deserializeIterable<T, V extends IVisitor<T>>(visitor: V): T;
    deserializeFunction<T, V extends IVisitor<T>>(visitor: V): T;
}