import { ChatCompletion, ChatCompletionMessage, ChatCompletionMessageParam } from 'openai/resources';
import { IKBotOptions } from './types_kbot';
import OpenAI from 'openai';
export type onToolBefore = (category: string, name: string, args: any) => Promise<any>;
export type onToolAfter = (category: string, name: string, args: any, result?: any) => Promise<any>;
export interface ICollector {
    onMessage: (message: ChatCompletionMessageParam) => void;
    onToolCall: (tool: ChatCompletionMessage.FunctionCall) => void;
    onFunctionCallResult: (content: string) => void;
    onChatCompletion: (completion: ChatCompletion) => void;
    onContent: (content: string) => void;
    onTool: (category: string, name: string, args: any, result?: any) => void;
    onToolBefore: onToolBefore;
    onToolAfter: onToolAfter;
}
export interface IKBotTask extends IKBotOptions {
    client: OpenAI;
    collector: ICollector;
}
