/* auto-generated by NAPI-RS */
/* eslint-disable */
/** 音频设备信息 */
export interface AudioDevice {
  name: string;
  description: string;
}

/** 取消当前淡入淡出 */
export declare function cancelFade(): void;

/** 销毁播放器 */
export declare function destroy(): void;

/**
 * 淡入淡出
 * 返回后 fade 在后台线程执行，完成时通过事件回调通知
 */
export declare function fade(from: number, to: number, durationMs: number): void;

/** 获取音频设备列表 */
export declare function getAudioDevices(): Array<AudioDevice>;

/** 获取属性值（字符串形式） */
export declare function getProperty(name: string): string;

/** 获取当前状态快照 */
export declare function getState(): PlayerState;

/** 获取音轨列表 */
export declare function getTrackList(): Array<TrackInfo>;

/** 初始化 libmpv 播放器 */
export declare function initialize(libPath: string): void;

/** 检查 fade 是否正在执行 */
export declare function isFading(): boolean;

/** 加载音频文件 */
export declare function loadFile(url: string): void;

/** 加载 MKV 并选择音轨 */
export declare function loadMkvTrack(url: string, trackId: number): void;

/** 暂停 */
export declare function pause(): void;

/** 复合操作：淡出 → 暂停 → 恢复音量 */
export declare function pauseWithFade(savedVolume: number, durationMs: number): void;

/** 播放 */
export declare function play(): void;

/** 播放器事件 */
export interface PlayerEvent {
  /** time-update / duration-change / state-change / playback-end / file-loaded / idle / error */
  type: string;
  /** 事件关联的数值（time-pos、duration、volume 等） */
  value?: number;
  /** 事件关联的布尔值（paused、playing 等） */
  flag?: boolean;
  /** 事件关联的字符串（错误信息、end-file reason 等） */
  message?: string;
}

/** 播放器状态快照 */
export interface PlayerState {
  playing: boolean;
  paused: boolean;
  duration: number;
  timePos: number;
  volume: number;
  speed: number;
  idle: boolean;
  path: string;
  audioDevice: string;
}

/** 复合操作：设置音量 0 → 播放 → 淡入 */
export declare function playWithFade(targetVolume: number, durationMs: number): void;

/** 注册事件回调并启动事件循环 */
export declare function registerEventHandler(
  callback: (err: Error | null, arg: PlayerEvent) => any,
): void;

/** 跳转（秒） */
export declare function seek(time: number): void;

/** 设置音频输出设备 */
export declare function setAudioDevice(deviceName: string): void;

/** 设置音频滤镜 */
export declare function setAudioFilter(filter: string): void;

/** 设置音轨 ID（file-loaded 后调用） */
export declare function setAudioTrack(trackId: number): void;

/** 设置独占模式 */
export declare function setExclusive(exclusive: boolean): void;

/** 设置文件循环（"inf" 无限循环，"no" 不循环） */
export declare function setLoopFile(value: string): void;

/** 设置 force-media-title */
export declare function setMediaTitle(title: string): void;

/** 设置音量均衡增益 */
export declare function setNormalizationGain(gainDb: number): void;

/** 设置播放速度 */
export declare function setSpeed(speed: number): void;

/** 设置音量（0-100） */
export declare function setVolume(volume: number): void;

/** 停止 */
export declare function stop(): void;

/** 音轨信息 */
export interface TrackInfo {
  id: number;
  type: string;
  codec: string;
  title?: string;
  lang?: string;
}
