import * as _angular_core from '@angular/core';
type Unit = 'chars' | 'words';
type Direction = 'top' | 'bottom';
type Piece = {
readonly kind: 'piece';
readonly text: string;
} | {
readonly kind: 'space';
readonly text: string;
};
/**
* Reveals text by splitting it into chars or words and animating each
* piece in from a blurred / offset state through a brief mid-step into
* the steady state. Triggers when the host enters the viewport.
*
* @example
* ```html
*
* ```
*
* @see https://www.reactbits.dev/text-animations/blur-text
*/
declare class WrBlurText {
/** Text to animate. Required. */
readonly text: _angular_core.InputSignal;
/** Split granularity. @default 'words' */
readonly animateBy: _angular_core.InputSignal;
/** Entry direction. `'top'` slides down into place; `'bottom'` slides up. @default 'top' */
readonly direction: _angular_core.InputSignal;
/** Per-piece stagger in ms. @default 200 */
readonly delay: _angular_core.InputSignalWithTransform;
/** Duration of each keyframe step in seconds (total = 2 × stepDuration). @default 0.35 */
readonly stepDuration: _angular_core.InputSignalWithTransform;
/** CSS easing function. @default 'linear' (matches reactbits' identity easing) */
readonly easing: _angular_core.InputSignal;
/** `IntersectionObserver.threshold` (0..1). @default 0.1 */
readonly threshold: _angular_core.InputSignalWithTransform;
/** `IntersectionObserver.rootMargin`. @default '0px' */
readonly rootMargin: _angular_core.InputSignal;
/** Emitted once all pieces finish animating. */
readonly animationComplete: _angular_core.OutputEmitterRef;
protected readonly pieces: _angular_core.Signal;
private readonly host;
private readonly destroyRef;
private readonly isBrowser;
private readonly platform;
private hasAnimated;
constructor();
private startObserver;
private animate;
static ɵfac: _angular_core.ɵɵFactoryDeclaration;
static ɵcmp: _angular_core.ɵɵComponentDeclaration;
}
export { WrBlurText };