import * as react_jsx_runtime from 'react/jsx-runtime';
import * as react from 'react';
import react__default, { ReactNode, FC } from 'react';
import { b as WidgetConfig, W as WidgetClient, c as WidgetState, M as Message, e as WidgetError } from './client-w6tyqekJ.js';
export { A as Artifact, f as ArtifactCategory, C as ChatSession } from './client-w6tyqekJ.js';
import * as _emotion_utils from '@emotion/utils';

interface WidgetContextValue {
    client: WidgetClient;
    state: WidgetState;
    userId: string;
}
declare const WidgetContext: react__default.Context<WidgetContextValue | null>;
interface WidgetProviderProps {
    config: WidgetConfig;
    children?: ReactNode;
    autoInitialize?: boolean;
}
declare function WidgetProvider({ config, children, autoInitialize, }: WidgetProviderProps): react_jsx_runtime.JSX.Element;

declare function useWidget(): {
    state: WidgetState;
    client: WidgetClient;
    isIdle: boolean;
    isInitializing: boolean;
    isReady: boolean;
    isLoading: boolean;
    isError: boolean;
    messages: Message[];
    error: WidgetError | null;
    initialize: () => Promise<void>;
    sendMessage: (content: string) => Promise<Message>;
};

declare function useChat(): {
    input: string;
    setInput: react.Dispatch<react.SetStateAction<string>>;
    handleSubmit: (e?: React.FormEvent) => Promise<void>;
    messages: Message[];
    isLoading: boolean;
    canSubmit: boolean;
};

interface WidgetContainerProps {
    defaultOpen?: boolean;
    position?: 'bottom-right' | 'bottom-left';
    /**
     * When true, renders a ChatGPT-style full-page layout with:
     * - No header (no minimize, layout switcher, etc.)
     * - Persistent sidebar with thread history
     * - Responsive sidebar (collapsible on mobile)
     * - Full viewport coverage
     */
    fullScreen?: boolean;
    /**
     * Callback when the user clicks the logout button (only in fullScreen mode).
     * If not provided, the logout button won't be shown.
     */
    onLogout?: () => void;
}
declare function WidgetContainer({ defaultOpen, position, fullScreen, onLogout, }: WidgetContainerProps): react_jsx_runtime.JSX.Element;

type LayoutMode = 'floating' | 'fullscreen' | 'sidebar';

interface ChatWidgetProps {
    sidebarOpen?: boolean;
    onSidebarClose?: () => void;
    layoutMode?: LayoutMode;
}
declare const ChatWidget: FC<ChatWidgetProps>;

/**
 * True Fullscreen Layout Component
 *
 * Renders a ChatGPT-style full-page layout with:
 * - No header (no minimize, layout switcher, etc.)
 * - Resizable sidebar with thread history (default 280px)
 * - Collapsible sidebar with toggle button
 * - Responsive sidebar (overlay on mobile)
 * - Full viewport coverage
 */
declare const TrueFullscreenLayout: FC;

interface UserProfileMenuProps {
    onLogout?: () => void;
}
/**
 * User Profile Menu Component
 *
 * Shows the logged-in user's avatar and info in a popover menu
 * with theme toggle and logout option.
 */
declare const UserProfileMenu: FC<UserProfileMenuProps>;

interface FullscreenThemeWrapperProps {
    children: ReactNode;
    className?: string;
}
/**
 * Wrapper component that applies theme CSS variables to a container
 * Used in fullscreen mode where the widget is isolated from document root
 */
declare const FullscreenThemeWrapper: FC<FullscreenThemeWrapperProps>;

interface FullscreenContextValue {
    onLogout?: () => void;
}
interface FullscreenProviderProps {
    children: ReactNode;
    onLogout?: () => void;
}
declare const FullscreenProvider: FC<FullscreenProviderProps>;
declare const useFullscreen: () => FullscreenContextValue;

type ThemeMode = 'light' | 'dark' | 'system';
interface ThemeContextValue {
    /** Current theme mode setting (light, dark, or system) */
    mode: ThemeMode;
    /** Resolved theme (light or dark) based on mode and system preference */
    resolvedTheme: 'light' | 'dark';
    /** Set the theme mode */
    setMode: (mode: ThemeMode) => void;
}
interface ThemeProviderProps {
    children: ReactNode;
    /** Default theme mode if no preference is saved */
    defaultMode?: ThemeMode;
    /** The container element to apply theme class to (defaults to document root) */
    container?: HTMLElement | null;
}
declare const ThemeProvider: FC<ThemeProviderProps>;
declare const useTheme: () => ThemeContextValue;
declare const useThemeOptional: () => ThemeContextValue | null;

