import { MaybeRefOrGetter } from 'vue'; import { BendConfig } from './engine/bend/config'; /** * Cursor-driven local deformation ("liquid dent") for a MetalFx root. * * Field * ───── * Two gaussian blobs centred at `c` (which lags the cursor by `follow`): * • directional: `amp · g_bend(r)` — a 2-D spring chasing the cursor's * smoothed velocity × gain, so motion toward the centre pushes the ring * in and motion away drags it out; recoils on release. * • liquid: `(p − c)/σ · g_liq(r) · la` — the gradient of a bump, i.e. a * divergent push away from the contact point. This term *stretches* * material rather than sliding it, so the stroke thins under the cursor * and thickens either side. `la` is its own slower spring; pressure is 1 * with the cursor on the ring, fading over `liquidReach`. * * Two render paths, chosen by `applyTo`: * * `ring` — vector. The engine masks the ring with a rounded-rect outline it * traces every frame; we hand it a `DeformFn` that displaces those outline * points, plus the fill / rim / hairline that normally live on CSS boxes so * they bend along. Edges stay anti-aliased at any stretch. The instance is * redrawn from here at the pointer's frame rate, since the shared loop only * composites at 15 fps. * * `all` — SVG `feDisplacementMap` on the whole root. Bends the content too, * but the sampler duplicates source pixels where material is stretched, so * quality degrades with amplitude. Kept for comparison. * * @param target the MetalFx root (element, `Ref`, or getter). It is resolved * inside `onMounted` and re-resolved whenever the bound element changes, so * `ref="rootEl"` works without the caller guarding for null. * @param getCfg live config reader, evaluated once per frame (defaults to the * shared, mutable `BEND` singleton). */ export declare function useMetalBend(target: MaybeRefOrGetter, getCfg?: () => BendConfig): void;