react-native-queue-player 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1218) hide show
  1. package/LICENSE +201 -0
  2. package/QueuePlayer.podspec +114 -0
  3. package/README.md +194 -0
  4. package/android/CMakeLists.txt +41 -0
  5. package/android/build.gradle +257 -0
  6. package/android/src/androidTest/java/com/margelo/nitro/queueplayer/SignalsmithStretchNativeTest.kt +136 -0
  7. package/android/src/main/AndroidManifest.xml +173 -0
  8. package/android/src/main/cpp/CMakeLists.txt +221 -0
  9. package/android/src/main/cpp/THIRD_PARTY_LICENSES +128 -0
  10. package/android/src/main/cpp/THIRD_PARTY_VERSIONS.txt +32 -0
  11. package/android/src/main/cpp/airplay2_audio.c +537 -0
  12. package/android/src/main/cpp/airplay2_audio.h +66 -0
  13. package/android/src/main/cpp/airplay2_control.c +680 -0
  14. package/android/src/main/cpp/airplay2_control.h +101 -0
  15. package/android/src/main/cpp/airplay2_crypto.c +548 -0
  16. package/android/src/main/cpp/airplay2_crypto.h +213 -0
  17. package/android/src/main/cpp/airplay2_dmap.c +81 -0
  18. package/android/src/main/cpp/airplay2_dmap.h +53 -0
  19. package/android/src/main/cpp/airplay2_filelog.h +100 -0
  20. package/android/src/main/cpp/airplay2_jni.cpp +579 -0
  21. package/android/src/main/cpp/airplay2_ntp.c +203 -0
  22. package/android/src/main/cpp/airplay2_ntp.h +39 -0
  23. package/android/src/main/cpp/airplay2_pair.c +653 -0
  24. package/android/src/main/cpp/airplay2_pair.h +114 -0
  25. package/android/src/main/cpp/airplay2_plist.c +840 -0
  26. package/android/src/main/cpp/airplay2_plist.h +184 -0
  27. package/android/src/main/cpp/airplay2_ptp.c +509 -0
  28. package/android/src/main/cpp/airplay2_ptp.h +40 -0
  29. package/android/src/main/cpp/airplay2_rtsp.c +693 -0
  30. package/android/src/main/cpp/airplay2_rtsp.h +90 -0
  31. package/android/src/main/cpp/airplay2_session.c +196 -0
  32. package/android/src/main/cpp/airplay2_session.h +197 -0
  33. package/android/src/main/cpp/airplay2_tlv.c +135 -0
  34. package/android/src/main/cpp/airplay2_tlv.h +87 -0
  35. package/android/src/main/cpp/airplay_jni.cpp +589 -0
  36. package/android/src/main/cpp/build-openssl-android.sh +94 -0
  37. package/android/src/main/cpp/cpp-adapter.cpp +11 -0
  38. package/android/src/main/cpp/prebuilt/libsodium/arm64-v8a/lib/libsodium.a +0 -0
  39. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/core.h +28 -0
  40. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_aead_aegis128l.h +92 -0
  41. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_aead_aegis256.h +92 -0
  42. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_aead_aes256gcm.h +179 -0
  43. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_aead_chacha20poly1305.h +180 -0
  44. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_aead_xchacha20poly1305.h +100 -0
  45. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_auth.h +46 -0
  46. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_auth_hmacsha256.h +70 -0
  47. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_auth_hmacsha512.h +68 -0
  48. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_auth_hmacsha512256.h +65 -0
  49. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_box.h +177 -0
  50. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_box_curve25519xchacha20poly1305.h +164 -0
  51. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_box_curve25519xsalsa20poly1305.h +112 -0
  52. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_core_ed25519.h +104 -0
  53. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_core_hchacha20.h +36 -0
  54. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_core_hsalsa20.h +36 -0
  55. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_core_ristretto255.h +100 -0
  56. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_core_salsa20.h +36 -0
  57. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_core_salsa2012.h +36 -0
  58. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_core_salsa208.h +40 -0
  59. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_generichash.h +84 -0
  60. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_generichash_blake2b.h +122 -0
  61. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_hash.h +40 -0
  62. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_hash_sha256.h +60 -0
  63. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_hash_sha512.h +60 -0
  64. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_kdf.h +53 -0
  65. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_kdf_blake2b.h +44 -0
  66. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_kdf_hkdf_sha256.h +74 -0
  67. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_kdf_hkdf_sha512.h +75 -0
  68. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_kx.h +66 -0
  69. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_onetimeauth.h +65 -0
  70. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_onetimeauth_poly1305.h +72 -0
  71. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_pwhash.h +147 -0
  72. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_pwhash_argon2i.h +122 -0
  73. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_pwhash_argon2id.h +122 -0
  74. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_pwhash_scryptsalsa208sha256.h +120 -0
  75. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_scalarmult.h +46 -0
  76. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_scalarmult_curve25519.h +42 -0
  77. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_scalarmult_ed25519.h +51 -0
  78. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_scalarmult_ristretto255.h +43 -0
  79. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_secretbox.h +93 -0
  80. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_secretbox_xchacha20poly1305.h +70 -0
  81. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_secretbox_xsalsa20poly1305.h +69 -0
  82. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_secretstream_xchacha20poly1305.h +108 -0
  83. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_shorthash.h +41 -0
  84. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_shorthash_siphash24.h +50 -0
  85. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_sign.h +107 -0
  86. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_sign_ed25519.h +124 -0
  87. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_sign_edwards25519sha512batch.h +55 -0
  88. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_stream.h +59 -0
  89. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_stream_chacha20.h +106 -0
  90. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_stream_salsa20.h +61 -0
  91. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_stream_salsa2012.h +53 -0
  92. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_stream_salsa208.h +56 -0
  93. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_stream_xchacha20.h +61 -0
  94. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_stream_xsalsa20.h +61 -0
  95. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_verify_16.h +23 -0
  96. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_verify_32.h +23 -0
  97. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/crypto_verify_64.h +23 -0
  98. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/export.h +57 -0
  99. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/randombytes.h +72 -0
  100. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/randombytes_internal_random.h +22 -0
  101. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/randombytes_sysrandom.h +19 -0
  102. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/runtime.h +55 -0
  103. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/utils.h +179 -0
  104. package/android/src/main/cpp/prebuilt/libsodium/include/sodium/version.h +33 -0
  105. package/android/src/main/cpp/prebuilt/libsodium/include/sodium.h +75 -0
  106. package/android/src/main/cpp/prebuilt/libsodium/x86_64/lib/libsodium.a +0 -0
  107. package/android/src/main/cpp/prebuilt/openssl/arm64-v8a/lib/libcrypto.a +0 -0
  108. package/android/src/main/cpp/prebuilt/openssl/arm64-v8a/lib/libssl.a +0 -0
  109. package/android/src/main/cpp/prebuilt/openssl/x86_64/lib/libcrypto.a +0 -0
  110. package/android/src/main/cpp/prebuilt/openssl/x86_64/lib/libssl.a +0 -0
  111. package/android/src/main/cpp/stretch_jni.cpp +171 -0
  112. package/android/src/main/cpp/third_party/alac/addons/alac_wrapper.cpp +198 -0
  113. package/android/src/main/cpp/third_party/alac/addons/alac_wrapper.h +46 -0
  114. package/android/src/main/cpp/third_party/alac/codec/ALACAudioTypes.h +197 -0
  115. package/android/src/main/cpp/third_party/alac/codec/ALACBitUtilities.c +260 -0
  116. package/android/src/main/cpp/third_party/alac/codec/ALACBitUtilities.h +104 -0
  117. package/android/src/main/cpp/third_party/alac/codec/ALACDecoder.cpp +730 -0
  118. package/android/src/main/cpp/third_party/alac/codec/ALACDecoder.h +65 -0
  119. package/android/src/main/cpp/third_party/alac/codec/ALACEncoder.cpp +1425 -0
  120. package/android/src/main/cpp/third_party/alac/codec/ALACEncoder.h +92 -0
  121. package/android/src/main/cpp/third_party/alac/codec/EndianPortable.c +181 -0
  122. package/android/src/main/cpp/third_party/alac/codec/EndianPortable.h +59 -0
  123. package/android/src/main/cpp/third_party/alac/codec/ag_dec.c +362 -0
  124. package/android/src/main/cpp/third_party/alac/codec/ag_enc.c +370 -0
  125. package/android/src/main/cpp/third_party/alac/codec/aglib.h +81 -0
  126. package/android/src/main/cpp/third_party/alac/codec/dp_dec.c +381 -0
  127. package/android/src/main/cpp/third_party/alac/codec/dp_enc.c +386 -0
  128. package/android/src/main/cpp/third_party/alac/codec/dplib.h +61 -0
  129. package/android/src/main/cpp/third_party/alac/codec/matrix_dec.c +390 -0
  130. package/android/src/main/cpp/third_party/alac/codec/matrix_enc.c +342 -0
  131. package/android/src/main/cpp/third_party/alac/codec/matrixlib.h +80 -0
  132. package/android/src/main/cpp/third_party/crosstools/cross_log.c +95 -0
  133. package/android/src/main/cpp/third_party/crosstools/cross_log.h +25 -0
  134. package/android/src/main/cpp/third_party/crosstools/cross_net.c +1139 -0
  135. package/android/src/main/cpp/third_party/crosstools/cross_net.h +51 -0
  136. package/android/src/main/cpp/third_party/crosstools/cross_ssl.c +371 -0
  137. package/android/src/main/cpp/third_party/crosstools/cross_ssl.h +15 -0
  138. package/android/src/main/cpp/third_party/crosstools/cross_thread.c +134 -0
  139. package/android/src/main/cpp/third_party/crosstools/cross_thread.h +20 -0
  140. package/android/src/main/cpp/third_party/crosstools/cross_util.c +753 -0
  141. package/android/src/main/cpp/third_party/crosstools/cross_util.h +125 -0
  142. package/android/src/main/cpp/third_party/crosstools/platform.c +227 -0
  143. package/android/src/main/cpp/third_party/crosstools/platform.h +127 -0
  144. package/android/src/main/cpp/third_party/curve25519/include/curve25519_dh.h +53 -0
  145. package/android/src/main/cpp/third_party/curve25519/include/ed25519_signature.h +98 -0
  146. package/android/src/main/cpp/third_party/curve25519/include/external_calls.h +36 -0
  147. package/android/src/main/cpp/third_party/curve25519/source/BaseTypes.h +125 -0
  148. package/android/src/main/cpp/third_party/curve25519/source/base_folding8.h +1288 -0
  149. package/android/src/main/cpp/third_party/curve25519/source/curve25519_dh.c +208 -0
  150. package/android/src/main/cpp/third_party/curve25519/source/curve25519_mehdi.c +410 -0
  151. package/android/src/main/cpp/third_party/curve25519/source/curve25519_mehdi.h +175 -0
  152. package/android/src/main/cpp/third_party/curve25519/source/curve25519_order.c +155 -0
  153. package/android/src/main/cpp/third_party/curve25519/source/curve25519_utils.c +153 -0
  154. package/android/src/main/cpp/third_party/curve25519/source/custom_blind.c +27 -0
  155. package/android/src/main/cpp/third_party/curve25519/source/custom_blind.h +11 -0
  156. package/android/src/main/cpp/third_party/curve25519/source/ed25519_sign.c +419 -0
  157. package/android/src/main/cpp/third_party/curve25519/source/ed25519_signature.h +98 -0
  158. package/android/src/main/cpp/third_party/curve25519/source/ed25519_verify.c +313 -0
  159. package/android/src/main/cpp/third_party/curve25519/source/sha512.c +294 -0
  160. package/android/src/main/cpp/third_party/curve25519/source/sha512.h +93 -0
  161. package/android/src/main/cpp/third_party/dmap-parser/dmap_parser.c +545 -0
  162. package/android/src/main/cpp/third_party/dmap-parser/dmap_parser.h +90 -0
  163. package/android/src/main/cpp/third_party/libraop/aes.c +863 -0
  164. package/android/src/main/cpp/third_party/libraop/aes.h +18 -0
  165. package/android/src/main/cpp/third_party/libraop/aes_ctr.c +89 -0
  166. package/android/src/main/cpp/third_party/libraop/aes_ctr.h +59 -0
  167. package/android/src/main/cpp/third_party/libraop/alac.c +1135 -0
  168. package/android/src/main/cpp/third_party/libraop/alac.h +55 -0
  169. package/android/src/main/cpp/third_party/libraop/raop_client.c +1500 -0
  170. package/android/src/main/cpp/third_party/libraop/raop_client.h +178 -0
  171. package/android/src/main/cpp/third_party/libraop/rtsp_client.c +743 -0
  172. package/android/src/main/cpp/third_party/libraop/rtsp_client.h +50 -0
  173. package/android/src/main/cpp/third_party/openssl/include/openssl/__DECC_INCLUDE_EPILOGUE.H +22 -0
  174. package/android/src/main/cpp/third_party/openssl/include/openssl/__DECC_INCLUDE_PROLOGUE.H +26 -0
  175. package/android/src/main/cpp/third_party/openssl/include/openssl/aes.h +111 -0
  176. package/android/src/main/cpp/third_party/openssl/include/openssl/asn1.h +1134 -0
  177. package/android/src/main/cpp/third_party/openssl/include/openssl/asn1.h.in +967 -0
  178. package/android/src/main/cpp/third_party/openssl/include/openssl/asn1err.h +142 -0
  179. package/android/src/main/cpp/third_party/openssl/include/openssl/asn1t.h +946 -0
  180. package/android/src/main/cpp/third_party/openssl/include/openssl/asn1t.h.in +923 -0
  181. package/android/src/main/cpp/third_party/openssl/include/openssl/async.h +104 -0
  182. package/android/src/main/cpp/third_party/openssl/include/openssl/asyncerr.h +29 -0
  183. package/android/src/main/cpp/third_party/openssl/include/openssl/bio.h +1022 -0
  184. package/android/src/main/cpp/third_party/openssl/include/openssl/bio.h.in +999 -0
  185. package/android/src/main/cpp/third_party/openssl/include/openssl/bioerr.h +72 -0
  186. package/android/src/main/cpp/third_party/openssl/include/openssl/blowfish.h +78 -0
  187. package/android/src/main/cpp/third_party/openssl/include/openssl/bn.h +590 -0
  188. package/android/src/main/cpp/third_party/openssl/include/openssl/bnerr.h +47 -0
  189. package/android/src/main/cpp/third_party/openssl/include/openssl/buffer.h +62 -0
  190. package/android/src/main/cpp/third_party/openssl/include/openssl/buffererr.h +25 -0
  191. package/android/src/main/cpp/third_party/openssl/include/openssl/byteorder.h +339 -0
  192. package/android/src/main/cpp/third_party/openssl/include/openssl/camellia.h +117 -0
  193. package/android/src/main/cpp/third_party/openssl/include/openssl/cast.h +71 -0
  194. package/android/src/main/cpp/third_party/openssl/include/openssl/cmac.h +52 -0
  195. package/android/src/main/cpp/third_party/openssl/include/openssl/cmp.h +727 -0
  196. package/android/src/main/cpp/third_party/openssl/include/openssl/cmp.h.in +584 -0
  197. package/android/src/main/cpp/third_party/openssl/include/openssl/cmp_util.h +56 -0
  198. package/android/src/main/cpp/third_party/openssl/include/openssl/cmperr.h +134 -0
  199. package/android/src/main/cpp/third_party/openssl/include/openssl/cms.h +511 -0
  200. package/android/src/main/cpp/third_party/openssl/include/openssl/cms.h.in +413 -0
  201. package/android/src/main/cpp/third_party/openssl/include/openssl/cmserr.h +126 -0
  202. package/android/src/main/cpp/third_party/openssl/include/openssl/comp.h +98 -0
  203. package/android/src/main/cpp/third_party/openssl/include/openssl/comp.h.in +76 -0
  204. package/android/src/main/cpp/third_party/openssl/include/openssl/comperr.h +38 -0
  205. package/android/src/main/cpp/third_party/openssl/include/openssl/conf.h +214 -0
  206. package/android/src/main/cpp/third_party/openssl/include/openssl/conf.h.in +177 -0
  207. package/android/src/main/cpp/third_party/openssl/include/openssl/conf_api.h +46 -0
  208. package/android/src/main/cpp/third_party/openssl/include/openssl/conferr.h +52 -0
  209. package/android/src/main/cpp/third_party/openssl/include/openssl/configuration.h +212 -0
  210. package/android/src/main/cpp/third_party/openssl/include/openssl/configuration.h.in +75 -0
  211. package/android/src/main/cpp/third_party/openssl/include/openssl/conftypes.h +44 -0
  212. package/android/src/main/cpp/third_party/openssl/include/openssl/core.h +236 -0
  213. package/android/src/main/cpp/third_party/openssl/include/openssl/core_dispatch.h +1141 -0
  214. package/android/src/main/cpp/third_party/openssl/include/openssl/core_names.h +575 -0
  215. package/android/src/main/cpp/third_party/openssl/include/openssl/core_names.h.in +126 -0
  216. package/android/src/main/cpp/third_party/openssl/include/openssl/core_object.h +41 -0
  217. package/android/src/main/cpp/third_party/openssl/include/openssl/crmf.h +278 -0
  218. package/android/src/main/cpp/third_party/openssl/include/openssl/crmf.h.in +207 -0
  219. package/android/src/main/cpp/third_party/openssl/include/openssl/crmferr.h +57 -0
  220. package/android/src/main/cpp/third_party/openssl/include/openssl/crypto.h +583 -0
  221. package/android/src/main/cpp/third_party/openssl/include/openssl/crypto.h.in +560 -0
  222. package/android/src/main/cpp/third_party/openssl/include/openssl/cryptoerr.h +56 -0
  223. package/android/src/main/cpp/third_party/openssl/include/openssl/cryptoerr_legacy.h +1466 -0
  224. package/android/src/main/cpp/third_party/openssl/include/openssl/ct.h +573 -0
  225. package/android/src/main/cpp/third_party/openssl/include/openssl/ct.h.in +525 -0
  226. package/android/src/main/cpp/third_party/openssl/include/openssl/cterr.h +45 -0
  227. package/android/src/main/cpp/third_party/openssl/include/openssl/decoder.h +133 -0
  228. package/android/src/main/cpp/third_party/openssl/include/openssl/decodererr.h +28 -0
  229. package/android/src/main/cpp/third_party/openssl/include/openssl/des.h +211 -0
  230. package/android/src/main/cpp/third_party/openssl/include/openssl/dh.h +339 -0
  231. package/android/src/main/cpp/third_party/openssl/include/openssl/dherr.h +59 -0
  232. package/android/src/main/cpp/third_party/openssl/include/openssl/dsa.h +280 -0
  233. package/android/src/main/cpp/third_party/openssl/include/openssl/dsaerr.h +44 -0
  234. package/android/src/main/cpp/third_party/openssl/include/openssl/dtls1.h +57 -0
  235. package/android/src/main/cpp/third_party/openssl/include/openssl/e_os2.h +310 -0
  236. package/android/src/main/cpp/third_party/openssl/include/openssl/e_ostime.h +38 -0
  237. package/android/src/main/cpp/third_party/openssl/include/openssl/ebcdic.h +39 -0
  238. package/android/src/main/cpp/third_party/openssl/include/openssl/ec.h +1588 -0
  239. package/android/src/main/cpp/third_party/openssl/include/openssl/ecdh.h +10 -0
  240. package/android/src/main/cpp/third_party/openssl/include/openssl/ecdsa.h +10 -0
  241. package/android/src/main/cpp/third_party/openssl/include/openssl/ecerr.h +104 -0
  242. package/android/src/main/cpp/third_party/openssl/include/openssl/encoder.h +124 -0
  243. package/android/src/main/cpp/third_party/openssl/include/openssl/encodererr.h +28 -0
  244. package/android/src/main/cpp/third_party/openssl/include/openssl/engine.h +833 -0
  245. package/android/src/main/cpp/third_party/openssl/include/openssl/engineerr.h +63 -0
  246. package/android/src/main/cpp/third_party/openssl/include/openssl/err.h +512 -0
  247. package/android/src/main/cpp/third_party/openssl/include/openssl/err.h.in +501 -0
  248. package/android/src/main/cpp/third_party/openssl/include/openssl/ess.h +128 -0
  249. package/android/src/main/cpp/third_party/openssl/include/openssl/ess.h.in +81 -0
  250. package/android/src/main/cpp/third_party/openssl/include/openssl/esserr.h +32 -0
  251. package/android/src/main/cpp/third_party/openssl/include/openssl/evp.h +2310 -0
  252. package/android/src/main/cpp/third_party/openssl/include/openssl/evperr.h +142 -0
  253. package/android/src/main/cpp/third_party/openssl/include/openssl/fips_names.h +50 -0
  254. package/android/src/main/cpp/third_party/openssl/include/openssl/fipskey.h +41 -0
  255. package/android/src/main/cpp/third_party/openssl/include/openssl/fipskey.h.in +40 -0
  256. package/android/src/main/cpp/third_party/openssl/include/openssl/hmac.h +62 -0
  257. package/android/src/main/cpp/third_party/openssl/include/openssl/hpke.h +169 -0
  258. package/android/src/main/cpp/third_party/openssl/include/openssl/http.h +119 -0
  259. package/android/src/main/cpp/third_party/openssl/include/openssl/httperr.h +56 -0
  260. package/android/src/main/cpp/third_party/openssl/include/openssl/idea.h +82 -0
  261. package/android/src/main/cpp/third_party/openssl/include/openssl/indicator.h +31 -0
  262. package/android/src/main/cpp/third_party/openssl/include/openssl/kdf.h +138 -0
  263. package/android/src/main/cpp/third_party/openssl/include/openssl/kdferr.h +16 -0
  264. package/android/src/main/cpp/third_party/openssl/include/openssl/lhash.h +398 -0
  265. package/android/src/main/cpp/third_party/openssl/include/openssl/lhash.h.in +373 -0
  266. package/android/src/main/cpp/third_party/openssl/include/openssl/macros.h +349 -0
  267. package/android/src/main/cpp/third_party/openssl/include/openssl/md2.h +56 -0
  268. package/android/src/main/cpp/third_party/openssl/include/openssl/md4.h +63 -0
  269. package/android/src/main/cpp/third_party/openssl/include/openssl/md5.h +62 -0
  270. package/android/src/main/cpp/third_party/openssl/include/openssl/mdc2.h +55 -0
  271. package/android/src/main/cpp/third_party/openssl/include/openssl/ml_kem.h +31 -0
  272. package/android/src/main/cpp/third_party/openssl/include/openssl/modes.h +219 -0
  273. package/android/src/main/cpp/third_party/openssl/include/openssl/obj_mac.h +6636 -0
  274. package/android/src/main/cpp/third_party/openssl/include/openssl/objects.h +184 -0
  275. package/android/src/main/cpp/third_party/openssl/include/openssl/objectserr.h +28 -0
  276. package/android/src/main/cpp/third_party/openssl/include/openssl/ocsp.h +483 -0
  277. package/android/src/main/cpp/third_party/openssl/include/openssl/ocsp.h.in +387 -0
  278. package/android/src/main/cpp/third_party/openssl/include/openssl/ocsperr.h +53 -0
  279. package/android/src/main/cpp/third_party/openssl/include/openssl/opensslconf.h +17 -0
  280. package/android/src/main/cpp/third_party/openssl/include/openssl/opensslv.h +114 -0
  281. package/android/src/main/cpp/third_party/openssl/include/openssl/opensslv.h.in +113 -0
  282. package/android/src/main/cpp/third_party/openssl/include/openssl/ossl_typ.h +16 -0
  283. package/android/src/main/cpp/third_party/openssl/include/openssl/param_build.h +63 -0
  284. package/android/src/main/cpp/third_party/openssl/include/openssl/params.h +163 -0
  285. package/android/src/main/cpp/third_party/openssl/include/openssl/pem.h +547 -0
  286. package/android/src/main/cpp/third_party/openssl/include/openssl/pem2.h +19 -0
  287. package/android/src/main/cpp/third_party/openssl/include/openssl/pemerr.h +59 -0
  288. package/android/src/main/cpp/third_party/openssl/include/openssl/pkcs12.h +366 -0
  289. package/android/src/main/cpp/third_party/openssl/include/openssl/pkcs12.h.in +343 -0
  290. package/android/src/main/cpp/third_party/openssl/include/openssl/pkcs12err.h +46 -0
  291. package/android/src/main/cpp/third_party/openssl/include/openssl/pkcs7.h +430 -0
  292. package/android/src/main/cpp/third_party/openssl/include/openssl/pkcs7.h.in +359 -0
  293. package/android/src/main/cpp/third_party/openssl/include/openssl/pkcs7err.h +63 -0
  294. package/android/src/main/cpp/third_party/openssl/include/openssl/prov_ssl.h +38 -0
  295. package/android/src/main/cpp/third_party/openssl/include/openssl/proverr.h +169 -0
  296. package/android/src/main/cpp/third_party/openssl/include/openssl/provider.h +94 -0
  297. package/android/src/main/cpp/third_party/openssl/include/openssl/quic.h +75 -0
  298. package/android/src/main/cpp/third_party/openssl/include/openssl/rand.h +131 -0
  299. package/android/src/main/cpp/third_party/openssl/include/openssl/randerr.h +70 -0
  300. package/android/src/main/cpp/third_party/openssl/include/openssl/rc2.h +68 -0
  301. package/android/src/main/cpp/third_party/openssl/include/openssl/rc4.h +47 -0
  302. package/android/src/main/cpp/third_party/openssl/include/openssl/rc5.h +79 -0
  303. package/android/src/main/cpp/third_party/openssl/include/openssl/ripemd.h +59 -0
  304. package/android/src/main/cpp/third_party/openssl/include/openssl/rsa.h +615 -0
  305. package/android/src/main/cpp/third_party/openssl/include/openssl/rsaerr.h +107 -0
  306. package/android/src/main/cpp/third_party/openssl/include/openssl/safestack.h +297 -0
  307. package/android/src/main/cpp/third_party/openssl/include/openssl/safestack.h.in +227 -0
  308. package/android/src/main/cpp/third_party/openssl/include/openssl/seed.h +113 -0
  309. package/android/src/main/cpp/third_party/openssl/include/openssl/self_test.h +112 -0
  310. package/android/src/main/cpp/third_party/openssl/include/openssl/sha.h +139 -0
  311. package/android/src/main/cpp/third_party/openssl/include/openssl/srp.h +285 -0
  312. package/android/src/main/cpp/third_party/openssl/include/openssl/srp.h.in +214 -0
  313. package/android/src/main/cpp/third_party/openssl/include/openssl/srtp.h +68 -0
  314. package/android/src/main/cpp/third_party/openssl/include/openssl/ssl.h +2933 -0
  315. package/android/src/main/cpp/third_party/openssl/include/openssl/ssl.h.in +2886 -0
  316. package/android/src/main/cpp/third_party/openssl/include/openssl/ssl2.h +30 -0
  317. package/android/src/main/cpp/third_party/openssl/include/openssl/ssl3.h +358 -0
  318. package/android/src/main/cpp/third_party/openssl/include/openssl/sslerr.h +382 -0
  319. package/android/src/main/cpp/third_party/openssl/include/openssl/sslerr_legacy.h +467 -0
  320. package/android/src/main/cpp/third_party/openssl/include/openssl/stack.h +90 -0
  321. package/android/src/main/cpp/third_party/openssl/include/openssl/store.h +377 -0
  322. package/android/src/main/cpp/third_party/openssl/include/openssl/storeerr.h +49 -0
  323. package/android/src/main/cpp/third_party/openssl/include/openssl/symhacks.h +39 -0
  324. package/android/src/main/cpp/third_party/openssl/include/openssl/thread.h +31 -0
  325. package/android/src/main/cpp/third_party/openssl/include/openssl/tls1.h +1220 -0
  326. package/android/src/main/cpp/third_party/openssl/include/openssl/trace.h +321 -0
  327. package/android/src/main/cpp/third_party/openssl/include/openssl/ts.h +522 -0
  328. package/android/src/main/cpp/third_party/openssl/include/openssl/tserr.h +67 -0
  329. package/android/src/main/cpp/third_party/openssl/include/openssl/txt_db.h +63 -0
  330. package/android/src/main/cpp/third_party/openssl/include/openssl/types.h +248 -0
  331. package/android/src/main/cpp/third_party/openssl/include/openssl/ui.h +407 -0
  332. package/android/src/main/cpp/third_party/openssl/include/openssl/ui.h.in +384 -0
  333. package/android/src/main/cpp/third_party/openssl/include/openssl/uierr.h +38 -0
  334. package/android/src/main/cpp/third_party/openssl/include/openssl/whrlpool.h +62 -0
  335. package/android/src/main/cpp/third_party/openssl/include/openssl/x509.h +1303 -0
  336. package/android/src/main/cpp/third_party/openssl/include/openssl/x509.h.in +1109 -0
  337. package/android/src/main/cpp/third_party/openssl/include/openssl/x509_acert.h +294 -0
  338. package/android/src/main/cpp/third_party/openssl/include/openssl/x509_acert.h.in +199 -0
  339. package/android/src/main/cpp/third_party/openssl/include/openssl/x509_vfy.h +903 -0
  340. package/android/src/main/cpp/third_party/openssl/include/openssl/x509_vfy.h.in +806 -0
  341. package/android/src/main/cpp/third_party/openssl/include/openssl/x509err.h +70 -0
  342. package/android/src/main/cpp/third_party/openssl/include/openssl/x509v3.h +1968 -0
  343. package/android/src/main/cpp/third_party/openssl/include/openssl/x509v3.h.in +1367 -0
  344. package/android/src/main/cpp/third_party/openssl/include/openssl/x509v3err.h +97 -0
  345. package/android/src/main/cpp/third_party/pair_ap/pair-internal.h +390 -0
  346. package/android/src/main/cpp/third_party/pair_ap/pair-tlv.c +221 -0
  347. package/android/src/main/cpp/third_party/pair_ap/pair-tlv.h +77 -0
  348. package/android/src/main/cpp/third_party/pair_ap/pair.c +806 -0
  349. package/android/src/main/cpp/third_party/pair_ap/pair.h +266 -0
  350. package/android/src/main/cpp/third_party/pair_ap/pair_fruit_stub.c +36 -0
  351. package/android/src/main/cpp/third_party/pair_ap/pair_homekit.c +3190 -0
  352. package/android/src/main/cpp/third_party/signalsmith/LICENSE-signalsmith-linear.txt +21 -0
  353. package/android/src/main/cpp/third_party/signalsmith/LICENSE-signalsmith-stretch.txt +21 -0
  354. package/android/src/main/cpp/third_party/signalsmith/THIRD_PARTY_VERSIONS.txt +9 -0
  355. package/android/src/main/cpp/third_party/signalsmith/include/signalsmith-linear/fft.h +1380 -0
  356. package/android/src/main/cpp/third_party/signalsmith/include/signalsmith-linear/linear.h +1075 -0
  357. package/android/src/main/cpp/third_party/signalsmith/include/signalsmith-linear/stft.h +643 -0
  358. package/android/src/main/cpp/third_party/signalsmith/include/signalsmith-stretch.h +1060 -0
  359. package/android/src/main/java/com/margelo/nitro/queueplayer/AirPlayEngine.kt +314 -0
  360. package/android/src/main/java/com/margelo/nitro/queueplayer/ArtworkContentProvider.kt +124 -0
  361. package/android/src/main/java/com/margelo/nitro/queueplayer/AudioFocusErrorMapping.kt +89 -0
  362. package/android/src/main/java/com/margelo/nitro/queueplayer/AudioPipelineRenderersFactory.kt +60 -0
  363. package/android/src/main/java/com/margelo/nitro/queueplayer/BrowseCallbackRegistry.kt +136 -0
  364. package/android/src/main/java/com/margelo/nitro/queueplayer/BrowseDataProvider.kt +128 -0
  365. package/android/src/main/java/com/margelo/nitro/queueplayer/BufferStateTranslator.kt +35 -0
  366. package/android/src/main/java/com/margelo/nitro/queueplayer/CacheMimeTypes.kt +79 -0
  367. package/android/src/main/java/com/margelo/nitro/queueplayer/CastManager.kt +629 -0
  368. package/android/src/main/java/com/margelo/nitro/queueplayer/CrossfadeEngine.kt +1350 -0
  369. package/android/src/main/java/com/margelo/nitro/queueplayer/CrossfadeForwardingPlayer.kt +66 -0
  370. package/android/src/main/java/com/margelo/nitro/queueplayer/CustomPresetStore.kt +100 -0
  371. package/android/src/main/java/com/margelo/nitro/queueplayer/Equalizer.kt +348 -0
  372. package/android/src/main/java/com/margelo/nitro/queueplayer/EqualizerEngine.kt +222 -0
  373. package/android/src/main/java/com/margelo/nitro/queueplayer/EqualizerLegacyEngine.kt +213 -0
  374. package/android/src/main/java/com/margelo/nitro/queueplayer/EqualizerPresets.kt +45 -0
  375. package/android/src/main/java/com/margelo/nitro/queueplayer/FFTProcessorTee.kt +173 -0
  376. package/android/src/main/java/com/margelo/nitro/queueplayer/FifoCacheEvictor.kt +96 -0
  377. package/android/src/main/java/com/margelo/nitro/queueplayer/GaplessEngine.kt +587 -0
  378. package/android/src/main/java/com/margelo/nitro/queueplayer/HeadlessJsMediaService.kt +220 -0
  379. package/android/src/main/java/com/margelo/nitro/queueplayer/IEqualizerEngine.kt +97 -0
  380. package/android/src/main/java/com/margelo/nitro/queueplayer/ListenerRegistry.kt +59 -0
  381. package/android/src/main/java/com/margelo/nitro/queueplayer/LookaheadCache.kt +343 -0
  382. package/android/src/main/java/com/margelo/nitro/queueplayer/LookaheadCacheWriter.kt +533 -0
  383. package/android/src/main/java/com/margelo/nitro/queueplayer/MediaButtonDispatch.kt +88 -0
  384. package/android/src/main/java/com/margelo/nitro/queueplayer/MediaItemBuilder.kt +281 -0
  385. package/android/src/main/java/com/margelo/nitro/queueplayer/MediaItemMapper.kt +76 -0
  386. package/android/src/main/java/com/margelo/nitro/queueplayer/MilestoneTracker.kt +66 -0
  387. package/android/src/main/java/com/margelo/nitro/queueplayer/MimeCapturingDataSource.kt +64 -0
  388. package/android/src/main/java/com/margelo/nitro/queueplayer/MultiplexingAudioBufferSink.kt +92 -0
  389. package/android/src/main/java/com/margelo/nitro/queueplayer/NotificationProvider.kt +37 -0
  390. package/android/src/main/java/com/margelo/nitro/queueplayer/NowPlayingFormatExtractor.kt +166 -0
  391. package/android/src/main/java/com/margelo/nitro/queueplayer/PendingBrowseRequests.kt +70 -0
  392. package/android/src/main/java/com/margelo/nitro/queueplayer/PendingIntentBuffer.kt +82 -0
  393. package/android/src/main/java/com/margelo/nitro/queueplayer/PitchAwareAudioProcessorChain.kt +69 -0
  394. package/android/src/main/java/com/margelo/nitro/queueplayer/PitchCorrection.kt +27 -0
  395. package/android/src/main/java/com/margelo/nitro/queueplayer/PlaceholderArtwork.kt +65 -0
  396. package/android/src/main/java/com/margelo/nitro/queueplayer/PlaceholderFallbackBitmapLoader.kt +75 -0
  397. package/android/src/main/java/com/margelo/nitro/queueplayer/PlaybackEngine.kt +336 -0
  398. package/android/src/main/java/com/margelo/nitro/queueplayer/PlaybackErrorMapping.kt +175 -0
  399. package/android/src/main/java/com/margelo/nitro/queueplayer/PlaybackModeStateMachine.kt +127 -0
  400. package/android/src/main/java/com/margelo/nitro/queueplayer/PlaybackService.kt +1716 -0
  401. package/android/src/main/java/com/margelo/nitro/queueplayer/PlaybackServiceCallback.kt +755 -0
  402. package/android/src/main/java/com/margelo/nitro/queueplayer/ProgressEmissionGate.kt +70 -0
  403. package/android/src/main/java/com/margelo/nitro/queueplayer/QueueMutationArithmetic.kt +131 -0
  404. package/android/src/main/java/com/margelo/nitro/queueplayer/QueuePlayerPackage.kt +22 -0
  405. package/android/src/main/java/com/margelo/nitro/queueplayer/QueueSkipArithmetic.kt +113 -0
  406. package/android/src/main/java/com/margelo/nitro/queueplayer/RadixTwoFFT.kt +176 -0
  407. package/android/src/main/java/com/margelo/nitro/queueplayer/RemoteCommandDeduper.kt +81 -0
  408. package/android/src/main/java/com/margelo/nitro/queueplayer/ReplayGainAudioProcessor.kt +84 -0
  409. package/android/src/main/java/com/margelo/nitro/queueplayer/ReplayGainConfig.kt +34 -0
  410. package/android/src/main/java/com/margelo/nitro/queueplayer/ReplayGainData.kt +44 -0
  411. package/android/src/main/java/com/margelo/nitro/queueplayer/ReplayGainExtractor.kt +209 -0
  412. package/android/src/main/java/com/margelo/nitro/queueplayer/ReplayGainGain.kt +34 -0
  413. package/android/src/main/java/com/margelo/nitro/queueplayer/SearchResultCache.kt +72 -0
  414. package/android/src/main/java/com/margelo/nitro/queueplayer/SessionCommandForwardingPlayer.kt +167 -0
  415. package/android/src/main/java/com/margelo/nitro/queueplayer/SignalsmithStretchAudioProcessor.kt +225 -0
  416. package/android/src/main/java/com/margelo/nitro/queueplayer/SignalsmithStretchNative.kt +93 -0
  417. package/android/src/main/java/com/margelo/nitro/queueplayer/SleepTimerCore.kt +125 -0
  418. package/android/src/main/java/com/margelo/nitro/queueplayer/TrackPlayer.kt +4242 -0
  419. package/android/src/main/java/com/margelo/nitro/queueplayer/TransportStateTranslator.kt +70 -0
  420. package/android/src/main/java/com/margelo/nitro/queueplayer/UrlSchemes.kt +9 -0
  421. package/android/src/main/java/com/margelo/nitro/queueplayer/VisualizationGate.kt +35 -0
  422. package/android/src/main/java/com/margelo/nitro/queueplayer/Visualizer.kt +240 -0
  423. package/android/src/main/java/com/margelo/nitro/queueplayer/VisualizerTeeBuilder.kt +63 -0
  424. package/android/src/main/java/com/margelo/nitro/queueplayer/VoiceSearchExtrasParser.kt +103 -0
  425. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/AudioRouteState.kt +202 -0
  426. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/AuthRequiredException.kt +14 -0
  427. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/CastBackend.kt +41 -0
  428. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/CastBackends.kt +56 -0
  429. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/CastEventBridge.kt +122 -0
  430. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/CastMediaItem.kt +20 -0
  431. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/CastSession.kt +193 -0
  432. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/CastSinkRouter.kt +95 -0
  433. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/CastTransportRouter.kt +151 -0
  434. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/DiscoveryState.kt +53 -0
  435. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/MetadataAwareSession.kt +17 -0
  436. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/PlaybackStateRouter.kt +65 -0
  437. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/Receiver.kt +35 -0
  438. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/airplay/AirPlay2JNI.kt +129 -0
  439. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/airplay/AirPlay2MetadataSync.kt +189 -0
  440. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/airplay/AirPlay2Session.kt +123 -0
  441. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/airplay/AirPlay2Sink.kt +205 -0
  442. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/airplay/AirPlayBackend.kt +585 -0
  443. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/airplay/AirPlayBackendInitializer.kt +43 -0
  444. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/airplay/AirPlayDiscovery.kt +511 -0
  445. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/airplay/AirPlayDiscoveryLifecycleObserver.kt +57 -0
  446. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/airplay/AirPlayMetadataSync.kt +199 -0
  447. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/airplay/AirPlayReceiverMapper.kt +42 -0
  448. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/airplay/AirPlayRenderersFactory.kt +43 -0
  449. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/airplay/AirPlaySession.kt +101 -0
  450. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/airplay/AirPlaySink.kt +265 -0
  451. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/airplay/AirPlayTxtParser.kt +203 -0
  452. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/airplay/AirplayJNI.kt +106 -0
  453. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/airplay/MulticastLockHolder.kt +75 -0
  454. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/chromecast/CastMediaItemConverter.kt +67 -0
  455. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/chromecast/CastVolumeForwardingPlayer.kt +156 -0
  456. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/chromecast/ChromecastBackend.kt +171 -0
  457. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/chromecast/ChromecastOptionsProvider.kt +51 -0
  458. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/chromecast/ChromecastReceiverMapper.kt +44 -0
  459. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/chromecast/ChromecastSession.kt +544 -0
  460. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/chromecast/MediaInfoBuilder.kt +92 -0
  461. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/chromecast/RemoteMediaCallbacks.kt +113 -0
  462. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/http/LocalMediaServer.kt +160 -0
  463. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/http/LocalMediaServerLifecycle.kt +15 -0
  464. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/http/MediaServerHandle.kt +44 -0
  465. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/http/MediaTokenRegistry.kt +37 -0
  466. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/http/MimeTypes.kt +27 -0
  467. package/android/src/main/java/com/margelo/nitro/queueplayer/cast/net/LocalAddressMonitor.kt +86 -0
  468. package/android/src/main/res/raw/rnqp_placeholder.jpg +0 -0
  469. package/android/src/main/res/values/cast_strings.xml +15 -0
  470. package/android/src/main/res/values/strings.xml +24 -0
  471. package/android/src/main/res/xml/automotive_app_desc.xml +15 -0
  472. package/android/src/test/java/androidx/media3/session/MediaSessionControllerRequestTestSeam.kt +27 -0
  473. package/android/src/test/java/com/margelo/nitro/queueplayer/ArtworkContentProviderTest.kt +124 -0
  474. package/android/src/test/java/com/margelo/nitro/queueplayer/AudioFocusErrorMappingTest.kt +122 -0
  475. package/android/src/test/java/com/margelo/nitro/queueplayer/AudioPipelineRenderersFactoryTest.kt +57 -0
  476. package/android/src/test/java/com/margelo/nitro/queueplayer/AvrcpMetadataTest.kt +264 -0
  477. package/android/src/test/java/com/margelo/nitro/queueplayer/BrowseCallbackRegistryTest.kt +104 -0
  478. package/android/src/test/java/com/margelo/nitro/queueplayer/BrowseDataProviderTest.kt +276 -0
  479. package/android/src/test/java/com/margelo/nitro/queueplayer/BufferStateTranslatorTest.kt +58 -0
  480. package/android/src/test/java/com/margelo/nitro/queueplayer/CacheMimeTypesTest.kt +116 -0
  481. package/android/src/test/java/com/margelo/nitro/queueplayer/CrossfadeEngineLifecycleTest.kt +214 -0
  482. package/android/src/test/java/com/margelo/nitro/queueplayer/CrossfadeEngineReplayGainTest.kt +180 -0
  483. package/android/src/test/java/com/margelo/nitro/queueplayer/CustomPresetStoreTest.kt +128 -0
  484. package/android/src/test/java/com/margelo/nitro/queueplayer/EqualizerEngineTest.kt +223 -0
  485. package/android/src/test/java/com/margelo/nitro/queueplayer/EqualizerKtTest.kt +274 -0
  486. package/android/src/test/java/com/margelo/nitro/queueplayer/EqualizerLegacyEngineTest.kt +214 -0
  487. package/android/src/test/java/com/margelo/nitro/queueplayer/EqualizerPresetsTest.kt +89 -0
  488. package/android/src/test/java/com/margelo/nitro/queueplayer/FFTProcessorTeeTest.kt +185 -0
  489. package/android/src/test/java/com/margelo/nitro/queueplayer/FifoCacheEvictorTest.kt +112 -0
  490. package/android/src/test/java/com/margelo/nitro/queueplayer/ForwardingPlayerTestAccess.kt +21 -0
  491. package/android/src/test/java/com/margelo/nitro/queueplayer/GaplessEngineLifecycleTest.kt +65 -0
  492. package/android/src/test/java/com/margelo/nitro/queueplayer/GaplessEngineReplayGainTest.kt +154 -0
  493. package/android/src/test/java/com/margelo/nitro/queueplayer/HeadlessJsMediaServiceTest.kt +106 -0
  494. package/android/src/test/java/com/margelo/nitro/queueplayer/LookaheadCacheTest.kt +183 -0
  495. package/android/src/test/java/com/margelo/nitro/queueplayer/LookaheadCacheWriterTest.kt +649 -0
  496. package/android/src/test/java/com/margelo/nitro/queueplayer/MediaButtonDispatchTest.kt +192 -0
  497. package/android/src/test/java/com/margelo/nitro/queueplayer/MediaItemBuilderTest.kt +389 -0
  498. package/android/src/test/java/com/margelo/nitro/queueplayer/MediaItemMapperTest.kt +145 -0
  499. package/android/src/test/java/com/margelo/nitro/queueplayer/MilestoneTrackerTest.kt +81 -0
  500. package/android/src/test/java/com/margelo/nitro/queueplayer/MultiplexingAudioBufferSinkTest.kt +112 -0
  501. package/android/src/test/java/com/margelo/nitro/queueplayer/NotificationProviderTest.kt +86 -0
  502. package/android/src/test/java/com/margelo/nitro/queueplayer/NowPlayingFormatExtractorTest.kt +106 -0
  503. package/android/src/test/java/com/margelo/nitro/queueplayer/PendingBrowseRequestsTest.kt +82 -0
  504. package/android/src/test/java/com/margelo/nitro/queueplayer/PendingIntentBufferTest.kt +192 -0
  505. package/android/src/test/java/com/margelo/nitro/queueplayer/PitchAwareAudioProcessorChainTest.kt +147 -0
  506. package/android/src/test/java/com/margelo/nitro/queueplayer/PitchCorrectionTest.kt +55 -0
  507. package/android/src/test/java/com/margelo/nitro/queueplayer/PlaceholderFallbackBitmapLoaderTest.kt +187 -0
  508. package/android/src/test/java/com/margelo/nitro/queueplayer/PlaybackEngineInterfaceTest.kt +134 -0
  509. package/android/src/test/java/com/margelo/nitro/queueplayer/PlaybackModeStateMachineTest.kt +157 -0
  510. package/android/src/test/java/com/margelo/nitro/queueplayer/PlaybackServiceArtworkLoaderTest.kt +95 -0
  511. package/android/src/test/java/com/margelo/nitro/queueplayer/PlaybackServiceCallbackBrowseTest.kt +480 -0
  512. package/android/src/test/java/com/margelo/nitro/queueplayer/PlaybackServiceCallbackSearchTest.kt +171 -0
  513. package/android/src/test/java/com/margelo/nitro/queueplayer/PlaybackServiceCallbackTest.kt +773 -0
  514. package/android/src/test/java/com/margelo/nitro/queueplayer/PlaybackServiceCastBindTest.kt +100 -0
  515. package/android/src/test/java/com/margelo/nitro/queueplayer/PlaybackServiceLifecycleTest.kt +315 -0
  516. package/android/src/test/java/com/margelo/nitro/queueplayer/PlaybackServiceSessionActivityTest.kt +121 -0
  517. package/android/src/test/java/com/margelo/nitro/queueplayer/PlayerCommandsForTest.kt +246 -0
  518. package/android/src/test/java/com/margelo/nitro/queueplayer/ProgressEmissionGateTest.kt +113 -0
  519. package/android/src/test/java/com/margelo/nitro/queueplayer/QueueMutationArithmeticTest.kt +252 -0
  520. package/android/src/test/java/com/margelo/nitro/queueplayer/QueueSkipArithmeticTest.kt +343 -0
  521. package/android/src/test/java/com/margelo/nitro/queueplayer/RadixTwoFFTTest.kt +109 -0
  522. package/android/src/test/java/com/margelo/nitro/queueplayer/RemoteCommandDeduperTest.kt +106 -0
  523. package/android/src/test/java/com/margelo/nitro/queueplayer/ReplayGainAudioProcessorTest.kt +141 -0
  524. package/android/src/test/java/com/margelo/nitro/queueplayer/ReplayGainConfigTest.kt +103 -0
  525. package/android/src/test/java/com/margelo/nitro/queueplayer/ReplayGainExtractorTest.kt +469 -0
  526. package/android/src/test/java/com/margelo/nitro/queueplayer/ReplayGainGainTest.kt +129 -0
  527. package/android/src/test/java/com/margelo/nitro/queueplayer/RobolectricServiceBindHelper.kt +83 -0
  528. package/android/src/test/java/com/margelo/nitro/queueplayer/SearchResultCacheTest.kt +128 -0
  529. package/android/src/test/java/com/margelo/nitro/queueplayer/ServiceReadyReasonTest.kt +42 -0
  530. package/android/src/test/java/com/margelo/nitro/queueplayer/SessionCommandForwardingPlayerTest.kt +521 -0
  531. package/android/src/test/java/com/margelo/nitro/queueplayer/SleepTimerCoreTest.kt +125 -0
  532. package/android/src/test/java/com/margelo/nitro/queueplayer/SmokeTest.kt +27 -0
  533. package/android/src/test/java/com/margelo/nitro/queueplayer/TrackPlayerAirPlayMetadataWiringTest.kt +305 -0
  534. package/android/src/test/java/com/margelo/nitro/queueplayer/TrackPlayerAudioFocusTest.kt +179 -0
  535. package/android/src/test/java/com/margelo/nitro/queueplayer/TrackPlayerEventsTest.kt +497 -0
  536. package/android/src/test/java/com/margelo/nitro/queueplayer/TrackPlayerLifecycleTest.kt +209 -0
  537. package/android/src/test/java/com/margelo/nitro/queueplayer/TrackPlayerLookaheadConfigTest.kt +417 -0
  538. package/android/src/test/java/com/margelo/nitro/queueplayer/TrackPlayerMutationTest.kt +473 -0
  539. package/android/src/test/java/com/margelo/nitro/queueplayer/TrackPlayerPitchCorrectionTest.kt +61 -0
  540. package/android/src/test/java/com/margelo/nitro/queueplayer/TrackPlayerPlaybackModeTest.kt +28 -0
  541. package/android/src/test/java/com/margelo/nitro/queueplayer/TrackPlayerProgressThrottleTest.kt +89 -0
  542. package/android/src/test/java/com/margelo/nitro/queueplayer/TrackPlayerQueueTest.kt +290 -0
  543. package/android/src/test/java/com/margelo/nitro/queueplayer/TrackPlayerReadersTest.kt +151 -0
  544. package/android/src/test/java/com/margelo/nitro/queueplayer/TrackPlayerReplayGainTest.kt +69 -0
  545. package/android/src/test/java/com/margelo/nitro/queueplayer/TrackPlayerSkipCapabilityTest.kt +324 -0
  546. package/android/src/test/java/com/margelo/nitro/queueplayer/TrackPlayerSkipTest.kt +287 -0
  547. package/android/src/test/java/com/margelo/nitro/queueplayer/TrackPlayerSourceClassifierTest.kt +82 -0
  548. package/android/src/test/java/com/margelo/nitro/queueplayer/TrackPlayerTransportTest.kt +222 -0
  549. package/android/src/test/java/com/margelo/nitro/queueplayer/TransportStateTranslatorTest.kt +287 -0
  550. package/android/src/test/java/com/margelo/nitro/queueplayer/VisualizationGateTest.kt +96 -0
  551. package/android/src/test/java/com/margelo/nitro/queueplayer/VisualizerKtTest.kt +202 -0
  552. package/android/src/test/java/com/margelo/nitro/queueplayer/VoiceSearchExtrasParserTest.kt +211 -0
  553. package/android/src/test/java/com/margelo/nitro/queueplayer/cast/CastSinkRouterTest.kt +120 -0
  554. package/android/src/test/java/com/margelo/nitro/queueplayer/cast/FakeRemotePlayer.kt +62 -0
  555. package/android/src/test/java/com/margelo/nitro/queueplayer/cast/PlaybackStateRouterTest.kt +43 -0
  556. package/android/src/test/java/com/margelo/nitro/queueplayer/cast/airplay/AirPlayDiscoveryFilterTest.kt +86 -0
  557. package/android/src/test/java/com/margelo/nitro/queueplayer/cast/airplay/AirPlayTxtParserClassificationTest.kt +34 -0
  558. package/android/src/test/java/com/margelo/nitro/queueplayer/cast/chromecast/CastMediaItemConverterTest.kt +78 -0
  559. package/android/src/test/java/com/margelo/nitro/queueplayer/cast/chromecast/CastVolumeForwardingPlayerTest.kt +176 -0
  560. package/app.plugin.js +466 -0
  561. package/ios/AVPlayerItemQueueItemId.swift +61 -0
  562. package/ios/AVQueueBuilder.swift +200 -0
  563. package/ios/Array+SafeSubscript.swift +6 -0
  564. package/ios/ArtworkLoader.swift +136 -0
  565. package/ios/ArtworkResolver.swift +87 -0
  566. package/ios/AudioCategoryMapping.swift +48 -0
  567. package/ios/AudioSession.swift +220 -0
  568. package/ios/AudioSessionError.swift +44 -0
  569. package/ios/AudioTapProvider.swift +647 -0
  570. package/ios/BiquadCoefficients.swift +80 -0
  571. package/ios/CarPlayBridge.swift +178 -0
  572. package/ios/CarPlayBrowseBuilder.swift +368 -0
  573. package/ios/CarPlayBrowseDataProvider.swift +162 -0
  574. package/ios/CarPlayCoordinator.swift +42 -0
  575. package/ios/CarPlaySceneDelegate.swift +199 -0
  576. package/ios/Cast/AirPlayRouteState.swift +281 -0
  577. package/ios/Cast/Chromecast/ChromecastDiscoveryAdapter.swift +27 -0
  578. package/ios/Cast/Chromecast/ChromecastReceiverMapper.swift +48 -0
  579. package/ios/Cast/Chromecast/ChromecastSession.swift +740 -0
  580. package/ios/Cast/Chromecast/ChromecastSessionAdapter.swift +114 -0
  581. package/ios/Cast/Chromecast/ChromecastSupport.swift +63 -0
  582. package/ios/Cast/Chromecast/MediaInfoBuilder.swift +104 -0
  583. package/ios/Cast/Chromecast/RemoteMediaObserver.swift +147 -0
  584. package/ios/Cast/Core/CastEventBridge.swift +210 -0
  585. package/ios/Cast/Core/CastMediaItem.swift +41 -0
  586. package/ios/Cast/Core/CastNowPlayingController.swift +310 -0
  587. package/ios/Cast/Core/CastReceiverState.swift +22 -0
  588. package/ios/Cast/Core/CastSession.swift +147 -0
  589. package/ios/Cast/Core/CastTransportRouter.swift +162 -0
  590. package/ios/Cast/Core/ChromecastBackend.swift +259 -0
  591. package/ios/Cast/Core/LocalAddressMonitor.swift +110 -0
  592. package/ios/Cast/Core/LocalMediaServer.swift +270 -0
  593. package/ios/Cast/Core/LocalNetworkPermissionProbe.swift +265 -0
  594. package/ios/Cast/Core/MediaHTTPConnection.swift +349 -0
  595. package/ios/Cast/Core/MediaServerHandle.swift +49 -0
  596. package/ios/Cast/Core/MediaTokenRegistry.swift +51 -0
  597. package/ios/Cast/Core/MimeTypes.swift +26 -0
  598. package/ios/Cast/Core/PlaybackStateRouter.swift +123 -0
  599. package/ios/CastManager.swift +493 -0
  600. package/ios/CrossfadeEngine.swift +1343 -0
  601. package/ios/CustomPresetStore.swift +78 -0
  602. package/ios/EQProcessor.swift +321 -0
  603. package/ios/EQTap.swift +241 -0
  604. package/ios/Equalizer.swift +321 -0
  605. package/ios/EqualizerPresets.swift +48 -0
  606. package/ios/FFTProcessor.swift +237 -0
  607. package/ios/GaplessEngine.swift +385 -0
  608. package/ios/InputGuards.swift +63 -0
  609. package/ios/InterruptionEventMapping.swift +51 -0
  610. package/ios/ListenerRegistry.swift +73 -0
  611. package/ios/LookaheadCache.swift +833 -0
  612. package/ios/LookaheadCacheEviction.swift +83 -0
  613. package/ios/LookaheadCachePrefetcher.swift +503 -0
  614. package/ios/MetadataReader.swift +555 -0
  615. package/ios/MilestoneTracker.swift +63 -0
  616. package/ios/NowPlayingFormatExtractor.swift +362 -0
  617. package/ios/NowPlayingInfo.swift +190 -0
  618. package/ios/OutputRouteMonitor.swift +125 -0
  619. package/ios/PendingBrowseRequests.swift +62 -0
  620. package/ios/PitchAlgorithm.swift +24 -0
  621. package/ios/PlaceholderArtwork.swift +46 -0
  622. package/ios/PlaybackEngine.swift +319 -0
  623. package/ios/PlaybackErrorMapping.swift +195 -0
  624. package/ios/PlaybackModeStateMachine.swift +159 -0
  625. package/ios/PlayerStateDerivation.swift +45 -0
  626. package/ios/ProgressEmissionGate.swift +54 -0
  627. package/ios/QueueMutationArithmetic.swift +129 -0
  628. package/ios/QueueSkipArithmetic.swift +109 -0
  629. package/ios/QueueState.swift +49 -0
  630. package/ios/RemoteCommands.swift +229 -0
  631. package/ios/ReplayGainData.swift +58 -0
  632. package/ios/ReplayGainExtractor.swift +82 -0
  633. package/ios/ReplayGainProcessor.swift +46 -0
  634. package/ios/Resources/RNQP-placeholder.jpg +0 -0
  635. package/ios/Resources/silence.m4a +0 -0
  636. package/ios/Siri/PendingIntentBuffer.swift +100 -0
  637. package/ios/Siri/PlayMediaIntentHandler.swift +283 -0
  638. package/ios/Siri/QueuePlayerMediaIntents.swift +45 -0
  639. package/ios/Siri/VoiceDonation.swift +50 -0
  640. package/ios/SleepTimerCore.swift +128 -0
  641. package/ios/StreamingBitrateProbe.swift +318 -0
  642. package/ios/Tests/AVQueueBuilderTests.swift +430 -0
  643. package/ios/Tests/ArtworkResolverTests.swift +540 -0
  644. package/ios/Tests/AudioSessionTests.swift +222 -0
  645. package/ios/Tests/AudioTapProviderReplayGainTests.swift +136 -0
  646. package/ios/Tests/AudioTapProviderVisualizationFlagTests.swift +104 -0
  647. package/ios/Tests/BiquadCoefficientsTests.swift +84 -0
  648. package/ios/Tests/CarPlayBridgeTests.swift +91 -0
  649. package/ios/Tests/CarPlayBrowseBuilderTests.swift +221 -0
  650. package/ios/Tests/CarPlayBrowseDataProviderTests.swift +218 -0
  651. package/ios/Tests/CastNowPlayingControllerTests.swift +204 -0
  652. package/ios/Tests/CrossfadeEngineStubTests.swift +43 -0
  653. package/ios/Tests/EQProcessorTests.swift +302 -0
  654. package/ios/Tests/EQTapTests.swift +49 -0
  655. package/ios/Tests/EqualizerAudioMixProviderTests.swift +110 -0
  656. package/ios/Tests/EqualizerHybridTests.swift +303 -0
  657. package/ios/Tests/EqualizerPresetsTests.swift +69 -0
  658. package/ios/Tests/FFTProcessorTests.swift +303 -0
  659. package/ios/Tests/Fixtures/silence-aac-128.m4a +0 -0
  660. package/ios/Tests/Fixtures/silence-cbr-128.mp3 +0 -0
  661. package/ios/Tests/Fixtures/silence-vbr.mp3 +0 -0
  662. package/ios/Tests/GaplessEngineLifecycleTests.swift +160 -0
  663. package/ios/Tests/InputGuardsTests.swift +75 -0
  664. package/ios/Tests/InterruptionEventMappingTests.swift +91 -0
  665. package/ios/Tests/LookaheadCacheEvictionTests.swift +217 -0
  666. package/ios/Tests/LookaheadCachePrefetcherTests.swift +630 -0
  667. package/ios/Tests/LookaheadCacheRuntimeConfigTests.swift +247 -0
  668. package/ios/Tests/LookaheadCacheTests.swift +717 -0
  669. package/ios/Tests/MediaHTTPConnectionTests.swift +163 -0
  670. package/ios/Tests/MetadataReaderTests.swift +605 -0
  671. package/ios/Tests/MilestoneTrackerTests.swift +76 -0
  672. package/ios/Tests/NowPlayingFormatExtractorTests.swift +158 -0
  673. package/ios/Tests/NowPlayingInfoTests.swift +292 -0
  674. package/ios/Tests/PendingBrowseRequestsTests.swift +69 -0
  675. package/ios/Tests/PendingIntentBufferTests.swift +164 -0
  676. package/ios/Tests/PlaybackEngineProtocolTests.swift +92 -0
  677. package/ios/Tests/PlaybackErrorMappingTests.swift +179 -0
  678. package/ios/Tests/PlaybackModeStateMachineTests.swift +40 -0
  679. package/ios/Tests/PlaybackStateRouterTests.swift +178 -0
  680. package/ios/Tests/PlayerStateDerivationTests.swift +69 -0
  681. package/ios/Tests/ProgressEmissionGateTests.swift +113 -0
  682. package/ios/Tests/QueueMutationArithmeticTests.swift +245 -0
  683. package/ios/Tests/RemoteCommandsTests.swift +147 -0
  684. package/ios/Tests/ReplayGainExtractorTests.swift +197 -0
  685. package/ios/Tests/ReplayGainProcessorTests.swift +90 -0
  686. package/ios/Tests/SkipCapabilityTests.swift +98 -0
  687. package/ios/Tests/SkipIndexTests.swift +259 -0
  688. package/ios/Tests/SleepTimerCoreTests.swift +98 -0
  689. package/ios/Tests/StreamingBitrateProbeTests.swift +29 -0
  690. package/ios/Tests/TrackSourceClassifierTests.swift +50 -0
  691. package/ios/Tests/VoiceDonationTests.swift +26 -0
  692. package/ios/TrackPlayer.swift +4766 -0
  693. package/ios/Visualizer.swift +274 -0
  694. package/ios/WindowApplicationSceneDelegate.swift +59 -0
  695. package/ios/tests-harness/Podfile +56 -0
  696. package/ios/tests-harness/TestHost/App.swift +12 -0
  697. package/ios/tests-harness/TestHost/Info.plist +37 -0
  698. package/ios/tests-harness/TestHost.xcodeproj/project.pbxproj +472 -0
  699. package/ios/tests-harness/TestHost.xcodeproj/xcshareddata/xcschemes/TestHost.xcscheme +68 -0
  700. package/ios/tests-harness/package.json +10 -0
  701. package/ios/tests-harness/scripts/seed-xcodeproj.rb +118 -0
  702. package/lib/module/CastManager.nitro.js +4 -0
  703. package/lib/module/CastManager.nitro.js.map +1 -0
  704. package/lib/module/Equalizer.nitro.js +4 -0
  705. package/lib/module/Equalizer.nitro.js.map +1 -0
  706. package/lib/module/TrackPlayer.nitro.js +4 -0
  707. package/lib/module/TrackPlayer.nitro.js.map +1 -0
  708. package/lib/module/Visualizer.nitro.js +4 -0
  709. package/lib/module/Visualizer.nitro.js.map +1 -0
  710. package/lib/module/cast/index.js +156 -0
  711. package/lib/module/cast/index.js.map +1 -0
  712. package/lib/module/clients.js +43 -0
  713. package/lib/module/clients.js.map +1 -0
  714. package/lib/module/equalizer.js +85 -0
  715. package/lib/module/equalizer.js.map +1 -0
  716. package/lib/module/hooks/index.js +16 -0
  717. package/lib/module/hooks/index.js.map +1 -0
  718. package/lib/module/hooks/useActiveTrack.js +50 -0
  719. package/lib/module/hooks/useActiveTrack.js.map +1 -0
  720. package/lib/module/hooks/useAudioRoute.js +60 -0
  721. package/lib/module/hooks/useAudioRoute.js.map +1 -0
  722. package/lib/module/hooks/useBufferState.js +34 -0
  723. package/lib/module/hooks/useBufferState.js.map +1 -0
  724. package/lib/module/hooks/useCanSkip.js +67 -0
  725. package/lib/module/hooks/useCanSkip.js.map +1 -0
  726. package/lib/module/hooks/useCast.js +107 -0
  727. package/lib/module/hooks/useCast.js.map +1 -0
  728. package/lib/module/hooks/useEqualizer.js +91 -0
  729. package/lib/module/hooks/useEqualizer.js.map +1 -0
  730. package/lib/module/hooks/useFullyBuffered.js +33 -0
  731. package/lib/module/hooks/useFullyBuffered.js.map +1 -0
  732. package/lib/module/hooks/useLookaheadCache.js +49 -0
  733. package/lib/module/hooks/useLookaheadCache.js.map +1 -0
  734. package/lib/module/hooks/useNowPlayingFormat.js +42 -0
  735. package/lib/module/hooks/useNowPlayingFormat.js.map +1 -0
  736. package/lib/module/hooks/usePlaybackState.js +36 -0
  737. package/lib/module/hooks/usePlaybackState.js.map +1 -0
  738. package/lib/module/hooks/useProgress.js +31 -0
  739. package/lib/module/hooks/useProgress.js.map +1 -0
  740. package/lib/module/hooks/useSleepTimer.js +65 -0
  741. package/lib/module/hooks/useSleepTimer.js.map +1 -0
  742. package/lib/module/hooks/useVisualizerState.js +99 -0
  743. package/lib/module/hooks/useVisualizerState.js.map +1 -0
  744. package/lib/module/index.js +37 -0
  745. package/lib/module/index.js.map +1 -0
  746. package/lib/module/package.json +1 -0
  747. package/lib/module/playbackService.js +174 -0
  748. package/lib/module/playbackService.js.map +1 -0
  749. package/lib/module/types.js +592 -0
  750. package/lib/module/types.js.map +1 -0
  751. package/lib/typescript/CastManager.nitro.d.ts +154 -0
  752. package/lib/typescript/CastManager.nitro.d.ts.map +1 -0
  753. package/lib/typescript/Equalizer.nitro.d.ts +30 -0
  754. package/lib/typescript/Equalizer.nitro.d.ts.map +1 -0
  755. package/lib/typescript/TrackPlayer.nitro.d.ts +584 -0
  756. package/lib/typescript/TrackPlayer.nitro.d.ts.map +1 -0
  757. package/lib/typescript/Visualizer.nitro.d.ts +36 -0
  758. package/lib/typescript/Visualizer.nitro.d.ts.map +1 -0
  759. package/lib/typescript/cast/index.d.ts +65 -0
  760. package/lib/typescript/cast/index.d.ts.map +1 -0
  761. package/lib/typescript/clients.d.ts +9 -0
  762. package/lib/typescript/clients.d.ts.map +1 -0
  763. package/lib/typescript/equalizer.d.ts +45 -0
  764. package/lib/typescript/equalizer.d.ts.map +1 -0
  765. package/lib/typescript/hooks/index.d.ts +22 -0
  766. package/lib/typescript/hooks/index.d.ts.map +1 -0
  767. package/lib/typescript/hooks/useActiveTrack.d.ts +21 -0
  768. package/lib/typescript/hooks/useActiveTrack.d.ts.map +1 -0
  769. package/lib/typescript/hooks/useAudioRoute.d.ts +13 -0
  770. package/lib/typescript/hooks/useAudioRoute.d.ts.map +1 -0
  771. package/lib/typescript/hooks/useBufferState.d.ts +18 -0
  772. package/lib/typescript/hooks/useBufferState.d.ts.map +1 -0
  773. package/lib/typescript/hooks/useCanSkip.d.ts +43 -0
  774. package/lib/typescript/hooks/useCanSkip.d.ts.map +1 -0
  775. package/lib/typescript/hooks/useCast.d.ts +32 -0
  776. package/lib/typescript/hooks/useCast.d.ts.map +1 -0
  777. package/lib/typescript/hooks/useEqualizer.d.ts +20 -0
  778. package/lib/typescript/hooks/useEqualizer.d.ts.map +1 -0
  779. package/lib/typescript/hooks/useFullyBuffered.d.ts +15 -0
  780. package/lib/typescript/hooks/useFullyBuffered.d.ts.map +1 -0
  781. package/lib/typescript/hooks/useLookaheadCache.d.ts +13 -0
  782. package/lib/typescript/hooks/useLookaheadCache.d.ts.map +1 -0
  783. package/lib/typescript/hooks/useNowPlayingFormat.d.ts +18 -0
  784. package/lib/typescript/hooks/useNowPlayingFormat.d.ts.map +1 -0
  785. package/lib/typescript/hooks/usePlaybackState.d.ts +9 -0
  786. package/lib/typescript/hooks/usePlaybackState.d.ts.map +1 -0
  787. package/lib/typescript/hooks/useProgress.d.ts +15 -0
  788. package/lib/typescript/hooks/useProgress.d.ts.map +1 -0
  789. package/lib/typescript/hooks/useSleepTimer.d.ts +26 -0
  790. package/lib/typescript/hooks/useSleepTimer.d.ts.map +1 -0
  791. package/lib/typescript/hooks/useVisualizerState.d.ts +40 -0
  792. package/lib/typescript/hooks/useVisualizerState.d.ts.map +1 -0
  793. package/lib/typescript/index.d.ts +14 -0
  794. package/lib/typescript/index.d.ts.map +1 -0
  795. package/lib/typescript/package.json +1 -0
  796. package/lib/typescript/playbackService.d.ts +140 -0
  797. package/lib/typescript/playbackService.d.ts.map +1 -0
  798. package/lib/typescript/types.d.ts +1215 -0
  799. package/lib/typescript/types.d.ts.map +1 -0
  800. package/nitro.json +53 -0
  801. package/nitrogen/generated/android/c++/JAudioCategoryOptions.hpp +65 -0
  802. package/nitrogen/generated/android/c++/JAudioCodec.hpp +73 -0
  803. package/nitrogen/generated/android/c++/JAudioContainer.hpp +76 -0
  804. package/nitrogen/generated/android/c++/JAudioContentType.hpp +58 -0
  805. package/nitrogen/generated/android/c++/JAudioRoute.hpp +75 -0
  806. package/nitrogen/generated/android/c++/JAudioRouteKind.hpp +91 -0
  807. package/nitrogen/generated/android/c++/JBrowseItem.hpp +78 -0
  808. package/nitrogen/generated/android/c++/JBrowseSection.hpp +97 -0
  809. package/nitrogen/generated/android/c++/JBrowseSnapshot.hpp +87 -0
  810. package/nitrogen/generated/android/c++/JBufferState.hpp +64 -0
  811. package/nitrogen/generated/android/c++/JCacheStatus.hpp +92 -0
  812. package/nitrogen/generated/android/c++/JCastConfigureOptions.hpp +62 -0
  813. package/nitrogen/generated/android/c++/JCastConnectOptions.hpp +57 -0
  814. package/nitrogen/generated/android/c++/JCastDeviceKind.hpp +70 -0
  815. package/nitrogen/generated/android/c++/JCastDiscoveryState.hpp +57 -0
  816. package/nitrogen/generated/android/c++/JCastLocalNetworkPermission.hpp +61 -0
  817. package/nitrogen/generated/android/c++/JCastLocalNetworkPermissionEvent.hpp +58 -0
  818. package/nitrogen/generated/android/c++/JCastProtocol.hpp +67 -0
  819. package/nitrogen/generated/android/c++/JCastReceiver.hpp +89 -0
  820. package/nitrogen/generated/android/c++/JCastReceiverCapabilities.hpp +66 -0
  821. package/nitrogen/generated/android/c++/JCastRoute.hpp +85 -0
  822. package/nitrogen/generated/android/c++/JCastSessionDiedEvent.hpp +63 -0
  823. package/nitrogen/generated/android/c++/JCastSessionEndReason.hpp +76 -0
  824. package/nitrogen/generated/android/c++/JCastStreamingModel.hpp +58 -0
  825. package/nitrogen/generated/android/c++/JEqualizerBand.hpp +61 -0
  826. package/nitrogen/generated/android/c++/JEqualizerPreset.hpp +76 -0
  827. package/nitrogen/generated/android/c++/JEvictionPolicy.hpp +58 -0
  828. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_std__vector_BrowseItem______std__string.hpp +146 -0
  829. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_std__vector_TrackItem______MediaSearchRequest.hpp +161 -0
  830. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__shared_ptr_Promise_std__vector_TrackItem______std__string.hpp +147 -0
  831. package/nitrogen/generated/android/c++/JFunc_void.hpp +75 -0
  832. package/nitrogen/generated/android/c++/JFunc_void_AudioRoute.hpp +80 -0
  833. package/nitrogen/generated/android/c++/JFunc_void_BufferState.hpp +77 -0
  834. package/nitrogen/generated/android/c++/JFunc_void_CacheStatus.hpp +79 -0
  835. package/nitrogen/generated/android/c++/JFunc_void_CastDiscoveryState.hpp +77 -0
  836. package/nitrogen/generated/android/c++/JFunc_void_CastLocalNetworkPermissionEvent.hpp +79 -0
  837. package/nitrogen/generated/android/c++/JFunc_void_CastRoute.hpp +86 -0
  838. package/nitrogen/generated/android/c++/JFunc_void_CastSessionDiedEvent.hpp +80 -0
  839. package/nitrogen/generated/android/c++/JFunc_void_PlaybackError.hpp +80 -0
  840. package/nitrogen/generated/android/c++/JFunc_void_PlayerProgress.hpp +77 -0
  841. package/nitrogen/generated/android/c++/JFunc_void_PlayerState_StateChangeReason.hpp +79 -0
  842. package/nitrogen/generated/android/c++/JFunc_void_ServiceReadyReason.hpp +77 -0
  843. package/nitrogen/generated/android/c++/JFunc_void_SkipCapability.hpp +77 -0
  844. package/nitrogen/generated/android/c++/JFunc_void_SleepTimerState.hpp +78 -0
  845. package/nitrogen/generated/android/c++/JFunc_void_VisualizerErrorReason.hpp +77 -0
  846. package/nitrogen/generated/android/c++/JFunc_void_VisualizerFrame.hpp +80 -0
  847. package/nitrogen/generated/android/c++/JFunc_void_bool.hpp +75 -0
  848. package/nitrogen/generated/android/c++/JFunc_void_double_double.hpp +75 -0
  849. package/nitrogen/generated/android/c++/JFunc_void_std__optional_TrackItem__double_TrackChangeReason_std__optional_double_.hpp +82 -0
  850. package/nitrogen/generated/android/c++/JFunc_void_std__optional_std__variant_nitro__NullType__NowPlayingFormat__.hpp +93 -0
  851. package/nitrogen/generated/android/c++/JFunc_void_std__vector_CastReceiver_.hpp +105 -0
  852. package/nitrogen/generated/android/c++/JFunc_void_std__vector_EqualizerBand_.hpp +96 -0
  853. package/nitrogen/generated/android/c++/JHybridCastManagerSpec.cpp +388 -0
  854. package/nitrogen/generated/android/c++/JHybridCastManagerSpec.hpp +84 -0
  855. package/nitrogen/generated/android/c++/JHybridEqualizerSpec.cpp +233 -0
  856. package/nitrogen/generated/android/c++/JHybridEqualizerSpec.hpp +74 -0
  857. package/nitrogen/generated/android/c++/JHybridTrackPlayerSpec.cpp +1052 -0
  858. package/nitrogen/generated/android/c++/JHybridTrackPlayerSpec.hpp +130 -0
  859. package/nitrogen/generated/android/c++/JHybridVisualizerSpec.cpp +84 -0
  860. package/nitrogen/generated/android/c++/JHybridVisualizerSpec.hpp +64 -0
  861. package/nitrogen/generated/android/c++/JLookaheadCacheConfig.hpp +61 -0
  862. package/nitrogen/generated/android/c++/JMediaSearchOrigin.hpp +58 -0
  863. package/nitrogen/generated/android/c++/JMediaSearchQueueLocation.hpp +61 -0
  864. package/nitrogen/generated/android/c++/JMediaSearchReference.hpp +58 -0
  865. package/nitrogen/generated/android/c++/JMediaSearchReleaseDateRange.hpp +61 -0
  866. package/nitrogen/generated/android/c++/JMediaSearchRepeatMode.hpp +61 -0
  867. package/nitrogen/generated/android/c++/JMediaSearchRequest.hpp +126 -0
  868. package/nitrogen/generated/android/c++/JMediaSearchType.hpp +67 -0
  869. package/nitrogen/generated/android/c++/JNowPlayingFormat.hpp +123 -0
  870. package/nitrogen/generated/android/c++/JNowPlayingFormatAndroidExtras.hpp +71 -0
  871. package/nitrogen/generated/android/c++/JNowPlayingFormatIosExtras.hpp +61 -0
  872. package/nitrogen/generated/android/c++/JPitchCorrectionMode.hpp +61 -0
  873. package/nitrogen/generated/android/c++/JPlaybackError.hpp +87 -0
  874. package/nitrogen/generated/android/c++/JPlaybackErrorCode.hpp +88 -0
  875. package/nitrogen/generated/android/c++/JPlaybackMode.hpp +63 -0
  876. package/nitrogen/generated/android/c++/JPlaybackModeKind.hpp +58 -0
  877. package/nitrogen/generated/android/c++/JPlayerConfig.hpp +126 -0
  878. package/nitrogen/generated/android/c++/JPlayerProgress.hpp +65 -0
  879. package/nitrogen/generated/android/c++/JPlayerState.hpp +73 -0
  880. package/nitrogen/generated/android/c++/JRemoteControlOptions.hpp +66 -0
  881. package/nitrogen/generated/android/c++/JRemoteSkipMode.hpp +58 -0
  882. package/nitrogen/generated/android/c++/JRepeatMode.hpp +61 -0
  883. package/nitrogen/generated/android/c++/JReplayGainMode.hpp +61 -0
  884. package/nitrogen/generated/android/c++/JSectionIcon.hpp +91 -0
  885. package/nitrogen/generated/android/c++/JServiceReadyReason.hpp +58 -0
  886. package/nitrogen/generated/android/c++/JShuffleResult.hpp +88 -0
  887. package/nitrogen/generated/android/c++/JSkipCapability.hpp +61 -0
  888. package/nitrogen/generated/android/c++/JSleepTimerState.hpp +69 -0
  889. package/nitrogen/generated/android/c++/JStateChangeReason.hpp +73 -0
  890. package/nitrogen/generated/android/c++/JTrackChangeReason.hpp +73 -0
  891. package/nitrogen/generated/android/c++/JTrackItem.hpp +100 -0
  892. package/nitrogen/generated/android/c++/JTrackSource.hpp +61 -0
  893. package/nitrogen/generated/android/c++/JVariant_NullType_Double.cpp +26 -0
  894. package/nitrogen/generated/android/c++/JVariant_NullType_Double.hpp +69 -0
  895. package/nitrogen/generated/android/c++/JVariant_NullType_NowPlayingFormat.cpp +26 -0
  896. package/nitrogen/generated/android/c++/JVariant_NullType_NowPlayingFormat.hpp +83 -0
  897. package/nitrogen/generated/android/c++/JVariant_NullType_String.cpp +26 -0
  898. package/nitrogen/generated/android/c++/JVariant_NullType_String.hpp +70 -0
  899. package/nitrogen/generated/android/c++/JVisualizerConfig.hpp +65 -0
  900. package/nitrogen/generated/android/c++/JVisualizerErrorReason.hpp +64 -0
  901. package/nitrogen/generated/android/c++/JVisualizerFrame.hpp +67 -0
  902. package/nitrogen/generated/android/c++/JVoiceVocabulary.hpp +98 -0
  903. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/AudioCategoryOptions.kt +61 -0
  904. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/AudioCodec.kt +28 -0
  905. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/AudioContainer.kt +29 -0
  906. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/AudioContentType.kt +23 -0
  907. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/AudioRoute.kt +71 -0
  908. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/AudioRouteKind.kt +34 -0
  909. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/BrowseItem.kt +76 -0
  910. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/BrowseSection.kt +71 -0
  911. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/BrowseSnapshot.kt +56 -0
  912. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/BufferState.kt +25 -0
  913. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/CacheStatus.kt +71 -0
  914. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/CastConfigureOptions.kt +56 -0
  915. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/CastConnectOptions.kt +51 -0
  916. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/CastDeviceKind.kt +27 -0
  917. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/CastDiscoveryState.kt +51 -0
  918. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/CastLocalNetworkPermission.kt +24 -0
  919. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/CastLocalNetworkPermissionEvent.kt +51 -0
  920. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/CastProtocol.kt +26 -0
  921. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/CastReceiver.kt +81 -0
  922. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/CastReceiverCapabilities.kt +61 -0
  923. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/CastRoute.kt +76 -0
  924. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/CastSessionDiedEvent.kt +56 -0
  925. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/CastSessionEndReason.kt +29 -0
  926. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/CastStreamingModel.kt +23 -0
  927. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/EqualizerBand.kt +56 -0
  928. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/EqualizerPreset.kt +61 -0
  929. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/EvictionPolicy.kt +23 -0
  930. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_std__vector_BrowseItem______std__string.kt +80 -0
  931. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_std__vector_TrackItem______MediaSearchRequest.kt +80 -0
  932. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_std__vector_TrackItem______std__string.kt +80 -0
  933. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/Func_void.kt +80 -0
  934. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/Func_void_AudioRoute.kt +80 -0
  935. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/Func_void_BufferState.kt +80 -0
  936. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/Func_void_CacheStatus.kt +80 -0
  937. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/Func_void_CastDiscoveryState.kt +80 -0
  938. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/Func_void_CastLocalNetworkPermissionEvent.kt +80 -0
  939. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/Func_void_CastRoute.kt +80 -0
  940. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/Func_void_CastSessionDiedEvent.kt +80 -0
  941. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/Func_void_PlaybackError.kt +80 -0
  942. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/Func_void_PlayerProgress.kt +80 -0
  943. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/Func_void_PlayerState_StateChangeReason.kt +80 -0
  944. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/Func_void_ServiceReadyReason.kt +80 -0
  945. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/Func_void_SkipCapability.kt +80 -0
  946. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/Func_void_SleepTimerState.kt +80 -0
  947. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/Func_void_VisualizerErrorReason.kt +80 -0
  948. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/Func_void_VisualizerFrame.kt +80 -0
  949. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/Func_void_bool.kt +80 -0
  950. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/Func_void_double_double.kt +80 -0
  951. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/Func_void_std__optional_TrackItem__double_TrackChangeReason_std__optional_double_.kt +80 -0
  952. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/Func_void_std__optional_std__variant_nitro__NullType__NowPlayingFormat__.kt +80 -0
  953. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/Func_void_std__vector_CastReceiver_.kt +80 -0
  954. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/Func_void_std__vector_EqualizerBand_.kt +80 -0
  955. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/HybridCastManagerSpec.kt +169 -0
  956. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/HybridEqualizerSpec.kt +109 -0
  957. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/HybridTrackPlayerSpec.kt +419 -0
  958. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/HybridVisualizerSpec.kt +63 -0
  959. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/LookaheadCacheConfig.kt +56 -0
  960. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/MediaSearchOrigin.kt +23 -0
  961. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/MediaSearchQueueLocation.kt +24 -0
  962. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/MediaSearchReference.kt +23 -0
  963. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/MediaSearchReleaseDateRange.kt +56 -0
  964. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/MediaSearchRepeatMode.kt +24 -0
  965. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/MediaSearchRequest.kt +121 -0
  966. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/MediaSearchType.kt +26 -0
  967. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/NowPlayingFormat.kt +116 -0
  968. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/NowPlayingFormatAndroidExtras.kt +61 -0
  969. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/NowPlayingFormatIosExtras.kt +51 -0
  970. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/PitchCorrectionMode.kt +24 -0
  971. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/PlaybackError.kt +86 -0
  972. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/PlaybackErrorCode.kt +33 -0
  973. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/PlaybackMode.kt +56 -0
  974. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/PlaybackModeKind.kt +23 -0
  975. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/PlayerConfig.kt +111 -0
  976. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/PlayerProgress.kt +61 -0
  977. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/PlayerState.kt +28 -0
  978. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/RemoteControlOptions.kt +61 -0
  979. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/RemoteSkipMode.kt +23 -0
  980. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/RepeatMode.kt +24 -0
  981. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/ReplayGainMode.kt +24 -0
  982. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/SectionIcon.kt +34 -0
  983. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/ServiceReadyReason.kt +23 -0
  984. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/ShuffleResult.kt +61 -0
  985. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/SkipCapability.kt +56 -0
  986. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/SleepTimerState.kt +66 -0
  987. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/StateChangeReason.kt +28 -0
  988. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/TrackChangeReason.kt +28 -0
  989. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/TrackItem.kt +86 -0
  990. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/TrackSource.kt +24 -0
  991. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/Variant_NullType_Double.kt +62 -0
  992. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/Variant_NullType_NowPlayingFormat.kt +62 -0
  993. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/Variant_NullType_String.kt +62 -0
  994. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/VisualizerConfig.kt +61 -0
  995. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/VisualizerErrorReason.kt +25 -0
  996. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/VisualizerFrame.kt +61 -0
  997. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/VoiceVocabulary.kt +56 -0
  998. package/nitrogen/generated/android/kotlin/com/margelo/nitro/queueplayer/queueplayerOnLoad.kt +35 -0
  999. package/nitrogen/generated/android/queueplayer+autolinking.cmake +90 -0
  1000. package/nitrogen/generated/android/queueplayer+autolinking.gradle +27 -0
  1001. package/nitrogen/generated/android/queueplayerOnLoad.cpp +152 -0
  1002. package/nitrogen/generated/android/queueplayerOnLoad.hpp +34 -0
  1003. package/nitrogen/generated/ios/QueuePlayer+autolinking.rb +62 -0
  1004. package/nitrogen/generated/ios/QueuePlayer-Swift-Cxx-Bridge.cpp +343 -0
  1005. package/nitrogen/generated/ios/QueuePlayer-Swift-Cxx-Bridge.hpp +1831 -0
  1006. package/nitrogen/generated/ios/QueuePlayer-Swift-Cxx-Umbrella.hpp +256 -0
  1007. package/nitrogen/generated/ios/QueuePlayerAutolinking.mm +57 -0
  1008. package/nitrogen/generated/ios/QueuePlayerAutolinking.swift +62 -0
  1009. package/nitrogen/generated/ios/c++/HybridCastManagerSpecSwift.cpp +11 -0
  1010. package/nitrogen/generated/ios/c++/HybridCastManagerSpecSwift.hpp +298 -0
  1011. package/nitrogen/generated/ios/c++/HybridEqualizerSpecSwift.cpp +11 -0
  1012. package/nitrogen/generated/ios/c++/HybridEqualizerSpecSwift.hpp +178 -0
  1013. package/nitrogen/generated/ios/c++/HybridTrackPlayerSpecSwift.cpp +11 -0
  1014. package/nitrogen/generated/ios/c++/HybridTrackPlayerSpecSwift.hpp +749 -0
  1015. package/nitrogen/generated/ios/c++/HybridVisualizerSpecSwift.cpp +11 -0
  1016. package/nitrogen/generated/ios/c++/HybridVisualizerSpecSwift.hpp +103 -0
  1017. package/nitrogen/generated/ios/swift/AudioCategoryOptions.swift +78 -0
  1018. package/nitrogen/generated/ios/swift/AudioCodec.swift +60 -0
  1019. package/nitrogen/generated/ios/swift/AudioContainer.swift +64 -0
  1020. package/nitrogen/generated/ios/swift/AudioContentType.swift +40 -0
  1021. package/nitrogen/generated/ios/swift/AudioRoute.swift +49 -0
  1022. package/nitrogen/generated/ios/swift/AudioRouteKind.swift +84 -0
  1023. package/nitrogen/generated/ios/swift/BrowseItem.swift +93 -0
  1024. package/nitrogen/generated/ios/swift/BrowseSection.swift +74 -0
  1025. package/nitrogen/generated/ios/swift/BrowseSnapshot.swift +40 -0
  1026. package/nitrogen/generated/ios/swift/BufferState.swift +48 -0
  1027. package/nitrogen/generated/ios/swift/CacheStatus.swift +55 -0
  1028. package/nitrogen/generated/ios/swift/CastConfigureOptions.swift +47 -0
  1029. package/nitrogen/generated/ios/swift/CastConnectOptions.swift +29 -0
  1030. package/nitrogen/generated/ios/swift/CastDeviceKind.swift +56 -0
  1031. package/nitrogen/generated/ios/swift/CastDiscoveryState.swift +29 -0
  1032. package/nitrogen/generated/ios/swift/CastLocalNetworkPermission.swift +44 -0
  1033. package/nitrogen/generated/ios/swift/CastLocalNetworkPermissionEvent.swift +29 -0
  1034. package/nitrogen/generated/ios/swift/CastProtocol.swift +52 -0
  1035. package/nitrogen/generated/ios/swift/CastReceiver.swift +59 -0
  1036. package/nitrogen/generated/ios/swift/CastReceiverCapabilities.swift +39 -0
  1037. package/nitrogen/generated/ios/swift/CastRoute.swift +54 -0
  1038. package/nitrogen/generated/ios/swift/CastSessionDiedEvent.swift +34 -0
  1039. package/nitrogen/generated/ios/swift/CastSessionEndReason.swift +64 -0
  1040. package/nitrogen/generated/ios/swift/CastStreamingModel.swift +40 -0
  1041. package/nitrogen/generated/ios/swift/EqualizerBand.swift +34 -0
  1042. package/nitrogen/generated/ios/swift/EqualizerPreset.swift +45 -0
  1043. package/nitrogen/generated/ios/swift/EvictionPolicy.swift +40 -0
  1044. package/nitrogen/generated/ios/swift/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_std__vector_BrowseItem______std__string.swift +67 -0
  1045. package/nitrogen/generated/ios/swift/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_std__vector_TrackItem______MediaSearchRequest.swift +67 -0
  1046. package/nitrogen/generated/ios/swift/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_std__vector_TrackItem______std__string.swift +67 -0
  1047. package/nitrogen/generated/ios/swift/Func_void.swift +46 -0
  1048. package/nitrogen/generated/ios/swift/Func_void_AudioRoute.swift +46 -0
  1049. package/nitrogen/generated/ios/swift/Func_void_BufferState.swift +46 -0
  1050. package/nitrogen/generated/ios/swift/Func_void_CacheStatus.swift +46 -0
  1051. package/nitrogen/generated/ios/swift/Func_void_CastDiscoveryState.swift +46 -0
  1052. package/nitrogen/generated/ios/swift/Func_void_CastLocalNetworkPermission.swift +46 -0
  1053. package/nitrogen/generated/ios/swift/Func_void_CastLocalNetworkPermissionEvent.swift +46 -0
  1054. package/nitrogen/generated/ios/swift/Func_void_CastRoute.swift +46 -0
  1055. package/nitrogen/generated/ios/swift/Func_void_CastSessionDiedEvent.swift +46 -0
  1056. package/nitrogen/generated/ios/swift/Func_void_PlaybackError.swift +46 -0
  1057. package/nitrogen/generated/ios/swift/Func_void_PlayerProgress.swift +46 -0
  1058. package/nitrogen/generated/ios/swift/Func_void_PlayerState_StateChangeReason.swift +46 -0
  1059. package/nitrogen/generated/ios/swift/Func_void_ServiceReadyReason.swift +46 -0
  1060. package/nitrogen/generated/ios/swift/Func_void_ShuffleResult.swift +46 -0
  1061. package/nitrogen/generated/ios/swift/Func_void_SkipCapability.swift +46 -0
  1062. package/nitrogen/generated/ios/swift/Func_void_SleepTimerState.swift +46 -0
  1063. package/nitrogen/generated/ios/swift/Func_void_VisualizerErrorReason.swift +46 -0
  1064. package/nitrogen/generated/ios/swift/Func_void_VisualizerFrame.swift +46 -0
  1065. package/nitrogen/generated/ios/swift/Func_void_bool.swift +46 -0
  1066. package/nitrogen/generated/ios/swift/Func_void_double_double.swift +46 -0
  1067. package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +46 -0
  1068. package/nitrogen/generated/ios/swift/Func_void_std__optional_TrackItem__double_TrackChangeReason_std__optional_double_.swift +53 -0
  1069. package/nitrogen/generated/ios/swift/Func_void_std__optional_std__variant_nitro__NullType__NowPlayingFormat__.swift +65 -0
  1070. package/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_Promise_std__vector_BrowseItem___.swift +66 -0
  1071. package/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_Promise_std__vector_TrackItem___.swift +66 -0
  1072. package/nitrogen/generated/ios/swift/Func_void_std__vector_BrowseItem_.swift +46 -0
  1073. package/nitrogen/generated/ios/swift/Func_void_std__vector_CastReceiver_.swift +46 -0
  1074. package/nitrogen/generated/ios/swift/Func_void_std__vector_EqualizerBand_.swift +46 -0
  1075. package/nitrogen/generated/ios/swift/Func_void_std__vector_TrackItem_.swift +46 -0
  1076. package/nitrogen/generated/ios/swift/HybridCastManagerSpec.swift +76 -0
  1077. package/nitrogen/generated/ios/swift/HybridCastManagerSpec_cxx.swift +519 -0
  1078. package/nitrogen/generated/ios/swift/HybridEqualizerSpec.swift +66 -0
  1079. package/nitrogen/generated/ios/swift/HybridEqualizerSpec_cxx.swift +353 -0
  1080. package/nitrogen/generated/ios/swift/HybridTrackPlayerSpec.swift +122 -0
  1081. package/nitrogen/generated/ios/swift/HybridTrackPlayerSpec_cxx.swift +1430 -0
  1082. package/nitrogen/generated/ios/swift/HybridVisualizerSpec.swift +56 -0
  1083. package/nitrogen/generated/ios/swift/HybridVisualizerSpec_cxx.swift +163 -0
  1084. package/nitrogen/generated/ios/swift/LookaheadCacheConfig.swift +34 -0
  1085. package/nitrogen/generated/ios/swift/MediaSearchOrigin.swift +40 -0
  1086. package/nitrogen/generated/ios/swift/MediaSearchQueueLocation.swift +44 -0
  1087. package/nitrogen/generated/ios/swift/MediaSearchReference.swift +40 -0
  1088. package/nitrogen/generated/ios/swift/MediaSearchReleaseDateRange.swift +60 -0
  1089. package/nitrogen/generated/ios/swift/MediaSearchRepeatMode.swift +44 -0
  1090. package/nitrogen/generated/ios/swift/MediaSearchRequest.swift +239 -0
  1091. package/nitrogen/generated/ios/swift/MediaSearchType.swift +52 -0
  1092. package/nitrogen/generated/ios/swift/NowPlayingFormat.swift +394 -0
  1093. package/nitrogen/generated/ios/swift/NowPlayingFormatAndroidExtras.swift +135 -0
  1094. package/nitrogen/generated/ios/swift/NowPlayingFormatIosExtras.swift +61 -0
  1095. package/nitrogen/generated/ios/swift/PitchCorrectionMode.swift +44 -0
  1096. package/nitrogen/generated/ios/swift/PlaybackError.swift +64 -0
  1097. package/nitrogen/generated/ios/swift/PlaybackErrorCode.swift +80 -0
  1098. package/nitrogen/generated/ios/swift/PlaybackMode.swift +47 -0
  1099. package/nitrogen/generated/ios/swift/PlaybackModeKind.swift +40 -0
  1100. package/nitrogen/generated/ios/swift/PlayerConfig.swift +251 -0
  1101. package/nitrogen/generated/ios/swift/PlayerProgress.swift +39 -0
  1102. package/nitrogen/generated/ios/swift/PlayerState.swift +60 -0
  1103. package/nitrogen/generated/ios/swift/RemoteControlOptions.swift +39 -0
  1104. package/nitrogen/generated/ios/swift/RemoteSkipMode.swift +40 -0
  1105. package/nitrogen/generated/ios/swift/RepeatMode.swift +44 -0
  1106. package/nitrogen/generated/ios/swift/ReplayGainMode.swift +44 -0
  1107. package/nitrogen/generated/ios/swift/SectionIcon.swift +84 -0
  1108. package/nitrogen/generated/ios/swift/ServiceReadyReason.swift +40 -0
  1109. package/nitrogen/generated/ios/swift/ShuffleResult.swift +51 -0
  1110. package/nitrogen/generated/ios/swift/SkipCapability.swift +34 -0
  1111. package/nitrogen/generated/ios/swift/SleepTimerState.swift +70 -0
  1112. package/nitrogen/generated/ios/swift/StateChangeReason.swift +60 -0
  1113. package/nitrogen/generated/ios/swift/TrackChangeReason.swift +60 -0
  1114. package/nitrogen/generated/ios/swift/TrackItem.swift +169 -0
  1115. package/nitrogen/generated/ios/swift/TrackSource.swift +44 -0
  1116. package/nitrogen/generated/ios/swift/Variant_NullType_Double.swift +30 -0
  1117. package/nitrogen/generated/ios/swift/Variant_NullType_NowPlayingFormat.swift +30 -0
  1118. package/nitrogen/generated/ios/swift/Variant_NullType_String.swift +30 -0
  1119. package/nitrogen/generated/ios/swift/VisualizerConfig.swift +52 -0
  1120. package/nitrogen/generated/ios/swift/VisualizerErrorReason.swift +48 -0
  1121. package/nitrogen/generated/ios/swift/VisualizerFrame.swift +52 -0
  1122. package/nitrogen/generated/ios/swift/VoiceVocabulary.swift +46 -0
  1123. package/nitrogen/generated/shared/c++/AudioCategoryOptions.hpp +91 -0
  1124. package/nitrogen/generated/shared/c++/AudioCodec.hpp +96 -0
  1125. package/nitrogen/generated/shared/c++/AudioContainer.hpp +100 -0
  1126. package/nitrogen/generated/shared/c++/AudioContentType.hpp +76 -0
  1127. package/nitrogen/generated/shared/c++/AudioRoute.hpp +101 -0
  1128. package/nitrogen/generated/shared/c++/AudioRouteKind.hpp +120 -0
  1129. package/nitrogen/generated/shared/c++/BrowseItem.hpp +104 -0
  1130. package/nitrogen/generated/shared/c++/BrowseSection.hpp +106 -0
  1131. package/nitrogen/generated/shared/c++/BrowseSnapshot.hpp +90 -0
  1132. package/nitrogen/generated/shared/c++/BufferState.hpp +84 -0
  1133. package/nitrogen/generated/shared/c++/CacheStatus.hpp +100 -0
  1134. package/nitrogen/generated/shared/c++/CastConfigureOptions.hpp +88 -0
  1135. package/nitrogen/generated/shared/c++/CastConnectOptions.hpp +83 -0
  1136. package/nitrogen/generated/shared/c++/CastDeviceKind.hpp +92 -0
  1137. package/nitrogen/generated/shared/c++/CastDiscoveryState.hpp +83 -0
  1138. package/nitrogen/generated/shared/c++/CastLocalNetworkPermission.hpp +80 -0
  1139. package/nitrogen/generated/shared/c++/CastLocalNetworkPermissionEvent.hpp +84 -0
  1140. package/nitrogen/generated/shared/c++/CastProtocol.hpp +88 -0
  1141. package/nitrogen/generated/shared/c++/CastReceiver.hpp +115 -0
  1142. package/nitrogen/generated/shared/c++/CastReceiverCapabilities.hpp +92 -0
  1143. package/nitrogen/generated/shared/c++/CastRoute.hpp +111 -0
  1144. package/nitrogen/generated/shared/c++/CastSessionDiedEvent.hpp +89 -0
  1145. package/nitrogen/generated/shared/c++/CastSessionEndReason.hpp +100 -0
  1146. package/nitrogen/generated/shared/c++/CastStreamingModel.hpp +76 -0
  1147. package/nitrogen/generated/shared/c++/EqualizerBand.hpp +87 -0
  1148. package/nitrogen/generated/shared/c++/EqualizerPreset.hpp +92 -0
  1149. package/nitrogen/generated/shared/c++/EvictionPolicy.hpp +76 -0
  1150. package/nitrogen/generated/shared/c++/HybridCastManagerSpec.cpp +42 -0
  1151. package/nitrogen/generated/shared/c++/HybridCastManagerSpec.hpp +115 -0
  1152. package/nitrogen/generated/shared/c++/HybridEqualizerSpec.cpp +32 -0
  1153. package/nitrogen/generated/shared/c++/HybridEqualizerSpec.hpp +81 -0
  1154. package/nitrogen/generated/shared/c++/HybridTrackPlayerSpec.cpp +88 -0
  1155. package/nitrogen/generated/shared/c++/HybridTrackPlayerSpec.hpp +209 -0
  1156. package/nitrogen/generated/shared/c++/HybridVisualizerSpec.cpp +22 -0
  1157. package/nitrogen/generated/shared/c++/HybridVisualizerSpec.hpp +71 -0
  1158. package/nitrogen/generated/shared/c++/LookaheadCacheConfig.hpp +87 -0
  1159. package/nitrogen/generated/shared/c++/MediaSearchOrigin.hpp +76 -0
  1160. package/nitrogen/generated/shared/c++/MediaSearchQueueLocation.hpp +80 -0
  1161. package/nitrogen/generated/shared/c++/MediaSearchReference.hpp +76 -0
  1162. package/nitrogen/generated/shared/c++/MediaSearchReleaseDateRange.hpp +87 -0
  1163. package/nitrogen/generated/shared/c++/MediaSearchRepeatMode.hpp +80 -0
  1164. package/nitrogen/generated/shared/c++/MediaSearchRequest.hpp +157 -0
  1165. package/nitrogen/generated/shared/c++/MediaSearchType.hpp +88 -0
  1166. package/nitrogen/generated/shared/c++/NowPlayingFormat.hpp +149 -0
  1167. package/nitrogen/generated/shared/c++/NowPlayingFormatAndroidExtras.hpp +94 -0
  1168. package/nitrogen/generated/shared/c++/NowPlayingFormatIosExtras.hpp +85 -0
  1169. package/nitrogen/generated/shared/c++/PitchCorrectionMode.hpp +80 -0
  1170. package/nitrogen/generated/shared/c++/PlaybackError.hpp +113 -0
  1171. package/nitrogen/generated/shared/c++/PlaybackErrorCode.hpp +116 -0
  1172. package/nitrogen/generated/shared/c++/PlaybackMode.hpp +89 -0
  1173. package/nitrogen/generated/shared/c++/PlaybackModeKind.hpp +76 -0
  1174. package/nitrogen/generated/shared/c++/PlayerConfig.hpp +141 -0
  1175. package/nitrogen/generated/shared/c++/PlayerProgress.hpp +91 -0
  1176. package/nitrogen/generated/shared/c++/PlayerState.hpp +96 -0
  1177. package/nitrogen/generated/shared/c++/RemoteControlOptions.hpp +92 -0
  1178. package/nitrogen/generated/shared/c++/RemoteSkipMode.hpp +76 -0
  1179. package/nitrogen/generated/shared/c++/RepeatMode.hpp +80 -0
  1180. package/nitrogen/generated/shared/c++/ReplayGainMode.hpp +80 -0
  1181. package/nitrogen/generated/shared/c++/SectionIcon.hpp +120 -0
  1182. package/nitrogen/generated/shared/c++/ServiceReadyReason.hpp +76 -0
  1183. package/nitrogen/generated/shared/c++/ShuffleResult.hpp +94 -0
  1184. package/nitrogen/generated/shared/c++/SkipCapability.hpp +87 -0
  1185. package/nitrogen/generated/shared/c++/SleepTimerState.hpp +95 -0
  1186. package/nitrogen/generated/shared/c++/StateChangeReason.hpp +96 -0
  1187. package/nitrogen/generated/shared/c++/TrackChangeReason.hpp +96 -0
  1188. package/nitrogen/generated/shared/c++/TrackItem.hpp +113 -0
  1189. package/nitrogen/generated/shared/c++/TrackSource.hpp +80 -0
  1190. package/nitrogen/generated/shared/c++/VisualizerConfig.hpp +91 -0
  1191. package/nitrogen/generated/shared/c++/VisualizerErrorReason.hpp +84 -0
  1192. package/nitrogen/generated/shared/c++/VisualizerFrame.hpp +92 -0
  1193. package/nitrogen/generated/shared/c++/VoiceVocabulary.hpp +88 -0
  1194. package/package.json +167 -0
  1195. package/src/CastManager.nitro.ts +206 -0
  1196. package/src/Equalizer.nitro.ts +37 -0
  1197. package/src/TrackPlayer.nitro.ts +667 -0
  1198. package/src/Visualizer.nitro.ts +48 -0
  1199. package/src/cast/index.ts +224 -0
  1200. package/src/clients.ts +50 -0
  1201. package/src/equalizer.ts +86 -0
  1202. package/src/hooks/index.ts +33 -0
  1203. package/src/hooks/useActiveTrack.ts +55 -0
  1204. package/src/hooks/useAudioRoute.ts +69 -0
  1205. package/src/hooks/useBufferState.ts +35 -0
  1206. package/src/hooks/useCanSkip.ts +92 -0
  1207. package/src/hooks/useCast.ts +121 -0
  1208. package/src/hooks/useEqualizer.ts +111 -0
  1209. package/src/hooks/useFullyBuffered.ts +32 -0
  1210. package/src/hooks/useLookaheadCache.ts +54 -0
  1211. package/src/hooks/useNowPlayingFormat.ts +43 -0
  1212. package/src/hooks/usePlaybackState.ts +34 -0
  1213. package/src/hooks/useProgress.ts +36 -0
  1214. package/src/hooks/useSleepTimer.ts +63 -0
  1215. package/src/hooks/useVisualizerState.ts +121 -0
  1216. package/src/index.ts +125 -0
  1217. package/src/playbackService.ts +304 -0
  1218. package/src/types.ts +1387 -0