interface SidebarContextValue {
    open: boolean;
    setOpen: (open: boolean) => void;
    toggle: () => void;
    isMobile: boolean;
}
declare const useSidebar: () => SidebarContextValue;
interface SidebarProviderProps {
    children: ReactNode;
    defaultOpen?: boolean;
}
declare const SidebarProvider: FC<SidebarProviderProps>;
interface SidebarProps {
    children: ReactNode;
    className?: string;
}
declare const Sidebar: FC<SidebarProps>;
interface SidebarTriggerProps {
    className?: string;
}
declare const SidebarTrigger: FC<SidebarTriggerProps>;
interface SidebarInsetProps {
    children: ReactNode;
    className?: string;
}
declare const SidebarInset: FC<SidebarInsetProps>;

declare const Thread: FC;

/**
 * ReadOnlyThread component for displaying chat history without interactive elements.
 * Used by content creators to view student conversations.
 */

declare const ReadOnlyThread: FC;

declare const ThreadList: FC;

declare const ArtifactToolUIs: FC;

declare const theme: {
    readonly colors: {
        readonly background: {
            readonly primary: "#1a1a1a";
            readonly secondary: "#2a2a2a";
            readonly tertiary: "#3a3a3a";
        };
        readonly accent: {
            readonly primary: "#c9a227";
            readonly hover: "#d4af37";
            readonly muted: "rgba(201, 162, 39, 0.4)";
        };
        readonly text: {
            readonly primary: "#ffffff";
            readonly secondary: "#888888";
            readonly tertiary: "#cccccc";
            readonly inverse: "#1a1a1a";
        };
        readonly border: "#2a2a2a";
        readonly shadow: "rgba(0, 0, 0, 0.4)";
    };
    readonly spacing: {
        readonly xs: "0.25rem";
        readonly sm: "0.5rem";
        readonly md: "1rem";
        readonly lg: "1.5rem";
        readonly xl: "2rem";
        readonly '2xl': "3rem";
    };
    readonly radii: {
        readonly sm: "0.5rem";
        readonly md: "0.75rem";
        readonly lg: "1rem";
        readonly xl: "1.5rem";
        readonly full: "50%";
    };
    readonly typography: {
        readonly fontFamily: "system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif";
        readonly fontSize: {
            readonly xs: "0.75rem";
            readonly sm: "0.875rem";
            readonly md: "1rem";
            readonly lg: "1.125rem";
            readonly xl: "1.25rem";
            readonly '2xl': "1.5rem";
        };
        readonly fontWeight: {
            readonly normal: 400;
            readonly medium: 500;
            readonly semibold: 600;
            readonly bold: 700;
        };
        readonly lineHeight: {
            readonly tight: 1.25;
            readonly normal: 1.5;
            readonly relaxed: 1.7;
        };
    };
    readonly zIndex: {
        readonly widget: 9999;
        readonly overlay: 9998;
    };
    readonly shadows: {
        readonly sm: "0 2px 8px rgba(0, 0, 0, 0.2)";
        readonly md: "0 4px 16px rgba(0, 0, 0, 0.3)";
        readonly lg: "0 8px 32px rgba(0, 0, 0, 0.4)";
        readonly accent: "0 4px 16px rgba(201, 162, 39, 0.4)";
        readonly accentHover: "0 6px 20px rgba(201, 162, 39, 0.5)";
    };
    readonly transitions: {
        readonly fast: "0.15s ease";
        readonly normal: "0.2s ease";
        readonly slow: "0.3s ease";
    };
};
type Theme = typeof theme;
declare module '@emotion/react' {
    interface Theme {
        colors: typeof theme.colors;
        spacing: typeof theme.spacing;
        radii: typeof theme.radii;
        typography: typeof theme.typography;
        zIndex: typeof theme.zIndex;
        shadows: typeof theme.shadows;
        transitions: typeof theme.transitions;
    }
}

/**
 * Create an isolated Emotion cache for the widget.
 * This ensures our styles don't conflict with host website styles.
 * The 'la-widget' prefix will be added to all generated class names.
 */
declare const createWidgetCache: (container?: HTMLElement) => _emotion_utils.EmotionCache;
declare const widgetCache: _emotion_utils.EmotionCache;

export { ArtifactToolUIs, ChatWidget, FullscreenProvider, FullscreenThemeWrapper, Message, ReadOnlyThread, Sidebar, SidebarInset, SidebarProvider, SidebarTrigger, type Theme, type ThemeMode, ThemeProvider, Thread, ThreadList, TrueFullscreenLayout, UserProfileMenu, WidgetConfig, WidgetContainer, WidgetContext, WidgetProvider, WidgetState, createWidgetCache, theme, useChat, useFullscreen, useSidebar, useTheme, useThemeOptional, useWidget, widgetCache };
