import { CancellationToken } from "../../../../base/common/cancellation.js";
import { Event } from "../../../../base/common/event.js";
import { IObservable } from "../../../../base/common/observable.js";
import { URI } from "../../../../base/common/uri.js";
import { IChatEditingSession } from "./chatEditingService.js";
import { ChatModel, IChatModel, IExportableChatData, ISerializableChatData, IChatRequestModel, IChatRequestVariableData } from "@codingame/monaco-vscode-2339d6ac-d6bb-53cd-95ee-81911735d1c7-common/vscode/vs/workbench/contrib/chat/common/chatModel";
import { IParsedChatRequest } from "@codingame/monaco-vscode-aac7027b-326c-513a-95a9-e4eedd151b38-common/vscode/vs/workbench/contrib/chat/common/chatParserTypes";
import { IChatTransferredSessionData, IChatSessionContext, IChatSendRequestOptions, IChatSendRequestData, IChatCompleteResponse, IChatDetail, IChatUserActionEvent } from "./chatService.js";
import { ChatAgentLocation } from "./constants.js";
export declare const IChatService: import("../../../../platform/instantiation/common/instantiation.js").ServiceIdentifier<IChatService>;
export interface IChatService {
    _serviceBrand: undefined;
    transferredSessionData: IChatTransferredSessionData | undefined;
    readonly onDidSubmitRequest: Event<{
        readonly chatSessionResource: URI;
    }>;
    isEnabled(location: ChatAgentLocation): boolean;
    hasSessions(): boolean;
    startSession(location: ChatAgentLocation, token: CancellationToken, isGlobalEditingSession?: boolean, options?: {
        canUseTools?: boolean;
    }): ChatModel;
    getSession(sessionResource: URI): IChatModel | undefined;
    getSessionByLegacyId(sessionId: string): IChatModel | undefined;
    getOrRestoreSession(sessionResource: URI): Promise<IChatModel | undefined>;
    getPersistedSessionTitle(sessionResource: URI): string | undefined;
    isPersistedSessionEmpty(sessionResource: URI): boolean;
    loadSessionFromContent(data: IExportableChatData | ISerializableChatData | URI): IChatModel | undefined;
    loadSessionForResource(resource: URI, location: ChatAgentLocation, token: CancellationToken): Promise<IChatModel | undefined>;
    readonly editingSessions: IChatEditingSession[];
    getChatSessionFromInternalUri(sessionResource: URI): IChatSessionContext | undefined;
    /**
    * Returns whether the request was accepted.`
    */
    sendRequest(sessionResource: URI, message: string, options?: IChatSendRequestOptions): Promise<IChatSendRequestData | undefined>;
    resendRequest(request: IChatRequestModel, options?: IChatSendRequestOptions): Promise<void>;
    adoptRequest(sessionResource: URI, request: IChatRequestModel): Promise<void>;
    removeRequest(sessionResource: URI, requestId: string): Promise<void>;
    cancelCurrentRequestForSession(sessionResource: URI): void;
    clearSession(sessionResource: URI): Promise<void>;
    addCompleteRequest(sessionResource: URI, message: IParsedChatRequest | string, variableData: IChatRequestVariableData | undefined, attempt: number | undefined, response: IChatCompleteResponse): void;
    setChatSessionTitle(sessionResource: URI, title: string): void;
    getLocalSessionHistory(): Promise<IChatDetail[]>;
    clearAllHistoryEntries(): Promise<void>;
    removeHistoryEntry(sessionResource: URI): Promise<void>;
    getChatStorageFolder(): URI;
    logChatIndex(): void;
    readonly onDidPerformUserAction: Event<IChatUserActionEvent>;
    notifyUserAction(event: IChatUserActionEvent): void;
    readonly onDidDisposeSession: Event<{
        readonly sessionResource: URI;
        readonly reason: "cleared";
    }>;
    transferChatSession(transferredSessionData: IChatTransferredSessionData, toWorkspace: URI): void;
    activateDefaultAgent(location: ChatAgentLocation): Promise<void>;
    readonly edits2Enabled: boolean;
    readonly requestInProgressObs: IObservable<boolean>;
}
