import * as react from 'react'; import { ReactNode } from 'react'; interface DirectionKeyLabels { up: string; left: string; down: string; right: string; } type DirectionKeysAxis = 'both' | 'vertical'; interface DirectionKeysHintProps { labels?: Partial; axis?: DirectionKeysAxis; color?: string; } declare function DirectionKeysHint({ labels, axis, color }: DirectionKeysHintProps): react.JSX.Element; interface GuideStep { title: string; body: string; art?: ReactNode; } type GuideRotation = 0 | 90 | 180 | -90; interface GuideContextValue { isOpen: boolean; open: () => void; close: () => void; requestAutoShow: () => void; } interface GuideProviderProps { steps: GuideStep[]; currentVersion: number; seenVersion: number; onSeen: (version: number) => void; rotation?: GuideRotation; children?: ReactNode; } declare function GuideProvider({ steps, currentVersion, seenVersion, onSeen, rotation, children }: GuideProviderProps): react.JSX.Element; declare function useGuide(): GuideContextValue; declare function useAutoShowGuide(enabled?: boolean): void; interface GuideState { versionSeen: number; } type GuideAction = { type: string; payload?: unknown; key?: string; }; interface GuideSliceOptions { currentVersion: number; mountKey?: string; persistKey?: string; } interface GuideSlice { actions: { markSeen: (version: number) => { type: string; payload: number; }; }; reducer: (state: GuideState | undefined, action: GuideAction) => GuideState; selectVersionSeen: (rootState: object) => number; } declare function createGuideSlice({ currentVersion, mountKey, persistKey }: GuideSliceOptions): GuideSlice; interface GuideStorageReader { getItem: (key: string) => Promise; } type GuidePersistedState = { _persist: { version: number; rehydrated: boolean; }; } | undefined; declare function createReturningPlayerMigrate(storage: GuideStorageReader, legacyKeys: readonly string[]): (state: GuidePersistedState, version: number) => Promise; declare function getGuideCardSize(windowWidth: number, windowHeight: number, rotation: GuideRotation): { width: number; pageWidth: number; maxHeight: number; artHeight: number; compact: boolean; }; interface HowToPlayDialogProps { visible: boolean; steps: GuideStep[]; onFinish: () => void; onSkip: () => void; rotation?: GuideRotation; title?: string; icon?: string; } declare function HowToPlayDialog({ visible, steps, ...rest }: HowToPlayDialogProps): react.JSX.Element | null; type SeatDevice = 'keyboard' | 'mouse'; interface SeatDevicesHintProps { devices: readonly SeatDevice[]; seatColors?: readonly string[]; } declare function SeatDevicesHint({ devices, seatColors }: SeatDevicesHintProps): react.JSX.Element; interface SeatDiagramProps { topColor?: string; bottomColor?: string; topLabel?: string; bottomLabel?: string; } declare function SeatDiagram({ topColor, bottomColor, topLabel, bottomLabel }: SeatDiagramProps): react.JSX.Element; type SwipeDirection = 'up' | 'down' | 'left' | 'right'; type SwipePointer = 'finger' | 'mouse'; interface SwipeHintProps { direction?: SwipeDirection; pointer?: SwipePointer; color?: string; length?: number; } declare function SwipeHint({ direction, pointer, color, length }: SwipeHintProps): react.JSX.Element; export { type DirectionKeyLabels, type DirectionKeysAxis, DirectionKeysHint, type DirectionKeysHintProps, type GuideAction, type GuidePersistedState, GuideProvider, type GuideProviderProps, type GuideRotation, type GuideSlice, type GuideSliceOptions, type GuideState, type GuideStep, type GuideStorageReader, HowToPlayDialog, type HowToPlayDialogProps, type SeatDevice, SeatDevicesHint, type SeatDevicesHintProps, SeatDiagram, type SeatDiagramProps, type SwipeDirection, SwipeHint, type SwipeHintProps, type SwipePointer, createGuideSlice, createReturningPlayerMigrate, getGuideCardSize, useAutoShowGuide, useGuide };