import { Emitter } from '../common/event';
import { Disposable, DisposableCollection } from '../common/disposable';
import { LabelProviderContribution, DidChangeLabelEvent } from './label-provider';
import { PreferenceSchemaService } from '../common/preferences/preference-schema';
import { PreferenceService } from '../common/preferences';
export interface IconThemeDefinition {
    readonly id: string;
    readonly label: string;
    readonly description?: string;
    readonly hasFileIcons?: boolean;
    readonly hasFolderIcons?: boolean;
    readonly hidesExplorerArrows?: boolean;
    readonly showLanguageModeIcons?: boolean;
}
export interface IconTheme extends IconThemeDefinition {
    activate(): Disposable;
}
export declare class NoneIconTheme implements IconTheme, LabelProviderContribution {
    readonly id = "none";
    readonly label = "None";
    readonly description = "Disable file icons";
    readonly hasFileIcons = true;
    readonly hasFolderIcons = true;
    protected readonly onDidChangeEmitter: Emitter<DidChangeLabelEvent>;
    readonly onDidChange: import("../common/event").Event<DidChangeLabelEvent>;
    protected readonly toDeactivate: DisposableCollection;
    activate(): Disposable;
    protected fireDidChange(): void;
    canHandle(): number;
    getIcon(): string;
}
export declare class IconThemeService {
    static readonly STORAGE_KEY = "iconTheme";
    protected readonly onDidChangeEmitter: Emitter<void>;
    readonly onDidChange: import("../common/event").Event<void>;
    protected readonly _iconThemes: Map<string, IconTheme>;
    get ids(): IterableIterator<string>;
    get definitions(): IterableIterator<IconThemeDefinition>;
    getDefinition(id: string): IconThemeDefinition | undefined;
    protected readonly noneIconTheme: NoneIconTheme;
    protected readonly preferences: PreferenceService;
    protected readonly schemaProvider: PreferenceSchemaService;
    protected readonly onDidChangeCurrentEmitter: Emitter<string>;
    readonly onDidChangeCurrent: import("../common/event").Event<string>;
    protected readonly toDeactivate: DisposableCollection;
    protected activeTheme: IconTheme;
    protected init(): void;
    register(iconTheme: IconTheme): Disposable;
    unregister(id: string): IconTheme | undefined;
    get current(): string;
    set current(id: string);
    getCurrent(): IconTheme;
    /**
     * @param persistSetting If `true`, the theme's id will be set as the value of the `workbench.iconTheme` preference. (default: `true`)
     */
    setCurrent(newCurrent: IconTheme, persistSetting?: boolean): void;
    protected getConfiguredTheme(): IconTheme | undefined;
    protected validateActiveTheme(): void;
    protected updateIconThemePreference: import("lodash").DebouncedFunc<() => void>;
    protected doUpdateIconThemePreference(): void;
    get default(): IconTheme;
    get fallback(): IconTheme;
}
//# sourceMappingURL=icon-theme-service.d.ts.map