import { RawiConfig, RawiCredentials } from '../../shared/types.js';
import { IConfigManager } from '../interfaces/config-manager.interface.js';
import { IConfigPersistence } from '../interfaces/persistence.interface.js';

declare class BaseConfigManager implements IConfigManager, IConfigPersistence {
    protected readonly configDir: string;
    protected readonly configFile: string;
    protected readonly backupFile: string;
    constructor();
    ensureConfigDir(): void;
    configExists(): boolean;
    readConfig(): RawiConfig;
    writeConfig(config: RawiConfig): void;
    backupConfig(): void;
    restoreConfig(): void;
    getCredentials(profile?: string): RawiCredentials | null;
    setCredentials(credentials: RawiCredentials, profile?: string): void;
    listProfiles(): string[];
    deleteProfile(profile: string): boolean;
    getConfigFile(): string;
    getConfigDir(): string;
    getBackupFile(): string;
}

export { BaseConfigManager };
