import type { ChatMessage } from '../types.js';
export declare const BUILTIN_CHAT_MESSAGE_KINDS: readonly ["standard", "thought", "tool", "terminal", "system"];
export type BuiltinChatMessageKind = typeof BUILTIN_CHAT_MESSAGE_KINDS[number];
export type ChatMessageKind = BuiltinChatMessageKind | (string & {});
export declare function isBuiltinChatMessageKind(kind: unknown): kind is BuiltinChatMessageKind;
export declare function normalizeChatMessageKind(kind: unknown, role: unknown): ChatMessageKind;
export declare function resolveChatMessageKind<T extends ChatMessage>(message: T): ChatMessageKind;
export declare function buildChatMessage<T extends Omit<ChatMessage, 'kind'> & {
    kind?: ChatMessageKind;
}>(message: T): T & {
    kind: ChatMessageKind;
};
export declare function buildSystemChatMessage<T extends Omit<ChatMessage, 'role' | 'kind'> & {
    role?: 'system';
    kind?: ChatMessageKind;
}>(message: T): (T & {
    role: 'system';
    kind: ChatMessageKind;
});
export declare function buildRuntimeSystemChatMessage<T extends Omit<ChatMessage, 'role' | 'kind' | 'senderName'> & {
    role?: 'system';
    kind?: ChatMessageKind;
    senderName?: string;
}>(message: T): (T & {
    role: 'system';
    kind: ChatMessageKind;
    senderName: string;
});
export declare function buildAssistantChatMessage<T extends Omit<ChatMessage, 'role' | 'kind'> & {
    role?: 'assistant';
    kind?: ChatMessageKind;
}>(message: T): (T & {
    role: 'assistant';
    kind: ChatMessageKind;
});
export declare function buildThoughtChatMessage<T extends Omit<ChatMessage, 'role' | 'kind'> & {
    role?: 'assistant';
    kind?: ChatMessageKind;
}>(message: T): (T & {
    role: 'assistant';
    kind: ChatMessageKind;
});
export declare function buildToolChatMessage<T extends Omit<ChatMessage, 'role' | 'kind'> & {
    role?: 'assistant';
    kind?: ChatMessageKind;
}>(message: T): (T & {
    role: 'assistant';
    kind: ChatMessageKind;
});
export declare function buildTerminalChatMessage<T extends Omit<ChatMessage, 'role' | 'kind'> & {
    role?: 'assistant';
    kind?: ChatMessageKind;
}>(message: T): (T & {
    role: 'assistant';
    kind: ChatMessageKind;
});
export declare function buildUserChatMessage<T extends Omit<ChatMessage, 'role' | 'kind'> & {
    role?: 'user';
    kind?: ChatMessageKind;
}>(message: T): (T & {
    role: 'user';
    kind: ChatMessageKind;
});
export declare function normalizeChatMessage<T extends ChatMessage>(message: T): T;
export declare function normalizeChatMessages<T extends ChatMessage>(messages: T[] | null | undefined): T[];
