import React from "react";
import { ExtendedDeviceInfo } from "./real-time-device-monitor";
export interface AdaptiveChatRouterConfig {
    strategy: "device-type" | "screen-size" | "hybrid" | "user-preference";
    mobileMaxWidth: number;
    tabletMaxWidth: number;
    allowUserOverride: boolean;
    persistUserPreference: boolean;
    enableTransitions: boolean;
    enableLazyLoading: boolean;
    preloadComponents: boolean;
    enableMemoryManagement: boolean;
    enableDebugMode: boolean;
    enablePerformanceLogging: boolean;
}
export declare enum ChatInterface {
    DESKTOP = "desktop",
    MOBILE = "mobile",
    TABLET = "tablet",
    AUTO = "auto"
}
export interface ChatState {
    isOpen: boolean;
    currentInterface: ChatInterface;
    requestedInterface?: ChatInterface;
    isTransitioning: boolean;
    sessionId: string;
    lastInteraction: number;
}
interface AdaptiveChatRouterContextType {
    chatState: ChatState;
    deviceInfo: ExtendedDeviceInfo;
    config: AdaptiveChatRouterConfig;
    openChat: (preferredInterface?: ChatInterface) => void;
    closeChat: () => void;
    switchInterface: (chatInterface: ChatInterface) => void;
    isInterfaceSupported: (chatInterface: ChatInterface) => boolean;
}
export declare const useAdaptiveChatRouter: () => AdaptiveChatRouterContextType;
interface AdaptiveChatRouterProps {
    children?: React.ReactNode;
    config?: Partial<AdaptiveChatRouterConfig>;
    onInterfaceChange?: (oldInterface: ChatInterface, newInterface: ChatInterface) => void;
    onChatStateChange?: (chatState: ChatState) => void;
}
export declare const AdaptiveChatRouter: React.FC<AdaptiveChatRouterProps>;
interface AdaptiveFloatingChatButtonProps {
    onToggle?: (isOpen: boolean) => void;
    className?: string;
    style?: React.CSSProperties;
}
export declare const AdaptiveFloatingChatButton: React.FC<AdaptiveFloatingChatButtonProps>;
export default AdaptiveChatRouter;
//# sourceMappingURL=adaptive-chat-router.d.ts.map