/// <reference types="node" />
import Converter from './Converter.js';
import Registry from './Registry.js';
/**
 * @ignore
 * @example
 * const odd = new Converter((input) => typeof input === 'number' && Boolean(input % 2), () => 1);
 * const even = new Converter((input) => typeof input === 'number' && !(input % 2), () => 2);
 * const Aggregator = new Aggregator();
 * aggregator.register('odd', odd);
 * aggregator.register('even', even);

 * aggregator.to('odd')(3); // 3
 * aggregator.to('odd')(4); // 1
 * aggregator.to('even')(4); // 4
 * aggregator.to('even')(5); // 2
 */
export declare class Aggregator extends Registry<string, Converter<any>> {
    static DuplicateConverter: {
        new (message?: string | undefined, value?: unknown, options?: unknown): {
            value?: unknown;
            throw(): void;
            name: string;
            message: string;
            stack?: string | undefined;
        };
        captureStackTrace(targetObject: object, constructorOpt?: Function | undefined): void;
        prepareStackTrace?: ((err: Error, stackTraces: NodeJS.CallSite[]) => any) | undefined;
        stackTraceLimit: number;
    };
    static InvalidConverter: {
        new (message?: string | undefined, value?: unknown, options?: unknown): {
            value?: unknown;
            throw(): void;
            name: string;
            message: string;
            stack?: string | undefined;
        };
        captureStackTrace(targetObject: object, constructorOpt?: Function | undefined): void;
        prepareStackTrace?: ((err: Error, stackTraces: NodeJS.CallSite[]) => any) | undefined;
        stackTraceLimit: number;
    };
    static AbsentConverter: {
        new (message?: string | undefined, value?: unknown, options?: unknown): {
            value?: unknown;
            throw(): void;
            name: string;
            message: string;
            stack?: string | undefined;
        };
        captureStackTrace(targetObject: object, constructorOpt?: Function | undefined): void;
        prepareStackTrace?: ((err: Error, stackTraces: NodeJS.CallSite[]) => any) | undefined;
        stackTraceLimit: number;
    };
    constructor();
    get converters(): [string, Converter<any>][];
    register(name: string, converter: Converter<any>): this;
    unregister(name: string): this;
    converter: (name: string) => Converter<any>;
    to: (name: any) => (input?: unknown) => any;
}
export default Aggregator;
//# sourceMappingURL=Aggregator.d.ts.map