import type { MapNamesToKeys } from './structures';
export declare class EnvironmentBuilder<E = unknown, O = unknown> {
    private readonly info;
    private constructor();
    static create<S extends string[]>(...requiredKeys: S): EnvironmentBuilder<{
        [K in keyof MapNamesToKeys<S>]: MapNamesToKeys<S>[K];
    }, {}>;
    defaults(defaultValues?: Partial<E>): EnvironmentBuilder<E, O>;
    environment(keys?: Record<string, string | undefined>): {
        [K in keyof (E & O)]: (E & O)[K];
    };
    optionals<S extends string[]>(...vars: S): EnvironmentBuilder<E, {
        [K in keyof MapNamesToKeys<S>]?: MapNamesToKeys<S>[K];
    } & O>;
    transform<S extends (keyof (E & O))[], R>(transform: (value: string) => R, ...vars: S): EnvironmentBuilder<{
        [K in keyof Pick<E, Exclude<S[number], keyof O>>]: R;
    } & Omit<E, S[number]>, {
        [K in keyof Pick<O, Exclude<S[number], keyof E>>]: R;
    } & Omit<O, S[number]>>;
    withPrefix(prefix: string): EnvironmentBuilder<E, O>;
    private applyTransform;
    private prefixedKey;
    private processOptionalKeys;
    private processRequiredKeys;
}
//# sourceMappingURL=environment.d.ts.map