type MwCSSProperties = 'transform' | 'opacity';
export interface MwIntersectionObserverProperties {
    root?: Element | null;
    rootMargin?: string;
    threshold?: number;
}
export interface MwEventListeners {
    [key: string]: Record<string, Function> | {
        listeners: Function[];
    };
}
export type MwTransition = 'fadeIn' | 'slideInTop' | 'slideInBottom' | 'slideInLeft' | 'slideInRight' | 'revealInTop' | 'revealInBottom';
export type MwEventName = 'start' | 'end' | 'wordTransitionStart' | 'wordTransitionEnd' | 'letterTransitionStart' | 'letterTransitionEnd';
export type MwClassNames = {
    base: string;
    word: string;
    letter: string;
    reverse: string;
    animateLetters: string;
};
export interface MwHighlightOptions {
    classname: string;
    tag: string;
    words: string[];
}
export interface MwOptions {
    el: NodeListOf<HTMLElement> | string;
    sentence?: string;
    autostart: boolean;
    duration: number;
    delay: number;
    offset: number;
    animateLetters: boolean;
    reverseTransition: boolean;
    reverseOrder: boolean;
    pausableProps: MwCSSProperties[];
    transition: MwTransition;
    wordSpacing: number | null;
    letterSpacing: number | null;
    highlight: MwHighlightOptions;
    events: MwEventListeners;
    eventsTransitionProperty: string;
    intersectionStart: boolean;
    intersectionOptions: MwIntersectionObserverProperties;
}
export type MwWord = {
    el: string;
    text: string;
};
export type MwWordTag = {
    tag: string;
    className: string;
    text: string;
    vars: Record<string, undefined | string | number>;
};
declare class Movinwords {
    private _el;
    private _words;
    private _pausedProps;
    private _currentLetterIndex;
    private _started;
    private _paused;
    private _visible;
    private _events;
    private _eventNames;
    private _classNames;
    private _options;
    constructor(opts?: MwOptions | {});
    _registerEvents(): void;
    _addEventListener(event: string, callback: Function): boolean;
    _emitEvent(event: string, details: MwOptions): boolean;
    _isAllowedEvent(eventName: MwEventName): boolean;
    _isEmptyArray(arr: any[]): boolean;
    _isHighlightedWord(word: string): boolean;
    _isLastLetterOfWord(index: number, total: number): boolean;
    _isLastWordOfSentence(wordStr: string): boolean;
    _setCSSVariables(sentence: HTMLElement): void;
    _getWordIndex(index: number, words: NodeListOf<HTMLElement>): number;
    _getSpacing(sentence: HTMLElement, type?: 'word' | 'letter'): number;
    _getWordsArray(sentence: HTMLElement): string[];
    _getLettersArray(word: HTMLElement): string[];
    _getSentences(): void;
    _parseSentences(): void;
    _appendTags(el: HTMLElement, tagsArr: HTMLElement[]): void;
    _createTag(options: MwWordTag): HTMLElement;
    _createAndAppendWordTags(sentence: HTMLElement): void;
    _createAndAppendLetterTags(sentence: HTMLElement): void;
    _createWordTags(sentence: HTMLElement): HTMLElement[];
    _createLetterElement(letter: string, letters: string[], index: number, wordIndex: number): HTMLElement;
    _addLetterEventListeners(word: HTMLElement, letterEl: HTMLElement): void;
    _createLetterTags(word: HTMLElement, wordIndex: number): any[];
    _triggerStart(): void;
    _triggerStartOnIntersection(): void;
    pause(): void;
    resume(): void;
    start(): void;
}
export default Movinwords;
