import * as _angular_core from '@angular/core';
/**
* Splash cursor — a WebGL fluid simulation that splashes colourful dye
* wherever the pointer moves or clicks. Renders as a fixed, full-viewport,
* click-through overlay; mount it once on a page (it follows the pointer
* everywhere) and it tears down with the component.
*
* Renders nothing under `prefers-reduced-motion` or when WebGL is
* unavailable.
*
* @example
* ```html
*
*
* ```
*
* @see https://ngwr.dev/animations/splash-cursor
*/
declare class WrSplashCursor {
/**
* `true` overlays the whole viewport (reactbits behaviour); `false`
* fills the nearest positioned ancestor instead — handy for demo boxes,
* and the dye collides with the box walls. @default true
*/
readonly fullscreen: _angular_core.InputSignalWithTransform;
/** Velocity / pressure grid resolution. @default 128 */
readonly simResolution: _angular_core.InputSignalWithTransform;
/** Dye texture resolution — the visible detail. @default 1440 */
readonly dyeResolution: _angular_core.InputSignalWithTransform;
/** How fast the dye fades, higher = shorter trails. @default 3.5 */
readonly densityDissipation: _angular_core.InputSignalWithTransform;
/** How fast motion settles. @default 2 */
readonly velocityDissipation: _angular_core.InputSignalWithTransform;
/** Pressure retained between frames, 0..1. @default 0.1 */
readonly pressure: _angular_core.InputSignalWithTransform;
/** Jacobi iterations for the pressure solve. @default 20 */
readonly pressureIterations: _angular_core.InputSignalWithTransform;
/** Vorticity confinement — swirliness. @default 3 */
readonly curl: _angular_core.InputSignalWithTransform;
/** Splat size. @default 0.2 */
readonly splatRadius: _angular_core.InputSignalWithTransform;
/** Velocity a pointer move injects. @default 6000 */
readonly splatForce: _angular_core.InputSignalWithTransform;
/** Pseudo-3D shading on the dye. @default true */
readonly shading: _angular_core.InputSignalWithTransform;
/** How fast the splat colour cycles. @default 10 */
readonly colorUpdateSpeed: _angular_core.InputSignalWithTransform;
/** Cycle splat colours through the rainbow. @default true */
readonly rainbow: _angular_core.InputSignalWithTransform;
/** Fixed splat colour when `rainbow` is off. @default '#ff0000' */
readonly color: _angular_core.InputSignal;
private readonly canvasRef;
private readonly zone;
private readonly platform;
private readonly isBrowser;
constructor();
static ɵfac: _angular_core.ɵɵFactoryDeclaration;
static ɵcmp: _angular_core.ɵɵComponentDeclaration;
}
/**
* @license
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
*
* WebGL fluid simulation behind ``. Port of the engine
* used by reactbits.dev's SplashCursor (itself based on Pavel Dobryakov's
* WebGL-Fluid-Simulation, MIT).
*
* Framework-free on purpose: `createFluidSimulation(canvas, config)` boots
* the sim and returns a teardown, or `null` when WebGL isn't available.
*/
interface WrFluidConfig {
readonly simResolution: number;
readonly dyeResolution: number;
readonly densityDissipation: number;
readonly velocityDissipation: number;
readonly pressure: number;
readonly pressureIterations: number;
readonly curl: number;
readonly splatRadius: number;
readonly splatForce: number;
readonly shading: boolean;
readonly colorUpdateSpeed: number;
/** Cycle splat colours through the rainbow; `false` uses `color`. */
readonly rainbow: boolean;
/** Fixed splat colour (hex) when `rainbow` is off. */
readonly color: string;
}
export { WrSplashCursor };
export type { WrFluidConfig };