/**
 * AI Conversation Canvas - Revolutionary real-time AI interaction component
 * Features: Voice input, streaming responses, collaborative editing, context visualization
 */
import React from 'react';
import { z } from 'zod';
export declare const MessageSchema: z.ZodObject<{
    id: z.ZodString;
    role: z.ZodEnum<["user", "assistant", "system"]>;
    content: z.ZodString;
    timestamp: z.ZodDate;
    metadata: z.ZodOptional<z.ZodObject<{
        model: z.ZodOptional<z.ZodString>;
        provider: z.ZodOptional<z.ZodString>;
        tokens: z.ZodOptional<z.ZodNumber>;
        cost: z.ZodOptional<z.ZodNumber>;
        latency: z.ZodOptional<z.ZodNumber>;
        confidence: z.ZodOptional<z.ZodNumber>;
        sources: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
    }, "strip", z.ZodTypeAny, {
        cost?: number | undefined;
        model?: string | undefined;
        confidence?: number | undefined;
        provider?: string | undefined;
        latency?: number | undefined;
        tokens?: number | undefined;
        sources?: string[] | undefined;
    }, {
        cost?: number | undefined;
        model?: string | undefined;
        confidence?: number | undefined;
        provider?: string | undefined;
        latency?: number | undefined;
        tokens?: number | undefined;
        sources?: string[] | undefined;
    }>>;
    attachments: z.ZodOptional<z.ZodArray<z.ZodObject<{
        type: z.ZodEnum<["image", "audio", "document", "code"]>;
        url: z.ZodString;
        name: z.ZodString;
        size: z.ZodOptional<z.ZodNumber>;
    }, "strip", z.ZodTypeAny, {
        name: string;
        type: "document" | "audio" | "code" | "image";
        url: string;
        size?: number | undefined;
    }, {
        name: string;
        type: "document" | "audio" | "code" | "image";
        url: string;
        size?: number | undefined;
    }>, "many">>;
    reactions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
    isStreaming: z.ZodOptional<z.ZodBoolean>;
    isEditing: z.ZodOptional<z.ZodBoolean>;
}, "strip", z.ZodTypeAny, {
    id: string;
    role: "user" | "system" | "assistant";
    content: string;
    timestamp: Date;
    metadata?: {
        cost?: number | undefined;
        model?: string | undefined;
        confidence?: number | undefined;
        provider?: string | undefined;
        latency?: number | undefined;
        tokens?: number | undefined;
        sources?: string[] | undefined;
    } | undefined;
    attachments?: {
        name: string;
        type: "document" | "audio" | "code" | "image";
        url: string;
        size?: number | undefined;
    }[] | undefined;
    reactions?: Record<string, number> | undefined;
    isStreaming?: boolean | undefined;
    isEditing?: boolean | undefined;
}, {
    id: string;
    role: "user" | "system" | "assistant";
    content: string;
    timestamp: Date;
    metadata?: {
        cost?: number | undefined;
        model?: string | undefined;
        confidence?: number | undefined;
        provider?: string | undefined;
        latency?: number | undefined;
        tokens?: number | undefined;
        sources?: string[] | undefined;
    } | undefined;
    attachments?: {
        name: string;
        type: "document" | "audio" | "code" | "image";
        url: string;
        size?: number | undefined;
    }[] | undefined;
    reactions?: Record<string, number> | undefined;
    isStreaming?: boolean | undefined;
    isEditing?: boolean | undefined;
}>;
export declare const ConversationSchema: z.ZodObject<{
    id: z.ZodString;
    title: z.ZodString;
    messages: z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        role: z.ZodEnum<["user", "assistant", "system"]>;
        content: z.ZodString;
        timestamp: z.ZodDate;
        metadata: z.ZodOptional<z.ZodObject<{
            model: z.ZodOptional<z.ZodString>;
            provider: z.ZodOptional<z.ZodString>;
            tokens: z.ZodOptional<z.ZodNumber>;
            cost: z.ZodOptional<z.ZodNumber>;
            latency: z.ZodOptional<z.ZodNumber>;
            confidence: z.ZodOptional<z.ZodNumber>;
            sources: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
        }, "strip", z.ZodTypeAny, {
            cost?: number | undefined;
            model?: string | undefined;
            confidence?: number | undefined;
            provider?: string | undefined;
            latency?: number | undefined;
            tokens?: number | undefined;
            sources?: string[] | undefined;
        }, {
            cost?: number | undefined;
            model?: string | undefined;
            confidence?: number | undefined;
            provider?: string | undefined;
            latency?: number | undefined;
            tokens?: number | undefined;
            sources?: string[] | undefined;
        }>>;
        attachments: z.ZodOptional<z.ZodArray<z.ZodObject<{
            type: z.ZodEnum<["image", "audio", "document", "code"]>;
            url: z.ZodString;
            name: z.ZodString;
            size: z.ZodOptional<z.ZodNumber>;
        }, "strip", z.ZodTypeAny, {
            name: string;
            type: "document" | "audio" | "code" | "image";
            url: string;
            size?: number | undefined;
        }, {
            name: string;
            type: "document" | "audio" | "code" | "image";
            url: string;
            size?: number | undefined;
        }>, "many">>;
        reactions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
        isStreaming: z.ZodOptional<z.ZodBoolean>;
        isEditing: z.ZodOptional<z.ZodBoolean>;
    }, "strip", z.ZodTypeAny, {
        id: string;
        role: "user" | "system" | "assistant";
        content: string;
        timestamp: Date;
        metadata?: {
            cost?: number | undefined;
            model?: string | undefined;
            confidence?: number | undefined;
            provider?: string | undefined;
            latency?: number | undefined;
            tokens?: number | undefined;
            sources?: string[] | undefined;
        } | undefined;
        attachments?: {
            name: string;
            type: "document" | "audio" | "code" | "image";
            url: string;
            size?: number | undefined;
        }[] | undefined;
        reactions?: Record<string, number> | undefined;
        isStreaming?: boolean | undefined;
        isEditing?: boolean | undefined;
    }, {
        id: string;
        role: "user" | "system" | "assistant";
        content: string;
        timestamp: Date;
        metadata?: {
            cost?: number | undefined;
            model?: string | undefined;
            confidence?: number | undefined;
            provider?: string | undefined;
            latency?: number | undefined;
            tokens?: number | undefined;
            sources?: string[] | undefined;
        } | undefined;
        attachments?: {
            name: string;
            type: "document" | "audio" | "code" | "image";
            url: string;
            size?: number | undefined;
        }[] | undefined;
        reactions?: Record<string, number> | undefined;
        isStreaming?: boolean | undefined;
        isEditing?: boolean | undefined;
    }>, "many">;
    participants: z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        name: z.ZodString;
        role: z.ZodEnum<["user", "ai", "collaborator"]>;
        avatar: z.ZodOptional<z.ZodString>;
        isActive: z.ZodBoolean;
        cursor: z.ZodOptional<z.ZodObject<{
            x: z.ZodNumber;
            y: z.ZodNumber;
            color: z.ZodString;
        }, "strip", z.ZodTypeAny, {
            color: string;
            x: number;
            y: number;
        }, {
            color: string;
            x: number;
            y: number;
        }>>;
    }, "strip", z.ZodTypeAny, {
        name: string;
        id: string;
        role: "ai" | "user" | "collaborator";
        isActive: boolean;
        cursor?: {
            color: string;
            x: number;
            y: number;
        } | undefined;
        avatar?: string | undefined;
    }, {
        name: string;
        id: string;
        role: "ai" | "user" | "collaborator";
        isActive: boolean;
        cursor?: {
            color: string;
            x: number;
            y: number;
        } | undefined;
        avatar?: string | undefined;
    }>, "many">;
    context: z.ZodOptional<z.ZodObject<{
        domain: z.ZodOptional<z.ZodString>;
        project: z.ZodOptional<z.ZodString>;
        tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
        priority: z.ZodOptional<z.ZodEnum<["low", "normal", "high", "urgent"]>>;
        mood: z.ZodOptional<z.ZodEnum<["casual", "professional", "creative", "analytical"]>>;
    }, "strip", z.ZodTypeAny, {
        tags?: string[] | undefined;
        domain?: string | undefined;
        project?: string | undefined;
        priority?: "normal" | "low" | "high" | "urgent" | undefined;
        mood?: "creative" | "professional" | "casual" | "analytical" | undefined;
    }, {
        tags?: string[] | undefined;
        domain?: string | undefined;
        project?: string | undefined;
        priority?: "normal" | "low" | "high" | "urgent" | undefined;
        mood?: "creative" | "professional" | "casual" | "analytical" | undefined;
    }>>;
    settings: z.ZodOptional<z.ZodObject<{
        allowVoice: z.ZodDefault<z.ZodBoolean>;
        enableCollaboration: z.ZodDefault<z.ZodBoolean>;
        showContext: z.ZodDefault<z.ZodBoolean>;
        autoSave: z.ZodDefault<z.ZodBoolean>;
        theme: z.ZodDefault<z.ZodEnum<["light", "dark", "system"]>>;
        aiProvider: z.ZodOptional<z.ZodString>;
        aiModel: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        theme: "dark" | "light" | "system";
        autoSave: boolean;
        enableCollaboration: boolean;
        allowVoice: boolean;
        showContext: boolean;
        aiProvider?: string | undefined;
        aiModel?: string | undefined;
    }, {
        theme?: "dark" | "light" | "system" | undefined;
        autoSave?: boolean | undefined;
        enableCollaboration?: boolean | undefined;
        allowVoice?: boolean | undefined;
        showContext?: boolean | undefined;
        aiProvider?: string | undefined;
        aiModel?: string | undefined;
    }>>;
    metadata: z.ZodOptional<z.ZodObject<{
        createdAt: z.ZodDate;
        updatedAt: z.ZodDate;
        version: z.ZodNumber;
        tokensUsed: z.ZodOptional<z.ZodNumber>;
        totalCost: z.ZodOptional<z.ZodNumber>;
    }, "strip", z.ZodTypeAny, {
        version: number;
        createdAt: Date;
        updatedAt: Date;
        tokensUsed?: number | undefined;
        totalCost?: number | undefined;
    }, {
        version: number;
        createdAt: Date;
        updatedAt: Date;
        tokensUsed?: number | undefined;
        totalCost?: number | undefined;
    }>>;
}, "strip", z.ZodTypeAny, {
    id: string;
    title: string;
    messages: {
        id: string;
        role: "user" | "system" | "assistant";
        content: string;
        timestamp: Date;
        metadata?: {
            cost?: number | undefined;
            model?: string | undefined;
            confidence?: number | undefined;
            provider?: string | undefined;
            latency?: number | undefined;
            tokens?: number | undefined;
            sources?: string[] | undefined;
        } | undefined;
        attachments?: {
            name: string;
            type: "document" | "audio" | "code" | "image";
            url: string;
            size?: number | undefined;
        }[] | undefined;
        reactions?: Record<string, number> | undefined;
        isStreaming?: boolean | undefined;
        isEditing?: boolean | undefined;
    }[];
    participants: {
        name: string;
        id: string;
        role: "ai" | "user" | "collaborator";
        isActive: boolean;
        cursor?: {
            color: string;
            x: number;
            y: number;
        } | undefined;
        avatar?: string | undefined;
    }[];
    metadata?: {
        version: number;
        createdAt: Date;
        updatedAt: Date;
        tokensUsed?: number | undefined;
        totalCost?: number | undefined;
    } | undefined;
    context?: {
        tags?: string[] | undefined;
        domain?: string | undefined;
        project?: string | undefined;
        priority?: "normal" | "low" | "high" | "urgent" | undefined;
        mood?: "creative" | "professional" | "casual" | "analytical" | undefined;
    } | undefined;
    settings?: {
        theme: "dark" | "light" | "system";
        autoSave: boolean;
        enableCollaboration: boolean;
        allowVoice: boolean;
        showContext: boolean;
        aiProvider?: string | undefined;
        aiModel?: string | undefined;
    } | undefined;
}, {
    id: string;
    title: string;
    messages: {
        id: string;
        role: "user" | "system" | "assistant";
        content: string;
        timestamp: Date;
        metadata?: {
            cost?: number | undefined;
            model?: string | undefined;
            confidence?: number | undefined;
            provider?: string | undefined;
            latency?: number | undefined;
            tokens?: number | undefined;
            sources?: string[] | undefined;
        } | undefined;
        attachments?: {
            name: string;
            type: "document" | "audio" | "code" | "image";
            url: string;
            size?: number | undefined;
        }[] | undefined;
        reactions?: Record<string, number> | undefined;
        isStreaming?: boolean | undefined;
        isEditing?: boolean | undefined;
    }[];
    participants: {
        name: string;
        id: string;
        role: "ai" | "user" | "collaborator";
        isActive: boolean;
        cursor?: {
            color: string;
            x: number;
            y: number;
        } | undefined;
        avatar?: string | undefined;
    }[];
    metadata?: {
        version: number;
        createdAt: Date;
        updatedAt: Date;
        tokensUsed?: number | undefined;
        totalCost?: number | undefined;
    } | undefined;
    context?: {
        tags?: string[] | undefined;
        domain?: string | undefined;
        project?: string | undefined;
        priority?: "normal" | "low" | "high" | "urgent" | undefined;
        mood?: "creative" | "professional" | "casual" | "analytical" | undefined;
    } | undefined;
    settings?: {
        theme?: "dark" | "light" | "system" | undefined;
        autoSave?: boolean | undefined;
        enableCollaboration?: boolean | undefined;
        allowVoice?: boolean | undefined;
        showContext?: boolean | undefined;
        aiProvider?: string | undefined;
        aiModel?: string | undefined;
    } | undefined;
}>;
export type Message = z.infer<typeof MessageSchema>;
export type Conversation = z.infer<typeof ConversationSchema>;
export interface AIConversationCanvasProps {
    conversationId?: string;
    initialConversation?: Partial<Conversation>;
    onMessageSent?: (message: Message) => void;
    onConversationUpdated?: (conversation: Conversation) => void;
    className?: string;
    style?: React.CSSProperties;
    enableVoice?: boolean;
    enableCollaboration?: boolean;
    enableContextVisualization?: boolean;
    aiProvider?: string;
    aiModel?: string;
    maxMessages?: number;
    autoClearAfter?: number;
    customTools?: Array<{
        id: string;
        name: string;
        icon: React.ReactNode;
        action: (conversation: Conversation) => Promise<void>;
    }>;
}
export declare const AIConversationCanvas: React.FC<AIConversationCanvasProps>;
export default AIConversationCanvas;
//# sourceMappingURL=AIConversationCanvas.d.ts.map