@smarthome.exchange/integrations 1.0.0 → 2.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 (294) hide show
  1. package/changelog.md +49 -0
  2. package/dist_ts/00_commitinfo_data.js +1 -1
  3. package/dist_ts/core/classes.configstore.d.ts +2 -0
  4. package/dist_ts/core/classes.configstore.js +84 -27
  5. package/dist_ts/core/classes.nativehomeadmission.d.ts +19 -0
  6. package/dist_ts/core/classes.nativehomeadmission.js +84 -0
  7. package/dist_ts/core/classes.nativeintegrationowner.d.ts +79 -0
  8. package/dist_ts/core/classes.nativeintegrationowner.js +269 -0
  9. package/dist_ts/core/index.d.ts +2 -0
  10. package/dist_ts/core/index.js +3 -1
  11. package/dist_ts/core/types.d.ts +14 -0
  12. package/dist_ts/integrations/braviatv/braviatv.classes.client.d.ts +23 -72
  13. package/dist_ts/integrations/braviatv/braviatv.classes.client.js +265 -625
  14. package/dist_ts/integrations/braviatv/braviatv.classes.configflow.d.ts +7 -7
  15. package/dist_ts/integrations/braviatv/braviatv.classes.configflow.js +51 -68
  16. package/dist_ts/integrations/braviatv/braviatv.classes.integration.d.ts +8 -11
  17. package/dist_ts/integrations/braviatv/braviatv.classes.integration.js +186 -135
  18. package/dist_ts/integrations/braviatv/braviatv.discovery.js +12 -11
  19. package/dist_ts/integrations/braviatv/braviatv.mapper.d.ts +6 -14
  20. package/dist_ts/integrations/braviatv/braviatv.mapper.js +37 -131
  21. package/dist_ts/integrations/braviatv/braviatv.types.d.ts +55 -133
  22. package/dist_ts/integrations/braviatv/braviatv.validation.d.ts +7 -0
  23. package/dist_ts/integrations/braviatv/braviatv.validation.js +72 -0
  24. package/dist_ts/integrations/broadlink/broadlink.actions.d.ts +2 -0
  25. package/dist_ts/integrations/broadlink/broadlink.actions.js +36 -0
  26. package/dist_ts/integrations/broadlink/broadlink.classes.client.d.ts +21 -19
  27. package/dist_ts/integrations/broadlink/broadlink.classes.client.js +185 -124
  28. package/dist_ts/integrations/broadlink/broadlink.classes.configflow.d.ts +5 -4
  29. package/dist_ts/integrations/broadlink/broadlink.classes.configflow.js +64 -83
  30. package/dist_ts/integrations/broadlink/broadlink.classes.integration.d.ts +16 -19
  31. package/dist_ts/integrations/broadlink/broadlink.classes.integration.js +114 -59
  32. package/dist_ts/integrations/broadlink/broadlink.mapper.d.ts +3 -2
  33. package/dist_ts/integrations/broadlink/broadlink.mapper.js +2 -1
  34. package/dist_ts/integrations/broadlink/broadlink.selected.mapper.d.ts +10 -0
  35. package/dist_ts/integrations/broadlink/broadlink.selected.mapper.js +41 -0
  36. package/dist_ts/integrations/broadlink/broadlink.types.d.ts +43 -7
  37. package/dist_ts/integrations/broadlink/broadlink.validation.d.ts +7 -0
  38. package/dist_ts/integrations/broadlink/broadlink.validation.js +63 -0
  39. package/dist_ts/integrations/daikin/daikin.classes.client.d.ts +10 -52
  40. package/dist_ts/integrations/daikin/daikin.classes.client.js +55 -614
  41. package/dist_ts/integrations/daikin/daikin.classes.configflow.d.ts +8 -12
  42. package/dist_ts/integrations/daikin/daikin.classes.configflow.js +77 -138
  43. package/dist_ts/integrations/daikin/daikin.classes.integration.d.ts +7 -24
  44. package/dist_ts/integrations/daikin/daikin.classes.integration.js +175 -67
  45. package/dist_ts/integrations/daikin/daikin.discovery.d.ts +11 -24
  46. package/dist_ts/integrations/daikin/daikin.discovery.js +98 -305
  47. package/dist_ts/integrations/daikin/daikin.mapper.d.ts +6 -7
  48. package/dist_ts/integrations/daikin/daikin.mapper.js +95 -155
  49. package/dist_ts/integrations/daikin/daikin.types.d.ts +24 -44
  50. package/dist_ts/integrations/daikin/daikin.types.js +1 -1
  51. package/dist_ts/integrations/daikin/daikin.validation.d.ts +5 -0
  52. package/dist_ts/integrations/daikin/daikin.validation.js +53 -0
  53. package/dist_ts/integrations/denonavr/denonavr.classes.client.d.ts +31 -40
  54. package/dist_ts/integrations/denonavr/denonavr.classes.client.js +149 -404
  55. package/dist_ts/integrations/denonavr/denonavr.classes.configflow.d.ts +7 -2
  56. package/dist_ts/integrations/denonavr/denonavr.classes.configflow.js +44 -36
  57. package/dist_ts/integrations/denonavr/denonavr.classes.integration.d.ts +6 -11
  58. package/dist_ts/integrations/denonavr/denonavr.classes.integration.js +192 -113
  59. package/dist_ts/integrations/denonavr/denonavr.discovery.d.ts +10 -18
  60. package/dist_ts/integrations/denonavr/denonavr.discovery.js +71 -193
  61. package/dist_ts/integrations/denonavr/denonavr.mapper.d.ts +5 -13
  62. package/dist_ts/integrations/denonavr/denonavr.mapper.js +35 -159
  63. package/dist_ts/integrations/denonavr/denonavr.types.d.ts +55 -90
  64. package/dist_ts/integrations/denonavr/denonavr.validation.d.ts +10 -0
  65. package/dist_ts/integrations/denonavr/denonavr.validation.js +86 -0
  66. package/dist_ts/integrations/kodi/kodi.classes.client.d.ts +11 -45
  67. package/dist_ts/integrations/kodi/kodi.classes.client.js +84 -310
  68. package/dist_ts/integrations/kodi/kodi.classes.configflow.d.ts +9 -8
  69. package/dist_ts/integrations/kodi/kodi.classes.configflow.js +53 -48
  70. package/dist_ts/integrations/kodi/kodi.classes.integration.d.ts +11 -11
  71. package/dist_ts/integrations/kodi/kodi.classes.integration.js +114 -171
  72. package/dist_ts/integrations/kodi/kodi.discovery.js +53 -29
  73. package/dist_ts/integrations/kodi/kodi.mapper.d.ts +7 -2
  74. package/dist_ts/integrations/kodi/kodi.mapper.js +48 -10
  75. package/dist_ts/integrations/kodi/kodi.types.d.ts +32 -28
  76. package/dist_ts/integrations/kodi/kodi.validation.d.ts +9 -0
  77. package/dist_ts/integrations/kodi/kodi.validation.js +62 -0
  78. package/dist_ts/integrations/modbus/modbus.classes.client.d.ts +15 -61
  79. package/dist_ts/integrations/modbus/modbus.classes.client.js +117 -776
  80. package/dist_ts/integrations/modbus/modbus.classes.configflow.d.ts +9 -5
  81. package/dist_ts/integrations/modbus/modbus.classes.configflow.js +70 -38
  82. package/dist_ts/integrations/modbus/modbus.classes.integration.d.ts +6 -17
  83. package/dist_ts/integrations/modbus/modbus.classes.integration.js +133 -57
  84. package/dist_ts/integrations/modbus/modbus.discovery.d.ts +5 -8
  85. package/dist_ts/integrations/modbus/modbus.discovery.js +38 -93
  86. package/dist_ts/integrations/modbus/modbus.mapper.d.ts +8 -32
  87. package/dist_ts/integrations/modbus/modbus.mapper.js +71 -431
  88. package/dist_ts/integrations/modbus/modbus.types.d.ts +82 -332
  89. package/dist_ts/integrations/modbus/modbus.validation.d.ts +10 -0
  90. package/dist_ts/integrations/modbus/modbus.validation.js +128 -0
  91. package/dist_ts/integrations/nanoleaf/nanoleaf.classes.client.d.ts +12 -34
  92. package/dist_ts/integrations/nanoleaf/nanoleaf.classes.client.js +143 -231
  93. package/dist_ts/integrations/nanoleaf/nanoleaf.classes.configflow.d.ts +6 -1
  94. package/dist_ts/integrations/nanoleaf/nanoleaf.classes.configflow.js +105 -18
  95. package/dist_ts/integrations/nanoleaf/nanoleaf.classes.integration.d.ts +8 -8
  96. package/dist_ts/integrations/nanoleaf/nanoleaf.classes.integration.js +141 -155
  97. package/dist_ts/integrations/nanoleaf/nanoleaf.credentials.d.ts +9 -0
  98. package/dist_ts/integrations/nanoleaf/nanoleaf.credentials.js +35 -0
  99. package/dist_ts/integrations/nanoleaf/nanoleaf.mapper.d.ts +6 -18
  100. package/dist_ts/integrations/nanoleaf/nanoleaf.mapper.js +45 -220
  101. package/dist_ts/integrations/nanoleaf/nanoleaf.types.d.ts +33 -147
  102. package/dist_ts/integrations/nanoleaf/nanoleaf.validation.d.ts +6 -0
  103. package/dist_ts/integrations/nanoleaf/nanoleaf.validation.js +82 -0
  104. package/dist_ts/integrations/onkyo/onkyo.classes.client.d.ts +15 -20
  105. package/dist_ts/integrations/onkyo/onkyo.classes.client.js +161 -404
  106. package/dist_ts/integrations/onkyo/onkyo.classes.configflow.d.ts +9 -4
  107. package/dist_ts/integrations/onkyo/onkyo.classes.configflow.js +51 -6
  108. package/dist_ts/integrations/onkyo/onkyo.classes.integration.d.ts +22 -6
  109. package/dist_ts/integrations/onkyo/onkyo.classes.integration.js +144 -11
  110. package/dist_ts/integrations/onkyo/onkyo.discovery.d.ts +6 -1
  111. package/dist_ts/integrations/onkyo/onkyo.discovery.js +40 -4
  112. package/dist_ts/integrations/onkyo/onkyo.mapper.d.ts +7 -8
  113. package/dist_ts/integrations/onkyo/onkyo.mapper.js +45 -12
  114. package/dist_ts/integrations/onkyo/onkyo.types.d.ts +58 -8
  115. package/dist_ts/integrations/onkyo/onkyo.types.js +13 -102
  116. package/dist_ts/integrations/onkyo/onkyo.validation.d.ts +16 -0
  117. package/dist_ts/integrations/onkyo/onkyo.validation.js +77 -0
  118. package/dist_ts/integrations/panasonic_viera/panasonic_viera.classes.client.d.ts +25 -25
  119. package/dist_ts/integrations/panasonic_viera/panasonic_viera.classes.client.js +116 -360
  120. package/dist_ts/integrations/panasonic_viera/panasonic_viera.classes.configflow.d.ts +11 -3
  121. package/dist_ts/integrations/panasonic_viera/panasonic_viera.classes.configflow.js +76 -6
  122. package/dist_ts/integrations/panasonic_viera/panasonic_viera.classes.integration.d.ts +26 -4
  123. package/dist_ts/integrations/panasonic_viera/panasonic_viera.classes.integration.js +142 -9
  124. package/dist_ts/integrations/panasonic_viera/panasonic_viera.discovery.d.ts +2 -1
  125. package/dist_ts/integrations/panasonic_viera/panasonic_viera.discovery.js +31 -4
  126. package/dist_ts/integrations/panasonic_viera/panasonic_viera.mapper.d.ts +9 -9
  127. package/dist_ts/integrations/panasonic_viera/panasonic_viera.mapper.js +31 -149
  128. package/dist_ts/integrations/panasonic_viera/panasonic_viera.types.d.ts +51 -11
  129. package/dist_ts/integrations/panasonic_viera/panasonic_viera.types.js +22 -87
  130. package/dist_ts/integrations/panasonic_viera/panasonic_viera.validation.d.ts +6 -0
  131. package/dist_ts/integrations/panasonic_viera/panasonic_viera.validation.js +56 -0
  132. package/dist_ts/integrations/pioneer/pioneer.classes.client.d.ts +31 -16
  133. package/dist_ts/integrations/pioneer/pioneer.classes.client.js +167 -409
  134. package/dist_ts/integrations/pioneer/pioneer.classes.configflow.d.ts +10 -3
  135. package/dist_ts/integrations/pioneer/pioneer.classes.configflow.js +66 -6
  136. package/dist_ts/integrations/pioneer/pioneer.classes.integration.d.ts +13 -5
  137. package/dist_ts/integrations/pioneer/pioneer.classes.integration.js +239 -11
  138. package/dist_ts/integrations/pioneer/pioneer.discovery.d.ts +14 -1
  139. package/dist_ts/integrations/pioneer/pioneer.discovery.js +51 -4
  140. package/dist_ts/integrations/pioneer/pioneer.mapper.d.ts +14 -8
  141. package/dist_ts/integrations/pioneer/pioneer.mapper.js +54 -12
  142. package/dist_ts/integrations/pioneer/pioneer.types.d.ts +79 -12
  143. package/dist_ts/integrations/pioneer/pioneer.types.js +12 -76
  144. package/dist_ts/integrations/pioneer/pioneer.validation.d.ts +10 -0
  145. package/dist_ts/integrations/pioneer/pioneer.validation.js +85 -0
  146. package/dist_ts/integrations/soundtouch/soundtouch.classes.client.d.ts +13 -36
  147. package/dist_ts/integrations/soundtouch/soundtouch.classes.client.js +179 -502
  148. package/dist_ts/integrations/soundtouch/soundtouch.classes.configflow.d.ts +6 -1
  149. package/dist_ts/integrations/soundtouch/soundtouch.classes.configflow.js +50 -40
  150. package/dist_ts/integrations/soundtouch/soundtouch.classes.integration.d.ts +14 -15
  151. package/dist_ts/integrations/soundtouch/soundtouch.classes.integration.js +108 -128
  152. package/dist_ts/integrations/soundtouch/soundtouch.discovery.d.ts +2 -20
  153. package/dist_ts/integrations/soundtouch/soundtouch.discovery.js +23 -113
  154. package/dist_ts/integrations/soundtouch/soundtouch.mapper.d.ts +3 -12
  155. package/dist_ts/integrations/soundtouch/soundtouch.mapper.js +35 -189
  156. package/dist_ts/integrations/soundtouch/soundtouch.types.d.ts +57 -142
  157. package/dist_ts/integrations/soundtouch/soundtouch.types.js +18 -3
  158. package/dist_ts/integrations/soundtouch/soundtouch.validation.d.ts +22 -0
  159. package/dist_ts/integrations/soundtouch/soundtouch.validation.js +65 -0
  160. package/dist_ts/integrations/wiz/index.d.ts +1 -0
  161. package/dist_ts/integrations/wiz/index.js +2 -1
  162. package/dist_ts/integrations/wiz/wiz.classes.client.d.ts +14 -28
  163. package/dist_ts/integrations/wiz/wiz.classes.client.js +93 -229
  164. package/dist_ts/integrations/wiz/wiz.classes.configflow.d.ts +6 -4
  165. package/dist_ts/integrations/wiz/wiz.classes.configflow.js +38 -67
  166. package/dist_ts/integrations/wiz/wiz.classes.integration.d.ts +10 -21
  167. package/dist_ts/integrations/wiz/wiz.classes.integration.js +204 -44
  168. package/dist_ts/integrations/wiz/wiz.discovery.d.ts +10 -31
  169. package/dist_ts/integrations/wiz/wiz.discovery.js +48 -249
  170. package/dist_ts/integrations/wiz/wiz.mapper.d.ts +7 -51
  171. package/dist_ts/integrations/wiz/wiz.mapper.js +82 -668
  172. package/dist_ts/integrations/wiz/wiz.types.d.ts +34 -208
  173. package/dist_ts/integrations/wiz/wiz.validation.d.ts +8 -0
  174. package/dist_ts/integrations/wiz/wiz.validation.js +72 -0
  175. package/dist_ts/integrations/yamaha/index.d.ts +1 -0
  176. package/dist_ts/integrations/yamaha/index.js +2 -1
  177. package/dist_ts/integrations/yamaha/yamaha.classes.client.d.ts +30 -4
  178. package/dist_ts/integrations/yamaha/yamaha.classes.client.js +162 -6
  179. package/dist_ts/integrations/yamaha/yamaha.classes.configflow.d.ts +10 -3
  180. package/dist_ts/integrations/yamaha/yamaha.classes.configflow.js +106 -6
  181. package/dist_ts/integrations/yamaha/yamaha.classes.integration.d.ts +22 -4
  182. package/dist_ts/integrations/yamaha/yamaha.classes.integration.js +243 -8
  183. package/dist_ts/integrations/yamaha/yamaha.discovery.d.ts +13 -1
  184. package/dist_ts/integrations/yamaha/yamaha.discovery.js +57 -4
  185. package/dist_ts/integrations/yamaha/yamaha.mapper.d.ts +16 -8
  186. package/dist_ts/integrations/yamaha/yamaha.mapper.js +58 -12
  187. package/dist_ts/integrations/yamaha/yamaha.types.d.ts +73 -6
  188. package/dist_ts/integrations/yamaha/yamaha.types.js +8 -94
  189. package/dist_ts/integrations/yamaha/yamaha.validation.d.ts +12 -0
  190. package/dist_ts/integrations/yamaha/yamaha.validation.js +89 -0
  191. package/package.json +3 -3
  192. package/readme.md +514 -2
  193. package/ts/00_commitinfo_data.ts +1 -1
  194. package/ts/core/classes.configstore.ts +84 -27
  195. package/ts/core/classes.nativehomeadmission.ts +96 -0
  196. package/ts/core/classes.nativeintegrationowner.ts +297 -0
  197. package/ts/core/index.ts +2 -0
  198. package/ts/core/types.ts +16 -0
  199. package/ts/integrations/braviatv/braviatv.classes.client.ts +245 -709
  200. package/ts/integrations/braviatv/braviatv.classes.configflow.ts +47 -76
  201. package/ts/integrations/braviatv/braviatv.classes.integration.ts +167 -147
  202. package/ts/integrations/braviatv/braviatv.discovery.ts +11 -10
  203. package/ts/integrations/braviatv/braviatv.mapper.ts +39 -142
  204. package/ts/integrations/braviatv/braviatv.types.ts +53 -173
  205. package/ts/integrations/braviatv/braviatv.validation.ts +68 -0
  206. package/ts/integrations/broadlink/broadlink.actions.ts +31 -0
  207. package/ts/integrations/broadlink/broadlink.classes.client.ts +170 -144
  208. package/ts/integrations/broadlink/broadlink.classes.configflow.ts +59 -89
  209. package/ts/integrations/broadlink/broadlink.classes.integration.ts +110 -64
  210. package/ts/integrations/broadlink/broadlink.mapper.ts +5 -4
  211. package/ts/integrations/broadlink/broadlink.selected.mapper.ts +46 -0
  212. package/ts/integrations/broadlink/broadlink.types.ts +48 -8
  213. package/ts/integrations/broadlink/broadlink.validation.ts +66 -0
  214. package/ts/integrations/daikin/daikin.classes.client.ts +52 -661
  215. package/ts/integrations/daikin/daikin.classes.configflow.ts +72 -152
  216. package/ts/integrations/daikin/daikin.classes.integration.ts +166 -71
  217. package/ts/integrations/daikin/daikin.discovery.ts +94 -346
  218. package/ts/integrations/daikin/daikin.mapper.ts +83 -166
  219. package/ts/integrations/daikin/daikin.types.ts +27 -48
  220. package/ts/integrations/daikin/daikin.validation.ts +51 -0
  221. package/ts/integrations/daikin/readme.md +83 -0
  222. package/ts/integrations/denonavr/denonavr.classes.client.ts +132 -421
  223. package/ts/integrations/denonavr/denonavr.classes.configflow.ts +44 -37
  224. package/ts/integrations/denonavr/denonavr.classes.integration.ts +171 -117
  225. package/ts/integrations/denonavr/denonavr.discovery.ts +67 -220
  226. package/ts/integrations/denonavr/denonavr.mapper.ts +36 -182
  227. package/ts/integrations/denonavr/denonavr.types.ts +48 -111
  228. package/ts/integrations/denonavr/denonavr.validation.ts +87 -0
  229. package/ts/integrations/kodi/kodi.classes.client.ts +72 -352
  230. package/ts/integrations/kodi/kodi.classes.configflow.ts +52 -55
  231. package/ts/integrations/kodi/kodi.classes.integration.ts +97 -178
  232. package/ts/integrations/kodi/kodi.discovery.ts +49 -28
  233. package/ts/integrations/kodi/kodi.mapper.ts +52 -10
  234. package/ts/integrations/kodi/kodi.types.ts +33 -58
  235. package/ts/integrations/kodi/kodi.validation.ts +60 -0
  236. package/ts/integrations/modbus/modbus.classes.client.ts +100 -842
  237. package/ts/integrations/modbus/modbus.classes.configflow.ts +70 -41
  238. package/ts/integrations/modbus/modbus.classes.integration.ts +115 -60
  239. package/ts/integrations/modbus/modbus.discovery.ts +38 -106
  240. package/ts/integrations/modbus/modbus.mapper.ts +64 -467
  241. package/ts/integrations/modbus/modbus.types.ts +64 -381
  242. package/ts/integrations/modbus/modbus.validation.ts +119 -0
  243. package/ts/integrations/nanoleaf/nanoleaf.classes.client.ts +115 -249
  244. package/ts/integrations/nanoleaf/nanoleaf.classes.configflow.ts +90 -19
  245. package/ts/integrations/nanoleaf/nanoleaf.classes.integration.ts +130 -181
  246. package/ts/integrations/nanoleaf/nanoleaf.credentials.ts +39 -0
  247. package/ts/integrations/nanoleaf/nanoleaf.mapper.ts +47 -260
  248. package/ts/integrations/nanoleaf/nanoleaf.types.ts +29 -147
  249. package/ts/integrations/nanoleaf/nanoleaf.validation.ts +77 -0
  250. package/ts/integrations/onkyo/onkyo.classes.client.ts +148 -457
  251. package/ts/integrations/onkyo/onkyo.classes.configflow.ts +52 -6
  252. package/ts/integrations/onkyo/onkyo.classes.integration.ts +121 -12
  253. package/ts/integrations/onkyo/onkyo.discovery.ts +41 -3
  254. package/ts/integrations/onkyo/onkyo.mapper.ts +46 -19
  255. package/ts/integrations/onkyo/onkyo.types.ts +55 -110
  256. package/ts/integrations/onkyo/onkyo.validation.ts +85 -0
  257. package/ts/integrations/onkyo/readme.md +126 -0
  258. package/ts/integrations/panasonic_viera/panasonic_viera.classes.client.ts +101 -398
  259. package/ts/integrations/panasonic_viera/panasonic_viera.classes.configflow.ts +69 -5
  260. package/ts/integrations/panasonic_viera/panasonic_viera.classes.integration.ts +141 -9
  261. package/ts/integrations/panasonic_viera/panasonic_viera.discovery.ts +32 -3
  262. package/ts/integrations/panasonic_viera/panasonic_viera.mapper.ts +34 -161
  263. package/ts/integrations/panasonic_viera/panasonic_viera.types.ts +52 -96
  264. package/ts/integrations/panasonic_viera/panasonic_viera.validation.ts +56 -0
  265. package/ts/integrations/pioneer/pioneer.classes.client.ts +132 -428
  266. package/ts/integrations/pioneer/pioneer.classes.configflow.ts +67 -5
  267. package/ts/integrations/pioneer/pioneer.classes.integration.ts +225 -11
  268. package/ts/integrations/pioneer/pioneer.discovery.ts +45 -3
  269. package/ts/integrations/pioneer/pioneer.mapper.ts +57 -13
  270. package/ts/integrations/pioneer/pioneer.types.ts +87 -85
  271. package/ts/integrations/pioneer/pioneer.validation.ts +84 -0
  272. package/ts/integrations/soundtouch/soundtouch.classes.client.ts +152 -571
  273. package/ts/integrations/soundtouch/soundtouch.classes.configflow.ts +47 -42
  274. package/ts/integrations/soundtouch/soundtouch.classes.integration.ts +95 -150
  275. package/ts/integrations/soundtouch/soundtouch.discovery.ts +21 -133
  276. package/ts/integrations/soundtouch/soundtouch.mapper.ts +36 -207
  277. package/ts/integrations/soundtouch/soundtouch.types.ts +50 -195
  278. package/ts/integrations/soundtouch/soundtouch.validation.ts +60 -0
  279. package/ts/integrations/wiz/index.ts +1 -0
  280. package/ts/integrations/wiz/wiz.classes.client.ts +84 -254
  281. package/ts/integrations/wiz/wiz.classes.configflow.ts +39 -70
  282. package/ts/integrations/wiz/wiz.classes.integration.ts +189 -45
  283. package/ts/integrations/wiz/wiz.discovery.ts +48 -291
  284. package/ts/integrations/wiz/wiz.mapper.ts +81 -754
  285. package/ts/integrations/wiz/wiz.types.ts +24 -224
  286. package/ts/integrations/wiz/wiz.validation.ts +73 -0
  287. package/ts/integrations/yamaha/index.ts +1 -0
  288. package/ts/integrations/yamaha/yamaha.classes.client.ts +150 -6
  289. package/ts/integrations/yamaha/yamaha.classes.configflow.ts +100 -5
  290. package/ts/integrations/yamaha/yamaha.classes.integration.ts +236 -8
  291. package/ts/integrations/yamaha/yamaha.discovery.ts +52 -3
  292. package/ts/integrations/yamaha/yamaha.mapper.ts +65 -13
  293. package/ts/integrations/yamaha/yamaha.types.ts +77 -97
  294. package/ts/integrations/yamaha/yamaha.validation.ts +86 -0
