import { DisposableCollection, IDisposable, IJSONSchema, IJSONSchemaSnippet, ILogger, WaitUntilEvent } from '@opensumi/ide-core-browser';
import { DebugServer, DebuggerDescription, IDebugSessionDTO, IDebugSessionManager } from '@opensumi/ide-debug';
import { DebugConfigurationManager } from '@opensumi/ide-debug/lib/browser/debug-configuration-manager';
import { DebugConfiguration } from '@opensumi/ide-debug/lib/common/debug-configuration';
import { IWorkspaceService } from '@opensumi/ide-workspace';
import { DebugActivationEvent } from '../../../../common/vscode';
import { DebugConfigurationProviderTriggerKind } from '../../../../common/vscode/ext-types';
import { IActivationEventService } from '../../../types';
import { ExtensionDebugAdapterContribution } from './extension-debug-adapter-contribution';
export interface ExtensionDebugAdapterContributionRegistrator {
    /**
     * 注册插件Debug Adapter贡献点
     * @param contrib
     */
    registerDebugAdapterContribution(contrib: ExtensionDebugAdapterContribution): IDisposable;
    /**
     * 注销插件Debug Adapter贡献点
     * @param debugType
     */
    unregisterDebugAdapterContribution(debugType: string): void;
}
export declare class ExtensionDebugService implements DebugServer, ExtensionDebugAdapterContributionRegistrator {
    protected readonly contributors: Map<string, ExtensionDebugAdapterContribution>;
    protected readonly toDispose: DisposableCollection;
    protected readonly sessionId2contrib: Map<string, ExtensionDebugAdapterContribution>;
    protected readonly workspaceService: IWorkspaceService;
    protected readonly logger: ILogger;
    protected readonly debugSessionManager: IDebugSessionManager;
    protected readonly debugConfigurationManager: DebugConfigurationManager;
    protected readonly activationEventService: IActivationEventService;
    private readonly extInstanceManagementService;
    protected readonly activationEvents: Set<string>;
    constructor();
    protected init(): void;
    registerDebugAdapterContribution(contrib: ExtensionDebugAdapterContribution): IDisposable;
    unregisterDebugAdapterContribution(debugType: string): void;
    protected ensureDebugActivation(event: WaitUntilEvent, activationEvent?: DebugActivationEvent, debugType?: string): void;
    activateByDebug(activationEvent?: DebugActivationEvent, debugType?: string): Promise<void>;
    debugTypes(): Promise<string[]>;
    provideDebugConfigurations(debugType: string, workspaceFolderUri: string | undefined, triggerKind?: DebugConfigurationProviderTriggerKind): Promise<DebugConfiguration[]>;
    getDynamicConfigurationsSupportTypes(): Promise<string[]>;
    resolveDebugConfiguration(config: DebugConfiguration, workspaceFolderUri: string | undefined): Promise<DebugConfiguration | undefined | null>;
    resolveDebugConfigurationWithSubstitutedVariables(config: DebugConfiguration, workspaceFolderUri: string | undefined): Promise<DebugConfiguration | undefined | null>;
    getDebuggersForLanguage(language: string): Promise<DebuggerDescription[]>;
    getSchemaAttributes(debugType: string): Promise<IJSONSchema[]>;
    getConfigurationSnippets(): Promise<IJSONSchemaSnippet[]>;
    createDebugSession(dto: IDebugSessionDTO): Promise<string | void>;
    terminateDebugSession(sessionId: string): Promise<void>;
    dispose(): void;
}
//# sourceMappingURL=extension-debug-service.d.ts.map