import { CancellationToken } from "../../../../base/common/cancellation.js";
import { Event } from "../../../../base/common/event.js";
import { IDisposable } from "../../../../base/common/lifecycle.js";
import { ThemeIcon } from "../../../../base/common/themables.js";
import { URI } from "../../../../base/common/uri.js";
import { IEditableData } from "../../../common/views.js";
import { IChatAgentRequest, IChatAgentAttachmentCapabilities } from "@codingame/monaco-vscode-aac7027b-326c-513a-95a9-e4eedd151b38-common/vscode/vs/workbench/contrib/chat/common/chatAgents";
import { IChatSessionItemProvider, IChatSessionsExtensionPoint, IChatSessionItem, IChatSessionContentProvider, IChatSession, IChatSessionProviderOptionGroup, SessionOptionsChangedCallback } 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;
    hasChatSessionItemProvider(chatSessionType: string): Promise<boolean>;
    getAllChatSessionItemProviders(): IChatSessionItemProvider[];
    getAllChatSessionContributions(): IChatSessionsExtensionPoint[];
    getIconForSessionType(chatSessionType: string): ThemeIcon | URI | undefined;
    getWelcomeTitleForSessionType(chatSessionType: string): string | undefined;
    getWelcomeMessageForSessionType(chatSessionType: string): string | undefined;
    getInputPlaceholderForSessionType(chatSessionType: string): string | undefined;
    /**
    * Get the list of chat session items grouped by session type.
    */
    getAllChatSessionItems(token: CancellationToken): Promise<Array<{
        readonly chatSessionType: string;
        readonly items: IChatSessionItem[];
    }>>;
    getNewChatSessionItem(chatSessionType: string, options: {
        request: IChatAgentRequest;
        metadata?: any;
    }, token: CancellationToken): Promise<IChatSessionItem>;
    reportInProgress(chatSessionType: string, count: number): void;
    getInProgress(): {
        displayName: string;
        count: number;
    }[];
    notifySessionItemsChanged(chatSessionType: string): void;
    readonly onDidChangeContentProviderSchemes: Event<{
        readonly added: string[];
        readonly removed: string[];
    }>;
    getContentProviderSchemes(): string[];
    registerChatSessionContentProvider(scheme: string, provider: IChatSessionContentProvider): IDisposable;
    canResolveChatSession(sessionResource: URI): Promise<boolean>;
    getOrCreateChatSession(sessionResource: URI, token: CancellationToken): Promise<IChatSession>;
    hasAnySessionOptions(sessionResource: URI): boolean;
    getSessionOption(sessionResource: URI, optionId: string): string | undefined;
    setSessionOption(sessionResource: URI, optionId: string, value: string): boolean;
    /**
    * Get the capabilities for a specific session type
    */
    getCapabilitiesForSessionType(chatSessionType: string): IChatAgentAttachmentCapabilities | undefined;
    getOptionGroupsForSessionType(chatSessionType: string): IChatSessionProviderOptionGroup[] | undefined;
    setOptionGroupsForSessionType(chatSessionType: string, handle: number, optionGroups?: IChatSessionProviderOptionGroup[]): void;
    setOptionsChangeCallback(callback: SessionOptionsChangedCallback): void;
    notifySessionOptionsChange(sessionResource: URI, updates: ReadonlyArray<{
        optionId: string;
        value: string;
    }>): Promise<void>;
    setEditableSession(sessionResource: URI, data: IEditableData | null): Promise<void>;
    getEditableData(sessionResource: URI): IEditableData | undefined;
    isEditable(sessionResource: URI): boolean;
}
export declare const IChatSessionsService: import("../../../../platform/instantiation/common/instantiation.js").ServiceIdentifier<IChatSessionsService>;
