import { IChatAgentCommand, IChatAgentRequest, IChatAgentResult, IChatAgentWelcomeMessage, IChatFollowup, IChatReplyFollowup } from '@opensumi/ide-ai-native/lib/common';
import { IRPCProtocol } from '@opensumi/ide-connection';
import { CancellationToken } from '@opensumi/ide-core-common';
import { IChatMessage } from '@opensumi/ide-core-common/lib/types/ai-native';
import { IChatProgressChunk, IExtHostChatAgents } from '../../../common/sumi/chat-agents';
import { IExtensionDescription } from '../../../common/vscode';
import type * as sumi from 'sumi';
export declare class ExtHostChatAgents implements IExtHostChatAgents {
    private rpcProtocol;
    private static idPool;
    private proxy;
    private readonly agents;
    private readonly logger;
    private readonly previousResultMap;
    private readonly resultsBySessionAndRequestId;
    constructor(rpcProtocol: IRPCProtocol);
    createChatAgent(extension: IExtensionDescription, name: string, handler: sumi.ChatAgentHandler): sumi.ChatAgent;
    createInlineChatAgent(extension: IExtensionDescription, name: string, handler: sumi.ChatAgentHandler): sumi.InlineChatAgent;
    sendMessage(extension: IExtensionDescription, chunk: sumi.ChatAgentCustomReplyMessage): void;
    $invokeAgent(handle: number, request: IChatAgentRequest, context: {
        history: IChatMessage[];
    }, token: CancellationToken): Promise<IChatAgentResult | undefined>;
    $releaseSession(sessionId: string): void;
    $provideSlashCommands(handle: number, token: CancellationToken): Promise<IChatAgentCommand[]>;
    $provideFollowups(handle: number, sessionId: string, token: CancellationToken): Promise<IChatFollowup[]>;
    $provideSampleQuestions(handle: number, token: CancellationToken): Promise<IChatReplyFollowup[]>;
    $provideChatWelcomeMessage(handle: number, token: CancellationToken): Promise<undefined | IChatAgentWelcomeMessage>;
}
export declare function createChatApiFactory(extension: IExtensionDescription, extHostChatAgents: ExtHostChatAgents): {
    createChatAgent(name: string, handler: sumi.ChatAgentHandler): sumi.ChatAgent;
    sendMessage(chunk: sumi.ChatAgentContent): void;
    createInlineChatAgent(name: string, handler: sumi.ChatAgentHandler): sumi.InlineChatAgent;
};
export declare function convertProgress(progress: sumi.ChatAgentProgress, extension: IExtensionDescription): IChatProgressChunk | undefined;
//# sourceMappingURL=ext.host.chat.impl.d.ts.map