import type { PerformanceMark } from "@codingame/monaco-vscode-api/vscode/vs/base/common/performance"; import type { UriComponents, URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri"; import type { IWebSocketFactory } from "@codingame/monaco-vscode-remote-agent-service-override/vscode/vs/platform/remote/browser/browserSocketFactory"; import type { IURLCallbackProvider } from "@codingame/monaco-vscode-base-service-override/vscode/vs/workbench/services/url/browser/urlService"; import type { LogLevel } from "@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log"; import type { IUpdateProvider } from "@codingame/monaco-vscode-update-service-override/vscode/vs/workbench/services/update/browser/updateService"; import type { Event } from "@codingame/monaco-vscode-api/vscode/vs/base/common/event"; import type { IProductConfiguration } from "@codingame/monaco-vscode-api/vscode/vs/base/common/product"; import type { ISecretStorageProvider } from "@codingame/monaco-vscode-secret-storage-service-override/vscode/vs/platform/secrets/common/secrets"; import type { TunnelProviderFeatures } from "@codingame/monaco-vscode-api/vscode/vs/platform/tunnel/common/tunnel"; import type { IProgress, IProgressCompositeOptions, IProgressDialogOptions, IProgressNotificationOptions, IProgressOptions, IProgressStep, IProgressWindowOptions } from "@codingame/monaco-vscode-api/vscode/vs/platform/progress/common/progress"; import type { ITextEditorOptions } from "@codingame/monaco-vscode-api/vscode/vs/platform/editor/common/editor"; import type { IFolderToOpen, IWorkspaceToOpen } from "@codingame/monaco-vscode-api/vscode/vs/platform/window/common/window"; import type { EditorGroupLayout } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/editor/common/editorGroupsService"; import type { IEmbedderTerminalOptions } from "@codingame/monaco-vscode-terminal-service-override/vscode/vs/workbench/services/terminal/common/embedderTerminalService"; import type { IAuthenticationProvider } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/authentication/common/authentication"; export interface IWorkbench { commands: { executeCommand(command: string, ...args: any[]): Promise; }; logger: { log(level: LogLevel, message: string): void; }; env: { getUriScheme(): Promise; retrievePerformanceMarks(): Promise<[ string, readonly PerformanceMark[] ][]>; openUri(target: URI | UriComponents): Promise; }; window: { withProgress(options: IProgressOptions | IProgressDialogOptions | IProgressNotificationOptions | IProgressWindowOptions | IProgressCompositeOptions, task: (progress: IProgress) => Promise): Promise; createTerminal(options: IEmbedderTerminalOptions): Promise; showInformationMessage(message: string, ...items: T[]): Promise; }; workspace: { didResolveRemoteAuthority(): Promise; openTunnel(tunnelOptions: ITunnelOptions): Promise; }; shutdown: () => Promise; } export interface IWorkbenchConstructionOptions { readonly remoteAuthority?: string; readonly serverBasePath?: string; readonly connectionToken?: string | Promise; readonly webviewEndpoint?: string; readonly webSocketFactory?: IWebSocketFactory; readonly resourceUriProvider?: IResourceUriProvider; readonly resolveExternalUri?: IExternalUriResolver; readonly tunnelProvider?: ITunnelProvider; readonly codeExchangeProxyEndpoints?: { [providerId: string]: string; }; readonly editSessionId?: string; readonly remoteResourceProvider?: IRemoteResourceProvider; readonly workspaceProvider?: IWorkspaceProvider; readonly settingsSyncOptions?: ISettingsSyncOptions; readonly secretStorageProvider?: ISecretStorageProvider; readonly additionalBuiltinExtensions?: readonly (MarketplaceExtension | UriComponents)[]; readonly enabledExtensions?: readonly ExtensionId[]; readonly additionalTrustedDomains?: string[]; readonly enableWorkspaceTrust?: boolean; readonly openerAllowedExternalUrlPrefixes?: string[]; readonly urlCallbackProvider?: IURLCallbackProvider; readonly resolveCommonTelemetryProperties?: ICommonTelemetryPropertiesResolver; readonly commands?: readonly ICommand[]; readonly defaultLayout?: IDefaultLayout; readonly configurationDefaults?: Record; readonly profile?: { readonly name: string; readonly contents?: string | UriComponents; }; readonly profileToPreview?: UriComponents; readonly updateProvider?: IUpdateProvider; readonly productQualityChangeHandler?: IProductQualityChangeHandler; readonly welcomeBanner?: IWelcomeBanner; readonly productConfiguration?: Partial; readonly windowIndicator?: IWindowIndicator; readonly initialColorTheme?: IInitialColorTheme; readonly messagePorts?: ReadonlyMap; readonly authenticationProviders?: readonly IAuthenticationProvider[]; readonly developmentOptions?: IDevelopmentOptions; } export type IWorkspace = IWorkspaceToOpen | IFolderToOpen | undefined; export interface IWorkspaceProvider { readonly workspace: IWorkspace; readonly payload?: object; readonly trusted: boolean | undefined; open(workspace: IWorkspace, options?: { reuse?: boolean; payload?: object; }): Promise; } export interface IResourceUriProvider { (uri: URI): URI; } export type ExtensionId = string; export type MarketplaceExtension = ExtensionId | { readonly id: ExtensionId; preRelease?: boolean; migrateStorageFrom?: ExtensionId; }; export interface ICommonTelemetryPropertiesResolver { (): { [key: string]: any; }; } export interface IExternalUriResolver { (uri: URI): Promise; } export interface IExternalURLOpener { openExternal(href: string): boolean | Promise; } export interface ITunnelProvider { tunnelFactory?: ITunnelFactory; showPortCandidate?: IShowPortCandidate; features?: TunnelProviderFeatures; } export interface ITunnelFactory { (tunnelOptions: ITunnelOptions, tunnelCreationOptions: TunnelCreationOptions): Promise | undefined; } export interface ITunnelOptions { remoteAddress: { port: number; host: string; }; localAddressPort?: number; label?: string; privacy?: string; protocol?: string; } export interface TunnelCreationOptions { elevationRequired?: boolean; } export interface ITunnel { remoteAddress: { port: number; host: string; }; localAddress: string; privacy?: string; protocol?: string; onDidDispose: Event; dispose(): Promise | void; } export interface IShowPortCandidate { (host: string, port: number, detail: string): Promise; } export declare enum Menu { CommandPalette = 0, StatusBarWindowIndicatorMenu = 1 } export interface ICommand { id: string; label?: string; menu?: Menu | Menu[]; handler: (...args: any[]) => unknown; } export interface IWelcomeBanner { message: string; icon?: string | UriComponents; actions?: IWelcomeLinkAction[]; } export interface IWelcomeLinkAction { href: string; label: string; title?: string; } export interface IWindowIndicator { readonly onDidChange?: Event; label: string; tooltip: string; command?: string; } export declare enum ColorScheme { DARK = "dark", LIGHT = "light", HIGH_CONTRAST_LIGHT = "hcLight", HIGH_CONTRAST_DARK = "hcDark" } export interface IInitialColorTheme { readonly themeType: ColorScheme; readonly colors?: { [colorId: string]: string; }; } export interface IDefaultView { readonly id: string; } export interface IDefaultEditor { readonly viewColumn?: number; readonly uri: UriComponents; readonly options?: ITextEditorOptions; readonly openOnlyIfExists?: boolean; } export interface IDefaultLayout { readonly views?: IDefaultView[]; readonly editors?: IDefaultEditor[]; readonly layout?: { readonly editors?: EditorGroupLayout; }; readonly force?: boolean; } export interface IProductQualityChangeHandler { (newQuality: "insider" | "stable"): void; } export interface ISettingsSyncOptions { readonly enabled: boolean; readonly extensionsSyncStateVersion?: string; enablementHandler?(enablement: boolean, authenticationProvider: string): void; readonly authenticationProvider?: { readonly id: string; signIn(): Promise; }; } export interface IDevelopmentOptions { readonly logLevel?: LogLevel; readonly extensionLogLevel?: [ string, LogLevel ][]; readonly extensionTestsPath?: UriComponents; readonly extensions?: readonly UriComponents[]; readonly enableSmokeTestDriver?: boolean; } export interface IRemoteResourceProvider { readonly path: string; readonly onDidReceiveRequest: Event; } export interface IRemoteResourceRequest { uri: URI; respondWith(statusCode: number, body: Uint8Array, headers: Record): void; }