/// <reference path="./vscode-dts/vscode.proposed.d.ts" />
/// <reference path="./vscode-dts/vscode.d.ts" />
import type * as vscode from "vscode";
import { type IExtension, type IExtensionContributions, type IExtensionManifest } from "./vscode/src/vs/platform/extensions/common/extensions.js";
import { type IDisposable } from "./vscode/src/vs/base/common/lifecycle.js";
import type { ITranslations } from "./vscode/src/vs/platform/extensionManagement/common/extensionNls.js";
import { ExtensionHostKind } from "./vscode/src/vs/workbench/services/extensions/common/extensionHostKind.js";
import { type ExtensionFileMetadata } from "@codingame/monaco-vscode-files-service-override";
export type ApiFactory = (extensionId?: string) => Promise<typeof vscode>;
export declare function registerLocalApiFactory(_apiFactory: ApiFactory): void;
export declare function registerDefaultApiHandler(handler: (api: typeof vscode) => void): void;
export interface RegisterExtensionParams {
    path?: string;
    system?: boolean;
    readmePath?: string;
    changelogPath?: string;
}
export interface RegisterRemoteExtensionParams extends RegisterExtensionParams {
    path: string;
}
export interface RegisterExtensionResult {
    id: string;
    dispose(): Promise<void>;
    whenReady(): Promise<void>;
    isEnabled(): Promise<boolean>;
}
export type RegisterRemoteExtensionResult = RegisterExtensionResult;
export interface RegisterLocalExtensionResult extends RegisterExtensionResult {
    registerFileUrl: (path: string, url: string) => IDisposable;
}
export interface RegisterLocalProcessExtensionResult extends RegisterLocalExtensionResult {
    getApi(): Promise<typeof vscode>;
    setAsDefaultApi(): Promise<void>;
}
export declare function registerRemoteExtension(directory: string): Promise<RegisterRemoteExtensionResult>;
export declare function getExtensionManifests(): IExtension[];
export declare function getForcedExtensionHostKind(id: string): ExtensionHostKind | undefined;
export declare function registerExtension(manifest: IExtensionManifest, extHostKind: ExtensionHostKind.LocalProcess, params?: RegisterExtensionParams): RegisterLocalProcessExtensionResult;
export declare function registerExtension(manifest: IExtensionManifest, extHostKind: ExtensionHostKind.LocalWebWorker, params?: RegisterExtensionParams): RegisterLocalExtensionResult;
export declare function registerExtension(manifest: IExtensionManifest, extHostKind: ExtensionHostKind.Remote, params?: RegisterRemoteExtensionParams): RegisterRemoteExtensionResult;
export declare function registerExtension(manifest: IExtensionManifest, extHostKind?: ExtensionHostKind, params?: RegisterExtensionParams): RegisterExtensionResult;
export { ExtensionHostKind };
export type { IExtensionManifest, ITranslations, IExtensionContributions, ExtensionFileMetadata };
