import { Context } from 'react';
import { JSX as JSX_2 } from 'react/jsx-runtime';
import { PropsWithChildren } from 'react';

/**
 * Props for the AppProvider component
 * Combines React's PropsWithChildren with our WidgetContextProps
 */
declare type AppProviderProps = PropsWithChildren<WidgetContextProps>;

/**
 * Main Widget Component
 *
 * This is the primary entry point for the Clear Estimates widget.
 * It sets up all the necessary providers and containers.
 *
 * @param apiKey - Your API key for authentication with the Clear Estimates service
 * @param apiUrl - The URL of the Clear Estimates API server
 * @param style - Display mode: "inline" (embedded in page) or "popover" (button that opens dialog)
 *
 * How to use:
 * 1. Import this component: import { EstimateWidget } from '@clearestimates/widget'
 * 2. Import styles: import '@clearestimates/widget/style.css'
 * 3. Add to your page: <EstimateWidget apiKey="your-key" apiUrl="https://api.clearestimates.com" />
 */
export declare const EstimateWidget: ({ apiKey, apiUrl, style }: AppProviderProps) => JSX_2.Element;

/**
 * Custom hook to access widget configuration
 *
 * Use this hook in any component that needs to access the widget settings.
 * Example:
 * ```
 * const { apiKey, apiUrl, style } = useWidgetContext();
 * ```
 *
 * @returns The current widget configuration
 */
export declare const useWidgetContext: () => WidgetContextProps;

/**
 * React Context that stores widget configuration
 *
 * This context makes the widget settings available throughout the application
 * without having to pass them as props to every component.
 */
export declare const WidgetContext: Context<WidgetContextProps>;

/**
 * Configuration properties for the Clear Estimates widget
 *
 * @property apiKey - API key for authentication with Clear Estimates
 * @property apiUrl - URL of the Clear Estimates API server
 * @property style - Display mode: "inline" (embedded in page) or "popover" (button opens dialog)
 */
export declare interface WidgetContextProps {
    apiKey: string;
    apiUrl: string;
    style?: "popover" | "inline";
}

export { }
