import { CancellationToken } from "../../../../base/common/cancellation.js";
import { Event } from "../../../../base/common/event.js";
import { URI } from "../../../../base/common/uri.js";
import { ChatAgentLocation } from "./chatAgents.js";
import { ChatModel, IChatModel, IExportableChatData, ISerializableChatData, IChatRequestModel, IChatRequestVariableData } from "@codingame/monaco-vscode-fab30422-b487-5f4e-8d30-8b4d266e3fcd-common/vscode/vs/workbench/contrib/chat/common/chatModel";
import { IParsedChatRequest } from "@codingame/monaco-vscode-fab30422-b487-5f4e-8d30-8b4d266e3fcd-common/vscode/vs/workbench/contrib/chat/common/chatParserTypes";
import { IChatTransferredSessionData, IChatSendRequestOptions, IChatSendRequestData, IChatCompleteResponse, IChatDetail, IChatUserActionEvent } from "./chatService.js";
export declare const IChatService: import("../../../../platform/instantiation/common/instantiation.js").ServiceIdentifier<IChatService>;
export interface IChatService {
    _serviceBrand: undefined;
    transferredSessionData: IChatTransferredSessionData | undefined;
    isEnabled(location: ChatAgentLocation): boolean;
    hasSessions(): boolean;
    startSession(location: ChatAgentLocation, token: CancellationToken): ChatModel | undefined;
    getSession(sessionId: string): IChatModel | undefined;
    getOrRestoreSession(sessionId: string): IChatModel | undefined;
    loadSessionFromContent(data: IExportableChatData | ISerializableChatData): IChatModel | undefined;
    sendRequest(sessionId: string, message: string, options?: IChatSendRequestOptions): Promise<IChatSendRequestData | undefined>;
    resendRequest(request: IChatRequestModel, options?: IChatSendRequestOptions): Promise<void>;
    adoptRequest(sessionId: string, request: IChatRequestModel): Promise<void>;
    removeRequest(sessionid: string, requestId: string): Promise<void>;
    cancelCurrentRequestForSession(sessionId: string): void;
    clearSession(sessionId: string): void;
    addCompleteRequest(sessionId: string, message: IParsedChatRequest | string, variableData: IChatRequestVariableData | undefined, attempt: number | undefined, response: IChatCompleteResponse): void;
    getHistory(): IChatDetail[];
    setChatSessionTitle(sessionId: string, title: string): void;
    clearAllHistoryEntries(): void;
    removeHistoryEntry(sessionId: string): void;
    onDidPerformUserAction: Event<IChatUserActionEvent>;
    notifyUserAction(event: IChatUserActionEvent): void;
    onDidDisposeSession: Event<{
        sessionId: string;
        reason: "initializationFailed" | "cleared";
    }>;
    transferChatSession(transferredSessionData: IChatTransferredSessionData, toWorkspace: URI): void;
}
