import { type ReactNode } from "react"; import { type StyleProp, type ViewStyle } from "../../style/index.js"; export interface RevealSkin { /** Default travel distance in dp before the content settles. */ travel: number; /** Travel distance for the `pronounced` axis. */ travelPronounced: number; /** Default entrance duration in ms. */ duration: number; /** Duration for the `brisk` axis, in ms. */ durationBrisk: number; /** How far inside the bottom of the window the top edge must come, in dp. */ inset: number; /** The `deepInView` trigger inset, in dp. */ insetDeep: number; /** Delay added per RevealGroup ordinal, in ms. */ staggerStep: number; /** Maximum number of stagger steps, so a long group's tail stays in rhythm. */ staggerMaxSteps: number; } export interface RevealProps { /** Rise into place from below. The default. */ fromBelow?: boolean; /** Descend into place from above. */ fromAbove?: boolean; /** Slide in from the left. Physical, and does not mirror under RTL (see above). */ fromLeft?: boolean; /** Slide in from the right. Physical, and does not mirror under RTL (see above). */ fromRight?: boolean; /** Travel further before settling, for a hero or a section header. Omit for the * default, shorter travel. */ pronounced?: boolean; /** Arrive faster, for dense sets where the eye should not wait. Omit for the * default duration. */ brisk?: boolean; /** Wait until the element is properly inside the viewport before starting, instead * of firing as it enters. */ deepInView?: boolean; /** The content to reveal. */ children?: ReactNode; /** * Outer layout composition ONLY: how this wrapper sits in its parent (a `minWidth` * of 0 so a grid child may shrink below its content, a `height` of 100% so cards in * a row stay even, a flex share). It is NOT a restyle hook: the entrance itself is * chosen entirely with the boolean props above, and the revealed content styles * itself. Documented exactly as Entrance documents its own, and for the same reason: * a wrapper that cannot be told how to sit in its parent forces callers to add a * second wrapper around it, which is worse. */ style?: StyleProp; /** E2E hook forwarded to the wrapper. */ testID?: string; } export interface RevealTravel { axis: "x" | "y"; from: number; } /** * Which axis a reveal travels on and where it starts, resolved from the direction * booleans at the documented precedence (fromBelow, fromAbove, fromLeft, fromRight; * first match wins) and the resolved distance. * * The signs are "where the content comes FROM": a positive y starts below its resting * place and rises, a negative x starts to the left and slides right. Exactly one axis * moves, which is what keeps the entrance readable as a single gesture rather than a * diagonal drift. Exported for unit tests, following the `entranceTranslation` * precedent in src/style/entrance.tsx. */ export declare function revealTravel(p: Pick, distance: number): RevealTravel; /** * The start delay in ms for a Reveal at this ordinal within its RevealGroup. * * Linear in the ordinal so a set arrives as an even cascade, capped at `maxSteps` so a * long group's tail reads as rhythm rather than lateness (item 40 of a list must not * wait two and a half seconds to appear). Ordinal 0, the lone-Reveal case, is always * zero delay. Non-finite or negative ordinals collapse to 0 rather than producing a * NaN delay that would freeze an animation. Exported for unit tests. */ export declare function revealDelay(ordinal: number, stepMs: number, maxSteps: number): number; export declare function createReveal(skin: RevealSkin): (props: RevealProps) => import("react").JSX.Element; //# sourceMappingURL=reveal.shared.d.ts.map