import { CancellationToken } from "../../../../base/common/cancellation.js";
import { Event } from "../../../../base/common/event.js";
import { URI } from "../../../../base/common/uri.js";
import { ChatModel, IChatModel, IExportableChatData, ISerializableChatData, IChatRequestModel, IChatRequestVariableData } from "./chatModel.js";
import { IParsedChatRequest } from "./chatParserTypes.js";
import { IChatTransferredSessionData, 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;
    onDidSubmitRequest: Event<{
        chatSessionId: string;
    }>;
    isEnabled(location: ChatAgentLocation): boolean;
    hasSessions(): boolean;
    startSession(location: ChatAgentLocation, token: CancellationToken, isGlobalEditingSession?: boolean): ChatModel;
    getSession(sessionId: string): IChatModel | undefined;
    getOrRestoreSession(sessionId: string): Promise<IChatModel | undefined>;
    isPersistedSessionEmpty(sessionId: string): boolean;
    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): Promise<void>;
    addCompleteRequest(sessionId: string, message: IParsedChatRequest | string, variableData: IChatRequestVariableData | undefined, attempt: number | undefined, response: IChatCompleteResponse): void;
    getHistory(): Promise<IChatDetail[]>;
    setChatSessionTitle(sessionId: string, title: string): void;
    clearAllHistoryEntries(): Promise<void>;
    removeHistoryEntry(sessionId: string): Promise<void>;
    getChatStorageFolder(): URI;
    logChatIndex(): void;
    onDidPerformUserAction: Event<IChatUserActionEvent>;
    notifyUserAction(event: IChatUserActionEvent): void;
    onDidDisposeSession: Event<{
        sessionId: string;
        reason: "initializationFailed" | "cleared";
    }>;
    transferChatSession(transferredSessionData: IChatTransferredSessionData, toWorkspace: URI): void;
    activateDefaultAgent(location: ChatAgentLocation): Promise<void>;
    readonly edits2Enabled: boolean;
}
