import { SettingsRepository } from '../databases/repositories/settings.repository';
import type { ExternalSecretsSettings, SecretsProvider, SecretsProviderSettings } from '../Interfaces';
import { Cipher } from 'n8n-core';
import { Logger } from '../Logger';
import { type IDataObject } from 'n8n-workflow';
import { License } from '../License';
import { EventService } from '../events/event.service';
import { ExternalSecretsProviders } from './ExternalSecretsProviders.ee';
export declare class ExternalSecretsManager {
    private readonly logger;
    private readonly settingsRepo;
    private readonly license;
    private readonly secretsProviders;
    private readonly cipher;
    private readonly eventService;
    private providers;
    private initializingPromise?;
    private cachedSettings;
    initialized: boolean;
    updateInterval: NodeJS.Timer;
    initRetryTimeouts: Record<string, NodeJS.Timer>;
    constructor(logger: Logger, settingsRepo: SettingsRepository, license: License, secretsProviders: ExternalSecretsProviders, cipher: Cipher, eventService: EventService);
    init(): Promise<void>;
    shutdown(): void;
    reloadAllProviders(backoff?: number): Promise<void>;
    broadcastReloadExternalSecretsProviders(): Promise<void>;
    private decryptSecretsSettings;
    private getDecryptedSettings;
    private internalInit;
    private initProvider;
    private retryInitWithBackoff;
    updateSecrets(): Promise<void>;
    getProvider(provider: string): SecretsProvider | undefined;
    hasProvider(provider: string): boolean;
    getProviderNames(): string[] | undefined;
    getSecret(provider: string, name: string): unknown;
    hasSecret(provider: string, name: string): boolean;
    getSecretNames(provider: string): string[] | undefined;
    getAllSecretNames(): Record<string, string[]>;
    getProvidersWithSettings(): Array<{
        provider: SecretsProvider;
        settings: SecretsProviderSettings;
    }>;
    getProviderWithSettings(provider: string): {
        provider: SecretsProvider;
        settings: SecretsProviderSettings;
    } | undefined;
    reloadProvider(provider: string, backoff?: number): Promise<void>;
    setProviderSettings(provider: string, data: IDataObject, userId?: string): Promise<void>;
    setProviderConnected(provider: string, connected: boolean): Promise<void>;
    private trackProviderSave;
    private encryptSecretsSettings;
    saveAndSetSettings(settings: ExternalSecretsSettings, settingsRepo: SettingsRepository): Promise<void>;
    testProviderSettings(provider: string, data: IDataObject): Promise<{
        success: boolean;
        testState: 'connected' | 'tested' | 'error';
        error?: string;
    }>;
    updateProvider(provider: string): Promise<boolean>;
}
