import { SecretsManagerClient, SecretsManagerClientConfig } from '@aws-sdk/client-secrets-manager';
import { Environment } from '@abacus/common';

interface SecretsManagerOptions {
    client: SecretsManagerClient;
    forceRemote?: boolean;
    localToRemoteNames?: Record<string, string>;
    serviceName: string;
    environment: Environment;
}

declare class SecretsManager {
    client: SecretsManagerClient;
    environment: Environment;
    forceRemote: boolean;
    localToRemoteNames?: Record<string, string>;
    serviceName: string;
    constructor({ client, environment, forceRemote, localToRemoteNames, serviceName, }: SecretsManagerOptions);
    getCred(envVar: string): Promise<string | Uint8Array | unknown | undefined>;
    getSecret(secretName: string): Promise<string | Uint8Array | unknown | undefined>;
    storeCred(key: string, secret: unknown): Promise<void>;
    updateSecret(key: string, secret: unknown): Promise<void>;
    private tryParseJson;
}

declare function getClient(opts: SecretsManagerClientConfig): SecretsManagerClient;

export { SecretsManager, type SecretsManagerOptions, getClient };
