import { IRPCProtocol } from '@opensumi/ide-connection';
import { IReporter, ReporterService } from '@opensumi/ide-core-common';
import { IExtensionHostService, IExtensionWorkerHost } from '../../../common';
import { SumiApiExtenders } from '../../../common/sumi';
import { IExtensionDescription } from '../../../common/vscode';
export declare function createAPIFactory(rpcProtocol: IRPCProtocol, extensionService: IExtensionHostService | IExtensionWorkerHost, type: string, reporterEmitter: IReporter, sumiApiExtenders?: SumiApiExtenders): (extension: IExtensionDescription) => {
    layout: {
        toggleBottomPanel: (size?: number) => Promise<unknown>;
        toggleLeftPanel: (size?: number) => Promise<unknown>;
        toggleRightPanel: (size?: number) => Promise<unknown>;
        showRightPanel: (size?: number) => Promise<unknown>;
        hideRightPanel: () => Promise<unknown>;
        activatePanel: (id: any) => Promise<unknown>;
        isBottomPanelVisible: () => Promise<unknown>;
        isLeftPanelVisible: () => Promise<unknown>;
        isRightPanelVisible: () => Promise<unknown>;
        getTabbarHandler: (id: string) => import("../../../common/sumi/layout").ITabbarHandler;
        getExtensionTabbarHandler: (id: string, extensionId?: string) => import("../../../common/sumi/layout").ITabbarHandler;
    };
    ideWindow: {
        reloadWindow: () => Promise<unknown>;
        createWebviewWindow: (webviewId: string, options?: import("../../../common/sumi/window").IIDEWindowWebviewOptions, env?: import("../../../common/sumi/window").IIDEWindowWebviewEnv) => Promise<import("./ext.host.window").ExtIDEWebviewWindow | undefined>;
    };
    webview: {
        getPlainWebviewHandle: (id: string) => import("./ext.host.webview").PlainWebviewHandle;
        createPlainWebview: (title: string, iconPath?: string) => import("./ext.host.webview").ExtHostPlainWebview;
    };
    lifecycle: {
        setExtensionDir: (dir: string) => void;
        setExtensionCandidate: (exts: import("@opensumi/ide-core-common").ExtensionCandidate[]) => void;
    };
    theme: {
        getThemeColors: (dir: string) => Promise<{
            [key: string]: string;
        }>;
        onThemeChanged: import("@opensumi/ide-core-common").Event<void>;
    };
    event: {
        fire: (eventName: string, ...eventArgs: any[]) => Promise<unknown>;
        subscribe: (eventName: string, listener: (...eventArgs: any[]) => any) => import("@opensumi/ide-core-common").IDisposable;
    };
    reporter: ReporterService;
    commands: {
        registerCommandWithPermit(id: string, handler: import("../../../common/vscode").Handler, isPermitted: import("../../../common/vscode").PermittedHandler): import("../worker/worker.ext-types").Disposable;
        registerCommand(command: string, callback: (...args: any[]) => any, thisArg?: any): import("vscode").Disposable;
        executeCommand<T>(command: string, ...rest: any[]): Thenable<T | undefined>;
        getCommands(filterInternal?: boolean): Thenable<string[]>;
        registerTextEditorCommand(command: string, callback: (textEditor: import("vscode").TextEditor, edit: import("vscode").TextEditorEdit, ...args: any[]) => void, thisArg?: any): import("vscode").Disposable;
        registerDiffInformationCommand(command: string, callback: (diff: import("vscode").LineChange[], ...args: any[]) => any, thisArg?: any): import("vscode").Disposable;
    };
    toolbar: {
        registerToolbarAction: <T>(contribution: import("../../../browser/sumi/types").IToolbarButtonContribution | import("../../../browser/sumi/types").IToolbarSelectContribution<T> | import("../../../browser/sumi/types").IToolbarDropdownButtonContribution<T>) => Promise<import("../../../common/sumi/toolbar").IToolbarButtonActionHandle | import("../../../common/sumi/toolbar").IToolbarSelectActionHandle<T> | import("../../../common/sumi/toolbar").IToolbarDropdownButtonActionHandle<T>>;
        getToolbarActionButtonHandle: (id: any) => Promise<import("../../../common/sumi/toolbar").IToolbarButtonActionHandle>;
        getToolbarActionSelectHandle: (id: any) => Promise<import("../../../common/sumi/toolbar").IToolbarSelectActionHandle<any>>;
        getToolbarActionDropdownButtonHandle: (id: any) => Promise<import("../../../common/sumi/toolbar").IToolbarDropdownButtonActionHandle<any>>;
    };
    chat: {
        createChatAgent(name: string, handler: import("sumi").ChatAgentHandler): import("sumi").ChatAgent;
        sendMessage(chunk: import("vscode").ChatAgentContent): void;
        createInlineChatAgent(name: string, handler: import("sumi").ChatAgentHandler): import("sumi").InlineChatAgent;
    };
};
//# sourceMappingURL=ext.host.api.impl.d.ts.map