import { IJSONSchema, IJSONSchemaSnippet } from '@opensumi/ide-core-common';
import { DebugSchemaManager } from '@opensumi/ide-debug/lib/browser/debug-schema-manager';
import { VSCodeContributePoint } from '../../../common';
import { Extension } from '../../extension';
import { AbstractExtInstanceManagementService } from '../../types';
export interface VSCodePlatformSpecificAdapterContribution {
    program?: string;
    args?: string[];
    runtime?: string;
    runtimeArgs?: string[];
}
export interface ScopeMap {
    [scopeName: string]: string;
}
export interface DebuggersContributionScheme extends VSCodePlatformSpecificAdapterContribution {
    type: string;
    label?: string;
    languages?: string[];
    enableBreakpointsFor?: {
        languageIds: string[];
    };
    configurationSnippets?: IJSONSchemaSnippet[];
    configurationAttributes?: {
        [request: string]: IJSONSchema;
    };
    variables?: ScopeMap;
    adapterExecutableCommand?: string;
    win?: VSCodePlatformSpecificAdapterContribution;
    winx86?: VSCodePlatformSpecificAdapterContribution;
    windows?: VSCodePlatformSpecificAdapterContribution;
    osx?: VSCodePlatformSpecificAdapterContribution;
    linux?: VSCodePlatformSpecificAdapterContribution;
}
export declare class DebuggersContributionPoint extends VSCodeContributePoint<DebuggersContributionScheme[]> {
    static schema: {
        description: string;
        type: string;
        defaultSnippets: {
            body: {
                type: string;
            }[];
        }[];
        items: {
            additionalProperties: boolean;
            type: string;
            defaultSnippets: {
                body: {
                    type: string;
                    program: string;
                    runtime: string;
                };
            }[];
            properties: {
                type: {
                    description: string;
                    type: string;
                };
                label: {
                    description: string;
                    type: string;
                };
                program: {
                    description: string;
                    type: string;
                };
                args: {
                    description: string;
                    type: string;
                };
                runtime: {
                    description: string;
                    type: string;
                };
                runtimeArgs: {
                    description: string;
                    type: string;
                };
                variables: {
                    description: string;
                    type: string;
                };
                initialConfigurations: {
                    description: string;
                    type: string[];
                };
                languages: {
                    description: string;
                    type: string;
                };
                configurationSnippets: {
                    description: string;
                    type: string;
                };
                configurationAttributes: {
                    description: string;
                    type: string;
                };
                when: {
                    description: string;
                    type: string;
                    default: string;
                };
                windows: {
                    description: string;
                    type: string;
                    properties: {
                        runtime: {
                            description: string;
                            type: string;
                        };
                    };
                };
                osx: {
                    description: string;
                    type: string;
                    properties: {
                        runtime: {
                            description: string;
                            type: string;
                        };
                    };
                };
                linux: {
                    description: string;
                    type: string;
                    properties: {
                        runtime: {
                            description: string;
                            type: string;
                        };
                    };
                };
            };
        };
    };
    private debugService;
    private debugConfigurationManager;
    protected readonly debugSchemaManager: DebugSchemaManager;
    protected readonly extensionManageService: AbstractExtInstanceManagementService;
    contribute(): void;
    private resolveDebuggers;
    private doResolveDebuggers;
    protected resolveSchemaAttributes(type: string, configurationAttributes: {
        [request: string]: IJSONSchema;
    }, extension: Extension): IJSONSchema[];
    dispose(): void;
}
//# sourceMappingURL=debuggers.d.ts.map