import type { SecretsManagerClient } from '../aws/secrets-manager';
import type { SSMClient } from '../aws/ssm';
import type { ControlPlaneStore } from '../control-plane';
import type { ConfigurationBackend } from './model';
export interface SecretWrite {
    reference?: string;
    name: string;
    value: string;
    idempotencyKey: string;
}
export interface SecretWriteResult {
    reference: string;
    version: string;
}
export interface ConfigurationSecretBackend {
    readonly kind: Exclude<ConfigurationBackend, 'plaintext'>;
    put(input: SecretWrite): Promise<SecretWriteResult>;
    resolve(reference: string): Promise<string>;
    remove(reference: string): Promise<void>;
    validate(reference: string): Promise<boolean>;
}
export declare class LocalEncryptedConfigurationBackend implements ConfigurationSecretBackend {
    private readonly controlPlane;
    private readonly now;
    readonly kind: 'local_encrypted';
    private readonly key;
    constructor(controlPlane: ControlPlaneStore, encryptionKey: string, now?: () => Date);
    private encrypt;
    private decrypt;
    put(input: SecretWrite): Promise<SecretWriteResult>;
    resolve(reference: string): Promise<string>;
    remove(reference: string): Promise<void>;
    validate(reference: string): Promise<boolean>;
}
type SecretsManagerApi = Pick<SecretsManagerClient, 'createSecret' | 'putSecretValue' | 'getSecretValue' | 'describeSecret' | 'deleteSecret'>;
export declare class AwsSecretsManagerConfigurationBackend implements ConfigurationSecretBackend {
    private readonly client;
    private readonly region;
    readonly kind: 'aws_secrets_manager';
    constructor(client: SecretsManagerApi, region: string);
    put(input: SecretWrite): Promise<SecretWriteResult>;
    resolve(reference: string): Promise<string>;
    remove(reference: string): Promise<void>;
    validate(reference: string): Promise<boolean>;
    private id;
}
type SsmApi = Pick<SSMClient, 'putParameter' | 'getParameter' | 'deleteParameter'>;
export declare class AwsSsmConfigurationBackend implements ConfigurationSecretBackend {
    private readonly client;
    private readonly region;
    readonly kind: 'aws_ssm';
    constructor(client: SsmApi, region: string);
    put(input: SecretWrite): Promise<SecretWriteResult>;
    resolve(reference: string): Promise<string>;
    remove(reference: string): Promise<void>;
    validate(reference: string): Promise<boolean>;
    private name;
}
export declare class ExternalConfigurationBackend implements ConfigurationSecretBackend {
    readonly kind: 'external';
    put(): Promise<SecretWriteResult>;
    resolve(): Promise<string>;
    remove(): Promise<void>;
    validate(reference: string): Promise<boolean>;
}
export {};
