/**
 * `sessionStorage` persistence for the auth-flow state machine itself
 * (step, userType, pendingEmail, etc.). Lets the user refresh on any
 * step — including non-deep-linkable ones like OTP_VERIFICATION and
 * SIGNUP_DETAILS — without getting bounced to METHOD_SELECT or
 * REPEAT_LOGIN by the router-sync deep-link guard.
 *
 * Cleared on AUTHENTICATED (the provider's success effect) and
 * automatically on tab close (sessionStorage default).
 *
 * Separate from `form-state-storage.ts` so the two concerns can be
 * cleared / inspected independently — form values mirror RHF state,
 * flow state mirrors the reducer.
 */
import type { AuthFlowState } from '../types';
/**
 * Read a persisted flow state.
 *
 * Returns null when storage is missing, the value is unparseable, or
 * `step` is unrecognised. When the step is valid, the parsed object is
 * merged on top of `defaultState(step)` — that guarantees every
 * required field is populated even if the snapshot was hand-edited,
 * truncated, or written by an older kit version that didn't know
 * about every field. Without that merge, `RESTORE_STATE` could place
 * `identifierType: undefined` / `identifierValue: undefined` / etc.
 * into the reducer and crash downstream pages.
 */
export declare function readFlowState(): AuthFlowState | null;
/** Persist the full flow state. No-op on quota / disabled storage. */
export declare function writeFlowState(state: AuthFlowState): void;
/** Wipe the persisted flow state. Called on successful auth. */
export declare function clearFlowState(): void;
