
import './vscode-dts/vscode.proposed.d.ts'
import './vscode-dts/vscode.d.ts'
import { IJSONSchema } from "../../../base/common/jsonSchema.js";
import Severity from "../../../base/common/severity.js";
import { URI } from "../../../base/common/uri.js";
import { ILocalizedString } from "../../action/common/action.js";
import { ExtensionKind } from "../../environment/common/environment.js";
export declare const USER_MANIFEST_CACHE_FILE = "extensions.user.cache";
export declare const BUILTIN_MANIFEST_CACHE_FILE = "extensions.builtin.cache";
export declare const UNDEFINED_PUBLISHER = "undefined_publisher";
export interface ICommand {
    readonly command: string;
    readonly title: string | ILocalizedString;
    readonly shortTitle?: string;
    readonly category?: string | ILocalizedString;
    readonly enablement?: string;
    readonly icon?: string | {
        readonly light?: string;
        readonly dark?: string;
    };
}
export interface IDebugger {
    readonly type: string;
    readonly label?: string;
    readonly program?: string;
    readonly args?: unknown[];
    readonly runtime?: string;
    readonly runtimeArgs?: unknown[];
    readonly variables?: {};
    readonly initialConfigurations?: unknown[] | string;
    readonly languages?: unknown[];
    readonly configurationSnippets?: unknown[];
    readonly configurationAttributes?: {};
    readonly when?: string;
    readonly hiddenWhen?: string;
    readonly deprecated?: string;
    readonly windows?: {
        runtime?: string;
    };
    readonly osx?: {
        runtime?: string;
    };
    readonly linux?: {
        readonly runtime?: string;
    };
    readonly strings?: {
        readonly unverifiedBreakpoints?: string;
    };
}
export interface IGrammar {
    readonly language?: string;
    readonly scopeName: string;
    readonly path: string;
    readonly embeddedLanguages?: {};
    readonly tokenTypes?: {
        [k: string]: "string" | "comment" | "other";
    };
    readonly injectTo?: string[];
    readonly balancedBracketScopes?: string[];
    readonly unbalancedBracketScopes?: string[];
}
export interface IJSONValidation {
    readonly fileMatch?: string | string[];
    readonly url: string;
}
export interface IKeyBinding {
    readonly command: string;
    readonly args?: {
        [k: string]: unknown;
    };
    readonly key: string;
    readonly mac?: string;
    readonly linux?: string;
    readonly win?: string;
    readonly when?: string;
}
export interface ILanguage {
    readonly id: string;
    readonly aliases?: string[];
    readonly extensions?: string[];
    readonly filenames?: string[];
    readonly filenamePatterns?: string[];
    readonly mimetypes?: string[];
    readonly firstLine?: string;
    readonly configuration?: string;
    readonly icon?: {
        readonly light?: string;
        readonly dark?: string;
    };
}
export interface IMenu {
    readonly command: string;
    readonly alt?: string;
    readonly when?: string;
    readonly group?: string;
}
export interface ISubMenu {
    readonly submenu: string;
    readonly when?: string;
    readonly group?: string;
}
export interface ISnippet {
    readonly language: string;
    readonly path: string;
}
export interface IColorTheme {
    readonly id: string;
    readonly label: string;
    readonly uiTheme: "vs" | "vs-dark" | "hc-black" | "hc-light";
    readonly path: string;
}
export interface IIconTheme {
    readonly id: string;
    readonly label: string;
    readonly path: string;
}
export interface IProductTheme {
    readonly id: string;
    readonly label: string;
    readonly path: string;
}
export interface IViewContainer {
    readonly id: string;
    readonly title: string;
    readonly icon: string;
}
export interface IView {
    readonly type?: "tree" | "webview";
    readonly id: string;
    readonly name: string;
    readonly when?: string;
    readonly icon?: string;
    readonly contextualTitle?: string;
    readonly visibility?: "visible" | "hidden" | "collapsed";
    readonly initialSize?: number;
}
export interface IColor {
    readonly id: string;
    readonly description: string;
    readonly defaults: {
        readonly light: string;
        readonly dark: string;
        readonly highContrast?: string;
        readonly highContrastLight?: string;
    };
}
interface IWebviewEditor {
    readonly viewType: string;
    readonly priority: string;
    readonly displayName: string;
    readonly selector: {
        readonly filenamePattern?: string;
    }[];
}
export interface ICodeActionContributionAction {
    readonly kind: string;
    readonly title: string;
    readonly description?: string;
}
export interface ICodeActionContribution {
    readonly languages: string[];
    readonly actions: readonly ICodeActionContributionAction[];
}
export interface IAuthenticationContribution {
    readonly id: string;
    readonly label: string;
}
export interface IWalkthroughStep {
    readonly id: string;
    readonly title: string;
    readonly description?: string;
    readonly button?: {
        [k: string]: unknown;
    };
    readonly media: {
        image: string | {
            dark: string;
            light: string;
            hc: string;
        };
        altText: string;
        markdown?: never;
        svg?: never;
        video?: never;
    } | {
        markdown: string;
        image?: never;
        svg?: never;
        video?: never;
    } | {
        svg: string;
        altText: string;
        markdown?: never;
        image?: never;
        video?: never;
    } | {
        video: string | {
            dark: string;
            light: string;
            hc: string;
        };
        poster: string | {
            dark: string;
            light: string;
            hc: string;
        };
        altText: string;
        markdown?: never;
        image?: never;
        svg?: never;
    };
    readonly completionEvents?: string[];
    readonly doneOn?: {
        command: string;
    };
    readonly when?: string;
}
export interface IWalkthrough {
    readonly id: string;
    readonly title: string;
    readonly icon?: string;
    readonly description: string;
    readonly featuredFor?: string[];
    readonly when?: string;
    readonly steps: IWalkthroughStep[];
}
export interface IStartEntry {
    readonly title: string;
    readonly description: string;
    readonly command: string;
    readonly when?: string;
    readonly category: "file" | "folder" | "notebook";
}
export interface INotebookEntry {
    readonly type: string;
    readonly displayName: string;
    readonly selector: {
        readonly filenamePattern?: string;
        readonly excludeFileNamePattern?: string;
    }[];
    readonly priority?: "default" | "option";
}
export interface INotebookRendererContribution {
    readonly id: string;
    readonly displayName: string;
    readonly dependencies?: string[];
    readonly optionalDependencies?: string[];
    readonly requiresMessaging?: "always" | "optional" | "never";
    readonly mimeTypes: string[];
    readonly entrypoint: string | {
        readonly extends: string;
        readonly path: string;
    };
}
export interface IDebugVisualizationContribution {
    readonly id: string;
    readonly when: string;
}
export interface ITranslation {
    readonly id: string;
    readonly path: string;
}
export interface ILocalizationContribution {
    readonly languageId: string;
    readonly languageName?: string;
    readonly localizedLanguageName?: string;
    readonly translations: ITranslation[];
}
export interface ITerminal {
    readonly profiles?: {
        readonly id: string;
        readonly title: string;
        readonly icon?: (string | {
            readonly light?: string;
            readonly dark?: string;
            [k: string]: unknown;
        });
    }[];
}
export interface IStatusBarItem {
    readonly id: string;
    readonly name: string;
    readonly text: string;
    readonly tooltip?: string;
    readonly command?: string;
    readonly alignment: "left" | "right";
    readonly priority?: number;
    readonly accessibilityInformation?: {
        readonly role?: string;
        readonly label?: string;
    };
}
export interface IRemoteHelp {
    readonly getStarted?: string | {
        id: string;
    };
    readonly documentation?: string;
    readonly feedback?: string;
    readonly reportIssue?: string;
    readonly issues?: string;
}
export interface ITaskDefinitions {
    readonly type?: string;
    readonly required?: string[];
    readonly properties?: {
        [k: string]: IJSONSchema;
    };
    readonly when?: string;
}
export interface IIcon {
    readonly description: string;
    readonly default: string | {
        readonly fontPath: string;
        readonly fontCharacter: string;
    };
}
export interface IDocumentationRefactoring {
    readonly title: string;
    readonly when: string;
    readonly command: string;
}
export interface IDocumentation {
    readonly refactoring?: IDocumentationRefactoring[];
}
export interface ISubMenu {
    readonly id: string;
    readonly label: string;
    readonly icon?: string | {
        readonly light?: string;
        readonly dark?: string;
    };
}
interface IResourceLabelFormatters {
    readonly scheme: string;
    readonly authority?: string;
    readonly formatting: {
        readonly label?: string;
        readonly separator?: string;
        readonly stripPathStartingSeparator?: boolean;
        readonly tildify?: boolean;
        readonly workspaceSuffix?: string;
    };
}
export interface ISemanticTokenTypes {
    readonly id?: string;
    readonly superType?: string;
    readonly description?: string;
}
export interface ISemanticTokenModifiers {
    readonly id?: string;
    readonly description?: string;
}
export interface ISemanticTokenScopes {
    readonly language?: string;
    readonly scopes?: {
        [k: string]: string[];
    };
}
export interface IBreakpoint {
    readonly language?: string;
    readonly when?: string;
}
export interface ITerminalQuickFix {
    readonly id: string;
    readonly commandLineMatcher: string;
    readonly outputMatcher: {
        readonly lineMatcher: string;
        readonly anchor: "top" | "bottom";
        readonly offset: number;
        readonly length: number;
    };
    readonly commandExitResult: "success" | "error";
    readonly kind?: "default" | "explain";
}
export interface IInteractiveSession {
    readonly id: string;
    readonly label: string;
    readonly icon?: string;
    readonly when?: string;
}
export interface INotebook {
    readonly type: string;
    readonly displayName: string;
    readonly selector: {
        readonly filenamePattern?: string;
        readonly excludeFileNamePattern?: string;
    }[];
    readonly priority?: "default" | "option";
}
export interface NotebookPreload {
    readonly type: string;
    readonly entrypoint: string;
    readonly localResourceRoots?: string[];
}
export interface IViewsWelcome {
    readonly view: string;
    readonly contents: string;
    readonly when?: string;
    readonly group?: string;
    readonly enablement?: string;
}
export interface INamedProblemPattern extends IProblemPattern {
    name: string;
    label?: string;
}
export interface ICheckedProblemPattern extends IProblemPattern {
    regexp: string;
}
export type MultiLineCheckedProblemPattern = ICheckedProblemPattern[];
export interface INamedMultiLineCheckedProblemPattern {
    name: string;
    label?: string;
    patterns: MultiLineCheckedProblemPattern;
}
export type NamedProblemPatterns = (INamedProblemPattern | INamedMultiLineCheckedProblemPattern)[];
export interface IProblemPattern {
    regexp?: string;
    kind?: string;
    file?: number;
    location?: number;
    line?: number;
    column?: number;
    endLine?: number;
    endColumn?: number;
    severity?: number;
    code?: number;
    message?: number;
    loop?: boolean;
}
export interface IWatchingPattern {
    regexp?: string;
    file?: number;
}
export interface IBackgroundMonitor {
    activeOnStart?: boolean;
    beginsPattern?: string | IWatchingPattern;
    endsPattern?: string | IWatchingPattern;
}
export interface INamedProblemMatcher {
    name: string;
    label?: string;
    base?: string;
    owner?: string;
    source?: string;
    applyTo?: string;
    severity?: string;
    fileLocation?: string | string[] | [
        "search",
        ISearchFileLocationArgs
    ];
    pattern?: string | IProblemPattern | IProblemPattern[];
    watchedTaskBeginsRegExp?: string;
    watchedTaskEndsRegExp?: string;
    watching?: IBackgroundMonitor;
    background?: IBackgroundMonitor;
}
export type ISearchFileLocationArgs = {
    include?: string | string[];
    exclude?: string | string[];
};
export interface ITypescriptServerPlugin {
    name: string;
    enableForWorkspaceTypeScriptVersions: boolean;
}
export interface IHtmlLanguageParticipant {
    languageId: string;
    autoInsert: boolean;
}
export interface IChatParticipantContribution {
    id: string;
    name: string;
    fullName: string;
    description?: string;
    isDefault?: boolean;
    commands?: {
        name: string;
    }[];
}
export interface IToolContribution {
    name: string;
    displayName: string;
    modelDescription: string;
    userDescription?: string;
}
export interface IMcpCollectionContribution {
    readonly id: string;
    readonly label: string;
}
export interface IExtensionContributions {
    readonly terminal?: ITerminal;
    readonly commands?: ICommand[];
    readonly configuration?: any;
    readonly debuggers?: IDebugger[];
    readonly breakpoints?: IBreakpoint[];
    readonly grammars?: IGrammar[];
    readonly jsonValidation?: IJSONValidation[];
    readonly keybindings?: IKeyBinding[];
    readonly languages?: ILanguage[];
    readonly menus?: {
        [context: string]: IMenu[];
    };
    readonly submenus?: ISubMenu[];
    readonly snippets?: ISnippet[];
    readonly themes?: IColorTheme[];
    readonly iconThemes?: IIconTheme[];
    readonly productIconThemes?: IProductTheme[];
    readonly viewsContainers?: {
        [location: string]: IViewContainer[];
    };
    readonly views?: {
        [location: string]: IView[];
    };
    readonly colors?: IColor[];
    readonly localizations?: ILocalizationContribution[];
    readonly customEditors?: readonly IWebviewEditor[];
    readonly codeActions?: readonly ICodeActionContribution[];
    readonly authentication?: IAuthenticationContribution[];
    readonly walkthroughs?: IWalkthrough[];
    readonly startEntries?: IStartEntry[];
    readonly notebooks?: INotebookEntry[];
    readonly notebookRenderer?: INotebookRendererContribution[];
    readonly debugVisualizers?: IDebugVisualizationContribution[];
    readonly chatParticipants?: ReadonlyArray<IChatParticipantContribution>;
    readonly languageModelTools?: ReadonlyArray<IToolContribution>;
    readonly modelContextServerCollections?: ReadonlyArray<IMcpCollectionContribution>;
    readonly notebookPreload?: NotebookPreload[];
    readonly statusBarItems?: IStatusBarItem[];
    readonly remoteHelp?: IRemoteHelp;
    readonly taskDefinitions?: ITaskDefinitions[];
    readonly icons?: {
        [id: string]: IIcon;
    };
    readonly documentation?: IDocumentation;
    readonly resourceLabelFormatters?: IResourceLabelFormatters[];
    readonly configurationDefaults?: {
        [id: string]: any;
    };
    readonly semanticTokenTypes?: ISemanticTokenTypes[];
    readonly semanticTokenModifiers?: ISemanticTokenModifiers[];
    readonly semanticTokenScopes?: ISemanticTokenScopes[];
    readonly terminalQuickFixes?: ITerminalQuickFix[];
    readonly interactiveSession?: IInteractiveSession[];
    readonly viewsWelcome?: IViewsWelcome[];
    readonly problemMatchers?: INamedProblemMatcher[];
    readonly problemPatterns?: NamedProblemPatterns;
    readonly typescriptServerPlugins?: ITypescriptServerPlugin[];
    readonly htmlLanguageParticipants?: IHtmlLanguageParticipant[];
    readonly html?: {
        customData?: string[];
    };
    readonly css?: {
        customData?: string[];
    };
}
export interface IExtensionCapabilities {
    readonly virtualWorkspaces?: ExtensionVirtualWorkspaceSupport;
    readonly untrustedWorkspaces?: ExtensionUntrustedWorkspaceSupport;
}
export declare const ALL_EXTENSION_KINDS: readonly ExtensionKind[];
export type LimitedWorkspaceSupportType = "limited";
export type ExtensionUntrustedWorkspaceSupportType = boolean | LimitedWorkspaceSupportType;
export type ExtensionUntrustedWorkspaceSupport = {
    supported: true;
} | {
    supported: false;
    description: string;
} | {
    supported: LimitedWorkspaceSupportType;
    description: string;
    restrictedConfigurations?: string[];
};
export type ExtensionVirtualWorkspaceSupportType = boolean | LimitedWorkspaceSupportType;
export type ExtensionVirtualWorkspaceSupport = boolean | {
    supported: true;
} | {
    supported: false | LimitedWorkspaceSupportType;
    description: string;
};
export declare function getWorkspaceSupportTypeMessage(supportType: ExtensionUntrustedWorkspaceSupport | ExtensionVirtualWorkspaceSupport | undefined): string | undefined;
export interface IExtensionIdentifier {
    id: string;
    uuid?: string;
}
export declare const EXTENSION_CATEGORIES: string[];
export interface IRelaxedExtensionManifest {
    name: string;
    displayName?: string;
    publisher: string;
    version: string;
    engines: {
        readonly vscode: string;
    };
    description?: string;
    main?: string;
    type?: string;
    browser?: string;
    preview?: boolean;
    l10n?: string;
    icon?: string;
    categories?: string[];
    keywords?: string[];
    activationEvents?: string[];
    extensionDependencies?: string[];
    extensionPack?: string[];
    extensionKind?: ExtensionKind | ExtensionKind[];
    contributes?: IExtensionContributions;
    repository?: {
        url: string;
    };
    bugs?: {
        url: string;
    };
    originalEnabledApiProposals?: readonly string[];
    enabledApiProposals?: readonly string[];
    api?: string;
    scripts?: {
        [key: string]: string;
    };
    capabilities?: IExtensionCapabilities;
}
export type IExtensionManifest = Readonly<IRelaxedExtensionManifest>;
export declare enum ExtensionType {
    System = 0,
    User = 1
}
export declare enum TargetPlatform {
    WIN32_X64 = "win32-x64",
    WIN32_ARM64 = "win32-arm64",
    LINUX_X64 = "linux-x64",
    LINUX_ARM64 = "linux-arm64",
    LINUX_ARMHF = "linux-armhf",
    ALPINE_X64 = "alpine-x64",
    ALPINE_ARM64 = "alpine-arm64",
    DARWIN_X64 = "darwin-x64",
    DARWIN_ARM64 = "darwin-arm64",
    WEB = "web",
    UNIVERSAL = "universal",
    UNKNOWN = "unknown",
    UNDEFINED = "undefined"
}
export interface IExtension {
    readonly type: ExtensionType;
    readonly isBuiltin: boolean;
    readonly identifier: IExtensionIdentifier;
    readonly manifest: IExtensionManifest;
    readonly location: URI;
    readonly targetPlatform: TargetPlatform;
    readonly publisherDisplayName?: string;
    readonly readmeUrl?: URI;
    readonly changelogUrl?: URI;
    readonly isValid: boolean;
    readonly validations: readonly [
        Severity,
        string
    ][];
    readonly preRelease: boolean;
}
export declare class ExtensionIdentifier {
    readonly value: string;
    readonly _lower: string;
    constructor(value: string);
    static equals(a: ExtensionIdentifier | string | null | undefined, b: ExtensionIdentifier | string | null | undefined): boolean;
    static toKey(id: ExtensionIdentifier | string): string;
}
export declare class ExtensionIdentifierSet {
    private readonly _set;
    get size(): number;
    constructor(iterable?: Iterable<ExtensionIdentifier | string>);
    add(id: ExtensionIdentifier | string): void;
    delete(extensionId: ExtensionIdentifier): boolean;
    has(id: ExtensionIdentifier | string): boolean;
}
export declare class ExtensionIdentifierMap<T> {
    private readonly _map;
    clear(): void;
    delete(id: ExtensionIdentifier | string): void;
    get(id: ExtensionIdentifier | string): T | undefined;
    has(id: ExtensionIdentifier | string): boolean;
    set(id: ExtensionIdentifier | string, value: T): void;
    values(): IterableIterator<T>;
    forEach(callbackfn: (value: T, key: string, map: Map<string, T>) => void): void;
    [Symbol.iterator](): IterableIterator<[
        string,
        T
    ]>;
}
export declare class ExtensionError extends Error {
    readonly extension: ExtensionIdentifier;
    constructor(extensionIdentifier: ExtensionIdentifier, cause: Error, message?: string);
}
export interface IRelaxedExtensionDescription extends IRelaxedExtensionManifest {
    id?: string;
    identifier: ExtensionIdentifier;
    uuid?: string;
    publisherDisplayName?: string;
    targetPlatform: TargetPlatform;
    isBuiltin: boolean;
    isUserBuiltin: boolean;
    isUnderDevelopment: boolean;
    extensionLocation: URI;
    preRelease: boolean;
}
export type IExtensionDescription = Readonly<IRelaxedExtensionDescription>;
export declare function isApplicationScopedExtension(manifest: IExtensionManifest): boolean;
export declare function isLanguagePackExtension(manifest: IExtensionManifest): boolean;
export declare function isAuthenticationProviderExtension(manifest: IExtensionManifest): boolean;
export declare function isResolverExtension(manifest: IExtensionManifest, remoteAuthority: string | undefined): boolean;
export declare function parseApiProposals(enabledApiProposals: string[]): {
    proposalName: string;
    version?: number;
}[];
export declare function parseEnabledApiProposalNames(enabledApiProposals: string[]): string[];
export {};
