import type { Background } from "./background"; import type { ColorScheme } from "./colors"; import type { FooterProps } from "./components/footer"; import type { HeaderProps } from "./components/header"; import type { StackProps } from "./components/stack"; import type { Localizations, VideoLocalizations } from "./localization"; import type { StateDeclaration } from "./state"; export interface RootPaywall { background?: Background; stack: StackProps; sticky_footer?: FooterProps | null; header?: HeaderProps | null; safe_area_fallback_color?: ColorScheme | null; } export interface ComponentConfig { colors?: Record; fonts?: { [fontName: string]: { ios: string; android: string; web: string; }; }; asset_base_url?: string; base: RootPaywall; } export interface PaywallData { id: string; default_locale: string; components_config: ComponentConfig; components_localizations: Localizations; components_video_localizations?: VideoLocalizations; /** Declared paywall-state keys (key → {type, default}). Absent on paywalls without state. */ state_declarations?: Record; }