import { type Insets, type LayoutChangeEvent, type ViewStyle } from "react-native"; /** The options of the touch area a control extends to the platform minimum: which axes. */ export interface MinTargetOptions { /** * Which axes to extend. "both" is the default and is right for a control with space * around it. "vertical" is for a control that abuts its siblings horizontally (tabs, * breadcrumb links, a segmented track): extending sideways there would overlap the * neighbor's slop and make a tap near the seam ambiguous. */ axis?: "both" | "vertical"; } /** * The insets that bring a `width` x `height` control up to `minTarget`, or undefined * when it already meets it. Half the shortfall per side, so the control stays centered * in its own touch area. */ export declare function minTargetSlop(minTarget: number, width: number, height: number, options?: MinTargetOptions): Insets | undefined; /** The least box a control renders at, from its skin: either side unknown when nothing bounds it. */ export interface TargetBox { width?: number; height?: number; } /** The slop a declared box needs; an unknown side seeds nothing on that axis. */ export declare function seedSlop(minTarget: number, box: TargetBox, options?: MinTargetOptions): Insets | undefined; /** * The least height a line of text of `lineHeight` renders at: the line itself, or less under * a system font scale below 1 (React Native scales the line height with the font). */ export declare function leastLine(lineHeight: number): number; type Edge = "top" | "bottom" | "start" | "end"; /** A resolved style's padding plus border on each edge, logical start and end included. */ export declare function styleInsets(style: ViewStyle): Record; /** * The least box a control's resolved style renders at: a numeric width or height as it is, * and otherwise its padding and border on that axis (plus one line of `lineHeight` for the * height), raised to a numeric minWidth or minHeight. Content only makes the control bigger, * which keeps the seed at or above the measured slop. Pass `lineHeight` only when the * control renders a line of label; a system font scale under 1 shrinks that line, so it * counts at the scaled size. */ export declare function styleBox(style: ViewStyle, lineHeight?: number): TargetBox; /** * Measure a pressable and extend its touch area to the platform minimum, seeded from its * declared `box` when the skin gives one (see the file header); without a box it measures * nothing until the first layout. A changed box seeds again, until the next layout measures it. */ export declare function useSeededMinTargetSlop(minTarget: number | null, box?: TargetBox, options?: MinTargetOptions): { onLayout?: (event: LayoutChangeEvent) => void; hitSlop?: Insets; }; export {}; //# sourceMappingURL=touch-target-seed.d.ts.map