import { AbstractOptionsContainer } from './AbstractOptionsContainer';
import { ConfigModification } from './ConfigModification';
import { ExtractOptionsFromOptionsContainer } from './types';
export declare abstract class AbstractConfigBuilder<TConfig extends Record<string, any>, TOptionsContainer extends AbstractOptionsContainer> {
    readonly optionsContainer: TOptionsContainer;
    readonly modifications: ConfigModification<TConfig, any, any>[];
    private readonly _beforeBuild;
    private readonly _afterBuild;
    constructor(optionsContainer: TOptionsContainer);
    build(createBaseConfig?: (options: ExtractOptionsFromOptionsContainer<TOptionsContainer>) => TConfig): TConfig;
    beforeBuild(func: (config: this) => any): this;
    afterBuild(func: (config: TConfig) => any): this;
    clone(): this;
}
//# sourceMappingURL=AbstractConfigBuilder.d.ts.map