import * as _angular_core from '@angular/core';
/** Granularity of the split. `lines` is not yet supported in this port. */
type WrSplitTextUnit = 'chars' | 'words';
/**
* One end of the animation. Properties not listed default to the steady
* state (opacity 1, no transform). `x` / `y` are pixels, `scale` is a
* unitless factor, `rotate` is degrees.
*/
interface WrSplitTextMotion {
readonly opacity?: number;
readonly x?: number;
readonly y?: number;
readonly scale?: number;
readonly rotate?: number;
}
type Piece = {
readonly kind: 'piece';
readonly text: string;
} | {
readonly kind: 'space';
readonly text: string;
};
/**
* Animated text reveal — splits the input string into chars or words and
* staggers each piece in from a `from` motion state to a `to` motion
* state when the host scrolls into view. Whitespace is preserved.
*
* @example
* ```html
*
* ```
*
* @see https://www.reactbits.dev/text-animations/split-text
*/
declare class WrSplitText {
/** Text to animate. Required. */
readonly text: _angular_core.InputSignal;
/** Split granularity. @default 'chars' */
readonly splitType: _angular_core.InputSignal;
/** Stagger delay between pieces in ms. @default 50 */
readonly delay: _angular_core.InputSignalWithTransform;
/** Animation duration in seconds (matches reactbits' API). @default 1.25 */
readonly duration: _angular_core.InputSignalWithTransform;
/** CSS easing function. @default 'cubic-bezier(0.16, 1, 0.3, 1)' (~power3.out) */
readonly easing: _angular_core.InputSignal;
/** Start state for each piece. @default { opacity: 0, y: 40 } */
readonly from: _angular_core.InputSignal;
/** End state for each piece. @default { opacity: 1, y: 0 } */
readonly to: _angular_core.InputSignal;
/** `IntersectionObserver.threshold` — 0..1. @default 0.1 */
readonly threshold: _angular_core.InputSignalWithTransform;
/** `IntersectionObserver.rootMargin`. @default '-100px' */
readonly rootMargin: _angular_core.InputSignal;
/** Text alignment of the host. @default 'center' */
readonly textAlign: _angular_core.InputSignal<"left" | "center" | "right" | "justify">;
/** Emitted once all pieces finish animating. */
readonly animationComplete: _angular_core.OutputEmitterRef;
/** Pieces to render. Each piece is `{ kind: 'piece', text }` or `{ kind: 'space' }`. */
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 { WrSplitText };
export type { WrSplitTextMotion, WrSplitTextUnit };