import { Disposable } from "../../../../base/common/lifecycle.js";
import { IReader, ITransaction } from "../../../../base/common/observable.js";
import { IStorageService } from "../../../../platform/storage/common/storage.service.js";
export declare enum ContributionEnablementState {
    DisabledProfile = 0,
    DisabledWorkspace = 1,
    EnabledProfile = 2,
    EnabledWorkspace = 3
}
export declare function isContributionEnabled(state: ContributionEnablementState): boolean;
export declare function isContributionDisabled(state: ContributionEnablementState): boolean;
export interface IEnablementModel {
    readEnabled(key: string, reader?: IReader): ContributionEnablementState;
    setEnabled(key: string, state: ContributionEnablementState, tx?: ITransaction): void;
    remove(key: string): void;
}
/**
 * A reusable enablement model for string-keyed contributions. Uses
 * `observableMemento` to persist enable/disable state in both profile-scoped
 * and workspace-scoped storage.
 *
 * Resolution order: if a workspace-scoped entry exists for a key, it wins.
 * Otherwise, the profile-scoped entry is used. The default (absence of any
 * entry) is {@link ContributionEnablementState.EnabledProfile}.
 */
export declare class EnablementModel extends Disposable implements IEnablementModel {
    private readonly _profileState;
    private readonly _workspaceState;
    constructor(storageKey: string, storageService: IStorageService);
    readEnabled(key: string, reader?: IReader): ContributionEnablementState;
    setEnabled(key: string, state: ContributionEnablementState, tx?: ITransaction): void;
    remove(key: string): void;
    private _setInMap;
    private _deleteFromMap;
}
