import { QueryClient } from '@tanstack/react-query';
import { type PropsWithChildren } from 'react';
import type { Seam, SeamClientOptions } from 'seamapi';
import { type TelemetryClient } from '../../lib/telemetry/index.js';
declare global {
    var seam: SeamProviderProps | undefined;
    var seamQueryClient: QueryClient | undefined;
    var seamTelemetryClient: TelemetryClient | undefined;
}
export interface SeamContext {
    client: Seam | null;
    clientOptions?: SeamProviderClientOptions | undefined;
    publishableKey?: string | undefined;
    userIdentifierKey?: string | undefined;
    clientSessionToken?: string | undefined;
}
export type SeamProviderProps = SeamProviderPropsWithClient | SeamProviderPropsWithPublishableKey | SeamProviderPropsWithClientSessionToken;
export interface SeamProviderPropsWithClient extends SeamProviderBaseProps {
    client: Seam;
}
export interface SeamProviderPropsWithPublishableKey extends SeamProviderBaseProps, SeamProviderClientOptions {
    publishableKey: string;
    userIdentifierKey?: string;
}
export interface SeamProviderPropsWithClientSessionToken extends SeamProviderBaseProps, SeamProviderClientOptions {
    clientSessionToken: string;
}
interface SeamProviderBaseProps extends PropsWithChildren {
    disableTelemetry?: boolean | undefined;
    disableCssInjection?: boolean | undefined;
    disableFontInjection?: boolean | undefined;
    unminifiyCss?: boolean | undefined;
    queryClient?: QueryClient | undefined;
    telemetryClient?: TelemetryClient | undefined;
}
export type SeamProviderClientOptions = Pick<SeamClientOptions, 'endpoint'>;
export declare const seamComponentsClassName = "seam-components";
export declare function SeamProvider({ children, disableTelemetry, disableCssInjection, disableFontInjection, unminifiyCss, queryClient, telemetryClient, ...props }: SeamProviderProps): JSX.Element;
export declare const seamContext: import("react").Context<SeamContext>;
export declare function useSeamContext(): SeamContext;
export {};
