import type { GsapHandle } from '../../core/gsap-detect'; import type { StaggerValue } from '../../core/stagger'; import { type SplitMode } from '../../split/runtime'; import { type DirectionMode } from './direction'; export interface BlockSettings { duration: number; delay: number; ease: string; color: string; mode: DirectionMode; } export declare function setupBlockHover(host: HTMLElement, trigger: HTMLElement, gsap: GsapHandle, settings: BlockSettings): () => void; export interface CurveSettings { duration: number; delay: number; ease: string; color: string; mode: DirectionMode; } export declare function setupCurveHover(host: HTMLElement, trigger: HTMLElement, gsap: GsapHandle, settings: CurveSettings): () => void; export type IconDirection = 'up' | 'down' | 'left' | 'right' | 'up-right' | 'up-left' | 'down-right' | 'down-left'; export declare const ICON_DIRECTIONS: ReadonlySet; export interface IconSettings { direction: IconDirection; reverse: boolean; /** * `triple` doubles the slide distance and inserts a second clone two * "from" steps offscreen. The first clone passes through centre at the * midpoint (visible briefly), the second clone lands at centre at the end. */ triple: boolean; duration: number; delay: number; ease: string; /** Lag (in seconds) between each successive icon starting its slide. */ cloneLag: number; /** * Color override for the clone(s). Default `currentColor` = no override * (clone inherits the host's color, matching the original). Any other * value is set inline as the clone's `color`, which feeds the cloned * SVG's `stroke="currentColor"` paths — giving the "swap-in" icon a * distinct colour against a coloured hover background (e.g. white clone * over a black `curve` fill in a composite button). */ color: string; } export declare function setupIconHover(host: HTMLElement, trigger: HTMLElement, gsap: GsapHandle, settings: IconSettings): () => void; export interface UnderlineSettings { duration: number; delay: number; ease: string; color: string; /** `underline` → bar is always visible; on hover it collapses to the right * edge then re-grows from the left in a two-phase sweep. `underline-in` → * bar is off by default, sweeps in on hover and out on leave. */ variant: 'underline' | 'underline-in'; } export declare function setupUnderlineHover(host: HTMLElement, trigger: HTMLElement, gsap: GsapHandle, settings: UnderlineSettings): () => void; export interface TextSettings { duration: number; delay: number; ease: string; color: string; splitMode: SplitMode; stagger: StaggerValue; /** false (default) = one-shot: tween up, then instantly snap back to rest. * The animation always plays to completion; re-hovers mid-tween are ignored. * true = transition: chars stay up while hovered, return on leave, and either * direction can be interrupted mid-tween (CSS-transition-like behaviour). */ reverse: boolean; } export declare function setupTextHover(host: HTMLElement, trigger: HTMLElement, gsap: GsapHandle, settings: TextSettings): () => void; //# sourceMappingURL=effects.d.ts.map