import { CancellationToken } from "../../../../base/common/cancellation.js";
import { Event } from "../../../../base/common/event.js";
import { IDisposable } from "../../../../base/common/lifecycle.js";
import { IEditableData } from "../../../common/views.js";
import { IChatAgentRequest } from "@codingame/monaco-vscode-b994942c-360d-5b68-8a33-77d4bde6b714-common/vscode/vs/workbench/contrib/chat/common/chatAgents";
import { IChatSessionItemProvider, IChatSessionsExtensionPoint, IChatSessionItem, IChatSessionContentProvider, ChatSession } from "./chatSessionsService.js";
export interface IChatSessionsService {
    readonly _serviceBrand: undefined;
    readonly onDidChangeItemsProviders: Event<IChatSessionItemProvider>;
    readonly onDidChangeSessionItems: Event<string>;
    readonly onDidChangeAvailability: Event<void>;
    readonly onDidChangeInProgress: Event<void>;
    registerChatSessionItemProvider(provider: IChatSessionItemProvider): IDisposable;
    getAllChatSessionContributions(): IChatSessionsExtensionPoint[];
    canResolveItemProvider(chatSessionType: string): Promise<boolean>;
    getAllChatSessionItemProviders(): IChatSessionItemProvider[];
    provideNewChatSessionItem(chatSessionType: string, options: {
        request: IChatAgentRequest;
        metadata?: any;
    }, token: CancellationToken): Promise<IChatSessionItem>;
    provideChatSessionItems(chatSessionType: string, token: CancellationToken): Promise<IChatSessionItem[]>;
    reportInProgress(chatSessionType: string, count: number): void;
    getInProgress(): {
        displayName: string;
        count: number;
    }[];
    registerChatSessionContentProvider(chatSessionType: string, provider: IChatSessionContentProvider): IDisposable;
    canResolveContentProvider(chatSessionType: string): Promise<boolean>;
    provideChatSessionContent(chatSessionType: string, id: string, token: CancellationToken): Promise<ChatSession>;
    setEditableSession(sessionId: string, data: IEditableData | null): Promise<void>;
    getEditableData(sessionId: string): IEditableData | undefined;
    isEditable(sessionId: string): boolean;
    notifySessionItemsChanged(chatSessionType: string): void;
}
export declare const IChatSessionsService: import("../../../../platform/instantiation/common/instantiation.js").ServiceIdentifier<IChatSessionsService>;
