import * as vscode from "vscode"; // Only export the subset of VS Code we have implemented. export interface VSCodeApi { EventEmitter: typeof vscode.EventEmitter; FileSystemError: typeof vscode.FileSystemError; FileType: typeof vscode.FileType; StatusBarAlignment: typeof vscode.StatusBarAlignment; ThemeColor: typeof vscode.ThemeColor; TreeItemCollapsibleState: typeof vscode.TreeItemCollapsibleState; Uri: typeof vscode.Uri; commands: { executeCommand: typeof vscode.commands.executeCommand; registerCommand: typeof vscode.commands.registerCommand; }; window: { createStatusBarItem: typeof vscode.window.createStatusBarItem; registerTreeDataProvider: typeof vscode.window.registerTreeDataProvider; showErrorMessage: typeof vscode.window.showErrorMessage; }; workspace: { registerFileSystemProvider: typeof vscode.workspace.registerFileSystemProvider; }; } export interface CoderApi { registerView: (viewId: string, viewName: string, containerId: string, containerName: string, icon: string) => void; } export interface IdeReadyEvent extends CustomEvent { readonly vscode: VSCodeApi; readonly ide: CoderApi; } declare global { interface Window { /** * Full VS Code extension API. */ vscode?: VSCodeApi; /** * Coder API. */ ide?: CoderApi; /** * Listen for when the IDE API has been set and is ready to use. */ addEventListener(event: "ide-ready", callback: (event: IdeReadyEvent) => void): void; } }