import type { Track } from '../track'; import type { Container } from '../container'; import { createDanmakuLifeCycle, type createManagerLifeCycle, } from '../lifeCycle'; import type { Speed, StyleKey, Position, MoveTimer, Direction, InfoRecord, Danmaku, DanmakuType, DanmakuPlugin, InternalStatuses, } from '../types'; export type PluginSystem> = ReturnType< typeof createDanmakuLifeCycle >; export interface FacileOptions { progress?: number; data: T; rate: number; speed: Speed; duration: number; direction: Direction; container: Container; internalStatuses: InternalStatuses; delInTrack: (b: Danmaku) => void; managerPluginSystem?: ReturnType>; } export declare class FacileDanmaku { _options: FacileOptions; data: T; loops: number; isLoop: boolean; paused: boolean; moving: boolean; isEnded: boolean; isFixedDuration: boolean; rate: number; duration: number; recorder: InfoRecord; nextFrame: (fn: FrameRequestCallback) => void; type: DanmakuType; track: Track | null; node: HTMLElement | null; moveTimer: MoveTimer | null; position: Position; pluginSystem: PluginSystem>; protected _internalStatuses: InternalStatuses; protected _initData: { width: number; duration: number; }; protected _hasReachedEdge: boolean; constructor(_options: FacileOptions); /** * @internal */ protected _delInTrack(): void; /** * @internal */ _summaryWidth(): number; /** * @internal */ _getMovePercent(): number; /** * @internal */ _getMoveDistance(): number; /** * @internal */ _getSpeed(): number; /** * @internal */ _createNode(): void; /** * @internal */ _appendNode(container: HTMLElement): void; /** * @internal */ _removeNode(_flag?: Symbol): void; /** * @internal */ _setOff(): Promise; /** * @internal */ protected _monitorEdge(): void; /** * @internal */ _setStartStatus(): void; /** * @internal */ _updatePosition(p: Partial): void; /** * @internal */ _updateTrack(track: Track | null): void; /** * @internal */ _updateDuration(duration: number, updateInitData?: boolean): void; /** * @internal */ _format(oldWidth: number, oldHeight: number, newTrack: Track): void; /** * @internal */ _reset(): void; get direction(): Direction; actualDuration(): number; setloop(): void; unloop(): void; getHeight(): number; getWidth(): number; pause(_flag?: Symbol): void; resume(_flag?: Symbol): void; hide(_flag?: Symbol): void; show(_flag?: Symbol): void; destroy(mark?: unknown): Promise; setStyle(key: T, val: CSSStyleDeclaration[T]): void; remove(pluginName: string): void; use( plugin: DanmakuPlugin | ((danmaku: this) => DanmakuPlugin), ): DanmakuPlugin & { name: string; }; }