/** * Impact channel: a short two-frequency shake on a wrapper element. * * Rules taken from the handfeel reference, each of which is a failure mode when * skipped: amplitudes are combined with `max`, never summed (three impacts in one * frame otherwise turn into a seizure); the axes run different frequencies with a * phase offset (one frequency on both axes traces a circle, which reads as a * wobble); amplitude decays linearly to zero and nothing outlasts 350ms. It * writes `translate`, so the target must not carry a `translate` animation of its * own, and it is gated on reduced motion. Never shake text the user is reading - * use a container that holds an error line, not the message body. * @param el - the wrapper to shake. * @param amp - loudest offset in px (the reference ladder spans ~5x, smallest to largest). * @param durationMs - impact length, clamped to 350ms. */ export declare function shakeElement(el: HTMLElement, amp: number, durationMs: number): void;