import { type Values } from '@augment-vir/common';
import { type ListSecretsOptions, type Secret } from '@infisical/sdk';
import { BaseSecretsAdapter, type ProcessedSecretDefinitions, type RawSecrets } from 'updating-secrets';
/**
 * Intermediate type for processing secrets from Infisical. Used in {@link InfisicalAdapter} and
 * helper functions.
 *
 * @category Internal
 */
export type MappedInfisicalSecrets = {
    [SecretKey in string]: string | MappedInfisicalSecrets | Error;
};
/**
 * The necessary subset of the `InfisicalSDK` API that {@link InfisicalAdapter} requires.
 *
 * @category Internal
 */
export type NeededInfisicalSdk = {
    /** Get the Infisical secrets client. */
    secrets(): {
        /** List the Infisical secrets. */
        listSecrets(options: ListSecretsOptions): Promise<{
            secrets: NeededInfisicalSecret[];
        }>;
    };
};
/**
 * The necessary subset of the Infisical `Secret` type that {@link InfisicalAdapter} requires.
 *
 * @category Internal
 */
export type NeededInfisicalSecret = Pick<Secret, 'secretKey' | 'secretPath' | 'secretValue'>;
/**
 * Loads secrets from Infisical. A `InfisicalSDK` instance must be provided. The `InfisicalSDK`
 * instance must also be authorized _before_ passing it into this.
 *
 * @category Adapters
 */
export declare class InfisicalAdapter extends BaseSecretsAdapter {
    /**
     * Make sure that you've already authenticated this client.
     * (`client.auth().universalAuth.login()`)
     */
    protected readonly infisicalClient: Readonly<NeededInfisicalSdk>;
    /** `'dev'`, `'staging'`, `'prod'`, etc. */
    protected readonly infisicalEnvironment: string;
    constructor(
    /**
     * Make sure that you've already authenticated this client.
     * (`client.auth().universalAuth.login()`)
     */
    infisicalClient: Readonly<NeededInfisicalSdk>, 
    /** `'dev'`, `'staging'`, `'prod'`, etc. */
    infisicalEnvironment: string);
    /** Load secrets from the provided `InfisicalSDK`. */
    loadSecrets(secrets: ProcessedSecretDefinitions): RawSecrets;
}
/**
 * Get an Infisical secret value nested within an object.
 *
 * @category Internal
 */
export declare function getNested(parent: MappedInfisicalSecrets, keys: string[]): Values<MappedInfisicalSecrets>;
/**
 * Set an Infisical secret value nested within an object.
 *
 * @category Internal
 */
export declare function setNested(parent: MappedInfisicalSecrets, keys: string[], value: string): void;
