import { ComponentProps, ReactNode } from 'react';
import { AllMessages } from './messages';
import { Theme } from './theme/utils';
/**
 * Allows injecting necessary router-related components.
 * Projects can have different routers:
 * Tanstack Router, React Router, Next router
 */
interface SpeziContextRouter {
    /**
     * Link component. Make sure to provide your router's Link component.
     */
    Link: (props: ComponentProps<"a">) => ReactNode;
}
export interface SpeziContextType {
    router: SpeziContextRouter;
}
export declare const SpeziContext: import('react').Context<SpeziContextType | null>;
/**
 * Returns SpeziContextType from context and validates its presence.
 * @throws {Error} When used outside SpeziProvider.
 */
export declare const useSpeziContext: () => SpeziContextType;
interface SpeziProviderProps extends SpeziContextType {
    children?: ReactNode;
    theme?: Partial<Theme>;
    messages?: Partial<AllMessages>;
}
/**
 * Configures messages and theme.
 */
export declare const SpeziProvider: ({ children, messages, theme, router, }: SpeziProviderProps) => import("react").JSX.Element;
export {};
