import EventEmitter from "eventemitter3"; import { SideEffectManager } from "side-effect-manager"; import { SyncPlayerStatus } from "../Types"; export interface AtomPlayerConfig { name?: string; } export declare abstract class AtomPlayer extends EventEmitter { readonly name?: string; private readonly loadInit; /** wait `offset` ms before start playing */ get offset(): number; protected _offset: number; protected constructor(config?: AtomPlayerConfig); get visible(): boolean; set visible(value: boolean); protected _visible: boolean; get isReady(): boolean; get isPlaying(): boolean; get status(): SyncPlayerStatus; set status(value: SyncPlayerStatus); get currentTime(): number; set currentTime(ms: number); get duration(): number; set duration(ms: number); get playbackRate(): number; set playbackRate(value: number); setPlaybackRate(value: number): void; play(): Promise; pause(): Promise; stop(): Promise; seek(ms: number): Promise; ready(silently?: boolean): Promise; destroy(): void; protected abstract readyImpl(silently?: boolean): Promise; protected abstract playImpl(): Promise; protected abstract pauseImpl(): Promise; protected abstract stopImpl(): Promise; protected abstract seekImpl(ms: number): Promise; protected abstract setPlaybackRateImpl(value: number): void; protected initImpl(): Promise; protected ignoreSetStatus: boolean; protected _sideEffect: SideEffectManager; private _status; private _currentTime; private _duration; private _playbackRate; private _initStatus; private init; } export declare type AtomPlayerEvents = "status" | "timeupdate" | "durationchange" | "ratechange" | "visibilitychange" | "ready"; export declare interface AtomPlayer { addListener(event: U, listener: () => void): this; on(event: U, listener: () => void): this; once(event: U, listener: () => void): this; }