import { z } from 'zod';
import { ComponentType, ReactNode } from 'react';
import { AgentAttachment, AgentToolCall, ModelOption } from '@multiplayer-app/ai-agent-types';
import { Translations } from './translations';

export type AgentTransportMode = 'proxy' | 'direct';
export declare class HttpError extends Error {
    readonly statusCode: number;
    constructor(message: string, statusCode: number);
}
export interface AgentToolHandlerContext {
    chatId: string;
    agentId?: string;
    workspaceId?: string;
    appendSystemMessage: (message: string) => void;
}
export type AgentToolInvoke = (input: Record<string, unknown>, ctx: AgentToolHandlerContext) => Promise<Record<string, unknown> | void>;
export interface AgentToolDefinition {
    name: string;
    label: string;
    description?: string;
    icon?: string;
    schema?: Record<string, unknown>;
    confirmation?: 'auto' | 'manual';
    category?: string;
    handler?: AgentToolInvoke;
}
export type AgentThemeColorMode = 'light' | 'dark';
export interface AgentThemeTokens {
    background: string;
    surface: string;
    text: string;
    subtext: string;
    border: string;
    accent: string;
    accentSoft: string;
    warning: string;
    danger: string;
    fontFamily: string;
    radius: string;
    fontSize: string;
    colorMode: AgentThemeColorMode;
}
export declare const themeTokenSchema: z.ZodObject<{
    background: z.ZodString;
    surface: z.ZodString;
    text: z.ZodString;
    subtext: z.ZodString;
    border: z.ZodString;
    accent: z.ZodString;
    accentSoft: z.ZodString;
    warning: z.ZodString;
    danger: z.ZodString;
    fontFamily: z.ZodString;
    radius: z.ZodString;
    fontSize: z.ZodString;
    colorMode: z.ZodEnum<["light", "dark"]>;
}, "strip", z.ZodTypeAny, {
    background: string;
    surface: string;
    text: string;
    subtext: string;
    border: string;
    accent: string;
    accentSoft: string;
    warning: string;
    danger: string;
    fontFamily: string;
    radius: string;
    fontSize: string;
    colorMode: "light" | "dark";
}, {
    background: string;
    surface: string;
    text: string;
    subtext: string;
    border: string;
    accent: string;
    accentSoft: string;
    warning: string;
    danger: string;
    fontFamily: string;
    radius: string;
    fontSize: string;
    colorMode: "light" | "dark";
}>;
export interface ContextKeyConfig {
    key: string;
    label: string;
    description?: string;
    tools: string[];
    defaultModel?: string;
    autoConfirmTools?: string[];
}
export type ConfirmationMode = 'auto' | 'human';
export interface AgentFeatureFlags {
    /**
     * Whether to render inline reasoning traces (AgentMessage.reasoning)
     * above assistant messages. When omitted, defaults to true.
     */
    reasoning?: boolean;
    artifactsPanel?: boolean;
    modelSwitching?: boolean;
    toolConfiguration?: boolean;
    /** Show the composer file-attach (paperclip) button. */
    fileAttachments?: boolean;
    /** Show the composer attach-selection (web snippet) button. */
    selectionAttachments?: boolean;
    multiAgentControl?: boolean;
    sandboxControls?: boolean;
    /**
     * Whether to show the chat history sidebar. Defaults to true.
     */
    historySidebar?: boolean;
    /**
     * Strategy for generating chat titles:
     * - "local" (default): use cheap, local heuristics.
     * - "llm": allow an LLM-backed strategy when the transport supports it.
     */
    titleGeneration?: 'local' | 'llm';
    /**
     * Automatically attach "page context" (URL + metadata) to every outbound user message.
     * Defaults to true.
     */
    pageContextAttachments?: boolean;
}
export type PageContextInput = {
    url?: string;
    route?: string;
    title?: string;
};
export interface PageContextConfig {
    /**
     * Default options for the built-in `pageContext` attachment generation.
     * These are forwarded into `createPageContextAttachment(...)`.
     */
    includeUserAgent?: boolean;
    includeReferrer?: boolean;
    includeViewport?: boolean;
    includeTitle?: boolean;
    name?: string;
    /**
     * Optional host hook to add additional structured metadata.
     * Returned object is merged into `metadata.data`.
     *
     * Keep this pure and fast; it runs on attach and on route changes.
     */
    getData?: (input: PageContextInput) => Record<string, unknown> | undefined;
}
export type TransportBaseConfig = {
    mode: AgentTransportMode;
    timeoutMs?: number;
    headers?: Record<string, string>;
    /**
     * Optional error handler invoked whenever the transport encounters an HTTP or streaming error.
     * Use this to surface errors to your own error reporting system or UI toast layer.
     */
    onError?: (error: Error) => void;
};
export interface ProxyTransportConfig extends TransportBaseConfig {
    mode: 'proxy';
    baseUrl: string;
    apiKey?: string;
    socketPath?: string;
    /**
     * Optional Socket.IO namespace to connect to, e.g. "/ai-agent".
     * When provided, the client will connect to `${socketUrl}${socketNamespace}`.
     */
    socketNamespace?: string;
}
export interface DirectTransportConfig extends TransportBaseConfig {
    mode: 'direct';
    provider: 'openrouter' | 'openai' | 'custom';
    endpoint?: string;
    apiKey?: string;
    model?: string;
    /**
     * Optional model to use specifically for title generation.
     * If not provided, falls back to the default `model`.
     * Useful for using a cheaper/faster model for titles while using
     * a more capable model for actual conversations.
     */
    titleGenerationModel?: string;
}
export type AgentTransportConfig = ProxyTransportConfig | DirectTransportConfig;
export interface ToolRendererProps {
    call: AgentToolCall;
    contextKey: string;
    chatId: string;
    rejectButtonText?: string;
    applyAllButtonText?: string;
    showStatus?: boolean;
}
export type ToolRendererComponent = ComponentType<ToolRendererProps>;
export type ToolRendererRegistry = Record<string, ToolRendererComponent>;
export interface ComposerAttachmentActionsProps {
    /** Active chat id, or draft key when no chat is selected yet. */
    chatKey: string;
    activeChatId?: string;
    attachments: AgentAttachment[];
    addAttachments: (attachments: AgentAttachment[]) => void;
    removeAttachment: (attachmentId: string) => void;
}
export type ComposerAttachmentActionsComponent = ComponentType<ComposerAttachmentActionsProps>;
export interface AgentFrontendConfig {
    appId: string;
    workspaceId?: string;
    debug?: boolean;
    user?: {
        id: string;
        displayName?: string;
        email?: string;
        avatarUrl?: string;
    };
    contextKeys: ContextKeyConfig[];
    transport: AgentTransportConfig;
    theme?: Partial<AgentThemeTokens>;
    tools?: AgentToolDefinition[];
    models?: ModelOption[];
    features?: AgentFeatureFlags;
    /**
     * Optional page context attachment configuration.
     * Useful for adding host-specific metadata (e.g. current tenant/project id).
     */
    pageContext?: PageContextConfig;
    defaultContextKey?: string;
    messagesPageSize?: number;
    toolRenderers?: ToolRendererRegistry;
    /**
     * Optional React component rendered in the composer toolbar for host-defined attachment actions.
     * Use `addAttachments` to attach custom `AgentAttachment` payloads (e.g. context, links).
     */
    composerAttachmentActions?: ComposerAttachmentActionsComponent;
    /**
     * Optional translations to override default English strings.
     * Partial translations are merged with defaults.
     */
    translations?: Partial<Translations>;
    /**
     * Custom icons for context attachments keyed by `metadata.kind`.
     * When provided, overrides the default icon for that kind.
     * Example: `{ pageContext: <MyPageIcon />, formSnapshot: <MyFormIcon /> }`
     */
    contextAttachmentIcons?: Record<string, ReactNode>;
}
export declare const contextKeySchema: z.ZodObject<{
    key: z.ZodString;
    label: z.ZodString;
    description: z.ZodOptional<z.ZodString>;
    tools: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
    defaultModel: z.ZodOptional<z.ZodString>;
    autoConfirmTools: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
}, "strip", z.ZodTypeAny, {
    key: string;
    label: string;
    tools: string[];
    description?: string | undefined;
    defaultModel?: string | undefined;
    autoConfirmTools?: string[] | undefined;
}, {
    key: string;
    label: string;
    description?: string | undefined;
    tools?: string[] | undefined;
    defaultModel?: string | undefined;
    autoConfirmTools?: string[] | undefined;
}>;
export declare const frontendConfigSchema: z.ZodObject<{
    appId: z.ZodString;
    workspaceId: z.ZodOptional<z.ZodString>;
    debug: z.ZodOptional<z.ZodBoolean>;
    user: z.ZodOptional<z.ZodObject<{
        id: z.ZodString;
        displayName: z.ZodOptional<z.ZodString>;
        email: z.ZodOptional<z.ZodString>;
        avatarUrl: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        id: string;
        displayName?: string | undefined;
        email?: string | undefined;
        avatarUrl?: string | undefined;
    }, {
        id: string;
        displayName?: string | undefined;
        email?: string | undefined;
        avatarUrl?: string | undefined;
    }>>;
    contextKeys: z.ZodArray<z.ZodObject<{
        key: z.ZodString;
        label: z.ZodString;
        description: z.ZodOptional<z.ZodString>;
        tools: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
        defaultModel: z.ZodOptional<z.ZodString>;
        autoConfirmTools: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
    }, "strip", z.ZodTypeAny, {
        key: string;
        label: string;
        tools: string[];
        description?: string | undefined;
        defaultModel?: string | undefined;
        autoConfirmTools?: string[] | undefined;
    }, {
        key: string;
        label: string;
        description?: string | undefined;
        tools?: string[] | undefined;
        defaultModel?: string | undefined;
        autoConfirmTools?: string[] | undefined;
    }>, "many">;
    transport: z.ZodUnion<[z.ZodObject<{
        mode: z.ZodLiteral<"proxy">;
        baseUrl: z.ZodString;
        apiKey: z.ZodOptional<z.ZodString>;
        socketPath: z.ZodOptional<z.ZodString>;
        socketNamespace: z.ZodOptional<z.ZodString>;
        timeoutMs: z.ZodOptional<z.ZodNumber>;
        headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
    }, "strip", z.ZodTypeAny, {
        mode: "proxy";
        baseUrl: string;
        apiKey?: string | undefined;
        socketPath?: string | undefined;
        socketNamespace?: string | undefined;
        timeoutMs?: number | undefined;
        headers?: Record<string, string> | undefined;
    }, {
        mode: "proxy";
        baseUrl: string;
        apiKey?: string | undefined;
        socketPath?: string | undefined;
        socketNamespace?: string | undefined;
        timeoutMs?: number | undefined;
        headers?: Record<string, string> | undefined;
    }>, z.ZodObject<{
        mode: z.ZodLiteral<"direct">;
        provider: z.ZodEnum<["openrouter", "openai", "custom"]>;
        endpoint: z.ZodOptional<z.ZodString>;
        apiKey: z.ZodOptional<z.ZodString>;
        model: z.ZodOptional<z.ZodString>;
        titleGenerationModel: z.ZodOptional<z.ZodString>;
        timeoutMs: z.ZodOptional<z.ZodNumber>;
        headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
    }, "strip", z.ZodTypeAny, {
        mode: "direct";
        provider: "custom" | "openrouter" | "openai";
        apiKey?: string | undefined;
        timeoutMs?: number | undefined;
        headers?: Record<string, string> | undefined;
        endpoint?: string | undefined;
        model?: string | undefined;
        titleGenerationModel?: string | undefined;
    }, {
        mode: "direct";
        provider: "custom" | "openrouter" | "openai";
        apiKey?: string | undefined;
        timeoutMs?: number | undefined;
        headers?: Record<string, string> | undefined;
        endpoint?: string | undefined;
        model?: string | undefined;
        titleGenerationModel?: string | undefined;
    }>]>;
    theme: z.ZodOptional<z.ZodObject<{
        background: z.ZodOptional<z.ZodString>;
        surface: z.ZodOptional<z.ZodString>;
        text: z.ZodOptional<z.ZodString>;
        subtext: z.ZodOptional<z.ZodString>;
        border: z.ZodOptional<z.ZodString>;
        accent: z.ZodOptional<z.ZodString>;
        accentSoft: z.ZodOptional<z.ZodString>;
        warning: z.ZodOptional<z.ZodString>;
        danger: z.ZodOptional<z.ZodString>;
        fontFamily: z.ZodOptional<z.ZodString>;
        radius: z.ZodOptional<z.ZodString>;
        fontSize: z.ZodOptional<z.ZodString>;
        colorMode: z.ZodOptional<z.ZodEnum<["light", "dark"]>>;
    }, "strip", z.ZodTypeAny, {
        background?: string | undefined;
        surface?: string | undefined;
        text?: string | undefined;
        subtext?: string | undefined;
        border?: string | undefined;
        accent?: string | undefined;
        accentSoft?: string | undefined;
        warning?: string | undefined;
        danger?: string | undefined;
        fontFamily?: string | undefined;
        radius?: string | undefined;
        fontSize?: string | undefined;
        colorMode?: "light" | "dark" | undefined;
    }, {
        background?: string | undefined;
        surface?: string | undefined;
        text?: string | undefined;
        subtext?: string | undefined;
        border?: string | undefined;
        accent?: string | undefined;
        accentSoft?: string | undefined;
        warning?: string | undefined;
        danger?: string | undefined;
        fontFamily?: string | undefined;
        radius?: string | undefined;
        fontSize?: string | undefined;
        colorMode?: "light" | "dark" | undefined;
    }>>;
    tools: z.ZodOptional<z.ZodArray<z.ZodObject<{
        name: z.ZodString;
        label: z.ZodString;
        description: z.ZodOptional<z.ZodString>;
        icon: z.ZodOptional<z.ZodString>;
        schema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
        confirmation: z.ZodOptional<z.ZodEnum<["auto", "manual"]>>;
        category: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        label: string;
        name: string;
        description?: string | undefined;
        icon?: string | undefined;
        schema?: Record<string, any> | undefined;
        confirmation?: "auto" | "manual" | undefined;
        category?: string | undefined;
    }, {
        label: string;
        name: string;
        description?: string | undefined;
        icon?: string | undefined;
        schema?: Record<string, any> | undefined;
        confirmation?: "auto" | "manual" | undefined;
        category?: string | undefined;
    }>, "many">>;
    models: z.ZodOptional<z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        label: z.ZodString;
        provider: z.ZodOptional<z.ZodString>;
        reasoning: z.ZodOptional<z.ZodEnum<["disabled", "concise", "deep"]>>;
        contexts: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
    }, "strip", z.ZodTypeAny, {
        label: string;
        id: string;
        provider?: string | undefined;
        reasoning?: "disabled" | "concise" | "deep" | undefined;
        contexts?: string[] | undefined;
    }, {
        label: string;
        id: string;
        provider?: string | undefined;
        reasoning?: "disabled" | "concise" | "deep" | undefined;
        contexts?: string[] | undefined;
    }>, "many">>;
    features: z.ZodOptional<z.ZodObject<{
        reasoning: z.ZodOptional<z.ZodBoolean>;
        artifactsPanel: z.ZodOptional<z.ZodBoolean>;
        modelSwitching: z.ZodOptional<z.ZodBoolean>;
        toolConfiguration: z.ZodOptional<z.ZodBoolean>;
        fileAttachments: z.ZodOptional<z.ZodBoolean>;
        selectionAttachments: z.ZodOptional<z.ZodBoolean>;
        multiAgentControl: z.ZodOptional<z.ZodBoolean>;
        sandboxControls: z.ZodOptional<z.ZodBoolean>;
        historySidebar: z.ZodOptional<z.ZodBoolean>;
        titleGeneration: z.ZodOptional<z.ZodEnum<["local", "llm"]>>;
        pageContextAttachments: z.ZodOptional<z.ZodBoolean>;
    }, "strip", z.ZodTypeAny, {
        reasoning?: boolean | undefined;
        artifactsPanel?: boolean | undefined;
        modelSwitching?: boolean | undefined;
        toolConfiguration?: boolean | undefined;
        fileAttachments?: boolean | undefined;
        selectionAttachments?: boolean | undefined;
        multiAgentControl?: boolean | undefined;
        sandboxControls?: boolean | undefined;
        historySidebar?: boolean | undefined;
        titleGeneration?: "local" | "llm" | undefined;
        pageContextAttachments?: boolean | undefined;
    }, {
        reasoning?: boolean | undefined;
        artifactsPanel?: boolean | undefined;
        modelSwitching?: boolean | undefined;
        toolConfiguration?: boolean | undefined;
        fileAttachments?: boolean | undefined;
        selectionAttachments?: boolean | undefined;
        multiAgentControl?: boolean | undefined;
        sandboxControls?: boolean | undefined;
        historySidebar?: boolean | undefined;
        titleGeneration?: "local" | "llm" | undefined;
        pageContextAttachments?: boolean | undefined;
    }>>;
    pageContext: z.ZodOptional<z.ZodObject<{
        includeUserAgent: z.ZodOptional<z.ZodBoolean>;
        includeReferrer: z.ZodOptional<z.ZodBoolean>;
        includeViewport: z.ZodOptional<z.ZodBoolean>;
        includeTitle: z.ZodOptional<z.ZodBoolean>;
        name: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        name?: string | undefined;
        includeUserAgent?: boolean | undefined;
        includeReferrer?: boolean | undefined;
        includeViewport?: boolean | undefined;
        includeTitle?: boolean | undefined;
    }, {
        name?: string | undefined;
        includeUserAgent?: boolean | undefined;
        includeReferrer?: boolean | undefined;
        includeViewport?: boolean | undefined;
        includeTitle?: boolean | undefined;
    }>>;
    defaultContextKey: z.ZodOptional<z.ZodString>;
    messagesPageSize: z.ZodOptional<z.ZodNumber>;
    translations: z.ZodOptional<z.ZodObject<{
        newChat: z.ZodOptional<z.ZodString>;
        followUp: z.ZodOptional<z.ZodString>;
        sendMessage: z.ZodOptional<z.ZodString>;
        stopStreaming: z.ZodOptional<z.ZodString>;
        typeMessageToSend: z.ZodOptional<z.ZodString>;
        attachFiles: z.ZodOptional<z.ZodString>;
        attachSelectionToContext: z.ZodOptional<z.ZodString>;
        attachments: z.ZodOptional<z.ZodString>;
        chats: z.ZodOptional<z.ZodString>;
        multiUserChats: z.ZodOptional<z.ZodString>;
        noMultiUserChats: z.ZodOptional<z.ZodString>;
        noChatsYet: z.ZodOptional<z.ZodString>;
        untitledChat: z.ZodOptional<z.ZodString>;
        deleteChat: z.ZodOptional<z.ZodString>;
        showChatHistory: z.ZodOptional<z.ZodString>;
        hideChatHistory: z.ZodOptional<z.ZodString>;
        fetchingChats: z.ZodOptional<z.ZodString>;
        fetchingChatError: z.ZodOptional<z.ZodString>;
        helloThere: z.ZodOptional<z.ZodString>;
        howCanIHelpYou: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        newChat?: string | undefined;
        followUp?: string | undefined;
        sendMessage?: string | undefined;
        stopStreaming?: string | undefined;
        typeMessageToSend?: string | undefined;
        attachFiles?: string | undefined;
        attachSelectionToContext?: string | undefined;
        attachments?: string | undefined;
        chats?: string | undefined;
        multiUserChats?: string | undefined;
        noMultiUserChats?: string | undefined;
        noChatsYet?: string | undefined;
        untitledChat?: string | undefined;
        deleteChat?: string | undefined;
        showChatHistory?: string | undefined;
        hideChatHistory?: string | undefined;
        fetchingChats?: string | undefined;
        fetchingChatError?: string | undefined;
        helloThere?: string | undefined;
        howCanIHelpYou?: string | undefined;
    }, {
        newChat?: string | undefined;
        followUp?: string | undefined;
        sendMessage?: string | undefined;
        stopStreaming?: string | undefined;
        typeMessageToSend?: string | undefined;
        attachFiles?: string | undefined;
        attachSelectionToContext?: string | undefined;
        attachments?: string | undefined;
        chats?: string | undefined;
        multiUserChats?: string | undefined;
        noMultiUserChats?: string | undefined;
        noChatsYet?: string | undefined;
        untitledChat?: string | undefined;
        deleteChat?: string | undefined;
        showChatHistory?: string | undefined;
        hideChatHistory?: string | undefined;
        fetchingChats?: string | undefined;
        fetchingChatError?: string | undefined;
        helloThere?: string | undefined;
        howCanIHelpYou?: string | undefined;
    }>>;
}, "strip", z.ZodTypeAny, {
    appId: string;
    contextKeys: {
        key: string;
        label: string;
        tools: string[];
        description?: string | undefined;
        defaultModel?: string | undefined;
        autoConfirmTools?: string[] | undefined;
    }[];
    transport: {
        mode: "proxy";
        baseUrl: string;
        apiKey?: string | undefined;
        socketPath?: string | undefined;
        socketNamespace?: string | undefined;
        timeoutMs?: number | undefined;
        headers?: Record<string, string> | undefined;
    } | {
        mode: "direct";
        provider: "custom" | "openrouter" | "openai";
        apiKey?: string | undefined;
        timeoutMs?: number | undefined;
        headers?: Record<string, string> | undefined;
        endpoint?: string | undefined;
        model?: string | undefined;
        titleGenerationModel?: string | undefined;
    };
    tools?: {
        label: string;
        name: string;
        description?: string | undefined;
        icon?: string | undefined;
        schema?: Record<string, any> | undefined;
        confirmation?: "auto" | "manual" | undefined;
        category?: string | undefined;
    }[] | undefined;
    workspaceId?: string | undefined;
    debug?: boolean | undefined;
    user?: {
        id: string;
        displayName?: string | undefined;
        email?: string | undefined;
        avatarUrl?: string | undefined;
    } | undefined;
    theme?: {
        background?: string | undefined;
        surface?: string | undefined;
        text?: string | undefined;
        subtext?: string | undefined;
        border?: string | undefined;
        accent?: string | undefined;
        accentSoft?: string | undefined;
        warning?: string | undefined;
        danger?: string | undefined;
        fontFamily?: string | undefined;
        radius?: string | undefined;
        fontSize?: string | undefined;
        colorMode?: "light" | "dark" | undefined;
    } | undefined;
    models?: {
        label: string;
        id: string;
        provider?: string | undefined;
        reasoning?: "disabled" | "concise" | "deep" | undefined;
        contexts?: string[] | undefined;
    }[] | undefined;
    features?: {
        reasoning?: boolean | undefined;
        artifactsPanel?: boolean | undefined;
        modelSwitching?: boolean | undefined;
        toolConfiguration?: boolean | undefined;
        fileAttachments?: boolean | undefined;
        selectionAttachments?: boolean | undefined;
        multiAgentControl?: boolean | undefined;
        sandboxControls?: boolean | undefined;
        historySidebar?: boolean | undefined;
        titleGeneration?: "local" | "llm" | undefined;
        pageContextAttachments?: boolean | undefined;
    } | undefined;
    pageContext?: {
        name?: string | undefined;
        includeUserAgent?: boolean | undefined;
        includeReferrer?: boolean | undefined;
        includeViewport?: boolean | undefined;
        includeTitle?: boolean | undefined;
    } | undefined;
    defaultContextKey?: string | undefined;
    messagesPageSize?: number | undefined;
    translations?: {
        newChat?: string | undefined;
        followUp?: string | undefined;
        sendMessage?: string | undefined;
        stopStreaming?: string | undefined;
        typeMessageToSend?: string | undefined;
        attachFiles?: string | undefined;
        attachSelectionToContext?: string | undefined;
        attachments?: string | undefined;
        chats?: string | undefined;
        multiUserChats?: string | undefined;
        noMultiUserChats?: string | undefined;
        noChatsYet?: string | undefined;
        untitledChat?: string | undefined;
        deleteChat?: string | undefined;
        showChatHistory?: string | undefined;
        hideChatHistory?: string | undefined;
        fetchingChats?: string | undefined;
        fetchingChatError?: string | undefined;
        helloThere?: string | undefined;
        howCanIHelpYou?: string | undefined;
    } | undefined;
}, {
    appId: string;
    contextKeys: {
        key: string;
        label: string;
        description?: string | undefined;
        tools?: string[] | undefined;
        defaultModel?: string | undefined;
        autoConfirmTools?: string[] | undefined;
    }[];
    transport: {
        mode: "proxy";
        baseUrl: string;
        apiKey?: string | undefined;
        socketPath?: string | undefined;
        socketNamespace?: string | undefined;
        timeoutMs?: number | undefined;
        headers?: Record<string, string> | undefined;
    } | {
        mode: "direct";
        provider: "custom" | "openrouter" | "openai";
        apiKey?: string | undefined;
        timeoutMs?: number | undefined;
        headers?: Record<string, string> | undefined;
        endpoint?: string | undefined;
        model?: string | undefined;
        titleGenerationModel?: string | undefined;
    };
    tools?: {
        label: string;
        name: string;
        description?: string | undefined;
        icon?: string | undefined;
        schema?: Record<string, any> | undefined;
        confirmation?: "auto" | "manual" | undefined;
        category?: string | undefined;
    }[] | undefined;
    workspaceId?: string | undefined;
    debug?: boolean | undefined;
    user?: {
        id: string;
        displayName?: string | undefined;
        email?: string | undefined;
        avatarUrl?: string | undefined;
    } | undefined;
    theme?: {
        background?: string | undefined;
        surface?: string | undefined;
        text?: string | undefined;
        subtext?: string | undefined;
        border?: string | undefined;
        accent?: string | undefined;
        accentSoft?: string | undefined;
        warning?: string | undefined;
        danger?: string | undefined;
        fontFamily?: string | undefined;
        radius?: string | undefined;
        fontSize?: string | undefined;
        colorMode?: "light" | "dark" | undefined;
    } | undefined;
    models?: {
        label: string;
        id: string;
        provider?: string | undefined;
        reasoning?: "disabled" | "concise" | "deep" | undefined;
        contexts?: string[] | undefined;
    }[] | undefined;
    features?: {
        reasoning?: boolean | undefined;
        artifactsPanel?: boolean | undefined;
        modelSwitching?: boolean | undefined;
        toolConfiguration?: boolean | undefined;
        fileAttachments?: boolean | undefined;
        selectionAttachments?: boolean | undefined;
        multiAgentControl?: boolean | undefined;
        sandboxControls?: boolean | undefined;
        historySidebar?: boolean | undefined;
        titleGeneration?: "local" | "llm" | undefined;
        pageContextAttachments?: boolean | undefined;
    } | undefined;
    pageContext?: {
        name?: string | undefined;
        includeUserAgent?: boolean | undefined;
        includeReferrer?: boolean | undefined;
        includeViewport?: boolean | undefined;
        includeTitle?: boolean | undefined;
    } | undefined;
    defaultContextKey?: string | undefined;
    messagesPageSize?: number | undefined;
    translations?: {
        newChat?: string | undefined;
        followUp?: string | undefined;
        sendMessage?: string | undefined;
        stopStreaming?: string | undefined;
        typeMessageToSend?: string | undefined;
        attachFiles?: string | undefined;
        attachSelectionToContext?: string | undefined;
        attachments?: string | undefined;
        chats?: string | undefined;
        multiUserChats?: string | undefined;
        noMultiUserChats?: string | undefined;
        noChatsYet?: string | undefined;
        untitledChat?: string | undefined;
        deleteChat?: string | undefined;
        showChatHistory?: string | undefined;
        hideChatHistory?: string | undefined;
        fetchingChats?: string | undefined;
        fetchingChatError?: string | undefined;
        helloThere?: string | undefined;
        howCanIHelpYou?: string | undefined;
    } | undefined;
}>;
export type ValidatedAgentFrontendConfig = z.infer<typeof frontendConfigSchema> & Pick<AgentFrontendConfig, 'toolRenderers' | 'composerAttachmentActions' | 'tools' | 'pageContext' | 'contextAttachmentIcons'> & {
    translations: Translations;
};
//# sourceMappingURL=types.d.ts.map