import type { CheckoutModalEvent } from '../hooks/track/CheckoutModalEvent';
import type { useTrack } from '../hooks/track/useTrack';
import type { FunCheckoutStep } from '../modals/CheckoutModal/FunCheckoutStep';
export interface StepQueryMeta extends Record<string, unknown> {
    /** Checkout steps that depend on this query being loaded */
    dependentSteps: FunCheckoutStep[];
    /** camelCase identifier for this query, used as key in timing metadata */
    name: string;
    /** Statsig event to emit with this query's individual timing */
    timingEvent: CheckoutModalEvent;
}
export declare function stepQueryMeta(params: {
    name: string;
    timingEvent: CheckoutModalEvent;
    dependentSteps: FunCheckoutStep[];
}): StepQueryMeta;
/**
 * Ensures all React Query dependencies for a checkout step are loaded before
 * marking the step as ready. Queries opt in via `stepQueryMeta()` in their
 * query options.
 *
 * Emits:
 * - A per-query Statsig event (the query's `timingEvent`) with duration as value
 * - A step-level measured event (`fc::ready::*`) with per-query timing metadata
 *
 * Steps without dependencies are skipped — no event is emitted and
 * `isStepReady` is set immediately.
 */
export declare function useStepQueryReadiness(logEvent: ReturnType<typeof useTrack>['logEvent'], logMeasuredEvent: ReturnType<typeof useTrack>['logMeasuredEvent']): {
    isStepReady: boolean;
    ensureStepQueries: (step: FunCheckoutStep) => Promise<void>;
};
