/** * Trailing-space model for the thread list's end. * * The default thread renders under a floating composer (`ChatInput`, marked * with `data-chat-input-boundary`). Instead of guessing the composer's height * with a hard-coded footer padding, the thread measures the composer's real * overlap over the thread root (via ResizeObserver) and feeds the result to * LegendList's web-only `contentInsetEndAdjustment` — real trailing scroll * range that stays aligned with `scrollToEnd`/end pinning and tracks composer * growth (multiline input, session bars) frame-accurately. */ export type ThreadEndDensity = 'normal' | 'compact'; /** * Deliberate breathing room between the last row and the composer's top edge * in roomy density. The floating composer draws a 64px gradient fade * (`pt-16`) above its boundary; matching that step keeps the last row fully * clear of the fade instead of visually flush against the input. Anything * much larger re-creates the dead band the old hard-coded `pb-96` spacer * produced. */ export declare const THREAD_END_BREATHING_ROOM_PX = 64; /** Compact-density breathing room: one Tailwind step tighter (`pb-12`). */ export declare const THREAD_END_BREATHING_ROOM_COMPACT_PX = 48; /** Density-resolved breathing room between the last row and the composer. */ export declare function getThreadEndBreathingRoom(density: ThreadEndDensity): number; /** * Resolves the list's trailing end inset from the measured composer overlap. * * Non-finite or negative measurements (unmounted boundary, mid-layout reads) * degrade to just the breathing room instead of poisoning the scroll range. * The result is rounded so a fractional overlap cannot ping-pong the inset * across renders. */ export declare function resolveThreadEndInset(composerOverlapPx: number, breathingRoomPx?: number): number; //# sourceMappingURL=threadEndInset.d.ts.map