import { CancellationToken } from "../../../../base/common/cancellation.js";
import { Event } from "../../../../base/common/event.js";
import { IMarkdownString } from "../../../../base/common/htmlContent.js";
import { IPager } from "@codingame/monaco-vscode-9ed6fe06-a052-57c2-a234-5d9b94d2e7e0-common/vscode/vs/base/common/paging";
import { URI } from "../../../../base/common/uri.js";
import { IQueryOptions, IExtensionInfo, IExtensionQueryOptions, InstallOptions, InstallExtensionResult } from "../../../../platform/extensionManagement/common/extensionManagement.js";
import { ProgressLocation } from "../../../../platform/progress/common/progress.js";
import { IExtensionManagementServer, EnablementState } from "../../../services/extensionManagement/common/extensionManagement.js";
import { IExtensionsStatus as IExtensionRuntimeStatus } from "../../../services/extensions/common/extensions.js";
import { IExtension, InstallExtensionOptions, AutoUpdateConfigurationValue, IExtensionsNotification } from "./extensions.js";
import { IExtensionEditorOptions } from "@codingame/monaco-vscode-cf77987b-b1b7-5359-aaf8-a259c63d9f03-common/vscode/vs/workbench/contrib/extensions/common/extensionsInput";
export declare const IExtensionsWorkbenchService: import("../../../../platform/instantiation/common/instantiation.js").ServiceIdentifier<IExtensionsWorkbenchService>;
export interface IExtensionsWorkbenchService {
    readonly _serviceBrand: undefined;
    readonly onChange: Event<IExtension | undefined>;
    readonly onReset: Event<void>;
    readonly local: IExtension[];
    readonly installed: IExtension[];
    readonly outdated: IExtension[];
    readonly whenInitialized: Promise<void>;
    queryLocal(server?: IExtensionManagementServer): Promise<IExtension[]>;
    queryGallery(token: CancellationToken): Promise<IPager<IExtension>>;
    queryGallery(options: IQueryOptions, token: CancellationToken): Promise<IPager<IExtension>>;
    getExtensions(extensionInfos: IExtensionInfo[], token: CancellationToken): Promise<IExtension[]>;
    getExtensions(extensionInfos: IExtensionInfo[], options: IExtensionQueryOptions, token: CancellationToken): Promise<IExtension[]>;
    getResourceExtensions(locations: URI[], isWorkspaceScoped: boolean): Promise<IExtension[]>;
    canInstall(extension: IExtension): Promise<true | IMarkdownString>;
    install(id: string, installOptions?: InstallExtensionOptions, progressLocation?: ProgressLocation | string): Promise<IExtension>;
    install(vsix: URI, installOptions?: InstallExtensionOptions, progressLocation?: ProgressLocation | string): Promise<IExtension>;
    install(extension: IExtension, installOptions?: InstallExtensionOptions, progressLocation?: ProgressLocation | string): Promise<IExtension>;
    installInServer(extension: IExtension, server: IExtensionManagementServer, installOptions?: InstallOptions): Promise<void>;
    downloadVSIX(extension: string, versionKind: "prerelease" | "release" | "any"): Promise<void>;
    uninstall(extension: IExtension): Promise<void>;
    togglePreRelease(extension: IExtension): Promise<void>;
    canSetLanguage(extension: IExtension): boolean;
    setLanguage(extension: IExtension): Promise<void>;
    setEnablement(extensions: IExtension | IExtension[], enablementState: EnablementState): Promise<void>;
    isAutoUpdateEnabledFor(extensionOrPublisher: IExtension | string): boolean;
    updateAutoUpdateEnablementFor(extensionOrPublisher: IExtension | string, enable: boolean): Promise<void>;
    shouldRequireConsentToUpdate(extension: IExtension): Promise<string | undefined>;
    updateAutoUpdateForAllExtensions(value: boolean): Promise<void>;
    open(extension: IExtension | string, options?: IExtensionEditorOptions): Promise<void>;
    openSearch(searchValue: string, focus?: boolean): Promise<void>;
    getAutoUpdateValue(): AutoUpdateConfigurationValue;
    checkForUpdates(): Promise<void>;
    getExtensionRuntimeStatus(extension: IExtension): IExtensionRuntimeStatus | undefined;
    updateAll(): Promise<InstallExtensionResult[]>;
    updateRunningExtensions(): Promise<void>;
    readonly onDidChangeExtensionsNotification: Event<IExtensionsNotification | undefined>;
    getExtensionsNotification(): IExtensionsNotification | undefined;
    isExtensionIgnoredToSync(extension: IExtension): boolean;
    toggleExtensionIgnoredToSync(extension: IExtension): Promise<void>;
    toggleApplyExtensionToAllProfiles(extension: IExtension): Promise<void>;
}
