/**
 * React bindings for the Syntro SDK.
 *
 * Usage:
 * ```tsx
 * import { SyntroProvider, useSyntro } from '@syntrologie/runtime-sdk/react';
 *
 * function App() {
 *   return (
 *     <SyntroProvider token="syn_xxx">
 *       <MyApp />
 *     </SyntroProvider>
 *   );
 * }
 *
 * function MyComponent() {
 *   const { canvas, experiments, telemetry, isReady } = useSyntro();
 *   // ...
 * }
 * ```
 */
import { type ReactNode } from 'react';
import type { SmartCanvasHandle } from './api';
import { type SyntroInitOptions, type SyntroInitResult } from './bootstrap';
import type { ExperimentClient } from './experiments/types';
import type { TelemetryClient } from './telemetry/types';
export interface SyntroContextValue {
    /** The SmartCanvas handle */
    canvas: SmartCanvasHandle | null;
    /** The experiment client */
    experiments: ExperimentClient | null;
    /** The telemetry client */
    telemetry: TelemetryClient | null;
    /** Whether the SDK has finished initializing */
    isReady: boolean;
    /** Any error that occurred during initialization */
    error: Error | null;
}
export interface SyntroProviderProps {
    /**
     * The Syntro token containing all credentials.
     */
    token: string;
    /**
     * Optional canvas configuration overrides.
     */
    canvasOptions?: SyntroInitOptions['canvas'];
    /**
     * Custom config fetcher to override the default experiment-based fetcher.
     * Use this for local development or when bypassing the experiment server.
     */
    fetcher?: SyntroInitOptions['fetcher'];
    /**
     * Children to render.
     */
    children: ReactNode;
    /**
     * Called when initialization completes.
     */
    onReady?: (result: SyntroInitResult) => void;
    /**
     * Called when initialization fails.
     */
    onError?: (error: Error) => void;
}
/**
 * Provider component that initializes the Syntro SDK.
 *
 * Place this at the root of your app or at the top of any subtree
 * that needs access to the SDK.
 */
export declare function SyntroProvider({ token, canvasOptions, fetcher, children, onReady, onError, }: SyntroProviderProps): import("react/jsx-runtime").JSX.Element;
/**
 * Hook to access the Syntro SDK.
 *
 * Must be used within a SyntroProvider.
 *
 * @returns The SDK context containing canvas, experiments, telemetry, and status
 */
export declare function useSyntro(): SyntroContextValue;
/**
 * Hook to check if the SDK is ready.
 *
 * Shorthand for `useSyntro().isReady`.
 */
export declare function useSyntroReady(): boolean;
/**
 * Hook to access the experiment client.
 *
 * @returns The experiment client, or null if not configured
 */
export declare function useSyntroExperiments(): ExperimentClient | null;
/**
 * Hook to access the telemetry client.
 *
 * @returns The telemetry client, or null if not configured
 */
export declare function useSyntroTelemetry(): TelemetryClient | null;
/**
 * Hook to access the canvas handle.
 *
 * @returns The canvas handle, or null if not ready
 */
export declare function useSyntroCanvas(): SmartCanvasHandle | null;
