export interface AudioElementLike { src: string; loop: boolean; volume: number; currentTime: number; paused: boolean; ended: boolean; play(): Promise; pause(): void; load(): void; } export type AudioElementFactory = () => AudioElementLike; export type MusicSourceResolver = (path: string) => Promise; export interface MusicSystemOptions { createElement: AudioElementFactory; resolveSource?: MusicSourceResolver; volume?: number; crossfadeDuration?: number; } export interface MusicState { readonly track?: string; readonly paused: boolean; readonly playing: boolean; readonly volume: number; } export declare class MusicSystem { private readonly createElement; private readonly resolveSource; private readonly crossfadeDuration; private currentElement?; private fadingElement?; private track?; private volume; private fadeInterval?; constructor(options: MusicSystemOptions); playTrack(trackNum: number): Promise; play(track: string, { loop, restart }?: { loop?: boolean; restart?: boolean; }): Promise; pause(): void; resume(): Promise; stop(): void; setVolume(volume: number): void; getState(): MusicState; private startCrossfade; private cancelFade; } //# sourceMappingURL=music.d.ts.map