import { OptionalPart, RequiredPart } from './types.js';
type FilledConfig<C, D> = RequiredPart<C> & {
    [K in keyof OptionalPart<C>]: K extends keyof D ? NonNullable<C[K]> : C[K];
};
export declare const config: <C>() => {
    default: <const D extends Partial<OptionalPart<C>>>(factory: () => D) => {
        set(config: C): void;
        get<const K extends keyof FilledConfig<C, D>>(key: K): FilledConfig<C, D>[K];
    };
};
export declare const fill: <C, const D extends Partial<OptionalPart<C>> = Partial<OptionalPart<C>>>(config: C, defaults: D) => FilledConfig<C, D>;
export {};
//# sourceMappingURL=config.d.ts.map