import type { Configuration } from "@rspack/core";
import { ConfigBuilder } from ".";
import { ConfigWrapper } from "./wrapper";
/**
 * @public
 */
export type ConfigTransformer<Params extends unknown[] = unknown[]> = (input: ConfigWrapper, ...params: Params) => ConfigWrapper;
/**
 * @public
 */
export type ConfigTransformers = Record<string, ConfigTransformer>;
type Merge<BaseObject, Key extends string, Value> = BaseObject & {
    [name in Key]: Value;
};
/**
 * @public
 */
export declare class ConfigService<Transformers extends ConfigTransformers> {
    static define<Name extends string, Params extends unknown[], Transformer extends ConfigTransformer<Params> = ConfigTransformer<Params>>(name: Name, transformer: Transformer): ConfigService<{ [name in Name]: Transformer; }>;
    static builder(config?: Configuration): ConfigBuilder<{}>;
    private readonly transformers;
    private constructor();
    define<Name extends string, Params extends unknown[], Transformer extends ConfigTransformer<Params> = ConfigTransformer<Params>>(name: Name, transformer: Transformer): ConfigService<Merge<Transformers, Name, Transformer>>;
    builder(config?: Configuration): ConfigBuilder<Transformers>;
}
export {};
//# sourceMappingURL=service.d.ts.map