import { FC, ReactNode } from 'react'; export type ExtensionInfoDialogProps = { /** One node per extension. Each node renders its own popup content (title, text, cards…). */ popups: ReactNode[]; /** Optional override for the sessionStorage dismiss flag key. When omitted the * framework derives a sensible default of `${gameId}-extensions` from the * active GameProvider — sufficient for almost every game. Override only if * you need to encode something extra (e.g. the active extension combo so a * new configuration re-triggers the popup). */ storageKey?: string; }; /** * Generic carousel-style "you are playing with extension(s)" popup. * * The framework handles: * - the dialog/modal wrapper (close button via `theme.dialog.closeButton`/`closeIcon`) * - a dedicated navigation bar tailored to this dialog (see ExtensionNav below): * * single popup → just a centered "Close" button (no useless Previous/Next) * * multiple popups → Previous + dots + Next as long as we're not on the last page; * on the last page Next becomes "Close" (still keeps Previous) * - the `sessionStorage` gate ("show once per tab session", F5-safe) * * The game just passes: * - `popups`: a ReactNode per extension, fully self-rendered (title, body, cards…) * - `storageKey`: a stable identifier whose composition encodes the active extension combo * * Pass an empty `popups` array (or omit the component) when no extension is active. */ export declare const ExtensionInfoDialog: FC;