//
//  RemoteAudioHandler.swift
//  ylgamehall
//
//  H5 → Native handler stub：prepareaudio / mediaTypeAudio
//  契约：docs/H5-Native-Contract.md §3.1 ［4］［5］ + §3.2 ［7］［8］［9］
//
//  Phase 3.A 阶段为 stub（仅 cb 维持契约，让 H5 启动不报 "no handler"）；
//  Phase 3.B AMR 转码 + Phase 3.C 录音上传 + Phase 3.D mediaTypeAudio 真实播放
//  完整接入后升级为真实现。
//
//  按 CLAUDE.md 原则 A 第一准则：H5 调啥就得有人接，即使没真实业务也要注册。
//

import Foundation

public enum RemoteAudioHandler {

    public static func register(on bridge: any BridgeProtocol) {
        // 【4】prepareaudio — 启动麦克风录音
        //   入参忽略；cb: "Response from prepareaudio"
        //   完整实现（Phase 3.C）：权限检查 + AVAudioRecorder + WAV→AMR + 七牛上传 +
        //   反向 callback getaudiourl({audiourl, time}) + 子游戏额外 recordSuccess
        //   stub 仅 cb 维持契约
        bridge.register("prepareaudio") { _, callback in
            callback?(.string("Response from prepareaudio"))
        }

        // 【5】mediaTypeAudio — 远程语音回放
        //   入参 audiourl: string；user: string
        //   cb: "Response from mediaTypeAudio"
        //   完整实现（Phase 3.D）：voicePlaying 总开关短路 + 下载 AMR + AMR→WAV +
        //   AVAudioPlayer 播放 + 反向 callback gameui_play_voice(user) /
        //   gameui_stop_voice(user)
        //   stub 仅 cb 维持契约（不下载、不播放）
        bridge.register("mediaTypeAudio") { _, callback in
            callback?(.string("Response from mediaTypeAudio"))
        }
    }
}
