/**
 * Two-way sync between the auth flow state machine and a consumer-provided
 * URL router adapter. Mounted by `<AuthFlow router routes>` when both are
 * supplied. Without them, AuthFlow runs as a single-screen flow (no URL).
 *
 * Sync rules:
 * - State → URL: when `state.step` changes, navigate to its mapped path.
 *   First sync uses `replace` (no history entry); subsequent forward
 *   transitions use `push`. Backward transitions (UI back button, reset)
 *   use `replace` so the kit doesn't pile new entries on top of stale ones
 *   — that pile-up is what makes the browser back button feel "stuck"
 *   bouncing between two URLs.
 * - URL → State: subscribe to history changes (back/forward). When the URL
 *   moves to a routed step that's safe to deep-link into (METHOD_SELECT /
 *   PHONE_ENTRY / EMAIL_ENTRY), dispatch the corresponding action. We mark
 *   the dispatch so the next State → URL pass skips its push (the URL is
 *   already where it needs to be — pushing would add a redundant entry
 *   that breaks subsequent back navigation).
 * - Deep-link guard: stateful steps (OTP, SIGNUP_DETAILS, REPEAT_LOGIN)
 *   cannot be entered cold from a URL — the SDK snaps the URL back to the
 *   current state's path instead.
 */
import type { AuthFlowRouter, AuthFlowRoutes } from '../types';
/**
 * Wires `router` to the auth flow state machine. No-op when either
 * `router` or `routes` is missing.
 */
export declare function useAuthFlowRouterSync(router: AuthFlowRouter | undefined, routes: AuthFlowRoutes | undefined): void;
