import type { Nullable } from 'aidly'; import { SyncHook, AsyncHook, SyncWaterfallHook, PluginSystem, } from 'hooks-plugin'; import type { Manager } from './manager'; import type { Danmaku, DanmakuType, DanmakuPlugin, ManagerOptions, } from './types'; export declare function createDanmakuLifeCycle< T extends Danmaku, >(): PluginSystem<{ hide: SyncHook<[T], null, void>; show: SyncHook<[T], null, void>; pause: SyncHook<[T], null, void>; resume: SyncHook<[T], null, void>; beforeMove: SyncHook<[T], null, void>; moved: SyncHook<[T], null, void>; reachEdge: SyncHook<[T], null, void>; createNode: SyncHook<[T, HTMLElement], null, void>; appendNode: SyncHook<[T, HTMLElement], null, void>; removeNode: SyncHook<[T, HTMLElement], null, void>; beforeDestroy: AsyncHook<[T, unknown], null>; destroyed: SyncHook<[T, unknown], null, void>; }>; export declare function createManagerLifeCycle(): PluginSystem<{ $show: SyncHook<[Danmaku], null, void>; $hide: SyncHook<[Danmaku], null, void>; $pause: SyncHook<[Danmaku], null, void>; $resume: SyncHook<[Danmaku], null, void>; $beforeMove: SyncHook<[Danmaku], null, void>; $moved: SyncHook<[Danmaku], null, void>; $reachEdge: SyncHook<[Danmaku], null, void>; $createNode: SyncHook<[Danmaku, HTMLElement], null, void>; $appendNode: SyncHook<[Danmaku, HTMLElement], null, void>; $removeNode: SyncHook<[Danmaku, HTMLElement], null, void>; $beforeDestroy: AsyncHook<[Danmaku, unknown], null>; $destroyed: SyncHook<[Danmaku, unknown], null, void>; format: SyncHook<[], null, void>; start: SyncHook<[], null, void>; stop: SyncHook<[], null, void>; show: SyncHook<[], null, void>; hide: SyncHook<[], null, void>; freeze: SyncHook<[], null, void>; unfreeze: SyncHook<[], null, void>; finished: SyncHook<[], null, void>; clear: SyncHook<[Nullable], null, void>; mount: SyncHook<[HTMLElement], null, void>; unmount: SyncHook<[HTMLElement | null], null, void>; init: SyncHook< [manager: Manager>], null, void >; limitWarning: SyncHook<[DanmakuType, number], null, void>; push: SyncHook<[T | Danmaku, DanmakuType, boolean], null, void>; render: SyncHook<[DanmakuType], null, void>; updateOptions: SyncHook< [Partial, Nullable], null, void >; willRender: SyncWaterfallHook< { type: DanmakuType; prevent: boolean; danmaku: Danmaku; trackIndex: null | number; }, null >; }>; export declare function createDanmakuPlugin( plSys: Manager['pluginSystem'], ): DanmakuPlugin; export declare function hasAnyRealListeners< T extends Array, U extends ReturnType>, >( danmakuHook: SyncHook | AsyncHook, managerPluginSystem: U | undefined, managerHookName: keyof U['lifecycle'], ): boolean;