import { type ChangeEvent, type FC, type FormEvent, type ReactNode, type Ref } from 'react';
import { type AssistantSession, type InitialFeatureFlags, type SelectedAssistantMessage, type ToolActionEvent, type Work } from '../types';
interface AssistantViewCommonProps {
    messages: any[];
    isLoading: boolean;
    input: string;
    onInputChange: (e: ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => void;
    onSendMessage: (e?: FormEvent, options?: any) => void;
    onStop: () => void;
    logo?: string;
    userPhoto?: string;
    userDisplayName?: string;
    description?: string;
    title?: string;
    welcomeMessage?: string;
    isLoadingAgent?: boolean;
    placeholder?: string;
    footerText?: string;
    supportFiles?: boolean;
    supportWebSearch?: boolean;
    supportDocumentSearch?: boolean;
    supportDeepResearch?: boolean;
    supportThinking?: boolean;
    supportWorkCanvas?: boolean;
    supportMultiModels?: boolean;
    deploymentId?: string;
    tenantAiAgentId?: string;
    enableMicrophone?: boolean;
    enableVoice?: boolean;
    isRecording?: boolean;
    recognition?: any;
    onMicrophoneClick?: () => void;
    onToolAction?: (event: ToolActionEvent) => void;
    onForwardToAgent?: (options: {
        agentId: string;
        prompt?: string;
    }) => void;
    onEditPrompt?: (messageIndex: number, newText: string) => void;
    showWelcome?: boolean;
    recentSessions?: AssistantSession[];
    onSessionClick?: (session: AssistantSession) => void;
    threadId?: string;
    initialModelId?: string;
    initialFeatures?: InitialFeatureFlags;
    initialFiles?: File[];
    /**
     * Combined list of subagents reachable from the active orchestrator —
     * direct children (`deployment.agent.agents`) plus connected subagents
     * (`deployment.agent.connectedAgents`). Used by the SubagentTool to render
     * avatars / names / step templates for `call*Agent` tool calls.
     */
    subagents?: Array<Record<string, any>>;
    /**
     * Tool metadata for the active agent (and its direct sub-agents). Forwarded
     * to ChatPanel so the renderer can resolve `outputRenderType` per tool call.
     */
    agentTools?: Array<Record<string, any>>;
    /** Host app currently in context (id + name + Docyrus icon string). */
    appContext?: {
        id: string;
        name?: string;
        icon?: string;
    } | null;
    /** Called when the user dismisses the app context chip. */
    onClearAppContext?: () => void;
    /** Latest chat error to surface above the input as a dismissable bubble. */
    chatError?: string | null;
    /** Called when the user dismisses the error bubble. */
    onDismissChatError?: () => void;
    /** Hide the prompt input until the agent's consent terms are accepted. */
    consentRequired?: boolean;
    /** When true, raw tool-call debug messages are shown in the thread. */
    debugMode?: boolean;
    /** When true, assistant messages render a checkbox and a Send/Cancel footer. */
    enableMessageSelection?: boolean;
    /** Called with the picked assistant messages when the user presses Send. */
    onSendSelectedMessages?: (messages: SelectedAssistantMessage[]) => void | Promise<void>;
    /** Called when the user presses Cancel in the selection footer. */
    onCancelSelection?: () => void;
}
export interface InlineModeProps extends AssistantViewCommonProps {
    mode: 'inline';
    isOpen?: boolean;
    onClose?: () => void;
    className?: string;
    enableSidebar?: boolean;
    isSidebarOpen?: boolean;
    onToggleSidebar?: () => void;
    renderSidebar?: (isFloating?: boolean) => ReactNode;
    activeTab?: number;
    onTabChange?: (tab: number) => void;
    onExpand?: () => void;
    onNewChat?: () => void;
    isFullscreen?: boolean;
    onPin?: () => void;
    isPinned?: boolean;
    renderSessionsView?: () => ReactNode;
    renderProjectsView?: () => ReactNode;
    renderWorksView?: () => ReactNode;
    renderMemoriesView?: () => ReactNode;
    renderThreadHeader?: () => ReactNode;
    /**
     * Renders the header tab strip (agent tabs UI). The right-side controls
     * (expand / close) stay in place.
     */
    renderHeaderTabs?: (opts: {
        isFullscreen: boolean;
    }) => ReactNode;
    hideCloseButton?: boolean;
    hideBorder?: boolean;
    showHeader?: boolean;
    t: (key: string) => string;
}
export interface ConversationModeProps extends AssistantViewCommonProps {
    mode: 'conversation';
    onWorkSelect: (work: Work) => void;
    onOpenRightSidebar: () => void;
}
export type AssistantViewProps = InlineModeProps | ConversationModeProps;
export declare const AssistantView: {
    ({ ref, ...props }: AssistantViewProps & {
        ref?: Ref<HTMLDivElement | null>;
    }): import("react/jsx-runtime").JSX.Element | null;
    displayName: string;
};
export type InlineViewProps = Omit<InlineModeProps, 'mode'>;
export type ConversationViewProps = Omit<ConversationModeProps, 'mode'>;
export declare const InlineView: {
    ({ ref, ...props }: InlineViewProps & {
        ref?: Ref<HTMLDivElement | null>;
    }): import("react/jsx-runtime").JSX.Element;
    displayName: string;
};
export declare const ConversationView: FC<ConversationViewProps>;
export {};