@@ -1,20 +1,87 @@
1
- import type { ISimpleLocalConfig, ISimpleLocalIntegrationProfile, ISimpleLocalSnapshot, TSimpleLocalRawData } from '../../core/index.js';
1
+ import type { ISimpleLocalIntegrationProfile, ISimpleLocalSnapshot, TSimpleLocalRawData } from '../../core/classes.simplelocalintegration.js';
2
2
  export declare const pioneerDomain = "pioneer";
3
3
  export declare const pioneerDefaultName = "Pioneer";
4
4
  export declare const pioneerDefaultPort = 23;
5
5
  export declare const pioneerMaxVolume = 185;
6
- export declare const pioneerMaxSourceNumbers = 60;
7
- export type TPioneerRawData = TSimpleLocalRawData;
8
- export interface IPioneerSnapshot extends ISimpleLocalSnapshot {
9
- }
10
- export interface IPioneerConfig extends ISimpleLocalConfig {
11
- url?: string;
12
- macAddress?: string;
13
- deviceId?: string;
14
- sources?: Record<string, string>;
15
- sourceScanLimit?: number;
16
- commandTimeoutMs?: number;
6
+ export type TPioneerModel = 'SC-95';
7
+ export interface IPioneerConfig {
8
+ homeId: string;
9
+ host: string;
10
+ descriptionUrl: string;
11
+ expectedUdn: string;
12
+ model: TPioneerModel;
13
+ allowUnencryptedLan: true;
14
+ maximumVolumeRaw: number;
15
+ name?: string;
16
+ port?: number;
17
+ timeoutMs?: number;
18
+ maxPendingOperations?: number;
19
+ maxDescriptionBytes?: number;
20
+ maxFrameBytes?: number;
17
21
  }
18
22
  export interface IHomeAssistantPioneerConfig extends IPioneerConfig {
19
23
  }
24
+ export interface IPioneerIdentity {
25
+ readonly udn: string;
26
+ readonly model: TPioneerModel;
27
+ readonly manufacturer: 'Pioneer';
28
+ readonly reportedManufacturer: string;
29
+ readonly name: string;
30
+ readonly serialNumber?: string;
31
+ readonly source: 'selected-upnp-description';
32
+ readonly trust: 'unauthenticated-lan';
33
+ readonly observedAt: string;
34
+ }
35
+ export interface IPioneerSnapshot {
36
+ readonly homeId: string;
37
+ readonly host: string;
38
+ readonly port: number;
39
+ readonly name: string;
40
+ readonly identity: IPioneerIdentity;
41
+ readonly power: boolean;
42
+ readonly muted: boolean;
43
+ readonly volumeRaw: number;
44
+ readonly inputId: string;
45
+ readonly observedInputs: readonly string[];
46
+ readonly maximumVolumeRaw: number;
47
+ readonly observedAt: string;
48
+ }
49
+ export type TPioneerControl = {
50
+ feature: 'power';
51
+ value: boolean;
52
+ } | {
53
+ feature: 'muted';
54
+ value: boolean;
55
+ } | {
56
+ feature: 'volume_raw';
57
+ value: number;
58
+ } | {
59
+ feature: 'input';
60
+ value: string;
61
+ };
62
+ export interface IPioneerEffectResult {
63
+ readonly dispatch: 'written';
64
+ readonly outcome: 'observed-target' | 'indeterminate';
65
+ readonly commandAcknowledged: false;
66
+ readonly causalityConfirmed: false;
67
+ readonly snapshot: IPioneerSnapshot;
68
+ }
69
+ export interface IPioneerManualEntry {
70
+ host?: string;
71
+ descriptionUrl?: string;
72
+ expectedUdn?: string;
73
+ id?: string;
74
+ name?: string;
75
+ manufacturer?: string;
76
+ model?: string;
77
+ metadata?: Record<string, unknown>;
78
+ }
79
+ export interface IPioneerOfflineConfig {
80
+ name?: string;
81
+ uniqueId?: string;
82
+ metadata?: Record<string, unknown>;
83
+ }
84
+ export type TPioneerRawData = TSimpleLocalRawData;
85
+ export interface IPioneerOfflineSnapshot extends ISimpleLocalSnapshot {
86
+ }
20
87
  export declare const pioneerProfile: ISimpleLocalIntegrationProfile;
@@ -1,83 +1,19 @@
1
- export const pioneerDomain = "pioneer";
2
- export const pioneerDefaultName = "Pioneer";
1
+ export const pioneerDomain = 'pioneer';
2
+ export const pioneerDefaultName = 'Pioneer';
3
3
  export const pioneerDefaultPort = 23;
4
4
  export const pioneerMaxVolume = 185;
5
- export const pioneerMaxSourceNumbers = 60;
6
5
  export const pioneerProfile = {
7
- domain: pioneerDomain,
8
- displayName: "Pioneer",
9
- manufacturer: "Pioneer",
10
- model: "Pioneer local integration",
11
- defaultName: pioneerDefaultName,
12
- defaultPort: pioneerDefaultPort,
13
- defaultProtocol: 'telnet',
14
- status: "control-runtime",
15
- platforms: [
16
- "media_player",
17
- ],
18
- serviceDomains: [
19
- "media_player",
20
- ],
21
- controlServices: [
22
- "select_source",
23
- "set_volume_level",
24
- "turn_off",
25
- "turn_on",
26
- "volume_mute",
27
- "volume_down",
28
- "volume_up",
29
- ],
30
- discoverySources: [
31
- 'manual',
32
- 'custom',
33
- ],
34
- discoveryKeywords: [
35
- "pioneer",
36
- "Pioneer",
37
- ],
6
+ domain: pioneerDomain, displayName: 'Pioneer selected SC-95 receiver', manufacturer: 'Pioneer', model: 'SC-95',
7
+ defaultName: pioneerDefaultName, defaultPort: pioneerDefaultPort, defaultProtocol: 'tcp', status: 'control-runtime',
8
+ platforms: ['media_player'], serviceDomains: ['media_player'],
9
+ controlServices: ['turn_on', 'turn_off', 'volume_mute', 'set_volume_raw', 'select_source'], discoverySources: ['manual'],
10
+ discoveryKeywords: ['pioneer'],
38
11
  metadata: {
39
- "source": "home-assistant/core",
40
- "upstreamPath": "homeassistant/components/pioneer",
41
- "upstreamDomain": "pioneer",
42
- "iotClass": "local_polling",
43
- "qualityScale": "legacy",
44
- "configFlow": false,
45
- "requirements": [],
46
- "documentation": "https://www.home-assistant.io/integrations/pioneer",
47
- "runtime": {
48
- "type": "control-runtime",
49
- "services": [
50
- "snapshot",
51
- "status",
52
- "refresh",
53
- "select_source",
54
- "set_volume_level",
55
- "turn_off",
56
- "turn_on",
57
- "volume_mute",
58
- "volume_down",
59
- "volume_up",
60
- ],
61
- "platforms": [
62
- "media_player",
63
- ],
64
- "controls": "native Pioneer telnet commands for power, mute, source, and volume; injected executors remain supported",
65
- },
66
- "localApi": {
67
- "implemented": [
68
- "native Pioneer AVR Telnet/TCP polling on port 23 using ?P, ?V, ?M, ?RGBxx, and ?F",
69
- "native Pioneer AVR Telnet/TCP control using PO, PF, VU, VD, xxxVL, MO, MF, and xxFN",
70
- "manual local setup for Pioneer endpoints, snapshots, rawData, snapshotProvider, and injected native clients",
71
- "runtime mapping for Pioneer device snapshots and Home Assistant platform metadata",
72
- "safe command delegation to injected client.execute or commandExecutor",
73
- ],
74
- "explicitUnsupported": [
75
- "Pioneer pairing, subscriptions, and event streams because the Home Assistant source only documents polling Telnet commands",
76
- "media_play and media_pause because the Home Assistant Pioneer source declares features but exposes no concrete Telnet command implementation",
77
- "Home Assistant entity registry migrations and repair flows",
78
- "claiming write success for commands outside the documented Pioneer Telnet command set without injected client.execute or commandExecutor",
79
- ],
12
+ source: 'native-typescript', upstreamDomain: pioneerDomain, upstreamPath: 'homeassistant/components/pioneer',
13
+ localApi: {
14
+ implemented: ['selected SC-95/CUXJ main-zone protocol', 'exact home-scoped admission', 'absolute raw integer volume', 'receiver-observed physical input selection'],
15
+ explicitUnsupported: ['injected clients or executors', 'native runtime snapshots', 'arbitrary ASCII commands', 'toggles or relative controls', 'dB or percentage volume conversion', 'advanced zones or media playback', 'automatic retry or reconnect'],
80
16
  },
81
17
  },
82
18
  };
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlvbmVlci50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL2ludGVncmF0aW9ucy9waW9uZWVyL3Bpb25lZXIudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQztBQUN2QyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxTQUFTLENBQUM7QUFDNUMsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsRUFBRSxDQUFDO0FBQ3JDLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLEdBQUcsQ0FBQztBQUNwQyxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxFQUFFLENBQUM7QUFjMUMsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFtQztJQUM1RCxNQUFNLEVBQUUsYUFBYTtJQUNyQixXQUFXLEVBQUUsU0FBUztJQUN0QixZQUFZLEVBQUUsU0FBUztJQUN2QixLQUFLLEVBQUUsMkJBQTJCO0lBQ2xDLFdBQVcsRUFBRSxrQkFBa0I7SUFDL0IsV0FBVyxFQUFFLGtCQUFrQjtJQUMvQixlQUFlLEVBQUUsUUFBUTtJQUN6QixNQUFNLEVBQUUsaUJBQWlCO0lBQ3pCLFNBQVMsRUFBRTtRQUNULGNBQWM7S0FDZjtJQUNELGNBQWMsRUFBRTtRQUNkLGNBQWM7S0FDZjtJQUNELGVBQWUsRUFBRTtRQUNmLGVBQWU7UUFDZixrQkFBa0I7UUFDbEIsVUFBVTtRQUNWLFNBQVM7UUFDVCxhQUFhO1FBQ2IsYUFBYTtRQUNiLFdBQVc7S0FDWjtJQUNELGdCQUFnQixFQUFFO1FBQ2hCLFFBQVE7UUFDUixRQUFRO0tBQ1Q7SUFDRCxpQkFBaUIsRUFBRTtRQUNqQixTQUFTO1FBQ1QsU0FBUztLQUNWO0lBQ0QsUUFBUSxFQUFFO1FBQ1IsUUFBUSxFQUFFLHFCQUFxQjtRQUMvQixjQUFjLEVBQUUsa0NBQWtDO1FBQ2xELGdCQUFnQixFQUFFLFNBQVM7UUFDM0IsVUFBVSxFQUFFLGVBQWU7UUFDM0IsY0FBYyxFQUFFLFFBQVE7UUFDeEIsWUFBWSxFQUFFLEtBQUs7UUFDbkIsY0FBYyxFQUFFLEVBQUU7UUFDbEIsZUFBZSxFQUFFLG9EQUFvRDtRQUNyRSxTQUFTLEVBQUU7WUFDVCxNQUFNLEVBQUUsaUJBQWlCO1lBQ3pCLFVBQVUsRUFBRTtnQkFDVixVQUFVO2dCQUNWLFFBQVE7Z0JBQ1IsU0FBUztnQkFDVCxlQUFlO2dCQUNmLGtCQUFrQjtnQkFDbEIsVUFBVTtnQkFDVixTQUFTO2dCQUNULGFBQWE7Z0JBQ2IsYUFBYTtnQkFDYixXQUFXO2FBQ1o7WUFDRCxXQUFXLEVBQUU7Z0JBQ1gsY0FBYzthQUNmO1lBQ0QsVUFBVSxFQUFFLHlHQUF5RztTQUN0SDtRQUNELFVBQVUsRUFBRTtZQUNWLGFBQWEsRUFBRTtnQkFDYixtRkFBbUY7Z0JBQ25GLHFGQUFxRjtnQkFDckYsNkdBQTZHO2dCQUM3RyxtRkFBbUY7Z0JBQ25GLHVFQUF1RTthQUN4RTtZQUNELHFCQUFxQixFQUFFO2dCQUNyQiw0SEFBNEg7Z0JBQzVILDhJQUE4STtnQkFDOUksNERBQTREO2dCQUM1RCwwSUFBMEk7YUFDM0k7U0FDRjtLQUNGO0NBQ0YsQ0FBQyJ9
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlvbmVlci50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL2ludGVncmF0aW9ucy9waW9uZWVyL3Bpb25lZXIudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQztBQUN2QyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxTQUFTLENBQUM7QUFDNUMsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsRUFBRSxDQUFDO0FBQ3JDLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLEdBQUcsQ0FBQztBQWdGcEMsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFtQztJQUM1RCxNQUFNLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxpQ0FBaUMsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxPQUFPO0lBQzlHLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsaUJBQWlCO0lBQ25ILFNBQVMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxFQUFFLGNBQWMsRUFBRSxDQUFDLGNBQWMsQ0FBQztJQUM3RCxlQUFlLEVBQUUsQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztJQUN4SCxpQkFBaUIsRUFBRSxDQUFDLFNBQVMsQ0FBQztJQUM5QixRQUFRLEVBQUU7UUFDUixNQUFNLEVBQUUsbUJBQW1CLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsa0NBQWtDO1FBQzVHLFFBQVEsRUFBRTtZQUNSLFdBQVcsRUFBRSxDQUFDLHdDQUF3QyxFQUFFLDZCQUE2QixFQUFFLDZCQUE2QixFQUFFLDRDQUE0QyxDQUFDO1lBQ25LLG1CQUFtQixFQUFFLENBQUMsK0JBQStCLEVBQUUsMEJBQTBCLEVBQUUsMEJBQTBCLEVBQUUsOEJBQThCLEVBQUUsb0NBQW9DLEVBQUUsa0NBQWtDLEVBQUUsOEJBQThCLENBQUM7U0FDelA7S0FDRjtDQUNGLENBQUMifQ==
@@ -0,0 +1,10 @@
1
+ import type { IPioneerConfig, TPioneerControl } from './pioneer.types.js';
2
+ export declare function pioneerRecord(value: unknown, allowed?: readonly string[]): Record<string, unknown>;
3
+ export declare function pioneerText(value: unknown, label: string, maximum?: number): string;
4
+ export declare function pioneerHost(value: unknown): string;
5
+ export declare function pioneerUdn(value: unknown): string;
6
+ export declare function pioneerDescription(value: unknown, host: string): string;
7
+ export declare function pioneerVolume(value: unknown): number;
8
+ export declare const pioneerConfigKeys: readonly ['homeId', 'host', 'descriptionUrl', 'expectedUdn', 'model', 'allowUnencryptedLan', 'maximumVolumeRaw', 'name', 'port', 'timeoutMs', 'maxPendingOperations', 'maxDescriptionBytes', 'maxFrameBytes'];
9
+ export declare function normalizePioneerConfig(value: unknown): Readonly<Required<Omit<IPioneerConfig, 'name'>> & Pick<IPioneerConfig, 'name'>>;
10
+ export declare function validatePioneerControl(value: unknown): TPioneerControl;
@@ -0,0 +1,85 @@
1
+ import * as plugins from '../../plugins.js';
2
+ export function pioneerRecord(value, allowed) {
3
+ if (!value || typeof value !== 'object' || Array.isArray(value) || ![Object.prototype, null].includes(Object.getPrototypeOf(value))) {
4
+ throw new TypeError('Pioneer input must be a plain data object.');
5
+ }
6
+ const result = {};
7
+ for (const key of Reflect.ownKeys(value)) {
8
+ const descriptor = Object.getOwnPropertyDescriptor(value, key);
9
+ if (typeof key !== 'string' || (allowed && !allowed.includes(key)) || !descriptor || !('value' in descriptor) || !descriptor.enumerable) {
10
+ throw new TypeError('Pioneer input contains an unsupported field or accessor.');
11
+ }
12
+ Object.defineProperty(result, key, { value: descriptor.value, enumerable: true });
13
+ }
14
+ return result;
15
+ }
16
+ export function pioneerText(value, label, maximum = 256) {
17
+ if (typeof value !== 'string' || !value || value.length > maximum || value !== value.trim() || /[\p{Cc}\p{Cs}]/u.test(value)) {
18
+ throw new TypeError(`Pioneer ${label} must be bounded text without control characters.`);
19
+ }
20
+ return value;
21
+ }
22
+ export function pioneerHost(value) {
23
+ if (typeof value !== 'string' || plugins.net.isIP(value) !== 4)
24
+ throw new TypeError('Pioneer requires a selected private IPv4 address.');
25
+ const [first, second, , last] = value.split('.').map(Number);
26
+ if (!(first === 10 || first === 127 || (first === 172 && second >= 16 && second <= 31) || (first === 192 && second === 168)) || last === 0 || last === 255) {
27
+ throw new TypeError('Pioneer requires a selected private or loopback IPv4 host.');
28
+ }
29
+ return value;
30
+ }
31
+ export function pioneerUdn(value) {
32
+ if (typeof value !== 'string' || !/^uuid:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(value))
33
+ throw new TypeError('Pioneer requires an exact UPnP UUID.');
34
+ return value.toLowerCase();
35
+ }
36
+ export function pioneerDescription(value, host) {
37
+ const url = new URL(pioneerText(value, 'description URL', 2048));
38
+ if (url.protocol !== 'http:' || url.hostname !== host || url.username || url.password || url.hash || url.search || url.pathname === '/') {
39
+ throw new TypeError('Pioneer description must select an HTTP path at the receiver IP without credentials, query or fragment.');
40
+ }
41
+ return url.href;
42
+ }
43
+ function integer(value, fallback, minimum, maximum) {
44
+ if (value === undefined)
45
+ return fallback;
46
+ if (typeof value !== 'number' || !Number.isSafeInteger(value) || value < minimum || value > maximum)
47
+ throw new RangeError('Pioneer numeric bound is invalid.');
48
+ return value;
49
+ }
50
+ export function pioneerVolume(value) {
51
+ if (typeof value !== 'number' || !Number.isSafeInteger(value) || value < 0 || value > 185)
52
+ throw new TypeError('Pioneer volume must be a raw integer from 0 through 185.');
53
+ return value;
54
+ }
55
+ export const pioneerConfigKeys = ['homeId', 'host', 'descriptionUrl', 'expectedUdn', 'model', 'allowUnencryptedLan', 'maximumVolumeRaw', 'name', 'port', 'timeoutMs', 'maxPendingOperations', 'maxDescriptionBytes', 'maxFrameBytes'];
56
+ export function normalizePioneerConfig(value) {
57
+ const config = pioneerRecord(value, pioneerConfigKeys);
58
+ const host = pioneerHost(config.host);
59
+ if (config.model !== 'SC-95')
60
+ throw new TypeError('Pioneer model has no admitted vendor profile.');
61
+ if (config.allowUnencryptedLan !== true)
62
+ throw new TypeError('Pioneer requires an explicit plaintext LAN acknowledgement.');
63
+ return Object.freeze({
64
+ homeId: pioneerText(config.homeId, 'home ID'), host, descriptionUrl: pioneerDescription(config.descriptionUrl, host),
65
+ expectedUdn: pioneerUdn(config.expectedUdn), model: config.model, allowUnencryptedLan: config.allowUnencryptedLan,
66
+ maximumVolumeRaw: pioneerVolume(config.maximumVolumeRaw),
67
+ ...(config.name === undefined ? {} : { name: pioneerText(config.name, 'name', 128) }),
68
+ port: integer(config.port, 23, 1, 65535), timeoutMs: integer(config.timeoutMs, 5000, 1, 60000),
69
+ maxPendingOperations: integer(config.maxPendingOperations, 16, 1, 128),
70
+ maxDescriptionBytes: integer(config.maxDescriptionBytes, 65536, 256, 1048576), maxFrameBytes: integer(config.maxFrameBytes, 512, 16, 4096),
71
+ });
72
+ }
73
+ export function validatePioneerControl(value) {
74
+ const control = pioneerRecord(value, ['feature', 'value']);
75
+ if (control.feature === 'power' && typeof control.value === 'boolean')
76
+ return { feature: 'power', value: control.value };
77
+ if (control.feature === 'muted' && typeof control.value === 'boolean')
78
+ return { feature: 'muted', value: control.value };
79
+ if (control.feature === 'volume_raw')
80
+ return { feature: 'volume_raw', value: pioneerVolume(control.value) };
81
+ if (control.feature === 'input' && typeof control.value === 'string' && /^\d{2}$/.test(control.value))
82
+ return { feature: 'input', value: control.value };
83
+ throw new TypeError('Pioneer supports one explicit power, mute, raw volume or observed physical input control.');
84
+ }
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlvbmVlci52YWxpZGF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvaW50ZWdyYXRpb25zL3Bpb25lZXIvcGlvbmVlci52YWxpZGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFHNUMsTUFBTSxVQUFVLGFBQWEsQ0FBQyxLQUFjLEVBQUUsT0FBMkI7SUFDdkUsSUFBSSxDQUFDLEtBQUssSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDcEksTUFBTSxJQUFJLFNBQVMsQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFDRCxNQUFNLE1BQU0sR0FBNEIsRUFBRSxDQUFDO0lBQzNDLEtBQUssTUFBTSxHQUFHLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3pDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDL0QsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLE9BQU8sSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN4SSxNQUFNLElBQUksU0FBUyxDQUFDLDBEQUEwRCxDQUFDLENBQUM7UUFDbEYsQ0FBQztRQUNELE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFF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
@@ -1,39 +1,16 @@
1
- import type { ISoundtouchCommandRequest, ISoundtouchConfig, ISoundtouchSnapshot } from './soundtouch.types.js';
1
+ import * as plugins from '../../plugins.js';
2
+ import type { ISoundtouchConfig, ISoundtouchSetupContext, ISoundtouchSnapshot, TSoundtouchClientEvent } from './soundtouch.types.js';
3
+ /** Owns one selected published protocol and a bounded logical operation lifetime. */
2
4
  export declare class SoundtouchClient {
3
- private readonly config;
4
- constructor(config: ISoundtouchConfig);
5
- getSnapshot(): Promise<ISoundtouchSnapshot>;
6
- validateConnection(): Promise<ISoundtouchSnapshot>;
7
- execute(requestArg: ISoundtouchCommandRequest): Promise<unknown>;
5
+ #private;
6
+ constructor(configArg: ISoundtouchConfig, contextArg: ISoundtouchSetupContext);
7
+ isHealthy(): boolean;
8
+ getSnapshot(signalArg?: AbortSignal): Promise<ISoundtouchSnapshot>;
9
+ setVolume(valueArg: number, signalArg?: AbortSignal): Promise<plugins.ecobridgeDeviceManager.IBoseSoundTouchControlResult>;
10
+ setMuted(valueArg: boolean, signalArg?: AbortSignal): Promise<plugins.ecobridgeDeviceManager.IBoseSoundTouchControlResult>;
11
+ writeFeature(idArg: string, valueArg: plugins.shxInterfaces.data.TDeviceStateValue, signalArg?: AbortSignal): Promise<plugins.ecobridgeDeviceManager.IBoseSoundTouchControlResult>;
12
+ subscribe(handlerArg: (eventArg: TSoundtouchClientEvent) => void, signalArg?: AbortSignal): () => void;
8
13
  destroy(): Promise<void>;
9
- private setPower;
10
- private setVolume;
11
- private setMute;
12
- private selectSource;
13
- private playPreset;
14
- private playMedia;
15
- private playUrl;
16
- private sendKey;
17
- private sendSelectXml;
18
- private findPreset;
19
- private contentItemXml;
20
- private fetchText;
21
- private optionalText;
22
- private requestText;
23
- private rawRequest;
24
- private parseDeviceInfo;
25
- private parseStatus;
26
- private parseContentItem;
27
- private parseVolume;
28
- private parsePresets;
29
- private parseZoneStatus;
30
- private normalizeSnapshot;
31
- private manualSnapshot;
32
- private ensureCommandTransport;
33
- private executorResultToText;
34
- private volumePercent;
35
- private port;
36
- private dlnaPort;
37
- private baseUrl;
38
- private cloneValue;
14
+ /** Explicit cleanup retry only; never repeats an HTTP control or observation. */
15
+ retryCleanup(): Promise<void>;
39
16
  }