Package-level declarations
Types
What happens when an in-app element is tapped.
Typed native in-app message model. Mirrors the iOS PWInAppLayout enum: a layout discriminator carrying a dedicated content type, so adding a template is one new InAppLayout subclass plus one new view — no untyped map access leaks into the UI.
A parsed native in-app: the layout, optional opt-in frequency caps, and the raw config JSON. The raw JSON is retained so the presenting Activity can be handed the message by value through an Intent extra (re-parsed on the other side), which survives process death and configuration changes.
Same field-for-field shape as ModalContent: the contract's sheet and modal blocks differ only in how the card is laid out (bottom-pinned with a grabber vs. centered).
Full-screen autoplaying video with overlaid text and CTA. videoUrl is required by the contract; posterUrl holds the frame until the first video frame arrives and fallbackImageUrl replaces the video outright when it cannot play — both are optional, and without a fallback a failed video dismisses the in-app rather than leaving a black screen.