import { ParserContext, ParserResult, SchemaItem } from '../types';
export interface TypedParserContext<Type extends SchemaItem> extends ParserContext {
    schema: Type;
}
export interface TypedParserResult<Type> extends ParserResult {
    value: Type;
}
export interface TypedParser<Type extends SchemaItem, Registry> {
    parse(context: TypedParserContext<Type>): TypedParserResult<Registry>;
}
type ParserConstructor<Type extends SchemaItem = SchemaItem, Registry = unknown> = new (registry: ParserRegistry) => TypedParser<Type, Registry>;
export declare class ParserRegistry {
    private readonly _parsers;
    private readonly _debug;
    constructor();
    get parsers(): ReadonlyMap<string, ParserConstructor>;
    register<T extends SchemaItem, R>(type: string, parserClass: ParserConstructor<T, R>): this;
    parse<T = unknown>(context: ParserContext): TypedParserResult<T>;
    private _registerDefaultParsers;
}
export {};