@@ -0,0 +1,1215 @@
1
+ /**
2
+ * Public value types for react-native-queue-player.
3
+ *
4
+ * All Nitro HybridObject interfaces live in their own `.nitro.ts` files
5
+ * (TrackPlayer, Equalizer, Visualizer, CastManager). The **pure value
6
+ * types** those objects exchange — every `interface` / `type` alias that
7
+ * is *not* a HybridObject — live here, so there is one canonical home for
8
+ * anything a consumer might want to `import` by name.
9
+ *
10
+ * Naming rules:
11
+ * - Interfaces are structural (`TrackItem`, `CastDevice`, …).
12
+ * - String-literal unions are top-level named aliases (`PlayerState`,
13
+ * `CastProtocol`, …), never inline in a field type — Nitrogen's C++
14
+ * codegen requires named enums.
15
+ * - Enum-like types with one real value include a reserved placeholder
16
+ * (e.g. `EvictionPolicy = 'lru' | 'fifo'`) to disambiguate from
17
+ * plain `string` during Nitrogen codegen. See NOTES.md §1.4.
18
+ */
19
+ export interface TrackItem {
20
+ /**
21
+ * Optional consumer-supplied identifier. Echoed back to the consumer
22
+ * via remote-command callbacks + voice-query results so the consumer
23
+ * can map back to their app's track model. NEVER used by this library
24
+ * for any internal identity, lookup, dedup, or equality. Only
25
+ * `track.url` is required + reliable on TrackItem; every other
26
+ * consumer field may be empty / missing / duplicate / colliding.
27
+ * Lib-internal identity is generated per-item at queue-mutation time
28
+ * (e.g. iOS `AVPlayerItem.queueItemId`).
29
+ */
30
+ id?: string;
31
+ /** Remote URL (http/https) or local `file://` URL. Local skips the lookahead cache. */
32
+ url: string;
33
+ title?: string;
34
+ artist?: string;
35
+ album?: string;
36
+ /** Seconds. Optional — native engine derives from the stream when absent. */
37
+ duration?: number;
38
+ /** Cover art URL — `file://` for local, http(s) for remote (custom headers apply). */
39
+ artworkUrl?: string;
40
+ /** Opaque passthrough the consuming app can attach; the module does not read it. */
41
+ extras?: Record<string, string>;
42
+ }
43
+ /**
44
+ * Result returned by `shuffleQueue()`. The consumer app uses this
45
+ * snapshot to immediately reflect the new ordering in its UI.
46
+ *
47
+ * - `tracks`: the post-shuffle queue (Fisher-Yates permutation of the
48
+ * pre-shuffle queue). The same `TrackItem` references the consumer
49
+ * passed in, just reordered.
50
+ * - `currentIndex`: position of the now-current track. Always `0` for
51
+ * non-empty queues; `-1` for an empty queue.
52
+ * - `currentTrack`: convenience accessor for `tracks[currentIndex]`.
53
+ * `undefined` for empty queues.
54
+ */
55
+ export interface ShuffleResult {
56
+ tracks: TrackItem[];
57
+ currentIndex: number;
58
+ currentTrack?: TrackItem;
59
+ }
60
+ export interface PlayerConfig {
61
+ /** Applied on every remote URL fetch: asset load, lookahead download, artwork. */
62
+ httpHeaders?: Record<string, string>;
63
+ /** Overrides the default UA on network requests. */
64
+ userAgent?: string;
65
+ /**
66
+ * Auto-retry attempts on transient errors (TIMEOUT / CONNECTION_LOST /
67
+ * NETWORK_UNREACHABLE / SOURCE_UNREACHABLE / CANNOT_OPEN). Clamped
68
+ * to [0, 5]; default 3. Fatal errors (codec / format / auth) are
69
+ * never retried regardless of this setting.
70
+ */
71
+ autoRetries?: number;
72
+ /**
73
+ * Linear backoff in ms between retry attempts. **Clamped to
74
+ * [200, 5000]; default 500.** The 200 ms floor is unconditional
75
+ * (anti-retry-storm; passing 0 silently clamps up to 200).
76
+ */
77
+ retryBackoffMs?: number;
78
+ /**
79
+ * **iOS: ignored (AVPlayer uses CFNetwork; no public timeout API;
80
+ * system-default ~60s applies).**
81
+ *
82
+ * Android: HTTP read timeout in ms. Applied via
83
+ * `DefaultHttpDataSource.Factory.setReadTimeoutMs`. Clamped to
84
+ * [1000, 60000]; default 30000. The longer-than-Media3-default
85
+ * tolerates slow-spin-up servers; iOS's resilience equivalent is
86
+ * the `autoRetries` + stuck-recovery flow. See NOTES.md §17 for
87
+ * the full asymmetry rationale.
88
+ */
89
+ networkTimeoutMs?: number;
90
+ /**
91
+ * Hints the OS at the playback content type. `'music'` (default)
92
+ * keeps the iOS audio session in `.default` mode + Android
93
+ * `AudioAttributes.CONTENT_TYPE_MUSIC`. `'speech'` switches iOS
94
+ * to `.spokenAudio` mode (per Apple HIG: spoken-audio sessions
95
+ * properly pause under nav-voice instead of ducking) and Android
96
+ * to `CONTENT_TYPE_SPEECH`.
97
+ *
98
+ * **Pinned at the first `configure()` per session.** Changing
99
+ * this on a re-`configure()` requires `destroy()` + new
100
+ * `configure()` to take effect (iOS audio-session reactivation
101
+ * mid-playback risks observable hiccups; the lib opts for
102
+ * predictability over runtime flexibility here).
103
+ */
104
+ audioContentType?: AudioContentType;
105
+ /**
106
+ * Fine-grained AVAudioSession `CategoryOptions` mapping
107
+ * (iOS-effective; Android handles ducking via auto-managed
108
+ * audio focus and ignores these flags). Same pin-at-first-
109
+ * configure rule as `audioContentType`.
110
+ */
111
+ audioCategoryOptions?: AudioCategoryOptions;
112
+ /**
113
+ * Disable the visualization pipeline at engine construction. When
114
+ * `false`, the lib skips the viz-side audio chain entirely:
115
+ * - **iOS**: visualizer subscribers do not request a tap install. With
116
+ * EQ also off, the `MTAudioProcessingTap` is not constructed per
117
+ * `AVPlayerItem`. EQ keeps working independently — toggling
118
+ * `Equalizer.setEnabled(true)` re-installs the tap for EQ use only.
119
+ * - **Android**: the renderers factory is a vanilla
120
+ * `DefaultRenderersFactory`, skipping the
121
+ * `MultiplexingAudioBufferSink` Tee in the AudioSink chain entirely.
122
+ * EQ runs against `audioSessionId` and is unaffected.
123
+ *
124
+ * Calls to `getVisualizer().subscribe(...)` against a player
125
+ * configured with `visualizationEnabled: false` fire
126
+ * `onError('visualization-disabled')` on the next main-thread tick
127
+ * (matches the existing `'hls-source'` error pattern). The dispose
128
+ * returned from `subscribe` is a no-op.
129
+ *
130
+ * Default: `true` (current behaviour preserved for existing
131
+ * consumers).
132
+ *
133
+ * Effect is pin-at-configure on both platforms — per `configure()`'s
134
+ * auto-destroy contract every call rebuilds the engine, so setting
135
+ * this flag in a re-configure call cleanly takes effect.
136
+ */
137
+ visualizationEnabled?: boolean;
138
+ /**
139
+ * Opt-in: cap a `seekTo` (or lock-screen interval skip) target that is past
140
+ * the current buffered position at that buffered edge, so a scrub doesn't
141
+ * overshoot into a re-buffer. A local or fully-buffered track reports
142
+ * `buffered >= target`, so nothing is capped and a seek reaches the end
143
+ * freely; a partly-buffered stream caps at the downloaded edge. Gated only on
144
+ * this flag and `target > bufferedPosition` — not on source scheme or
145
+ * declared duration. Separate from the always-on seekability guard (which
146
+ * no-ops seeks on genuinely unseekable tracks).
147
+ *
148
+ * Default: `false` (targets pass through unclamped).
149
+ */
150
+ clampSeekToBuffered?: boolean;
151
+ /**
152
+ * Disk budget for the lookahead cache, in megabytes. Fixed at `configure()`
153
+ * time and cannot change at runtime — Android's Media3 `SimpleCache` fixes
154
+ * its size at construction (one instance per directory), so both platforms
155
+ * treat this as a configure-only ceiling for a consistent contract. Default
156
+ * `100`. Control actual runtime usage via `setLookaheadCache`'s `enabled` +
157
+ * `lookaheadCount`; read the active ceiling back from
158
+ * `getLookaheadCacheStatus().maxSizeMb`.
159
+ */
160
+ lookaheadCacheMaxSizeMb?: number;
161
+ /**
162
+ * Eviction policy for the lookahead cache. Fixed at `configure()` time like
163
+ * `lookaheadCacheMaxSizeMb` — changing it clears the cache and rebuilds with
164
+ * the new policy (an infrequent operation). Default `'lru'`. See
165
+ * {@link EvictionPolicy}.
166
+ */
167
+ lookaheadCacheEvictionPolicy?: EvictionPolicy;
168
+ /**
169
+ * Interval, in milliseconds, between `onProgress` emissions while the app is
170
+ * in the foreground. Throttles only the JS `onProgress` fan-out — the native
171
+ * sampler keeps running at its 2 Hz tick, so `onPlaybackMilestone` and buffer
172
+ * state stay full-rate and unaffected.
173
+ *
174
+ * `500` is the effective floor: the native tick is 500 ms, so values below it
175
+ * clamp to 500 (there is no faster-than-2Hz foreground rate). Non-positive or
176
+ * non-finite values fall back to the default. No upper ceiling.
177
+ *
178
+ * Default: `500`. Applied at `configure()`; a re-`configure()` updates the
179
+ * live rate with no engine rebuild.
180
+ */
181
+ progressUpdateIntervalMs?: number;
182
+ /**
183
+ * Interval, in milliseconds, between `onProgress` emissions while the app is
184
+ * backgrounded. Lets a consumer drop the progress firehose (and the off-screen
185
+ * re-renders it drives) while the UI is not visible; the lock screen / now-
186
+ * playing surface and `onPlaybackMilestone` are separate native paths and keep
187
+ * updating normally. On return to the foreground the next tick emits
188
+ * immediately so the UI resumes at the live position.
189
+ *
190
+ * Clamped to a `500` ms floor like `progressUpdateIntervalMs`; a large value
191
+ * (e.g. `60000`) is a legitimate near-paused background rate.
192
+ *
193
+ * Default: the effective `progressUpdateIntervalMs` (omitting this ⇒ no
194
+ * background reduction). Applied at `configure()`; a re-`configure()` updates
195
+ * the live rate with no engine rebuild.
196
+ */
197
+ backgroundProgressUpdateIntervalMs?: number;
198
+ }
199
+ /**
200
+ * High-level content classification used by the lib to drive
201
+ * platform audio-session shape (iOS mode + Android
202
+ * `AudioAttributes.contentType`).
203
+ */
204
+ export type AudioContentType = 'music' | 'speech';
205
+ /**
206
+ * Optional AVAudioSession `CategoryOptions` flags. iOS-effective
207
+ * (Android uses auto-ducking via audio focus and ignores these).
208
+ */
209
+ export interface AudioCategoryOptions {
210
+ /**
211
+ * `.duckOthers` — when this app starts playback, other apps'
212
+ * audio ducks (volume-reduced) instead of pausing.
213
+ */
214
+ duckOthers?: boolean;
215
+ /**
216
+ * `.mixWithOthers` — playback mixes with other apps' audio
217
+ * instead of pausing them.
218
+ */
219
+ mixWithOthers?: boolean;
220
+ /**
221
+ * `.interruptSpokenAudioAndMixWithOthers` — interrupts other
222
+ * apps' spoken-audio sessions but mixes with their music
223
+ * sessions. **Default `true` when `audioContentType === 'speech'`,
224
+ * `false` otherwise** (matches Apple's recommendation for
225
+ * podcast / audiobook apps).
226
+ */
227
+ interruptSpokenAudio?: boolean;
228
+ }
229
+ export type PlayerState = 'none' | 'loading' | 'buffering' | 'playing' | 'paused' | 'ended' | 'error';
230
+ /**
231
+ * Discrete buffer state for the current track, derived from the platform's
232
+ * native buffer signals (independent of the 2 Hz progress tick, so a spinner /
233
+ * stall indicator reacts immediately):
234
+ *
235
+ * - `'full'` — enough is buffered to play smoothly from the current position
236
+ * (iOS `playbackLikelyToKeepUp` / `playbackBufferFull`; Android
237
+ * `STATE_READY`). Hide the loading spinner.
238
+ * - `'buffering'` — loading, and playback has **not started yet** for this
239
+ * track (the initial buffer, even when play was requested), or loading while
240
+ * not actively trying to play. This is the expected, non-urgent loading case.
241
+ * - `'stalled'` — playback **had started** and is now rebuffering mid-play
242
+ * (it wants to continue but ran out of data). This is the case where a
243
+ * spinner interrupts audio the user was already hearing.
244
+ * - `'empty'` — nothing is loaded to play (iOS: no current item; Android
245
+ * `STATE_IDLE`).
246
+ *
247
+ * `'full'` describes playback health, not that the whole track is downloaded —
248
+ * for buffered-ahead length in seconds use `PlayerProgress.buffered`.
249
+ */
250
+ export type BufferState = 'empty' | 'buffering' | 'stalled' | 'full';
251
+ /**
252
+ * Playback mode. §4.2 specifies `'gapless' | { crossfade: number }`; Nitrogen
253
+ * can't represent a discriminated union with a string-literal tag (see
254
+ * NOTES.md §1.2), so the API uses a single interface with a `kind` enum
255
+ * field plus optional per-variant payload.
256
+ */
257
+ export type PlaybackModeKind = 'gapless' | 'crossfade';
258
+ export interface PlaybackMode {
259
+ kind: PlaybackModeKind;
260
+ /**
261
+ * Required + only read when `kind === 'crossfade'`. Ignored otherwise.
262
+ *
263
+ * Constraints (enforced at the native boundary — out-of-range or
264
+ * non-quantised values throw); see `crossfadeDurationBounds` for
265
+ * the canonical numbers a stepper UI can render against:
266
+ * - Range: `[1000, 12000]` ms.
267
+ * - Quantisation: must be a multiple of `500` ms (so 1000, 1500,
268
+ * 2000, ..., 12000 — 23 valid values).
269
+ *
270
+ * The engine applies a separate runtime safety clamp to the
271
+ * configured value: when the leading or standby track is shorter
272
+ * than `2 × crossfadeDurationMs`, the engine silently clamps to
273
+ * the longest fade that fits both legs. Consumers see no API
274
+ * surface change; the audio just doesn't try to fade longer than
275
+ * the track has runway for.
276
+ */
277
+ crossfadeDurationMs?: number;
278
+ }
279
+ /**
280
+ * Canonical bounds for `PlaybackMode.crossfadeDurationMs`. Mirrors
281
+ * the native validation constants — consumers building stepper /
282
+ * slider UIs can read from here instead of hardcoding magic numbers.
283
+ */
284
+ export declare const crossfadeDurationBounds: {
285
+ /** Minimum accepted crossfade duration in ms. */
286
+ readonly minMs: 1000;
287
+ /** Maximum accepted crossfade duration in ms. */
288
+ readonly maxMs: 12000;
289
+ /** Quantisation step in ms — values must be multiples of this. */
290
+ readonly stepMs: 500;
291
+ };
292
+ /**
293
+ * Queue repeat behaviour:
294
+ * - `'off'` — play through the queue once and stop at the end.
295
+ * - `'queue'` — loop the whole queue; skip wraps at both ends.
296
+ * - `'track'` — repeat-one: the current track replays on natural end.
297
+ * A user skip still navigates the queue with no wrap (exactly like
298
+ * `'off'`), and repeat-one persists so the newly-current track is the
299
+ * one that loops.
300
+ */
301
+ export type RepeatMode = 'off' | 'queue' | 'track';
302
+ /**
303
+ * How the lock-screen / notification skip controls behave: skip between queue
304
+ * tracks (`'track'`) or jump forward/back within the current track by a fixed
305
+ * interval (`'interval'`).
306
+ */
307
+ export type RemoteSkipMode = 'track' | 'interval';
308
+ /**
309
+ * Lock-screen / notification remote-control configuration. Wrapped in a struct
310
+ * so fields can be added without a breaking change.
311
+ */
312
+ export interface RemoteControlOptions {
313
+ /** Skip controls jump between tracks (`'track'`) or by `±interval` seconds (`'interval'`). Default `'track'`. */
314
+ skipMode: RemoteSkipMode;
315
+ /** Seconds to jump ahead in `'interval'` mode. Default 15. */
316
+ forwardJumpInterval: number;
317
+ /** Seconds to jump back in `'interval'` mode. Default 15. */
318
+ backwardJumpInterval: number;
319
+ }
320
+ /**
321
+ * ReplayGain loudness-normalisation mode.
322
+ *
323
+ * - `'off'`: no gain applied; playback is sample-perfect relative
324
+ * to the source.
325
+ * - `'track'`: read `REPLAYGAIN_TRACK_GAIN` per track. Best for
326
+ * shuffled / mixed playlists — every track plays at roughly the
327
+ * same perceived loudness.
328
+ * - `'album'`: read `REPLAYGAIN_ALBUM_GAIN` per track (preserves
329
+ * the album's intentional cross-track dynamics — e.g. a quiet
330
+ * intro vs a loud climax). Strict — does NOT fall back to track
331
+ * gain when a track has no album tag (RG is simply inactive for
332
+ * that track; `replayGainActive` reports `false`).
333
+ *
334
+ * Auto-mode (lib heuristically picks track-vs-album from queue
335
+ * context) is intentionally NOT supported — the consuming app
336
+ * knows whether the user is playing an album front-to-back vs
337
+ * shuffling a mixed playlist, and should call this setter
338
+ * accordingly.
339
+ */
340
+ export type ReplayGainMode = 'off' | 'track' | 'album';
341
+ /**
342
+ * How pitch behaves when `playbackSpeed != 1.0`:
343
+ * - `none` — no pitch correction; pitch follows rate (the
344
+ * "chipmunk" effect on speed-up, deepening on slow-down).
345
+ * - `voice` — speech-tuned time-stretch; pitch is preserved.
346
+ * Cheapest correct option and the default.
347
+ * - `music` — music-tuned time-stretch that preserves transients
348
+ * (percussion, attacks) on speed change.
349
+ *
350
+ * Auto-bypassed at `playbackSpeed == 1.0` (nothing to stretch).
351
+ */
352
+ export type PitchCorrectionMode = 'none' | 'voice' | 'music';
353
+ export type StateChangeReason = 'user' | 'system' | 'error' | 'interruption' | 'route-change' | 'queue-end' | 'sleep-timer';
354
+ /**
355
+ * Progress snapshot emitted by `onProgress`. Positions in seconds,
356
+ * driven by the native periodic time observer at ~2 Hz. Wrapped in a
357
+ * struct (rather than three positional `number` callback args) so
358
+ * future progress fields can be added without a breaking spec change.
359
+ */
360
+ export interface PlayerProgress {
361
+ /** Seconds from start of the current track. 0 when no track active. */
362
+ position: number;
363
+ /** Seconds. 0 when duration is unknown or no track active. */
364
+ duration: number;
365
+ /** Seconds buffered ahead of `position`. 0 when unknown. */
366
+ buffered: number;
367
+ }
368
+ export type TrackChangeReason = 'user-skip-next' | 'user-skip-previous' | 'user-skip-to-index' | 'auto-advance' | 'queue-replaced' | 'seek'
369
+ /**
370
+ * Crossfade was cancelled mid-fade (pause / stop / audio-focus
371
+ * loss / queue mutation that invalidates the standby leg). Fires
372
+ * with the outgoing leg's `(track, index)` so consumers can
373
+ * revert any UI that flipped to the incoming on the prior
374
+ * `auto-advance` fade-start fire. Crossfade-only.
375
+ */
376
+ | 'crossfade-cancelled';
377
+ /**
378
+ * How the active track is being played:
379
+ * - `'local'` — `track.url` is a `file://` URL.
380
+ * - `'cached'` — `track.url` is `http(s)://` and the lookahead cache holds
381
+ * a complete copy; native playback reads from the local cache file.
382
+ * - `'streaming'` — `track.url` is `http(s)://` and the lookahead cache
383
+ * does NOT have a complete copy; native playback reads from the network
384
+ * (a partial cache may exist, but bytes are still arriving).
385
+ *
386
+ * Classified at currentItem-change time (the moment the new track becomes
387
+ * current). A track that's mid-download surfaces as `'streaming'`; the next
388
+ * track-change re-classifies once the cache has more.
389
+ *
390
+ * `undefined` when there is no active track (empty queue, post-clear, or
391
+ * post-destroy) OR when `track.url` uses a scheme other than `file://` /
392
+ * `http://` / `https://` (e.g. `data:`, `blob:`, custom schemes — the
393
+ * classifier returns `undefined` rather than a misleading default).
394
+ */
395
+ export type TrackSource = 'streaming' | 'local' | 'cached';
396
+ /**
397
+ * Canonical audio codec identifier surfaced by `getNowPlayingFormat()`.
398
+ * Both natives can detect the AAC family (LC / HE / HE-v2 / xHE) but
399
+ * surfacing the profile requires extra parsing — v1 collapses to
400
+ * `'aac'`. Consumers needing the AAC profile read it from the
401
+ * platform-specific extras object's `codecs` field (RFC 6381 string
402
+ * on Android) or off the iOS `formatDescriptions` directly.
403
+ */
404
+ export type AudioCodec = 'aac' | 'mp3' | 'flac' | 'alac' | 'opus' | 'pcm' | 'unknown';
405
+ /**
406
+ * Canonical container identifier. `'mp4'` covers `.m4a`, `.m4b`, `.m4r`,
407
+ * and audio-only `.mp4`. `'hls'` is the playlist (.m3u8) container,
408
+ * not a file format.
409
+ */
410
+ export type AudioContainer = 'mp4' | 'mp3' | 'flac' | 'ogg' | 'wav' | 'aac-adts' | 'hls' | 'unknown';
411
+ /**
412
+ * Snapshot of the currently-playing track's audio format. Surfaced
413
+ * via `getNowPlayingFormat()` (sync getter — null until populated)
414
+ * and `onNowPlayingFormatChange` (event-driven). Refresh on every
415
+ * `onTrackChange` — the snapshot is keyed on whatever AVPlayerItem
416
+ * (iOS) / MediaItem (Android) is currently active.
417
+ *
418
+ * Six fields are reliable on BOTH platforms for both `file://` and
419
+ * `http(s)://` sources. Platform-specific extras live under the
420
+ * optional `ios` / `android` objects so consumers can access richer
421
+ * data when available without forcing cross-platform branching.
422
+ */
423
+ export interface NowPlayingFormat {
424
+ /** Canonical codec identifier. `'unknown'` when detection fails. */
425
+ codec: AudioCodec;
426
+ /**
427
+ * Canonical container identifier. `'unknown'` when not detectable.
428
+ * Container can be inferred independently of codec — e.g. AAC in
429
+ * MP4 vs AAC in ADTS produce the same `codec: 'aac'` but distinct
430
+ * `container` values.
431
+ */
432
+ container: AudioContainer;
433
+ /**
434
+ * Raw sample MIME type from the native layer (iOS-mapped FourCC
435
+ * / Android `Format.sampleMimeType`). E.g. `'audio/mp4a-latm'`,
436
+ * `'audio/mpeg'`, `'audio/flac'`. `null` when not detectable.
437
+ */
438
+ mimeType: string | null;
439
+ /** Sample rate in Hz, or `null` when not detectable. */
440
+ sampleRate: number | null;
441
+ /** Channel count (1 = mono, 2 = stereo, 6 = 5.1, etc.), or `null`. */
442
+ channelCount: number | null;
443
+ /**
444
+ * Average / nominal bitrate in bits-per-second. `null` when not
445
+ * detectable. Reliable for `file://` + progressive HTTP MP3/M4A/FLAC;
446
+ * for HLS, returns the variant's nominal bandwidth from the
447
+ * manifest.
448
+ */
449
+ bitrate: number | null;
450
+ /** Track duration in seconds, or `null` when not yet known. */
451
+ durationSec: number | null;
452
+ /**
453
+ * The active track's `REPLAYGAIN_TRACK_GAIN` value in dB, or
454
+ * `null` if the track has no track-gain tag (or the tag was
455
+ * rejected by the parser, or the container is Opus where
456
+ * `OpusHead.output_gain` is decoder-applied instead).
457
+ *
458
+ * Whether this gain is actually being applied depends on
459
+ * `getReplayGainMode()` — see `replayGainActive`.
460
+ */
461
+ replayGainTrackDb: number | null;
462
+ /**
463
+ * The active track's `REPLAYGAIN_TRACK_PEAK` (linear, [0, ~1.5]),
464
+ * or `null` if no trustworthy track-peak tag is present. When
465
+ * non-null and the active mode applies track gain, the lib
466
+ * auto-clamps the effective gain so `linearGain * peak ≤ 1.0`
467
+ * to prevent clipping.
468
+ */
469
+ replayGainTrackPeak: number | null;
470
+ /**
471
+ * The active track's `REPLAYGAIN_ALBUM_GAIN` value in dB, or
472
+ * `null` if the track has no album-gain tag.
473
+ */
474
+ replayGainAlbumDb: number | null;
475
+ /**
476
+ * The active track's `REPLAYGAIN_ALBUM_PEAK` (linear, [0, ~1.5]),
477
+ * or `null` if no trustworthy album-peak tag is present. Same
478
+ * clip-protection behaviour as `replayGainTrackPeak` when album
479
+ * gain is active.
480
+ */
481
+ replayGainAlbumPeak: number | null;
482
+ /**
483
+ * `true` when ReplayGain is currently being applied to this
484
+ * track: `getReplayGainMode() != 'off'` AND the tag for that
485
+ * exact mode is present on the active track.
486
+ *
487
+ * Strict — `'album'` mode requires `replayGainAlbumDb !== null`;
488
+ * `'track'` mode requires `replayGainTrackDb !== null`. There is
489
+ * no fallback. Use this for a UI indicator (e.g., a "RG" badge
490
+ * shown next to the codec/source labels).
491
+ */
492
+ replayGainActive: boolean;
493
+ /** iOS-specific extras. Absent on Android. */
494
+ ios?: NowPlayingFormatIosExtras;
495
+ /** Android-specific extras. Absent on iOS. */
496
+ android?: NowPlayingFormatAndroidExtras;
497
+ }
498
+ /** iOS-specific NowPlayingFormat fields. */
499
+ export interface NowPlayingFormatIosExtras {
500
+ /** Bits per channel (PCM / lossless paths only; `null` for compressed). */
501
+ bitsPerChannel: number | null;
502
+ }
503
+ /** Android-specific NowPlayingFormat fields. */
504
+ export interface NowPlayingFormatAndroidExtras {
505
+ /** Manifest-declared peak bitrate (HLS / DASH), or `null`. */
506
+ peakBitrate: number | null;
507
+ /** RFC 6381 codecs string (e.g. `'mp4a.40.2'`), or `null`. */
508
+ codecs: string | null;
509
+ /**
510
+ * `Format.pcmEncoding` value (PCM-only paths). `Format.NO_VALUE`
511
+ * (-1) for compressed sources. See Media3's `C.PcmEncoding`
512
+ * constants for the enum semantics.
513
+ */
514
+ pcmEncoding: number | null;
515
+ }
516
+ /**
517
+ * Lib-standardized cross-platform error code vocabulary. Drives consumer
518
+ * branching logic (`if (err.code === 'TIMEOUT') ...`) without per-platform
519
+ * forking. Both iOS NSError + AVError codes and Android Media3
520
+ * `PlaybackException.errorCode` values map onto this enum via the
521
+ * `PlaybackErrorMapping` helper on each platform.
522
+ *
523
+ * **Transient (auto-retry eligible):** TIMEOUT, CONNECTION_LOST,
524
+ * NETWORK_UNREACHABLE, SOURCE_UNREACHABLE, CANNOT_OPEN (when
525
+ * iOS-NSURLError-wrapped — see iOS PlaybackErrorMapping for the
526
+ * two-tier classifier), UNKNOWN.
527
+ *
528
+ * **Fatal (never retried):** HTTP_ERROR, AUTH_ERROR,
529
+ * CLEARTEXT_NOT_PERMITTED, FILE_FORMAT_NOT_RECOGNIZED, DECODER_NOT_FOUND,
530
+ * DECODING_FAILED.
531
+ */
532
+ export type PlaybackErrorCode = 'TIMEOUT' | 'CONNECTION_LOST' | 'NETWORK_UNREACHABLE' | 'HTTP_ERROR' | 'AUTH_ERROR' | 'CLEARTEXT_NOT_PERMITTED' | 'FILE_FORMAT_NOT_RECOGNIZED' | 'DECODER_NOT_FOUND' | 'DECODING_FAILED' | 'SOURCE_UNREACHABLE' | 'CANNOT_OPEN' | 'UNKNOWN';
533
+ export interface PlaybackError {
534
+ /** Lib-standardized cross-platform code. Drives consumer branching. */
535
+ code: PlaybackErrorCode;
536
+ /** Lib-mapped human-readable summary. Consistent across platforms. */
537
+ message: string;
538
+ /** Non-recoverable errors stop playback; recoverable ones let the player retry. */
539
+ fatal: boolean;
540
+ /**
541
+ * Raw native error code: `NSError.code` on iOS (Int), or
542
+ * `PlaybackException.errorCode` on Android (Int — see Media3's
543
+ * `ERROR_CODE_*` constants). For HTTP errors on Android the
544
+ * underlying HTTP status is exposed here directly.
545
+ */
546
+ nativeCode: number;
547
+ /**
548
+ * Native error domain: `"NSURLErrorDomain"` / `"AVFoundationErrorDomain"`
549
+ * / etc. on iOS; `"Media3"` plus the `errorCodeName` (e.g.
550
+ * `"Media3:ERROR_CODE_IO_NETWORK_CONNECTION_TIMEOUT"`) on Android.
551
+ * Empty string when no domain available.
552
+ */
553
+ nativeDomain: string;
554
+ /**
555
+ * Raw native message — typically `localizedDescription` on iOS or
556
+ * `PlaybackException.message` on Android. URL query strings are
557
+ * stripped before emission to avoid leaking auth tokens (e.g.
558
+ * Subsonic `s=…&t=…` salt+token in stream URLs).
559
+ */
560
+ nativeMessage: string;
561
+ /**
562
+ * Lib-generated identifier for the queue item that produced this
563
+ * error. Identifies the specific AVPlayerItem (iOS) / MediaItem
564
+ * (Android) instance — independent of any consumer-supplied
565
+ * track.id. Empty string when the error fired against a
566
+ * not-currently-active item or when the player is between items.
567
+ */
568
+ queueItemId: string;
569
+ /**
570
+ * Source URL of the queue item that produced this error. Lets a
571
+ * consumer correlate an error to the specific track even when
572
+ * AVQueuePlayer chain-advances past the failed item and the
573
+ * active currentTrackIndex has already moved on. URL query
574
+ * strings are NOT stripped — consumer's auth tokens are their
575
+ * own data on the way back to them. Empty string when the error
576
+ * fired against a not-currently-identified item.
577
+ */
578
+ url: string;
579
+ }
580
+ /**
581
+ * Skip-capability snapshot. Emitted by `onSkipCapabilityChange` and
582
+ * mirrored by the `useCanSkip()` hook. Reflects whether there's a
583
+ * track to skip to under the current repeat mode. Under
584
+ * `RepeatMode.track` (repeat-one) skip navigates with no wrap exactly
585
+ * like `RepeatMode.off`, so a flag is `false` at the queue boundary
586
+ * (no skip-next on the last track, no skip-previous on the first).
587
+ *
588
+ * Wrapped in a struct (rather than two separate boolean callback
589
+ * args) so future capability flags can be added without a breaking
590
+ * API change. Also works around a Nitrogen 0.35.4 codegen bug for
591
+ * `(bool, bool) → void` callback signatures specifically.
592
+ */
593
+ export interface SkipCapability {
594
+ /** Reflects queue length + current index + repeat mode (symmetric with `canSkipNext`). */
595
+ canSkipPrevious: boolean;
596
+ /** Reflects queue length + current index + repeat mode. */
597
+ canSkipNext: boolean;
598
+ }
599
+ /**
600
+ * Sleep-timer snapshot — the current state of the native sleep timer, as
601
+ * returned by `getSleepTimer()` and delivered to `onSleepTimerChange`.
602
+ *
603
+ * The timer is wall-clock: `endsAtEpochMs` is a fixed deadline that counts down
604
+ * whether playback is playing or paused. In end-of-track mode the timer instead
605
+ * waits for the current track to finish, so `endsAtEpochMs` is `null` until it
606
+ * converts to a concrete deadline near the track's end.
607
+ *
608
+ * Wrapped in a struct (rather than positional callback args) so fields can be
609
+ * added without a breaking change, and to avoid a Nitrogen 0.35.4 codegen bug
610
+ * for multi-primitive callback signatures.
611
+ */
612
+ export interface SleepTimerState {
613
+ /** `true` while a sleep timer is armed (duration or end-of-track). */
614
+ active: boolean;
615
+ /** Wall-clock epoch (ms) when playback will pause; absent when inactive or awaiting track end. */
616
+ endsAtEpochMs?: number;
617
+ /** Seconds until the timer fires; absent when inactive or awaiting track end. */
618
+ remainingSeconds?: number;
619
+ /**
620
+ * `true` while waiting to pause at the end of the current track. Flips to
621
+ * `false` once the timer converts to a concrete countdown near the track end
622
+ * (at which point `endsAtEpochMs` / `remainingSeconds` become available).
623
+ */
624
+ endOfTrack: boolean;
625
+ }
626
+ /**
627
+ * Eviction policy for the lookahead cache, chosen at `configure()` via
628
+ * {@link PlayerConfig.lookaheadCacheEvictionPolicy}.
629
+ *
630
+ * - `'lru'` (default): evict the least-recently-used track first — recency is
631
+ * bumped when a track is loaded for playback, so replayed tracks are kept.
632
+ * - `'fifo'`: evict the oldest-inserted track first, regardless of replays
633
+ * ("keep the newest-fetched") — suits a forward-only prefetch queue.
634
+ *
635
+ * Construction-fixed like the cache size: changing it at `configure()` clears
636
+ * the cache and rebuilds with the new policy.
637
+ */
638
+ export type EvictionPolicy = 'lru' | 'fifo';
639
+ export interface LookaheadCacheConfig {
640
+ enabled: boolean;
641
+ /** Tracks ahead of the current index to proactively cache. 0 disables lookahead; eviction still runs. */
642
+ lookaheadCount: number;
643
+ }
644
+ export interface CacheStatus {
645
+ enabled: boolean;
646
+ currentSizeMb: number;
647
+ maxSizeMb: number;
648
+ /**
649
+ * Total number of tracks fully downloaded on disk in the cache — the whole
650
+ * size-bounded cache, not scoped to the current queue or the lookahead
651
+ * window. For a usage indicator prefer `currentSizeMb` / `maxSizeMb`.
652
+ */
653
+ tracksFullyCached: number;
654
+ /** Track URLs currently downloading (subset of the lookahead window).
655
+ * Keyed on `track.url` because that's the cache key — `track.id` is
656
+ * consumer-supplied and not used internally.
657
+ */
658
+ currentlyCaching: string[];
659
+ }
660
+ export type MediaSearchType = 'artist' | 'album' | 'song' | 'playlist' | 'genre';
661
+ /**
662
+ * Which voice surface the request came from. Drives consumer's
663
+ * resolver: iOS-only fields (`reference`, `playShuffled`,
664
+ * `playbackRepeatMode`, `resumePlayback`, `playbackSpeed`,
665
+ * `releaseDate`) are only populated when `origin === 'ios-siri'`.
666
+ * The lib never invents an origin; if the request arrived from a
667
+ * source the lib couldn't classify, `origin` is undefined.
668
+ */
669
+ export type MediaSearchOrigin = 'ios-siri' | 'android-assistant';
670
+ /**
671
+ * Apple's `INMediaReference` mapped to a JS enum. Apple's `.unknown`
672
+ * case is mapped to `undefined` (the field is absent rather than
673
+ * carrying a sentinel string).
674
+ *
675
+ * - `'currentlyPlaying'` — request refers to whatever is currently
676
+ * playing (e.g. resume / "more like this" patterns).
677
+ * - `'my'` — request is scoped to the user's library / owned content
678
+ * (any utterance that signals "from my collection", not just the
679
+ * literal word "my").
680
+ */
681
+ export type MediaSearchReference = 'currentlyPlaying' | 'my';
682
+ /**
683
+ * Apple's `INPlaybackRepeatMode` mapped to a JS enum. Apple's
684
+ * `.unknown` case is mapped to `undefined`.
685
+ */
686
+ export type MediaSearchRepeatMode = 'none' | 'one' | 'all';
687
+ /**
688
+ * Apple's `INPlaybackQueueLocation` mapped to a JS enum. Drives
689
+ * "play X next" / "add X to the queue" voice utterances — Siri's
690
+ * NLU parses the queue-position hint and surfaces it here so the
691
+ * consumer's resolver can choose between replacing the queue
692
+ * (`'now'`, the default), inserting after the current track
693
+ * (`'next'`), or appending to the tail (`'later'`). Apple's
694
+ * `.unknown` case is mapped to `undefined`.
695
+ *
696
+ * iOS only — Google Assistant's App Actions schema has no
697
+ * structurally-equivalent slot, so the field is always undefined
698
+ * for `origin === 'android-assistant'` requests.
699
+ */
700
+ export type MediaSearchQueueLocation = 'now' | 'next' | 'later';
701
+ /**
702
+ * Inclusive year range derived from `INMediaSearch.releaseDate`. Both
703
+ * bounds are optional — Siri may surface only one end of the range
704
+ * for queries like "play music from 1997". When both are populated
705
+ * they describe a closed interval (e.g. `{ startYear: 1990, endYear:
706
+ * 1999 }` for "play 90s music").
707
+ */
708
+ export interface MediaSearchReleaseDateRange {
709
+ startYear?: number;
710
+ endYear?: number;
711
+ }
712
+ /**
713
+ * iOS donation payload — the catalog items the consumer wants Siri's
714
+ * NLU to recognise in voice queries. Maps to
715
+ * `INVocabulary.setVocabularyStrings(_:of:)` with
716
+ * `.mediaMusicArtistName` for `artists` and `.mediaPlaylistTitle`
717
+ * for `playlists`. Apple's `INVocabularyStringType` has no case for
718
+ * music album names or song titles; album matching happens at
719
+ * intent-resolution time via the populated `MediaSearchRequest.album`
720
+ * field, so a separate `albums` donation list has no destination in
721
+ * Apple's API and is intentionally omitted.
722
+ *
723
+ * Both lists are required (empty array means "nothing to donate for
724
+ * this taxonomy") — required `string[]` instead of `string[]?` keeps
725
+ * the Nitrogen-generated C++ bridge cleanly typed; `std::optional<
726
+ * std::vector<std::string>>` triggered a Swift C++ interop regression
727
+ * on pre-existing files during a 5.1-time bisect.
728
+ *
729
+ * No-op on Android — Google Assistant has no in-app vocabulary
730
+ * donation API; vocabulary discovery on Android is driven by App
731
+ * Actions (`shortcuts.xml`) + the in-app browse tree. JSDoc in the
732
+ * Hybrid spec documents the asymmetry to consumers.
733
+ */
734
+ export interface VoiceVocabulary {
735
+ artists: string[];
736
+ playlists: string[];
737
+ }
738
+ /**
739
+ * Voice / automotive search request. The wire shape is a single
740
+ * interface with an enum-like `type` field plus per-type optional
741
+ * refinements — Nitrogen disallows discriminated unions with
742
+ * string-literal tags (NOTES.md §1.2), so the variants are
743
+ * encoded by which optional field is populated rather than by
744
+ * separate type members.
745
+ *
746
+ * **Field semantics by `type`** (consumer should populate only
747
+ * the matching field; others should be `undefined`):
748
+ *
749
+ * - `'artist'` — `artist` carries the searched artist name; `query`
750
+ * is the original spoken/typed string.
751
+ * - `'album'` — `album` and (optionally) `artist` qualify the
752
+ * album lookup.
753
+ * - `'song'` — `song` and (optionally) `artist` / `album` qualify
754
+ * the song lookup.
755
+ * - `'playlist'` — `playlist` carries the playlist name.
756
+ * - `'genre'` — `genre` carries the genre name.
757
+ * - `undefined` — generic search; consumer falls back to a
758
+ * best-effort lookup across all media kinds using `query`.
759
+ *
760
+ * Combinations not described above (e.g. `type: 'song'` with a
761
+ * populated `playlist` field) are ambiguous; consumers should
762
+ * ignore mismatched fields rather than reject the request.
763
+ *
764
+ * **Voice-only fields** (`origin`, `reference`, `playShuffled`,
765
+ * `playbackRepeatMode`, `resumePlayback`, `playbackSpeed`,
766
+ * `releaseDate`) are populated when the request arrived through a
767
+ * voice assistant. `origin` is the discriminator. On Android
768
+ * (`origin === 'android-assistant'`) only `genre` is structurally
769
+ * populated by Google's NLU beyond the base fields; the iOS-only
770
+ * fields are always undefined. Consumer's resolver should branch
771
+ * on `origin` before reading them.
772
+ */
773
+ export interface MediaSearchRequest {
774
+ query: string;
775
+ type?: MediaSearchType;
776
+ artist?: string;
777
+ album?: string;
778
+ song?: string;
779
+ playlist?: string;
780
+ /**
781
+ * First element of `INMediaSearch.genreNames` on iOS (lossy by
782
+ * design — multi-genre queries collapse to one), or the parsed
783
+ * genre extra from `MediaSession.Callback.onPlayFromSearch` on
784
+ * Android. Either platform may leave it undefined.
785
+ */
786
+ genre?: string;
787
+ /**
788
+ * Voice-surface discriminator. Undefined when the request didn't
789
+ * arrive through a recognised voice path.
790
+ */
791
+ origin?: MediaSearchOrigin;
792
+ /**
793
+ * Field shape inherited from the legacy `INMediaSearch.reference`
794
+ * model. Not populated by iOS voice today (the App Intents path
795
+ * delivers only `query` + occasional `artist`). Retained for shape
796
+ * stability + future voice surfaces.
797
+ */
798
+ reference?: MediaSearchReference;
799
+ /**
800
+ * Field shape inherited from the legacy `INPlayMediaIntent` model.
801
+ * Not populated by iOS voice today; see `reference` above.
802
+ */
803
+ playShuffled?: boolean;
804
+ /**
805
+ * Field shape inherited from the legacy `INPlayMediaIntent` model.
806
+ * Not populated by iOS voice today; see `reference` above.
807
+ */
808
+ playbackRepeatMode?: MediaSearchRepeatMode;
809
+ /**
810
+ * Field shape inherited from the legacy `INPlayMediaIntent` model.
811
+ * Not populated by iOS voice today; see `reference` above.
812
+ */
813
+ resumePlayback?: boolean;
814
+ /**
815
+ * Field shape inherited from the legacy `INPlayMediaIntent` model.
816
+ * Not populated by iOS voice today; see `reference` above.
817
+ */
818
+ playbackSpeed?: number;
819
+ /**
820
+ * Field shape inherited from the legacy `INMediaSearch.releaseDate`
821
+ * model. Not populated by iOS voice today (the App Intents path has
822
+ * no decade-range slot); see `reference` above.
823
+ */
824
+ releaseDate?: MediaSearchReleaseDateRange;
825
+ /**
826
+ * Field shape inherited from the legacy `INPlayMediaIntent` model.
827
+ * Not populated by iOS voice today; see `reference` above. When set
828
+ * by other surfaces, the resolver branches: `'now'` (default)
829
+ * replaces the queue and starts playback; `'next'` inserts the
830
+ * resolved tracks after the current track without interrupting;
831
+ * `'later'` appends to the tail.
832
+ */
833
+ playbackQueueLocation?: MediaSearchQueueLocation;
834
+ }
835
+ export interface BrowseItem {
836
+ /**
837
+ * Identifier the consumer chooses for this item. Echoed back via
838
+ * `onBrowseRequest(parentId)` for drilldown and `onPlayFromIdRequest(mediaId)`
839
+ * when the user selects a playable item. Lib does not interpret it.
840
+ */
841
+ id: string;
842
+ title: string;
843
+ subtitle?: string;
844
+ /** Local `file://` or remote `https://` URL. Native side loads via the platform image loader. */
845
+ artworkUrl?: string;
846
+ /**
847
+ * True if selecting this item starts playback (calls
848
+ * `onPlayFromIdRequest`). Mutually exclusive with `hasChildren` —
849
+ * neither CarPlay's `CPListItem` nor Android Auto's `MediaItem`
850
+ * cleanly renders a row that is both. Consumers that want a
851
+ * tap-to-play album with an expandable song list should ship two
852
+ * sibling items (the playable album + a browsable "songs" entry).
853
+ */
854
+ playable: boolean;
855
+ /**
856
+ * True if selecting this item drills into a nested list (calls
857
+ * `onBrowseRequest`). Defaults to `false` when omitted. Mutually
858
+ * exclusive with `playable` (see above).
859
+ */
860
+ hasChildren?: boolean;
861
+ }
862
+ /**
863
+ * Reason code for `onServiceReady` — distinguishes the very first
864
+ * service-bind in a JS-process lifetime (`first-bind`) from a later
865
+ * rebind that the lib detected by comparing the platform service
866
+ * instance's identity against the previously-seen one
867
+ * (`service-reborn`).
868
+ *
869
+ * **Android**: the platform foreground service can be killed by the
870
+ * OS (memory pressure, doze, idle-bucket reaper) and re-created on
871
+ * the next bind. The lib's auto-rebind watchdog reconnects and fires
872
+ * `service-reborn`. Consumers typically respond by re-pushing the
873
+ * browse snapshot (the new service instance starts with a fresh
874
+ * `BrowseDataProvider`, so the cached snapshot is gone).
875
+ *
876
+ * **iOS**: no equivalent service-rebirth scenario — apps die fully
877
+ * under memory pressure. The lib accepts the `onServiceReady`
878
+ * registration for API parity but never invokes the callback on
879
+ * iOS; consumers rely on `onCarConnect` for the iOS-side attach
880
+ * signal.
881
+ */
882
+ export type ServiceReadyReason = 'first-bind' | 'service-reborn';
883
+ /**
884
+ * Closed set of section-tab icons the lib knows how to render in a
885
+ * platform-native way. Consumers pick from this enum rather than
886
+ * passing platform-specific symbol names so the icon set stays
887
+ * guard-railed and the lib can swap implementations (SF Symbol on
888
+ * iOS today, Material icon on Android once Android Auto exposes a
889
+ * tab-icon API — currently `androidx/media#646`).
890
+ *
891
+ * String values are stable so consumer apps can persist them.
892
+ */
893
+ export declare enum SectionIcon {
894
+ Home = "home",
895
+ Library = "library",
896
+ Playlists = "playlists",
897
+ Favourites = "favourites",
898
+ Albums = "albums",
899
+ Artists = "artists",
900
+ Songs = "songs",
901
+ Genres = "genres",
902
+ RecentlyPlayed = "recently-played",
903
+ Radio = "radio",
904
+ Search = "search",
905
+ Downloaded = "downloaded",
906
+ Podcasts = "podcasts"
907
+ }
908
+ /**
909
+ * One section in a browse snapshot — a labelled group of items the
910
+ * consumer pre-builds for fast cold-start presentation in CarPlay /
911
+ * Android Auto. Sections become root-level tabs at the top of the
912
+ * automotive UI (Apple Music + Spotify shape — up to 4 tabs on both
913
+ * platforms; over-cap sections are truncated with a one-time warning).
914
+ */
915
+ export interface BrowseSection {
916
+ /** Stable identifier within the snapshot. Used as parentId when the user drills into the section. */
917
+ id: string;
918
+ /** User-facing label (e.g. "Recently Played"). Renders as the tab title. */
919
+ title: string;
920
+ /**
921
+ * Optional tab icon. CarPlay renders the matching SF Symbol on the
922
+ * tab bar; Android Auto does not yet expose a tab-icon API and
923
+ * silently drops the value with an INFO log on first use.
924
+ */
925
+ icon?: SectionIcon;
926
+ /**
927
+ * Optional artwork URL shown on the synthetic root-level row that
928
+ * represents this section in pre-tab-bar CarPlay fallbacks and on
929
+ * any future Android Auto surface that exposes section artwork.
930
+ * Same URL semantics as `BrowseItem.artworkUrl` — `file://` and
931
+ * `http(s)://` are both honoured.
932
+ */
933
+ artworkUrl?: string;
934
+ items: BrowseItem[];
935
+ }
936
+ /**
937
+ * Full pre-computed browse tree pushed by the consumer via
938
+ * `setBrowseSnapshot`. The native automotive surface caches this so
939
+ * cold-start car connections (CarPlay scene attach, Android Auto bind,
940
+ * Google Assistant wake) can render content immediately without a JS
941
+ * bridge round-trip. When the consumer's underlying data changes, push
942
+ * a fresh snapshot; the native side replaces its cache atomically and
943
+ * notifies connected controllers (push semantics — the most-recent
944
+ * `setBrowseSnapshot` call wins).
945
+ *
946
+ * Consumer-shape-agnostic: the lib never reads the contents of a
947
+ * snapshot beyond what's needed to render the platform UI.
948
+ */
949
+ export interface BrowseSnapshot {
950
+ /** Identifier the consumer chooses for the root parent (e.g. 'root'). */
951
+ rootId: string;
952
+ sections: BrowseSection[];
953
+ }
954
+ export interface EqualizerBand {
955
+ frequencyHz: number;
956
+ gainDb: number;
957
+ }
958
+ export interface EqualizerPreset {
959
+ name: string;
960
+ gains: number[];
961
+ /** True for the 16 built-ins, false for user-saved presets. */
962
+ builtin: boolean;
963
+ }
964
+ /**
965
+ * Allowed FFT bin counts. AAC / AVAudioEngine + Android Visualizer both
966
+ * accept any power of 2 from 256 to 2048 in this family; the lib narrows
967
+ * to that set so consumers can't pass an arbitrary number that the
968
+ * native side then has to round or reject. Android Path A may serve a
969
+ * smaller bin count when the device caps below the request — check the
970
+ * frame's actual fft.byteLength at runtime.
971
+ */
972
+ export type VisualizerFftSize = 256 | 512 | 1024 | 2048;
973
+ export interface VisualizerConfig {
974
+ /**
975
+ * FFT bin count. Higher values give finer frequency resolution but
976
+ * increase per-frame compute on both sides of the bridge. 1024 is a
977
+ * sensible default for animated UIs at 60 FPS.
978
+ */
979
+ fftSize: VisualizerFftSize;
980
+ /**
981
+ * Emit interval in milliseconds. Default 16 (~60 FPS). The native
982
+ * processor performs the windowing + FFT + magnitude scaling on the
983
+ * audio render thread once per emit window; values below ~8 ms can
984
+ * starve the audio render budget at fftSize=2048 and are not
985
+ * recommended. The lib accepts any positive integer — bound your
986
+ * own value to ≥8 ms in production code.
987
+ */
988
+ updateIntervalMs: number;
989
+ /**
990
+ * When true, emit raw time-domain Float32 PCM samples alongside the
991
+ * frequency-domain magnitudes. Defaults to false. Opt-in adds one
992
+ * extra ArrayBuffer + memcpy per frame on the native side; consumers
993
+ * that don't need oscilloscope/Lissajous-style waveform rendering
994
+ * should leave this off.
995
+ */
996
+ includeSamples?: boolean;
997
+ }
998
+ export interface VisualizerFrame {
999
+ /**
1000
+ * Float32 frequency-domain magnitudes, length = `fftSize / 2`.
1001
+ * Lowest bin first; magnitudes are unscaled (consumer chooses dB,
1002
+ * normalisation, smoothing).
1003
+ */
1004
+ fft: ArrayBuffer;
1005
+ /**
1006
+ * Float32 raw pre-window time-domain PCM samples, length = `fftSize`.
1007
+ * Present iff the subscribe `config.includeSamples === true`. The
1008
+ * Hann window applied internally for the FFT does NOT touch this
1009
+ * payload — consumers receive the same mono-mixed samples that fed
1010
+ * the FFT, suitable for oscilloscope / Lissajous / waveform displays.
1011
+ *
1012
+ * Samples are post-EQ on iOS (the FFT tap sits inside the Equalizer
1013
+ * chain) and pre-EQ on Android (the Tee sits inside the AudioSink
1014
+ * processor chain, before the OS-level audiofx Equalizer applies).
1015
+ * Consumers comparing visualisations across platforms should account
1016
+ * for this asymmetry — the iOS visualiser shows the EQ-shaped signal
1017
+ * the user hears; the Android one shows the pre-EQ source PCM.
1018
+ */
1019
+ samples?: ArrayBuffer;
1020
+ /** Stream sample rate in Hz (44100, 48000, …). */
1021
+ sampleRate: number;
1022
+ }
1023
+ /**
1024
+ * Why a Visualizer subscription cannot deliver frames. The library
1025
+ * does not request `RECORD_AUDIO` on Android — the FFT reads the
1026
+ * app's own decoded PCM via Media3's TeeAudioProcessor, so denial of
1027
+ * any OS audio-capture permission is irrelevant.
1028
+ *
1029
+ * Currently emitted:
1030
+ * - `hls-source`: iOS only — `MTAudioProcessingTap` does not fire for
1031
+ * `.m3u8` HLS sources, so the FFT tap can't see the audio.
1032
+ *
1033
+ * Reserved (declared but not currently emitted by either platform —
1034
+ * kept in the union so the codegen continues to emit a non-trivial
1035
+ * enum and consumer apps can prepare exhaustive switches that future-
1036
+ * proof against the implementation surfacing them):
1037
+ * - `no-active-track`: would fire on subscribe-before-setQueue.
1038
+ * - `engine-released`: would fire on engine teardown mid-subscription.
1039
+ */
1040
+ export type VisualizerErrorReason = 'hls-source' | 'no-active-track' | 'engine-released' | 'visualization-disabled';
1041
+ /**
1042
+ * Cast protocol family. `local` is the on-device output route (speaker,
1043
+ * headphones, BT — the OS handles routing within this bucket). The
1044
+ * remote protocols (`airplay`, `chromecast`, `dlna`, `sonos`) carry the
1045
+ * lib's cast surface. `dlna` + `sonos` are reserved for future backends;
1046
+ * native implementations advertise actual support via
1047
+ * `CastManager.getSupportedProtocols()`.
1048
+ */
1049
+ export type CastProtocol = 'local' | 'airplay' | 'chromecast' | 'dlna' | 'sonos';
1050
+ /**
1051
+ * How the sender delivers audio to the receiver.
1052
+ *
1053
+ * - `pushPcm`: sender encodes + transmits PCM frames (AirPlay 1/2). Local
1054
+ * playback engine continues to schedule and decode; only the audio sink
1055
+ * swaps. Crossfade engine MUST degrade to gapless under push-PCM (the
1056
+ * wire protocol has no sender-side cross-stream mixing).
1057
+ * - `pullUrl`: receiver fetches a URL the sender supplies (Chromecast,
1058
+ * DLNA, Sonos). Local engine pauses; remote engine takes over scheduling
1059
+ * + transport.
1060
+ */
1061
+ export type CastStreamingModel = 'pushPcm' | 'pullUrl';
1062
+ /** Hint to the picker UI for which icon to show. Strings are stable. */
1063
+ export type CastDeviceKind = 'phone' | 'speaker' | 'tv' | 'display' | 'speakerGroup' | 'unknown';
1064
+ /**
1065
+ * Reason an active cast session ended without an explicit `disconnect()`.
1066
+ * Advisory — the app resumes local playback regardless.
1067
+ */
1068
+ export type CastSessionEndReason = 'userDisconnect' | 'stolen' | 'networkLoss' | 'suspended' | 'ended' | 'feedbackTimeout' | 'authFailed' | 'unknown';
1069
+ /**
1070
+ * iOS Local Network permission state. Android always returns `granted`.
1071
+ */
1072
+ export type CastLocalNetworkPermission = 'undetermined' | 'granted' | 'denied';
1073
+ /**
1074
+ * Receiver capability bag. Drives picker UI decisions without protocol
1075
+ * branching — e.g. show a volume slider iff `supportsRemoteVolume`.
1076
+ */
1077
+ export interface CastReceiverCapabilities {
1078
+ supportsRemoteVolume: boolean;
1079
+ streamingModel: CastStreamingModel;
1080
+ /**
1081
+ * True for AirPlay 2 (PIN/password pair-setup on first connect; persisted
1082
+ * auth key on subsequent connects). False for AirPlay 1 (legacy RSA),
1083
+ * Chromecast, DLNA, Sonos.
1084
+ */
1085
+ requiresPairing: boolean;
1086
+ }
1087
+ /**
1088
+ * A discovered receiver in the local-network device list. Stable id
1089
+ * namespaces by protocol (`"airplay:<mac>"`, `"chromecast:<deviceId>"`)
1090
+ * so the JS layer can de-dupe across discovery refreshes.
1091
+ *
1092
+ * `castProtocol` is named so (not `protocol`) because `protocol` is a
1093
+ * Swift-reserved keyword and Nitrogen's codegen doesn't escape it.
1094
+ * See NOTES.md §1.8.
1095
+ */
1096
+ export interface CastReceiver {
1097
+ id: string;
1098
+ castProtocol: CastProtocol;
1099
+ name: string;
1100
+ iconHint: CastDeviceKind;
1101
+ capabilities: CastReceiverCapabilities;
1102
+ /** `"1"` / `"2"` for AirPlay; empty string when not applicable. */
1103
+ protocolVersion: string;
1104
+ /** Vendor model hint (e.g. `"HomePod"`, `"AppleTV5,3"`); empty if unknown. */
1105
+ modelName: string;
1106
+ }
1107
+ /**
1108
+ * The currently active audio route. `castProtocol === 'local'` means the
1109
+ * OS is routing to the on-device output stack (speaker, headphones, BT,
1110
+ * or system-managed AirPlay on iOS); `receiverId` is empty in that case.
1111
+ */
1112
+ export interface CastRoute {
1113
+ castProtocol: CastProtocol;
1114
+ /** Empty string when `castProtocol === 'local'`. */
1115
+ receiverId: string;
1116
+ name: string;
1117
+ iconHint: CastDeviceKind;
1118
+ capabilities: CastReceiverCapabilities;
1119
+ /** `"1"` / `"2"` for AirPlay; empty string when not applicable. */
1120
+ protocolVersion: string;
1121
+ }
1122
+ export interface CastDiscoveryState {
1123
+ isDiscovering: boolean;
1124
+ }
1125
+ export interface CastSessionDiedEvent {
1126
+ /** Empty string if the session never reached connected state. */
1127
+ receiverId: string;
1128
+ reason: CastSessionEndReason;
1129
+ }
1130
+ export interface CastLocalNetworkPermissionEvent {
1131
+ state: CastLocalNetworkPermission;
1132
+ }
1133
+ /**
1134
+ * Options passed to `CastManager.connect`. AirPlay 1/2 pairing supplies
1135
+ * `password` on the second-phase connect (after the initial `authFailed`
1136
+ * rejection). Chromecast ignores the field.
1137
+ */
1138
+ export interface CastConnectOptions {
1139
+ password: string;
1140
+ }
1141
+ /**
1142
+ * Configuration for {@link CastManager.configure}.
1143
+ *
1144
+ * @property deviceName Name advertised to receivers in the AirPlay RTSP
1145
+ * handshake (`X-Apple-Client-Name`) and shown on approval dialogs /
1146
+ * now-playing. Falls back to the OS device name when empty. No effect on
1147
+ * Chromecast.
1148
+ * @property hideAirPlayComputers Hide AirPlay receivers running on Mac
1149
+ * computers (model `Mac*` / `iMac*`) from discovery. macOS AirPlay
1150
+ * Receiver only accepts Apple senders on the same Apple ID, so it is
1151
+ * un-connectable from this library — surfacing it is a dead picker entry.
1152
+ * Defaults to `true`. Android-only: iOS AirPlay routing is OS-managed, so
1153
+ * the flag is ignored there.
1154
+ */
1155
+ export interface CastConfigureOptions {
1156
+ deviceName: string;
1157
+ hideAirPlayComputers?: boolean;
1158
+ }
1159
+ /**
1160
+ * Active audio output classification. Cross-platform; covers on-device
1161
+ * outputs (phone speaker, BT, wired, USB, HDMI) AND cast targets. Picker
1162
+ * UIs read this to show "currently playing on AirPods" regardless of
1163
+ * whether cast discovery is running.
1164
+ *
1165
+ * - `speaker`: phone built-in loudspeaker.
1166
+ * - `receiver`: phone earpiece (voice-call speaker; rare for music).
1167
+ * - `wired`: 3.5mm / lightning / USB-C analog headphones, dock line-out.
1168
+ * - `usb`: USB DAC / USB-C digital headphones.
1169
+ * - `hdmi`: HDMI / HDMI-ARC / HDMI-eARC.
1170
+ * - `bluetoothA2DP`: classic Bluetooth audio profile.
1171
+ * - `bluetoothLE`: LE Audio / hearing aids / BLE speaker/broadcast.
1172
+ * - `bluetoothHFP`: Bluetooth hands-free profile (SCO).
1173
+ * - `carPlay`: iOS-only; phone is projecting audio via CarPlay.
1174
+ * - `androidAuto`: Android-only; audio routed to an automotive bus
1175
+ * (AOSP `TYPE_BUS`). Phone-projected Android Auto over BT is
1176
+ * indistinguishable from regular A2DP at the OS layer + reports as
1177
+ * `bluetoothA2DP`.
1178
+ * - `airplay`: active AirPlay route (iOS OS-managed; Android lib-managed).
1179
+ * - `chromecast`: active Chromecast session.
1180
+ * - `unknown`: unrecognised output type.
1181
+ */
1182
+ export type AudioRouteKind = 'speaker' | 'receiver' | 'wired' | 'usb' | 'hdmi' | 'bluetoothA2DP' | 'bluetoothLE' | 'bluetoothHFP' | 'carPlay' | 'androidAuto' | 'airplay' | 'chromecast' | 'unknown';
1183
+ /**
1184
+ * Snapshot of the currently active audio output. Read via
1185
+ * `CastManager.getCurrentAudioRoute()`; observed via
1186
+ * `CastManager.onAudioRouteChange()` or the `useAudioRoute()` hook.
1187
+ *
1188
+ * The route is independent of cast discovery state — knowing what BT
1189
+ * headphones the user has connected does not require a cast scan.
1190
+ */
1191
+ export interface AudioRoute {
1192
+ kind: AudioRouteKind;
1193
+ /** User-facing name (e.g. `"AirPods Pro"`, `"Living Room"`, `"Phone speaker"`). */
1194
+ name: string;
1195
+ /**
1196
+ * Stable id when one exists (BT MAC address, cast `receiverId`); empty
1197
+ * string otherwise. Not guaranteed unique across reboots; consumers use
1198
+ * it for picker-row deduplication during a single discovery cycle.
1199
+ *
1200
+ * On Android 12+, BT MAC addresses require `BLUETOOTH_CONNECT` runtime
1201
+ * permission; without it `identifier` is empty for BT devices. Same
1202
+ * permission also gates the user-facing `name`.
1203
+ */
1204
+ identifier: string;
1205
+ /** `true` when audio is going somewhere other than the phone's own speaker. */
1206
+ isExternal: boolean;
1207
+ /**
1208
+ * `true` when the OS handles the route swap (BT, wired, USB, HDMI,
1209
+ * iOS AirPlay). `false` for lib-managed routes (Android AirPlay,
1210
+ * Chromecast on both platforms) — the lib drives the audio sink swap
1211
+ * or remote engine for those.
1212
+ */
1213
+ isSystemManaged: boolean;
1214
+ }
1215
+ //# sourceMappingURL=types.d.ts.map