export type SecretProvider = 'GCP' | 'FILE' | 'VAULT' | 'ENV'; export interface VaultConfig { endpoint: string; token?: string; mount?: string; namespace?: string; } export interface SecretServiceConfig { provider: SecretProvider; location: string; encryptionKey?: string; vaultConfig?: VaultConfig; cacheTTL?: number; } export declare class SecretService { provider: SecretProvider; location: string; encryptionKey?: string; vaultConfig?: VaultConfig; cacheTTL: number; protected preloadedSecrets?: SecretType; protected isPreloaded: boolean; private fileWatcher?; constructor(config: SecretServiceConfig); /** * Preload secrets asynchronously for synchronous access later * This method loads secrets once and stores them in the instance */ preload(): Promise; /** * Invalidate preloaded secrets and stop file watching */ invalidate(): Promise; /** * Set up file watching for automatic invalidation */ private setupFileWatcher; /** * Load secrets asynchronously with decryption for all providers */ private loadSecretsAsync; private isCacheValid; private setCache; private getCache; loadSecretsFromFileAsync(): Promise; loadSecretsFromFile(): SecretType; loadSecretsFromGCP(): SecretType; loadEncryptionKeyFromGCP(): string; loadSecretsFromEnv(): SecretType; loadSecretsFromVault(): Promise; storeSecretsToVault(secrets: Partial): Promise; loadSecrets(): SecretType | Promise; loadEncryptionKey(): string; getSecretAsync(secretName: keyof SecretType): Promise; getSecretJsonAsync(secretName: keyof SecretType): Promise; getSecret(secretName: keyof SecretType): Promise; getSecretJson(secretName: keyof SecretType): Promise; /** * Get a secret synchronously (requires preload() to be called first) */ getSecretSync(secretName: keyof SecretType): string; /** * Get a JSON secret synchronously (requires preload() to be called first) */ getSecretJsonSync(secretName: keyof SecretType): T; static clearCache(): void; static cleanupExpiredCache(): void; /** * Clean up resources (file watchers, etc.) when service is no longer needed */ dispose(): void; }