import { SecretsManagerClientConfig, CreateSecretCommandInput, UpdateSecretCommandInput, RotateSecretCommandInput } from '@aws-sdk/client-secrets-manager';
export { CancelRotateSecretCommandInput, CreateSecretCommandInput, DeleteSecretCommandInput, GetSecretValueCommandInput, RotateSecretCommandInput, UpdateSecretCommandInput } from '@aws-sdk/client-secrets-manager';
import { Logger } from '@aws-sdk/types';

interface SecretsManagerOptions extends SecretsManagerClientConfig {
    retryPolicy?: {
        maxRetries?: number;
        retryDelayOptions?: {
            base?: number;
            customBackoff?: (retryCount: number) => number;
        };
    };
    timeout?: number;
    logger?: Logger;
}
interface SecretValue {
    arn?: string | undefined;
    name?: string | undefined;
    value?: string | undefined;
    versionId?: string | undefined;
    versionStages?: string[] | undefined;
    createdDate?: Date | undefined;
}
declare class SecretsManagerError extends Error {
    readonly code?: string | undefined;
    readonly statusCode?: number | undefined;
    readonly originalError?: Error | undefined;
    constructor(message: string, code?: string | undefined, statusCode?: number | undefined, originalError?: Error | undefined);
}
declare class SecretsManagerClient {
    private awsClient;
    private options;
    private logger;
    constructor(options?: SecretsManagerOptions);
    /**
     * Validates that a secret ID is provided and not empty
     */
    private validateSecretId;
    /**
     * Handles AWS SDK errors and converts them to SecretsManagerError
     */
    private handleError;
    /**
     * Retrieves a secret value from AWS Secrets Manager
     */
    getSecret(secretId: string, versionId?: string, versionStage?: string): Promise<SecretValue>;
    /**
     * Retrieves and parses a JSON secret value
     */
    getSecretJson<T = unknown>(secretId: string, versionId?: string, versionStage?: string): Promise<T>;
    /**
     * Creates a new secret in AWS Secrets Manager
     */
    createSecret(params: CreateSecretCommandInput): Promise<{
        arn: string;
        name: string;
        versionId: string;
    }>;
    /**
     * Updates an existing secret in AWS Secrets Manager
     */
    updateSecret(params: UpdateSecretCommandInput): Promise<{
        arn: string;
        name: string;
        versionId: string;
    }>;
    /**
     * Deletes a secret from AWS Secrets Manager
     */
    deleteSecret(secretId: string, forceDeleteWithoutRecovery?: boolean, recoveryWindowInDays?: number): Promise<{
        arn: string;
        name: string;
        deletionDate: Date;
    }>;
    /**
     * Rotates a secret in AWS Secrets Manager
     */
    rotateSecret(params: RotateSecretCommandInput): Promise<{
        arn: string;
        name: string;
        versionId: string;
    }>;
    /**
     * Cancels secret rotation in AWS Secrets Manager
     */
    cancelRotateSecret(secretId: string): Promise<{
        arn: string;
        name: string;
        versionId: string;
    }>;
    /**
     * Health check method to verify the client can connect to AWS
     */
    healthCheck(): Promise<{
        status: 'healthy' | 'unhealthy';
        message: string;
    }>;
    /**
     * Closes the client connection
     */
    close(): Promise<void>;
}

export { SecretValue, SecretsManagerClient, SecretsManagerError, SecretsManagerOptions, SecretsManagerClient as default };
