import { Action } from "../../../../base/common/actions.js";
import { Event } from "../../../../base/common/event.js";
import { IDisposable } from "../../../../base/common/lifecycle.js";
import { URI } from "../../../../base/common/uri.js";
import { IWorkspace, IWorkspaceFolder } from "../../../../platform/workspace/common/workspace.js";
import { ITaskEvent, Task, TaskRunSource, ConfiguringTask, ITaskIdentifier, TaskSorter, ContributedTask, CustomTask } from "./tasks.js";
import { IProblemMatcherRunOptions, ITaskFilter, IWorkspaceFolderTaskResult, ITaskProvider } from "@codingame/monaco-vscode-ec8fe440-1fd1-523d-ad0f-c0f5a80cf451-common/vscode/vs/workbench/contrib/tasks/common/taskService";
import { ITaskSummary, ITaskTerminateResponse, ITaskSystemInfo } from "@codingame/monaco-vscode-task-service-override/vscode/vs/workbench/contrib/tasks/common/taskSystem";
export declare const ITaskService: import("../../../../platform/instantiation/common/instantiation.js").ServiceIdentifier<ITaskService>;
export interface ITaskService {
    readonly _serviceBrand: undefined;
    onDidStateChange: Event<ITaskEvent>;
    /** Fired when task providers are registered or unregistered */
    onDidChangeTaskProviders: Event<void>;
    isReconnected: boolean;
    onDidReconnectToTasks: Event<void>;
    supportsMultipleTaskExecutions: boolean;
    configureAction(): Action;
    run(task: Task | undefined, options?: IProblemMatcherRunOptions): Promise<ITaskSummary | undefined>;
    inTerminal(): boolean;
    getActiveTasks(): Promise<Task[]>;
    getBusyTasks(): Promise<Task[]>;
    terminate(task: Task): Promise<ITaskTerminateResponse>;
    tasks(filter?: ITaskFilter): Promise<Task[]>;
    rerun(terminalInstanceId: number): void;
    /**
    * Gets tasks currently known to the task system. Unlike {@link tasks},
    * this does not activate extensions or prompt for workspace trust.
    */
    getKnownTasks(filter?: ITaskFilter): Promise<Task[]>;
    taskTypes(): string[];
    getWorkspaceTasks(runSource?: TaskRunSource): Promise<Map<string, IWorkspaceFolderTaskResult>>;
    getSavedTasks(type: "persistent" | "historical"): Promise<(Task | ConfiguringTask)[]>;
    removeRecentlyUsedTask(taskRecentlyUsedKey: string): void;
    getTerminalForTask(task: Task): URI | undefined;
    /**
    * @param alias The task's name, label or defined identifier.
    */
    getTask(workspaceFolder: IWorkspace | IWorkspaceFolder | string, alias: string | ITaskIdentifier, compareId?: boolean): Promise<Task | undefined>;
    tryResolveTask(configuringTask: ConfiguringTask): Promise<Task | undefined>;
    createSorter(): TaskSorter;
    getTaskDescription(task: Task | ConfiguringTask): string | undefined;
    customize(task: ContributedTask | CustomTask | ConfiguringTask, properties?: {}, openConfig?: boolean): Promise<void>;
    openConfig(task: CustomTask | ConfiguringTask | undefined): Promise<boolean>;
    registerTaskProvider(taskProvider: ITaskProvider, type: string): IDisposable;
    registerTaskSystem(scheme: string, taskSystemInfo: ITaskSystemInfo): void;
    onDidChangeTaskSystemInfo: Event<void>;
    onDidChangeTaskConfig: Event<void>;
    readonly hasTaskSystemInfo: boolean;
    registerSupportedExecutions(custom?: boolean, shell?: boolean, process?: boolean): void;
    extensionCallbackTaskComplete(task: Task, result: number | undefined): Promise<void>;
}
