import { IRPCProtocol, ProxyIdentifier } from '@opensumi/ide-connection';
import { IDisposable } from '@opensumi/ide-core-common';
export interface IMainThreadExtender<T = any> {
    identifier: ProxyIdentifier<T>;
    serviceClass: new (rpcProtocol: IRPCProtocol) => T;
}
export declare const IMainThreadExtenderService: unique symbol;
export interface IMainThreadExtenderService<T = any> {
    registerMainThreadExtender(extender: IMainThreadExtender<T>): IDisposable;
    getMainThreadExtenders(): IMainThreadExtender<T>[];
}
export declare const MainThreadExtenderContribution: unique symbol;
export interface MainThreadExtenderContribution {
    registerMainThreadExtender(registry: IMainThreadExtenderService): void;
}
export declare class MainThreadExtenderService<T> implements IMainThreadExtenderService<T> {
    private readonly registry;
    registerMainThreadExtender(extender: IMainThreadExtender): IDisposable;
    getMainThreadExtenders(): IMainThreadExtender<T>[];
}
//# sourceMappingURL=main.thread.extender.d.ts.map