import type { ContentAnnotations } from './contracts.js';
export type InputPart = TextInputPart | ImageInputPart | AudioInputPart | VideoInputPart | ResourceInputPart;
export interface TextInputPart {
    type: 'text';
    text: string;
}
export interface ImageInputPart {
    type: 'image';
    mimeType: string;
    uri?: string;
    data?: string;
    alt?: string;
}
export interface AudioInputPart {
    type: 'audio';
    mimeType: string;
    uri?: string;
    data?: string;
    transcript?: string;
}
export interface VideoInputPart {
    type: 'video';
    mimeType: string;
    uri?: string;
    data?: string;
    posterUri?: string;
}
export interface ResourceInputPart {
    type: 'resource';
    uri: string;
    mimeType?: string;
    name?: string;
    text?: string;
    data?: string;
}
export interface InputEnvelope {
    parts: InputPart[];
    textFallback: string;
    metadata?: {
        source?: 'dashboard' | 'shortcut_api' | 'provider_script' | 'session_replay';
        clientTimestamp?: number;
    };
}
export type MessagePart = TextMessagePart | ImageMessagePart | AudioMessagePart | VideoMessagePart | ResourceLinkMessagePart | ResourceMessagePart;
export interface TextMessagePart {
    type: 'text';
    text: string;
    annotations?: ContentAnnotations;
}
export interface ImageMessagePart {
    type: 'image';
    mimeType: string;
    uri?: string;
    data?: string;
    annotations?: ContentAnnotations;
}
export interface AudioMessagePart {
    type: 'audio';
    mimeType: string;
    uri?: string;
    data?: string;
    transcript?: string;
    annotations?: ContentAnnotations;
}
export interface VideoMessagePart {
    type: 'video';
    mimeType: string;
    uri?: string;
    data?: string;
    posterUri?: string;
    annotations?: ContentAnnotations;
}
export interface ResourceLinkMessagePart {
    type: 'resource_link';
    uri: string;
    name: string;
    mimeType?: string;
    size?: number;
}
export interface ResourceMessagePart {
    type: 'resource';
    resource: {
        uri: string;
        mimeType?: string | null;
        text?: string;
        blob?: string;
    };
}
export declare function normalizeInputEnvelope(input: unknown): InputEnvelope;
export declare function normalizeMessageParts(content: unknown): MessagePart[];
export declare function flattenMessageParts(parts: MessagePart[]): string;
