/**
 * Svelte action: applies ambient decorative animations to an element. These
 * sit on top of the morph/transition system — they're continuous loops driven
 * by the same virtual-clock restart registry (__svgAnimRestart) so they reset
 * cleanly on slide enter and align in Flow-mode GIF exports.
 *
 * Effects:
 *   • glow         — pulsing colored box-shadow halo
 *   • shimmer      — diagonal highlight stripe sweeping across the element
 *   • gradientShift — animates background-position on a multi-color gradient
 *   • rgbSplit     — chromatic-aberration-style R/B channel offset (drop-shadow)
 */
import type { DecorationsConfig } from '../types';
export interface DecorationsParams {
    config?: DecorationsConfig;
    /** Slide loop duration; when present, each effect's cycle is rounded so an
     * integer number fits in slide_duration — guarantees seamless GIF loop. */
    slideDuration?: number;
    /** Optional shape info — if present, shimmer and gradientShift overlays
     * get clipped to this silhouette. Without it both effects render against
     * the rectangular wrapper bounds (which looks wrong on circles/hexagons/
     * stars). Pass `{ type: 'circle' }` etc. from the host for shape elements. */
    shape?: {
        type: 'rectangle' | 'circle' | 'ellipse' | 'triangle' | 'hexagon' | 'star';
        borderRadius?: number;
    };
    /** Bumped by the host when ANY decoration prop changes. Without it the
     * action would silently keep running with stale params. */
    key?: unknown;
}
export declare function decorations(node: HTMLElement, params: DecorationsParams): {
    update(p: DecorationsParams): void;
    destroy(): void;
};
