import { type Config } from '@expofp/config';
import type UIState from '../../store/UIState';
/**
 * Whether this plan has room for the kiosk layout.
 *
 * Kiosk mode forces the left overlay, which is 450px wide — so it may only run
 * where that layout would have been chosen anyway. `UIState.overlayPosition`
 * asks this same question and calls this, which is what keeps the two answers
 * from drifting apart.
 *
 * The guard exists because kiosk mode reaches devices that never asked for it.
 * A route QR hands its `kiosk_x/y/z` anchor to every scanning phone, and
 * `uiState.kioskData` doubles as "this device IS a kiosk" (see `kioskUrlParam`),
 * so the phone adopts the whole kiosk boot: a left overlay wider than its screen,
 * which collapses the map's framing region to a sliver and leaves any route it
 * was opened for zoomed out to nothing.
 *
 * Measured off the width of the container the plan was handed, not the window —
 * that is what `screenSize` holds (`bindRootElement`), and the overlay lives in
 * the container. Width alone, as `overlayPosition` reads it: a phone held in
 * landscape passes, being as wide as a small desktop window and getting the same
 * layout, and every real kiosk panel passes in either orientation.
 */
export declare function screenFitsKiosk(uiState: UIState): boolean;
/**
 * Toggle kiosk mode — the single meaning of `kiosk=1` / `kiosk=0` from either
 * channel (the `?kiosk=` URL param, the typed search-box command) — and store
 * that choice. Exit also resets the per-device UI scale.
 *
 * Turning it ON is refused where the kiosk layout does not fit
 * ({@link screenFitsKiosk}); turning it OFF always works, so the `kiosk=0`
 * opt-out can never be locked out by the size of the screen it is typed on.
 */
export declare function applyKioskMode(uiState: UIState, enabled: boolean): void;
/**
 * Store-free kiosk check — the mode a load starts in: the `?kiosk=` param wins, then whatever the
 * device itself says. Used by the Intercom boot, which runs before the MobX stores exist, so the
 * screen rule above is the caller's to add. The direct `?kiosk` read is kiosk-semantic and migrates
 * with the kiosk config node (retirement plan §4.7).
 */
export declare function isKioskMode(data: Config): boolean;
/**
 * The same check without the `?kiosk=` param: the mode init-ui and ShowKiosk settle on between
 * them, from the stored flag and the kiosks left — the enable flag, then a saved-kiosk object (a
 * provisioned device is a kiosk on first load, before the flag is set), then the config anchor.
 * What the setkiosk panel asks on close, since ShowKiosk remounts right after it and reads no
 * param.
 */
export declare function storedKioskMode(data: Config): boolean;
//# sourceMappingURL=kiosk-mode.d.ts.map