
import './vscode-dts/vscode.proposed.d.ts'
import './vscode-dts/vscode.d.ts'
import { Event } from "../../../../base/common/event.js";
import { ILocalExtension, IGalleryExtension, IExtensionIdentifier, IDeprecationInfo, InstallOptions } from "../../../../platform/extensionManagement/common/extensionManagement.js";
import { EnablementState, IExtensionManagementServer, IResourceExtension } from "../../../services/extensionManagement/common/extensionManagement.js";
import { CancellationToken } from "../../../../base/common/cancellation.js";
import { Disposable, IDisposable } from "../../../../base/common/lifecycle.js";
import { IExtensionManifest, ExtensionType } from "../../../../platform/extensions/common/extensions.js";
import { URI } from "../../../../base/common/uri.js";
import { IView, IViewPaneContainer } from "../../../common/views.js";
import { RawContextKey } from "../../../../platform/contextkey/common/contextkey.js";
import { MenuId } from "../../../../platform/actions/common/actions.js";
import { Severity } from "../../../../platform/notification/common/notification.js";
import { IMarkdownString } from "../../../../base/common/htmlContent.js";
import { IExtensionsWorkbenchService } from "./extensions.service.js";
export declare const VIEWLET_ID = "workbench.view.extensions";
export declare const EXTENSIONS_CATEGORY: import("../../../../nls.js").ILocalizedString;
export interface IExtensionsViewPaneContainer extends IViewPaneContainer {
    readonly searchValue: string | undefined;
    search(text: string): void;
    refresh(): Promise<void>;
}
export interface IWorkspaceRecommendedExtensionsView extends IView {
    installWorkspaceRecommendations(): Promise<void>;
}
export declare enum ExtensionState {
    Installing = 0,
    Installed = 1,
    Uninstalling = 2,
    Uninstalled = 3
}
export declare enum ExtensionRuntimeActionType {
    ReloadWindow = "reloadWindow",
    RestartExtensions = "restartExtensions",
    DownloadUpdate = "downloadUpdate",
    ApplyUpdate = "applyUpdate",
    QuitAndInstall = "quitAndInstall"
}
export type ExtensionRuntimeState = {
    action: ExtensionRuntimeActionType;
    reason: string;
};
export interface IExtension {
    readonly type: ExtensionType;
    readonly isBuiltin: boolean;
    readonly isWorkspaceScoped: boolean;
    readonly state: ExtensionState;
    readonly name: string;
    readonly displayName: string;
    readonly identifier: IExtensionIdentifier;
    readonly publisher: string;
    readonly publisherDisplayName: string;
    readonly publisherUrl?: URI;
    readonly publisherDomain?: {
        link: string;
        verified: boolean;
    };
    readonly publisherSponsorLink?: URI;
    readonly pinned: boolean;
    readonly version: string;
    readonly private: boolean;
    readonly latestVersion: string;
    readonly preRelease: boolean;
    readonly isPreReleaseVersion: boolean;
    readonly hasPreReleaseVersion: boolean;
    readonly hasReleaseVersion: boolean;
    readonly description: string;
    readonly url?: string;
    readonly repository?: string;
    readonly supportUrl?: string;
    readonly iconUrl?: string;
    readonly iconUrlFallback?: string;
    readonly licenseUrl?: string;
    readonly installCount?: number;
    readonly rating?: number;
    readonly ratingCount?: number;
    readonly ratingUrl?: string;
    readonly outdated: boolean;
    readonly outdatedTargetPlatform: boolean;
    readonly runtimeState: ExtensionRuntimeState | undefined;
    readonly enablementState: EnablementState;
    readonly tags: readonly string[];
    readonly categories: readonly string[];
    readonly dependencies: string[];
    readonly extensionPack: string[];
    readonly telemetryData: any;
    readonly preview: boolean;
    getManifest(token: CancellationToken): Promise<IExtensionManifest | null>;
    hasReadme(): boolean;
    getReadme(token: CancellationToken): Promise<string>;
    hasChangelog(): boolean;
    getChangelog(token: CancellationToken): Promise<string>;
    readonly server?: IExtensionManagementServer;
    readonly local?: ILocalExtension;
    gallery?: IGalleryExtension;
    readonly resourceExtension?: IResourceExtension;
    readonly isMalicious: boolean | undefined;
    readonly maliciousInfoLink: string | undefined;
    readonly deprecationInfo?: IDeprecationInfo;
    readonly missingFromGallery?: boolean;
}
export interface InstallExtensionOptions extends InstallOptions {
    version?: string;
    justification?: string | {
        reason: string;
        action: string;
    };
    enable?: boolean;
    installEverywhere?: boolean;
}
export interface IExtensionsNotification {
    readonly message: string | IMarkdownString;
    readonly severity: Severity;
    readonly extensions: IExtension[];
    readonly query?: string;
    readonly action?: {
        readonly label: string;
        run(): void;
    };
    dismiss?(): void;
}
export declare enum ExtensionEditorTab {
    Readme = "readme",
    Features = "features",
    Changelog = "changelog",
    Dependencies = "dependencies",
    ExtensionPack = "extensionPack"
}
export declare const ConfigurationKey = "extensions";
export declare const AutoUpdateConfigurationKey = "extensions.autoUpdate";
export declare const AutoCheckUpdatesConfigurationKey = "extensions.autoCheckUpdates";
export declare const CloseExtensionDetailsOnViewChangeKey = "extensions.closeExtensionDetailsOnViewChange";
export declare const AutoRestartConfigurationKey = "extensions.autoRestart";
export type AutoUpdateConfigurationValue = boolean | "onlyEnabledExtensions" | "onlySelectedExtensions";
export interface IExtensionsConfiguration {
    autoUpdate: AutoUpdateConfigurationValue;
    autoCheckUpdates: boolean;
    ignoreRecommendations: boolean;
    closeExtensionDetailsOnViewChange: boolean;
}
export interface IExtensionContainer extends IDisposable {
    extension: IExtension | null;
    updateWhenCounterExtensionChanges?: boolean;
    update(): void;
}
export interface IExtensionsViewState {
    readonly onFocus: Event<IExtension>;
    readonly onBlur: Event<IExtension>;
    filters: {
        featureId?: string;
    };
}
export declare class ExtensionContainers extends Disposable {
    private readonly containers;
    constructor(containers: IExtensionContainer[], extensionsWorkbenchService: IExtensionsWorkbenchService);
    set extension(extension: IExtension);
    private update;
}
export declare const WORKSPACE_RECOMMENDATIONS_VIEW_ID = "workbench.views.extensions.workspaceRecommendations";
export declare const OUTDATED_EXTENSIONS_VIEW_ID = "workbench.views.extensions.searchOutdated";
export declare const TOGGLE_IGNORE_EXTENSION_ACTION_ID = "workbench.extensions.action.toggleIgnoreExtension";
export declare const SELECT_INSTALL_VSIX_EXTENSION_COMMAND_ID = "workbench.extensions.action.installVSIX";
export declare const INSTALL_EXTENSION_FROM_VSIX_COMMAND_ID = "workbench.extensions.command.installFromVSIX";
export declare const LIST_WORKSPACE_UNSUPPORTED_EXTENSIONS_COMMAND_ID = "workbench.extensions.action.listWorkspaceUnsupportedExtensions";
export declare const DefaultViewsContext: RawContextKey<boolean>;
export declare const HasOutdatedExtensionsContext: RawContextKey<boolean>;
export declare const CONTEXT_HAS_GALLERY: RawContextKey<boolean>;
export declare const CONTEXT_EXTENSIONS_GALLERY_STATUS: RawContextKey<string>;
export declare const ExtensionResultsListFocused: RawContextKey<boolean>;
export declare const SearchMcpServersContext: RawContextKey<boolean>;
export declare const SearchAgentPluginsContext: RawContextKey<boolean>;
export declare const THEME_ACTIONS_GROUP = "_theme_";
export declare const INSTALL_ACTIONS_GROUP = "0_install";
export declare const UPDATE_ACTIONS_GROUP = "0_update";
export declare const extensionsSearchActionsMenu: MenuId;
export declare const extensionsFilterSubMenu: MenuId;
export interface IExtensionArg {
    id: string;
    version: string;
    location: URI | undefined;
    galleryLink: string | undefined;
}
