import { z } from 'zod';
export type ChatResponse = {
    model: string;
    responses: string[];
    promptTokenCount: number;
    responseTokenCount: number;
    completed: boolean;
};
export declare enum ChatRoleEnum {
    user = "user",
    system = "system",
    assistant = "assistant"
}
export type ChatRole = keyof typeof ChatRoleEnum;
type BaseMessage = {
    id: string;
    content: string;
    role: ChatRole;
};
export type SuggestedAction = {
    title: string;
    description: string;
    toolContainerName: string;
    actionName: string;
    payload: string;
};
export type MessageSegment = {
    type: "text";
    content: string;
} | {
    type: "tool";
    toolNames: string[];
    invocationCount: number;
};
export type AiMessage = BaseMessage & {
    role: "assistant";
    model_used?: string;
    totalToolInvocations?: number;
    lastToolNames?: string[];
    promptTokenCount?: number;
    responseTokenCount?: number;
    suggestedActions?: SuggestedAction[];
    segments?: MessageSegment[];
    currentTextSegment?: string;
    isError?: boolean;
};
export type UserMessage = BaseMessage & {
    role: "user";
};
export type SystemMessage = BaseMessage & {
    role: "system";
};
export type ChatMessage = AiMessage | UserMessage | SystemMessage;
export declare const editableAiModelShape: z.ZodObject<{
    description: z.ZodOptional<z.ZodString>;
    name: z.ZodString;
    serverType: z.ZodString;
    staticAuthToken: z.ZodString;
    supportedModels: z.ZodArray<z.ZodObject<{
        description: z.ZodOptional<z.ZodString>;
        name: z.ZodString;
        type: z.ZodEnum<{
            CHAT: "CHAT";
            EMBEDDING: "EMBEDDING";
        }>;
    }, z.core.$strip>>;
    url: z.ZodString;
}, z.core.$strip>;
export declare const completeApiModelShape: z.ZodObject<{
    [x: string]: any;
}, z.core.$strip>;
export type EditableAiModel = z.infer<typeof editableAiModelShape>;
export type AiModel = z.infer<typeof completeApiModelShape>;
export {};
//# sourceMappingURL=chat.types.d.ts.map