import { ContentPart, UIMessage } from '../types.js';
import { MetadataRecord } from './merge-metadata.js';
type AGUITextInputContent = {
    type: 'text';
    text: string;
};
type AGUIInputContent = AGUITextInputContent | (ContentPart & {
    type: 'image' | 'audio' | 'video' | 'document';
});
type AGUIToolCallMirror = {
    id: string;
    type: 'function';
    function: {
        name: string;
        arguments: string;
    };
    encryptedValue?: string;
};
type AGUIToolMessage = {
    role: 'tool';
    id: string;
    toolCallId: string;
    content: string;
    error?: string;
};
type AGUIReasoningMessage = {
    role: 'reasoning';
    id: string;
    content: string;
    encryptedValue?: string;
    metadata?: MetadataRecord;
};
/** Spec AG-UI message. No `parts`, no `createdAt` Date. */
type WireAnchorMessage = {
    id: string;
    role: UIMessage['role'];
    name?: string;
    content?: string | Array<AGUIInputContent>;
    toolCalls?: Array<AGUIToolCallMirror>;
    metadata?: MetadataRecord;
};
export type WireMessage = WireAnchorMessage | AGUIToolMessage | AGUIReasoningMessage;
/**
 * Serialize TanStack `UIMessage`s into the AG-UI `RunAgentInput.messages`
 * wire shape. Anchors are spec-only (`id`, `role`, `name`, `content`,
 * `toolCalls`, `metadata`). Tool results and thinking parts on assistant
 * messages are additionally emitted as fan-out `{role:'tool',...}` and
 * `{role:'reasoning',...}` entries for strict AG-UI server consumers.
 */
export declare function uiMessagesToWire(messages: Array<UIMessage>): Array<WireMessage>;
export {};
