/**
 * @license
 * Copyright 2025 Google LLC
 * SPDX-License-Identifier: Apache-2.0
 */
import { EventEmitter } from 'events';
import { type ISettingsService, type GlobalSettings, type ProviderSettings, type SettingsChangeEvent, type EventListener, type EventUnsubscribe, type DiagnosticsInfo } from './types.js';
export declare class SettingsService extends EventEmitter implements ISettingsService {
    private settings;
    private eventEmitter;
    constructor();
    get(key: string): unknown;
    set(key: string, value: unknown): void;
    getProviderSettings(provider: string): Record<string, unknown>;
    setProviderSetting(provider: string, key: string, value: unknown): void;
    clear(): void;
    getAllGlobalSettings(): Record<string, unknown>;
    private getNestedValue;
    private setNestedValue;
    on(event: 'settings_changed', listener: EventListener<SettingsChangeEvent>): EventUnsubscribe;
    on(eventName: string | symbol, listener: (...args: unknown[]) => void): this;
    off(event: string, listener: (...args: unknown[]) => void): this;
    getSettings(): Promise<GlobalSettings>;
    getSettings(provider: string): Promise<ProviderSettings>;
    updateSettings(changes: Partial<GlobalSettings>): Promise<void>;
    updateSettings(provider: string, changes: Partial<ProviderSettings>): Promise<void>;
    switchProvider(newProvider: string): Promise<void>;
    exportForProfile(): Promise<{
        defaultProvider: string;
        providers: Record<string, ProviderSettings>;
        tools: {
            allowed: string[];
            disabled: string[];
        };
    }>;
    importFromProfile(profileData: unknown): Promise<void>;
    setCurrentProfileName(profileName: string | null): void;
    getCurrentProfileName(): string | null;
    getDiagnosticsData(): Promise<DiagnosticsInfo>;
    onSettingsChanged(listener: EventListener<SettingsChangeEvent>): EventUnsubscribe;
}
