/**
 * Secure credential management utilities.
 * Prevents accidental exposure of sensitive data in logs, JSON serialization, and stack traces.
 */
/**
 * A secure wrapper for credential data that prevents accidental exposure.
 *
 * Features:
 * - Prevents JSON serialization of actual credential values
 * - Returns redacted string in toString() for safe logging
 * - Prevents iteration over credential keys in for...in loops
 * - Immutable after creation
 *
 * @example
 * ```ts
 * const creds = new SecureCredentials({ OPENAI_API_KEY: 'sk-...' });
 *
 * // Safe to log - won't expose values
 * console.log(creds); // "[SecureCredentials: 1 credential(s)]"
 * console.log(JSON.stringify(creds)); // '{"_redacted":"[CREDENTIALS REDACTED]","count":1}'
 *
 * // Access values explicitly when needed
 * const apiKey = creds.get('OPENAI_API_KEY');
 *
 * // Check if credential exists
 * if (creds.has('OPENAI_API_KEY')) { ... }
 * ```
 */
export declare class SecureCredentials {
    private readonly credentials;
    constructor(credentials?: Record<string, string>);
    /**
     * Get a credential value by key.
     * Returns undefined if the key doesn't exist.
     */
    get(key: string): string | undefined;
    /**
     * Check if a credential exists.
     */
    has(key: string): boolean;
    /**
     * Get the number of stored credentials.
     */
    get size(): number;
    /**
     * Check if any credentials are stored.
     */
    isEmpty(): boolean;
    /**
     * Get all credential keys (not values).
     * Safe to log as it only returns key names.
     */
    keys(): string[];
    /**
     * Merge with another SecureCredentials instance or plain object.
     * Returns a new SecureCredentials instance (immutable).
     * The provided credentials take precedence over existing ones.
     */
    merge(other: SecureCredentials | Record<string, string>): SecureCredentials;
    /**
     * Convert to plain object for internal use only.
     * WARNING: This exposes credential values. Use only when passing to APIs that require plain objects.
     */
    toPlainObject(): Record<string, string>;
    /**
     * Prevent JSON serialization from exposing credential values.
     */
    toJSON(): {
        _redacted: string;
        count: number;
        keys: string[];
    };
    /**
     * Safe string representation for logging.
     */
    toString(): string;
    /**
     * Static factory to create from environment variables.
     */
    static fromEnvVars(envVars: Record<string, string>): SecureCredentials;
    /**
     * Static factory to create an empty SecureCredentials instance.
     */
    static empty(): SecureCredentials;
}
//# sourceMappingURL=credentials.d.ts.map