import { IRPCProtocol } from '@opensumi/ide-connection';
import { IExtensionHostService, IExtensionWorkerHost } from '../../../common';
import { IExtensionDescription } from '../../../common/vscode';
interface IOptions {
    firstParty?: boolean;
    debug?: boolean;
}
export declare function createAPIFactory(rpcProtocol: IRPCProtocol, extensionService: IExtensionHostService | IExtensionWorkerHost, _type: string): (extension: IExtensionDescription) => {
    instrumentOperation: (operationName: string, cb: (operationId: string, ...args: any[]) => any, thisArg?: any) => ((...args: any[]) => any);
    sendOperationStart: (operationId: string, operationName: string) => void;
    createUuid: () => number;
    instrumentSimpleOperation: (operationName: string, cb: (...args: any[]) => any, thisArg?: any) => (...args: any[]) => any;
    initializeFromJsonFile(jsonFilepath: string, options?: IOptions): void;
    initialize(extensionId: string, version: string, aiKey: string | string[], options?: IOptions): void;
    setUserError(err: Error): void;
    setErrorCode(err: Error, errorCode: number): void;
    instrumentOperationAsVsCodeCommand(command: string, cb: (...args: any[]) => any, thisArg?: any): any;
    sendOperationEnd(operationId: string, operationName: string, duration: number, err?: Error): void;
    sendError(err: Error): void;
    sendOperationError(operationId: string, operationName: string, err: Error): void;
    sendInfo(operationId: string, data: {
        [key: string]: string | number;
    }): void;
    instrumentOperationStep(operationId: string, stepName: string, cb: (...args: any[]) => any): any;
    dispose(): void;
    addContextProperty(name: string, value: string): void;
};
export {};
//# sourceMappingURL=ext.host.api.impl.d.ts.map