@nodaro/sdk 2.29.0 → 2.31.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 (716) hide show
  1. package/README.md +31 -0
  2. package/dist/chunk-2DZWWIJ4.cjs +32 -0
  3. package/dist/chunk-2DZWWIJ4.cjs.map +1 -0
  4. package/dist/chunk-34PU2DAT.cjs +118 -0
  5. package/dist/chunk-34PU2DAT.cjs.map +1 -0
  6. package/dist/chunk-37Y5QAVA.js +3 -0
  7. package/dist/chunk-37Y5QAVA.js.map +1 -0
  8. package/dist/chunk-37YCKZX4.cjs +4 -0
  9. package/dist/chunk-37YCKZX4.cjs.map +1 -0
  10. package/dist/chunk-3B47IHB3.cjs +65 -0
  11. package/dist/chunk-3B47IHB3.cjs.map +1 -0
  12. package/dist/chunk-3BELHJBN.cjs +4 -0
  13. package/dist/chunk-3BELHJBN.cjs.map +1 -0
  14. package/dist/chunk-3PPSGM5X.js +3 -0
  15. package/dist/chunk-3PPSGM5X.js.map +1 -0
  16. package/dist/chunk-3QBH2VE2.cjs +80 -0
  17. package/dist/chunk-3QBH2VE2.cjs.map +1 -0
  18. package/dist/chunk-3QFTP5P5.js +102 -0
  19. package/dist/chunk-3QFTP5P5.js.map +1 -0
  20. package/dist/chunk-43FVH6LJ.cjs +123 -0
  21. package/dist/chunk-43FVH6LJ.cjs.map +1 -0
  22. package/dist/chunk-43NO4SGC.cjs +4 -0
  23. package/dist/chunk-43NO4SGC.cjs.map +1 -0
  24. package/dist/chunk-45CK55BH.cjs +4 -0
  25. package/dist/chunk-45CK55BH.cjs.map +1 -0
  26. package/dist/chunk-4NLVBYMW.js +280 -0
  27. package/dist/chunk-4NLVBYMW.js.map +1 -0
  28. package/dist/chunk-4WRDR4GN.js +102 -0
  29. package/dist/chunk-4WRDR4GN.js.map +1 -0
  30. package/dist/chunk-4WWSHV5G.cjs +4 -0
  31. package/dist/chunk-4WWSHV5G.cjs.map +1 -0
  32. package/dist/chunk-53SXNN3A.js +80 -0
  33. package/dist/chunk-53SXNN3A.js.map +1 -0
  34. package/dist/chunk-5ALNFATQ.cjs +27 -0
  35. package/dist/chunk-5ALNFATQ.cjs.map +1 -0
  36. package/dist/chunk-5UQNMNUE.cjs +4 -0
  37. package/dist/chunk-5UQNMNUE.cjs.map +1 -0
  38. package/dist/chunk-5WAI7VGO.js +184 -0
  39. package/dist/chunk-5WAI7VGO.js.map +1 -0
  40. package/dist/chunk-65E3JBFZ.js +52 -0
  41. package/dist/chunk-65E3JBFZ.js.map +1 -0
  42. package/dist/chunk-6JFNBAKV.js +3 -0
  43. package/dist/chunk-6JFNBAKV.js.map +1 -0
  44. package/dist/chunk-6OC6OKLY.cjs +4 -0
  45. package/dist/chunk-6OC6OKLY.cjs.map +1 -0
  46. package/dist/chunk-6OGGJQVA.js +25 -0
  47. package/dist/chunk-6OGGJQVA.js.map +1 -0
  48. package/dist/chunk-7A7HYFGM.js +3 -0
  49. package/dist/chunk-7A7HYFGM.js.map +1 -0
  50. package/dist/chunk-7ISSKQ6S.cjs +106 -0
  51. package/dist/chunk-7ISSKQ6S.cjs.map +1 -0
  52. package/dist/chunk-7LSFG2AF.js +194 -0
  53. package/dist/chunk-7LSFG2AF.js.map +1 -0
  54. package/dist/chunk-7MYKT2L4.cjs +4 -0
  55. package/dist/chunk-7MYKT2L4.cjs.map +1 -0
  56. package/dist/chunk-7QOCWJKD.cjs +25 -0
  57. package/dist/chunk-7QOCWJKD.cjs.map +1 -0
  58. package/dist/chunk-A2ZAFAWC.cjs +4 -0
  59. package/dist/chunk-A2ZAFAWC.cjs.map +1 -0
  60. package/dist/chunk-A3S55XGF.cjs +54 -0
  61. package/dist/chunk-A3S55XGF.cjs.map +1 -0
  62. package/dist/chunk-A3THLBFG.js +3 -0
  63. package/dist/chunk-A3THLBFG.js.map +1 -0
  64. package/dist/chunk-AJVSMNPZ.js +78 -0
  65. package/dist/chunk-AJVSMNPZ.js.map +1 -0
  66. package/dist/chunk-ALSLZG3U.js +124 -0
  67. package/dist/chunk-ALSLZG3U.js.map +1 -0
  68. package/dist/chunk-ALUUBPDG.cjs +4 -0
  69. package/dist/chunk-ALUUBPDG.cjs.map +1 -0
  70. package/dist/chunk-AO3W45LT.cjs +4 -0
  71. package/dist/chunk-AO3W45LT.cjs.map +1 -0
  72. package/dist/chunk-AUDHV3OE.js +3 -0
  73. package/dist/chunk-AUDHV3OE.js.map +1 -0
  74. package/dist/chunk-BAL576G2.cjs +4 -0
  75. package/dist/chunk-BAL576G2.cjs.map +1 -0
  76. package/dist/chunk-BFMKPELU.cjs +212 -0
  77. package/dist/chunk-BFMKPELU.cjs.map +1 -0
  78. package/dist/chunk-BKP6F2IX.js +3 -0
  79. package/dist/chunk-BKP6F2IX.js.map +1 -0
  80. package/dist/chunk-BLA44UCM.js +32 -0
  81. package/dist/chunk-BLA44UCM.js.map +1 -0
  82. package/dist/chunk-BPWUWUZ3.cjs +20 -0
  83. package/dist/chunk-BPWUWUZ3.cjs.map +1 -0
  84. package/dist/chunk-BRV7Z4GD.cjs +17 -0
  85. package/dist/chunk-BRV7Z4GD.cjs.map +1 -0
  86. package/dist/chunk-BU5A6K4C.js +122 -0
  87. package/dist/chunk-BU5A6K4C.js.map +1 -0
  88. package/dist/chunk-C22RJDW3.js +3 -0
  89. package/dist/chunk-C22RJDW3.js.map +1 -0
  90. package/dist/chunk-CGNVHN4V.js +3 -0
  91. package/dist/chunk-CGNVHN4V.js.map +1 -0
  92. package/dist/chunk-CJFIOVBA.js +3 -0
  93. package/dist/chunk-CJFIOVBA.js.map +1 -0
  94. package/dist/chunk-CJLLIVSB.cjs +4 -0
  95. package/dist/chunk-CJLLIVSB.cjs.map +1 -0
  96. package/dist/chunk-CK3AMMSC.js +194 -0
  97. package/dist/chunk-CK3AMMSC.js.map +1 -0
  98. package/dist/chunk-COCKKMNP.cjs +205 -0
  99. package/dist/chunk-COCKKMNP.cjs.map +1 -0
  100. package/dist/chunk-CR5E2SF3.cjs +212 -0
  101. package/dist/chunk-CR5E2SF3.cjs.map +1 -0
  102. package/dist/chunk-CRCPRZFN.js +3 -0
  103. package/dist/chunk-CRCPRZFN.js.map +1 -0
  104. package/dist/chunk-CYRFD6KR.cjs +4 -0
  105. package/dist/chunk-CYRFD6KR.cjs.map +1 -0
  106. package/dist/chunk-D3PW7AHZ.js +3 -0
  107. package/dist/chunk-D3PW7AHZ.js.map +1 -0
  108. package/dist/chunk-DKEYSJCE.cjs +82 -0
  109. package/dist/chunk-DKEYSJCE.cjs.map +1 -0
  110. package/dist/chunk-DPSMVOM3.js +15 -0
  111. package/dist/chunk-DPSMVOM3.js.map +1 -0
  112. package/dist/chunk-E2ZXHS6E.js +20 -0
  113. package/dist/chunk-E2ZXHS6E.js.map +1 -0
  114. package/dist/chunk-E37CVHWW.js +33 -0
  115. package/dist/chunk-E37CVHWW.js.map +1 -0
  116. package/dist/chunk-E5BM4BLO.js +78 -0
  117. package/dist/chunk-E5BM4BLO.js.map +1 -0
  118. package/dist/chunk-EHRWTYGR.cjs +4 -0
  119. package/dist/chunk-EHRWTYGR.cjs.map +1 -0
  120. package/dist/chunk-EJSGJDZY.js +212 -0
  121. package/dist/chunk-EJSGJDZY.js.map +1 -0
  122. package/dist/chunk-ELSOVJPF.js +3 -0
  123. package/dist/chunk-ELSOVJPF.js.map +1 -0
  124. package/dist/chunk-ERLXU47J.js +29 -0
  125. package/dist/chunk-ERLXU47J.js.map +1 -0
  126. package/dist/chunk-ES2E65HT.js +3 -0
  127. package/dist/chunk-ES2E65HT.js.map +1 -0
  128. package/dist/chunk-EXLAHZKF.js +3 -0
  129. package/dist/chunk-EXLAHZKF.js.map +1 -0
  130. package/dist/chunk-FHEYAW5H.js +3 -0
  131. package/dist/chunk-FHEYAW5H.js.map +1 -0
  132. package/dist/chunk-GA4LZZKQ.cjs +104 -0
  133. package/dist/chunk-GA4LZZKQ.cjs.map +1 -0
  134. package/dist/chunk-GAZJ2PA3.js +3 -0
  135. package/dist/chunk-GAZJ2PA3.js.map +1 -0
  136. package/dist/chunk-GB6C5OEZ.cjs +32 -0
  137. package/dist/chunk-GB6C5OEZ.cjs.map +1 -0
  138. package/dist/chunk-GD24ZRFD.js +3 -0
  139. package/dist/chunk-GD24ZRFD.js.map +1 -0
  140. package/dist/chunk-GI7LROLL.cjs +4 -0
  141. package/dist/chunk-GI7LROLL.cjs.map +1 -0
  142. package/dist/chunk-GRFLPEM2.cjs +16 -0
  143. package/dist/chunk-GRFLPEM2.cjs.map +1 -0
  144. package/dist/chunk-GVIFLUYZ.cjs +40 -0
  145. package/dist/chunk-GVIFLUYZ.cjs.map +1 -0
  146. package/dist/chunk-H7VQTG4M.js +35 -0
  147. package/dist/chunk-H7VQTG4M.js.map +1 -0
  148. package/dist/chunk-HAKYPZLB.cjs +242 -0
  149. package/dist/chunk-HAKYPZLB.cjs.map +1 -0
  150. package/dist/chunk-HFBR6G36.js +3 -0
  151. package/dist/chunk-HFBR6G36.js.map +1 -0
  152. package/dist/chunk-HGCVWOGK.cjs +209 -0
  153. package/dist/chunk-HGCVWOGK.cjs.map +1 -0
  154. package/dist/chunk-HLHR3R4P.js +3 -0
  155. package/dist/chunk-HLHR3R4P.js.map +1 -0
  156. package/dist/chunk-HRXXGGSJ.js +3 -0
  157. package/dist/chunk-HRXXGGSJ.js.map +1 -0
  158. package/dist/chunk-I3TYBAOX.js +3 -0
  159. package/dist/chunk-I3TYBAOX.js.map +1 -0
  160. package/dist/chunk-I4A5VJRL.js +352 -0
  161. package/dist/chunk-I4A5VJRL.js.map +1 -0
  162. package/dist/chunk-I6CXC345.js +102 -0
  163. package/dist/chunk-I6CXC345.js.map +1 -0
  164. package/dist/chunk-IGOPUMEX.cjs +4 -0
  165. package/dist/chunk-IGOPUMEX.cjs.map +1 -0
  166. package/dist/chunk-IHKIYVZQ.js +30 -0
  167. package/dist/chunk-IHKIYVZQ.js.map +1 -0
  168. package/dist/chunk-IMC2M5YM.cjs +12 -0
  169. package/dist/chunk-IMC2M5YM.cjs.map +1 -0
  170. package/dist/chunk-IQ6KWSXP.js +3 -0
  171. package/dist/chunk-IQ6KWSXP.js.map +1 -0
  172. package/dist/chunk-IS26FJO7.cjs +4 -0
  173. package/dist/chunk-IS26FJO7.cjs.map +1 -0
  174. package/dist/chunk-J4WFSKY6.js +50 -0
  175. package/dist/chunk-J4WFSKY6.js.map +1 -0
  176. package/dist/chunk-J5LGGCAS.cjs +126 -0
  177. package/dist/chunk-J5LGGCAS.cjs.map +1 -0
  178. package/dist/chunk-JDEZHITT.js +43 -0
  179. package/dist/chunk-JDEZHITT.js.map +1 -0
  180. package/dist/chunk-JGS6YBDW.js +260 -0
  181. package/dist/chunk-JGS6YBDW.js.map +1 -0
  182. package/dist/chunk-JMOKD6ZP.js +46 -0
  183. package/dist/chunk-JMOKD6ZP.js.map +1 -0
  184. package/dist/chunk-JOX5BJ6K.cjs +4 -0
  185. package/dist/chunk-JOX5BJ6K.cjs.map +1 -0
  186. package/dist/chunk-JTAW54UM.js +116 -0
  187. package/dist/chunk-JTAW54UM.js.map +1 -0
  188. package/dist/chunk-K4RQOSJH.js +203 -0
  189. package/dist/chunk-K4RQOSJH.js.map +1 -0
  190. package/dist/chunk-KAIE6WJB.cjs +4 -0
  191. package/dist/chunk-KAIE6WJB.cjs.map +1 -0
  192. package/dist/chunk-KEDPGWIK.cjs +4 -0
  193. package/dist/chunk-KEDPGWIK.cjs.map +1 -0
  194. package/dist/chunk-KG4R454Z.js +18 -0
  195. package/dist/chunk-KG4R454Z.js.map +1 -0
  196. package/dist/chunk-KGKCAGRD.cjs +22 -0
  197. package/dist/chunk-KGKCAGRD.cjs.map +1 -0
  198. package/dist/chunk-KNMW722T.cjs +48 -0
  199. package/dist/chunk-KNMW722T.cjs.map +1 -0
  200. package/dist/chunk-KTTL7BND.cjs +4 -0
  201. package/dist/chunk-KTTL7BND.cjs.map +1 -0
  202. package/dist/chunk-KXEWTYS4.cjs +80 -0
  203. package/dist/chunk-KXEWTYS4.cjs.map +1 -0
  204. package/dist/chunk-KZQKFBRN.js +3 -0
  205. package/dist/chunk-KZQKFBRN.js.map +1 -0
  206. package/dist/chunk-LAWYFC4G.cjs +37 -0
  207. package/dist/chunk-LAWYFC4G.cjs.map +1 -0
  208. package/dist/chunk-LHP2CWHD.js +228 -0
  209. package/dist/chunk-LHP2CWHD.js.map +1 -0
  210. package/dist/chunk-LHRQXWI5.js +3 -0
  211. package/dist/chunk-LHRQXWI5.js.map +1 -0
  212. package/dist/chunk-LKH5M44B.cjs +114 -0
  213. package/dist/chunk-LKH5M44B.cjs.map +1 -0
  214. package/dist/chunk-LLNNHLCE.cjs +4 -0
  215. package/dist/chunk-LLNNHLCE.cjs.map +1 -0
  216. package/dist/chunk-LWZLWSXD.cjs +4 -0
  217. package/dist/chunk-LWZLWSXD.cjs.map +1 -0
  218. package/dist/chunk-M6Y5TOYE.js +3 -0
  219. package/dist/chunk-M6Y5TOYE.js.map +1 -0
  220. package/dist/chunk-MBFUMWI5.cjs +31 -0
  221. package/dist/chunk-MBFUMWI5.cjs.map +1 -0
  222. package/dist/chunk-MEKI37WI.js +3 -0
  223. package/dist/chunk-MEKI37WI.js.map +1 -0
  224. package/dist/chunk-MQ74AKA2.cjs +200 -0
  225. package/dist/chunk-MQ74AKA2.cjs.map +1 -0
  226. package/dist/chunk-N6GLZOE4.cjs +282 -0
  227. package/dist/chunk-N6GLZOE4.cjs.map +1 -0
  228. package/dist/chunk-NBVARNVA.cjs +38 -0
  229. package/dist/chunk-NBVARNVA.cjs.map +1 -0
  230. package/dist/chunk-NCCBS6GU.js +42 -0
  231. package/dist/chunk-NCCBS6GU.js.map +1 -0
  232. package/dist/chunk-NGKODS3J.cjs +52 -0
  233. package/dist/chunk-NGKODS3J.cjs.map +1 -0
  234. package/dist/chunk-NJVSKUL2.cjs +4 -0
  235. package/dist/chunk-NJVSKUL2.cjs.map +1 -0
  236. package/dist/chunk-NLQQHJ25.cjs +104 -0
  237. package/dist/chunk-NLQQHJ25.cjs.map +1 -0
  238. package/dist/chunk-NNHWH7ER.js +181 -0
  239. package/dist/chunk-NNHWH7ER.js.map +1 -0
  240. package/dist/chunk-NX67YIF3.js +3 -0
  241. package/dist/chunk-NX67YIF3.js.map +1 -0
  242. package/dist/chunk-OA6FWYZF.cjs +4 -0
  243. package/dist/chunk-OA6FWYZF.cjs.map +1 -0
  244. package/dist/chunk-OJDBSKC2.js +3 -0
  245. package/dist/chunk-OJDBSKC2.js.map +1 -0
  246. package/dist/chunk-OLPA44QJ.js +3 -0
  247. package/dist/chunk-OLPA44QJ.js.map +1 -0
  248. package/dist/chunk-OMH7ATOQ.js +3 -0
  249. package/dist/chunk-OMH7ATOQ.js.map +1 -0
  250. package/dist/chunk-OPR4TULG.js +3 -0
  251. package/dist/chunk-OPR4TULG.js.map +1 -0
  252. package/dist/chunk-OSX2GVZ2.cjs +34 -0
  253. package/dist/chunk-OSX2GVZ2.cjs.map +1 -0
  254. package/dist/chunk-OXQKE5EG.cjs +282 -0
  255. package/dist/chunk-OXQKE5EG.cjs.map +1 -0
  256. package/dist/chunk-P6E4QDJN.js +30 -0
  257. package/dist/chunk-P6E4QDJN.js.map +1 -0
  258. package/dist/chunk-PEMLIAPZ.cjs +64 -0
  259. package/dist/chunk-PEMLIAPZ.cjs.map +1 -0
  260. package/dist/chunk-PGYQ754I.js +3 -0
  261. package/dist/chunk-PGYQ754I.js.map +1 -0
  262. package/dist/chunk-PHKYIWE4.cjs +16 -0
  263. package/dist/chunk-PHKYIWE4.cjs.map +1 -0
  264. package/dist/chunk-PMTM26LL.js +3 -0
  265. package/dist/chunk-PMTM26LL.js.map +1 -0
  266. package/dist/chunk-PY4OEKNX.cjs +4 -0
  267. package/dist/chunk-PY4OEKNX.cjs.map +1 -0
  268. package/dist/chunk-PZS2EXDR.cjs +4 -0
  269. package/dist/chunk-PZS2EXDR.cjs.map +1 -0
  270. package/dist/chunk-QITJGSFA.js +210 -0
  271. package/dist/chunk-QITJGSFA.js.map +1 -0
  272. package/dist/chunk-QRHJEITQ.cjs +4 -0
  273. package/dist/chunk-QRHJEITQ.cjs.map +1 -0
  274. package/dist/chunk-QUFU5RJ7.cjs +4 -0
  275. package/dist/chunk-QUFU5RJ7.cjs.map +1 -0
  276. package/dist/chunk-QVQCKOBM.js +3 -0
  277. package/dist/chunk-QVQCKOBM.js.map +1 -0
  278. package/dist/chunk-R63TTR35.cjs +200 -0
  279. package/dist/chunk-R63TTR35.cjs.map +1 -0
  280. package/dist/chunk-RA42NMWV.cjs +4 -0
  281. package/dist/chunk-RA42NMWV.cjs.map +1 -0
  282. package/dist/chunk-RAZN6C5R.cjs +12 -0
  283. package/dist/chunk-RAZN6C5R.cjs.map +1 -0
  284. package/dist/chunk-REUFPWM7.cjs +233 -0
  285. package/dist/chunk-REUFPWM7.cjs.map +1 -0
  286. package/dist/chunk-RHETJOUM.cjs +4 -0
  287. package/dist/chunk-RHETJOUM.cjs.map +1 -0
  288. package/dist/chunk-RJIJVVXS.js +3 -0
  289. package/dist/chunk-RJIJVVXS.js.map +1 -0
  290. package/dist/chunk-RKVRCNMB.js +3 -0
  291. package/dist/chunk-RKVRCNMB.js.map +1 -0
  292. package/dist/chunk-SBV5MWEL.cjs +53 -0
  293. package/dist/chunk-SBV5MWEL.cjs.map +1 -0
  294. package/dist/chunk-SFB4YLCS.js +121 -0
  295. package/dist/chunk-SFB4YLCS.js.map +1 -0
  296. package/dist/chunk-SLPD47SR.js +3 -0
  297. package/dist/chunk-SLPD47SR.js.map +1 -0
  298. package/dist/chunk-SS3B6PHT.cjs +35 -0
  299. package/dist/chunk-SS3B6PHT.cjs.map +1 -0
  300. package/dist/chunk-SUCHGNYT.js +3 -0
  301. package/dist/chunk-SUCHGNYT.js.map +1 -0
  302. package/dist/chunk-SYVNY3AH.cjs +44 -0
  303. package/dist/chunk-SYVNY3AH.cjs.map +1 -0
  304. package/dist/chunk-T3SYREY4.js +29 -0
  305. package/dist/chunk-T3SYREY4.js.map +1 -0
  306. package/dist/chunk-T7N7DFQJ.js +198 -0
  307. package/dist/chunk-T7N7DFQJ.js.map +1 -0
  308. package/dist/chunk-TRCENAIY.cjs +4 -0
  309. package/dist/chunk-TRCENAIY.cjs.map +1 -0
  310. package/dist/chunk-TVENC6PH.js +186 -0
  311. package/dist/chunk-TVENC6PH.js.map +1 -0
  312. package/dist/chunk-U4T3Z3K7.cjs +325 -0
  313. package/dist/chunk-U4T3Z3K7.cjs.map +1 -0
  314. package/dist/chunk-UI2NXUML.cjs +187 -0
  315. package/dist/chunk-UI2NXUML.cjs.map +1 -0
  316. package/dist/chunk-UIFFNTUX.js +3 -0
  317. package/dist/chunk-UIFFNTUX.js.map +1 -0
  318. package/dist/chunk-V4GPQ6Y2.js +3 -0
  319. package/dist/chunk-V4GPQ6Y2.js.map +1 -0
  320. package/dist/chunk-VGTRKXF2.js +93 -0
  321. package/dist/chunk-VGTRKXF2.js.map +1 -0
  322. package/dist/chunk-VGWOIWRQ.cjs +202 -0
  323. package/dist/chunk-VGWOIWRQ.cjs.map +1 -0
  324. package/dist/chunk-VLCNNA76.cjs +4 -0
  325. package/dist/chunk-VLCNNA76.cjs.map +1 -0
  326. package/dist/chunk-VPAUN75Q.js +3 -0
  327. package/dist/chunk-VPAUN75Q.js.map +1 -0
  328. package/dist/chunk-VT237QF2.js +3 -0
  329. package/dist/chunk-VT237QF2.js.map +1 -0
  330. package/dist/chunk-VV4TZG5S.js +321 -0
  331. package/dist/chunk-VV4TZG5S.js.map +1 -0
  332. package/dist/chunk-VYK6MBL4.cjs +4 -0
  333. package/dist/chunk-VYK6MBL4.cjs.map +1 -0
  334. package/dist/chunk-W33CKW6Q.cjs +4 -0
  335. package/dist/chunk-W33CKW6Q.cjs.map +1 -0
  336. package/dist/chunk-W5VHATSR.cjs +31 -0
  337. package/dist/chunk-W5VHATSR.cjs.map +1 -0
  338. package/dist/chunk-W7YI5UT3.js +3 -0
  339. package/dist/chunk-W7YI5UT3.js.map +1 -0
  340. package/dist/chunk-WEQWU2IC.js +34 -0
  341. package/dist/chunk-WEQWU2IC.js.map +1 -0
  342. package/dist/chunk-WK4VXPPZ.cjs +104 -0
  343. package/dist/chunk-WK4VXPPZ.cjs.map +1 -0
  344. package/dist/chunk-WSA4LMWR.cjs +96 -0
  345. package/dist/chunk-WSA4LMWR.cjs.map +1 -0
  346. package/dist/chunk-WUIEZ6Z4.cjs +360 -0
  347. package/dist/chunk-WUIEZ6Z4.cjs.map +1 -0
  348. package/dist/chunk-WUKIJJG2.cjs +45 -0
  349. package/dist/chunk-WUKIJJG2.cjs.map +1 -0
  350. package/dist/chunk-WVFAQBS7.js +29 -0
  351. package/dist/chunk-WVFAQBS7.js.map +1 -0
  352. package/dist/chunk-X7RDNMN7.js +3 -0
  353. package/dist/chunk-X7RDNMN7.js.map +1 -0
  354. package/dist/chunk-X7XP5WBP.cjs +4 -0
  355. package/dist/chunk-X7XP5WBP.cjs.map +1 -0
  356. package/dist/chunk-XQAIEPAZ.js +104 -0
  357. package/dist/chunk-XQAIEPAZ.js.map +1 -0
  358. package/dist/chunk-XWKNE6DH.cjs +4 -0
  359. package/dist/chunk-XWKNE6DH.cjs.map +1 -0
  360. package/dist/chunk-Y6V6CBY5.js +23 -0
  361. package/dist/chunk-Y6V6CBY5.js.map +1 -0
  362. package/dist/chunk-Y6VDCZPB.js +62 -0
  363. package/dist/chunk-Y6VDCZPB.js.map +1 -0
  364. package/dist/chunk-YDRXBRW2.cjs +184 -0
  365. package/dist/chunk-YDRXBRW2.cjs.map +1 -0
  366. package/dist/chunk-YFS2LMG4.cjs +124 -0
  367. package/dist/chunk-YFS2LMG4.cjs.map +1 -0
  368. package/dist/chunk-YN6CBIIB.js +63 -0
  369. package/dist/chunk-YN6CBIIB.js.map +1 -0
  370. package/dist/chunk-YOJ2XNQX.cjs +4 -0
  371. package/dist/chunk-YOJ2XNQX.cjs.map +1 -0
  372. package/dist/chunk-YOOZB4RL.js +3 -0
  373. package/dist/chunk-YOOZB4RL.js.map +1 -0
  374. package/dist/chunk-YVU2M7MI.js +34 -0
  375. package/dist/chunk-YVU2M7MI.js.map +1 -0
  376. package/dist/chunk-YXBZRB5H.cjs +4 -0
  377. package/dist/chunk-YXBZRB5H.cjs.map +1 -0
  378. package/dist/chunk-Z3ZKFI2M.js +43 -0
  379. package/dist/chunk-Z3ZKFI2M.js.map +1 -0
  380. package/dist/chunk-Z5GLY4R3.js +112 -0
  381. package/dist/chunk-Z5GLY4R3.js.map +1 -0
  382. package/dist/chunk-Z5OMWAQX.js +3 -0
  383. package/dist/chunk-Z5OMWAQX.js.map +1 -0
  384. package/dist/chunk-Z7LGWNI7.js +38 -0
  385. package/dist/chunk-Z7LGWNI7.js.map +1 -0
  386. package/dist/chunk-ZCWKX4V6.cjs +38 -0
  387. package/dist/chunk-ZCWKX4V6.cjs.map +1 -0
  388. package/dist/chunk-ZE5RISBZ.cjs +4 -0
  389. package/dist/chunk-ZE5RISBZ.cjs.map +1 -0
  390. package/dist/chunk-ZH4F2P2G.js +3 -0
  391. package/dist/chunk-ZH4F2P2G.js.map +1 -0
  392. package/dist/chunk-ZJGFLJ2Z.cjs +4 -0
  393. package/dist/chunk-ZJGFLJ2Z.cjs.map +1 -0
  394. package/dist/chunk-ZKBHD27K.cjs +4 -0
  395. package/dist/chunk-ZKBHD27K.cjs.map +1 -0
  396. package/dist/chunk-ZQPLRNKX.cjs +4 -0
  397. package/dist/chunk-ZQPLRNKX.cjs.map +1 -0
  398. package/dist/chunk-ZQQABQMH.cjs +31 -0
  399. package/dist/chunk-ZQQABQMH.cjs.map +1 -0
  400. package/dist/chunk-ZXJQSFIA.js +200 -0
  401. package/dist/chunk-ZXJQSFIA.js.map +1 -0
  402. package/dist/developer-apps-zSQXWmEG.d.cts +294 -0
  403. package/dist/developer-apps-zSQXWmEG.d.ts +294 -0
  404. package/dist/entries/apps.cjs +13 -0
  405. package/dist/entries/apps.cjs.map +1 -0
  406. package/dist/entries/apps.d.cts +300 -0
  407. package/dist/entries/apps.d.ts +300 -0
  408. package/dist/entries/apps.js +4 -0
  409. package/dist/entries/apps.js.map +1 -0
  410. package/dist/entries/audio.cjs +13 -0
  411. package/dist/entries/audio.cjs.map +1 -0
  412. package/dist/entries/audio.d.cts +200 -0
  413. package/dist/entries/audio.d.ts +200 -0
  414. package/dist/entries/audio.js +4 -0
  415. package/dist/entries/audio.js.map +1 -0
  416. package/dist/entries/billing.cjs +13 -0
  417. package/dist/entries/billing.cjs.map +1 -0
  418. package/dist/entries/billing.d.cts +208 -0
  419. package/dist/entries/billing.d.ts +208 -0
  420. package/dist/entries/billing.js +4 -0
  421. package/dist/entries/billing.js.map +1 -0
  422. package/dist/entries/catalogs.cjs +13 -0
  423. package/dist/entries/catalogs.cjs.map +1 -0
  424. package/dist/entries/catalogs.d.cts +82 -0
  425. package/dist/entries/catalogs.d.ts +82 -0
  426. package/dist/entries/catalogs.js +4 -0
  427. package/dist/entries/catalogs.js.map +1 -0
  428. package/dist/entries/characters.cjs +45 -0
  429. package/dist/entries/characters.cjs.map +1 -0
  430. package/dist/entries/characters.d.cts +741 -0
  431. package/dist/entries/characters.d.ts +741 -0
  432. package/dist/entries/characters.js +4 -0
  433. package/dist/entries/characters.js.map +1 -0
  434. package/dist/entries/client.cjs +78 -0
  435. package/dist/entries/client.cjs.map +1 -0
  436. package/dist/entries/client.d.cts +147 -0
  437. package/dist/entries/client.d.ts +147 -0
  438. package/dist/entries/client.js +53 -0
  439. package/dist/entries/client.js.map +1 -0
  440. package/dist/entries/collections.cjs +13 -0
  441. package/dist/entries/collections.cjs.map +1 -0
  442. package/dist/entries/collections.d.cts +77 -0
  443. package/dist/entries/collections.d.ts +77 -0
  444. package/dist/entries/collections.js +4 -0
  445. package/dist/entries/collections.js.map +1 -0
  446. package/dist/entries/community.cjs +13 -0
  447. package/dist/entries/community.cjs.map +1 -0
  448. package/dist/entries/community.d.cts +87 -0
  449. package/dist/entries/community.d.ts +87 -0
  450. package/dist/entries/community.js +4 -0
  451. package/dist/entries/community.js.map +1 -0
  452. package/dist/entries/competitors.cjs +13 -0
  453. package/dist/entries/competitors.cjs.map +1 -0
  454. package/dist/entries/competitors.d.cts +96 -0
  455. package/dist/entries/competitors.d.ts +96 -0
  456. package/dist/entries/competitors.js +4 -0
  457. package/dist/entries/competitors.js.map +1 -0
  458. package/dist/entries/copilot.cjs +15 -0
  459. package/dist/entries/copilot.cjs.map +1 -0
  460. package/dist/entries/copilot.d.cts +296 -0
  461. package/dist/entries/copilot.d.ts +296 -0
  462. package/dist/entries/copilot.js +6 -0
  463. package/dist/entries/copilot.js.map +1 -0
  464. package/dist/entries/core.cjs +26 -0
  465. package/dist/entries/core.cjs.map +1 -0
  466. package/dist/entries/core.d.cts +3 -0
  467. package/dist/entries/core.d.ts +3 -0
  468. package/dist/entries/core.js +5 -0
  469. package/dist/entries/core.js.map +1 -0
  470. package/dist/entries/creatures.cjs +29 -0
  471. package/dist/entries/creatures.cjs.map +1 -0
  472. package/dist/entries/creatures.d.cts +594 -0
  473. package/dist/entries/creatures.d.ts +594 -0
  474. package/dist/entries/creatures.js +4 -0
  475. package/dist/entries/creatures.js.map +1 -0
  476. package/dist/entries/credits.cjs +13 -0
  477. package/dist/entries/credits.cjs.map +1 -0
  478. package/dist/entries/credits.d.cts +229 -0
  479. package/dist/entries/credits.d.ts +229 -0
  480. package/dist/entries/credits.js +4 -0
  481. package/dist/entries/credits.js.map +1 -0
  482. package/dist/entries/developer-apps.cjs +13 -0
  483. package/dist/entries/developer-apps.cjs.map +1 -0
  484. package/dist/entries/developer-apps.d.cts +3 -0
  485. package/dist/entries/developer-apps.d.ts +3 -0
  486. package/dist/entries/developer-apps.js +4 -0
  487. package/dist/entries/developer-apps.js.map +1 -0
  488. package/dist/entries/edit.cjs +34 -0
  489. package/dist/entries/edit.cjs.map +1 -0
  490. package/dist/entries/edit.d.cts +705 -0
  491. package/dist/entries/edit.d.ts +705 -0
  492. package/dist/entries/edit.js +5 -0
  493. package/dist/entries/edit.js.map +1 -0
  494. package/dist/entries/errors.cjs +93 -0
  495. package/dist/entries/errors.cjs.map +1 -0
  496. package/dist/entries/errors.d.cts +338 -0
  497. package/dist/entries/errors.d.ts +338 -0
  498. package/dist/entries/errors.js +4 -0
  499. package/dist/entries/errors.js.map +1 -0
  500. package/dist/entries/executions.cjs +21 -0
  501. package/dist/entries/executions.cjs.map +1 -0
  502. package/dist/entries/executions.d.cts +120 -0
  503. package/dist/entries/executions.d.ts +120 -0
  504. package/dist/entries/executions.js +4 -0
  505. package/dist/entries/executions.js.map +1 -0
  506. package/dist/entries/gallery.cjs +13 -0
  507. package/dist/entries/gallery.cjs.map +1 -0
  508. package/dist/entries/gallery.d.cts +85 -0
  509. package/dist/entries/gallery.d.ts +85 -0
  510. package/dist/entries/gallery.js +4 -0
  511. package/dist/entries/gallery.js.map +1 -0
  512. package/dist/entries/jobs.cjs +13 -0
  513. package/dist/entries/jobs.cjs.map +1 -0
  514. package/dist/entries/jobs.d.cts +252 -0
  515. package/dist/entries/jobs.d.ts +252 -0
  516. package/dist/entries/jobs.js +4 -0
  517. package/dist/entries/jobs.js.map +1 -0
  518. package/dist/entries/library.cjs +13 -0
  519. package/dist/entries/library.cjs.map +1 -0
  520. package/dist/entries/library.d.cts +109 -0
  521. package/dist/entries/library.d.ts +109 -0
  522. package/dist/entries/library.js +4 -0
  523. package/dist/entries/library.js.map +1 -0
  524. package/dist/entries/llm.cjs +13 -0
  525. package/dist/entries/llm.cjs.map +1 -0
  526. package/dist/entries/llm.d.cts +98 -0
  527. package/dist/entries/llm.d.ts +98 -0
  528. package/dist/entries/llm.js +4 -0
  529. package/dist/entries/llm.js.map +1 -0
  530. package/dist/entries/locations.cjs +25 -0
  531. package/dist/entries/locations.cjs.map +1 -0
  532. package/dist/entries/locations.d.cts +573 -0
  533. package/dist/entries/locations.d.ts +573 -0
  534. package/dist/entries/locations.js +4 -0
  535. package/dist/entries/locations.js.map +1 -0
  536. package/dist/entries/media.cjs +15 -0
  537. package/dist/entries/media.cjs.map +1 -0
  538. package/dist/entries/media.d.cts +548 -0
  539. package/dist/entries/media.d.ts +548 -0
  540. package/dist/entries/media.js +6 -0
  541. package/dist/entries/media.js.map +1 -0
  542. package/dist/entries/models.cjs +13 -0
  543. package/dist/entries/models.cjs.map +1 -0
  544. package/dist/entries/models.d.cts +92 -0
  545. package/dist/entries/models.d.ts +92 -0
  546. package/dist/entries/models.js +4 -0
  547. package/dist/entries/models.js.map +1 -0
  548. package/dist/entries/moodboards.cjs +21 -0
  549. package/dist/entries/moodboards.cjs.map +1 -0
  550. package/dist/entries/moodboards.d.cts +77 -0
  551. package/dist/entries/moodboards.d.ts +77 -0
  552. package/dist/entries/moodboards.js +4 -0
  553. package/dist/entries/moodboards.js.map +1 -0
  554. package/dist/entries/node-presets.cjs +13 -0
  555. package/dist/entries/node-presets.cjs.map +1 -0
  556. package/dist/entries/node-presets.d.cts +217 -0
  557. package/dist/entries/node-presets.d.ts +217 -0
  558. package/dist/entries/node-presets.js +4 -0
  559. package/dist/entries/node-presets.js.map +1 -0
  560. package/dist/entries/nodes.cjs +22 -0
  561. package/dist/entries/nodes.cjs.map +1 -0
  562. package/dist/entries/nodes.d.cts +18 -0
  563. package/dist/entries/nodes.d.ts +18 -0
  564. package/dist/entries/nodes.js +5 -0
  565. package/dist/entries/nodes.js.map +1 -0
  566. package/dist/entries/oauth.cjs +13 -0
  567. package/dist/entries/oauth.cjs.map +1 -0
  568. package/dist/entries/oauth.d.cts +69 -0
  569. package/dist/entries/oauth.d.ts +69 -0
  570. package/dist/entries/oauth.js +4 -0
  571. package/dist/entries/oauth.js.map +1 -0
  572. package/dist/entries/objects.cjs +29 -0
  573. package/dist/entries/objects.cjs.map +1 -0
  574. package/dist/entries/objects.d.cts +544 -0
  575. package/dist/entries/objects.d.ts +544 -0
  576. package/dist/entries/objects.js +4 -0
  577. package/dist/entries/objects.js.map +1 -0
  578. package/dist/entries/organizations.cjs +21 -0
  579. package/dist/entries/organizations.cjs.map +1 -0
  580. package/dist/entries/organizations.d.cts +164 -0
  581. package/dist/entries/organizations.d.ts +164 -0
  582. package/dist/entries/organizations.js +4 -0
  583. package/dist/entries/organizations.js.map +1 -0
  584. package/dist/entries/palettes.cjs +21 -0
  585. package/dist/entries/palettes.cjs.map +1 -0
  586. package/dist/entries/palettes.d.cts +69 -0
  587. package/dist/entries/palettes.d.ts +69 -0
  588. package/dist/entries/palettes.js +4 -0
  589. package/dist/entries/palettes.js.map +1 -0
  590. package/dist/entries/picker-catalogs.cjs +13 -0
  591. package/dist/entries/picker-catalogs.cjs.map +1 -0
  592. package/dist/entries/picker-catalogs.d.cts +148 -0
  593. package/dist/entries/picker-catalogs.d.ts +148 -0
  594. package/dist/entries/picker-catalogs.js +4 -0
  595. package/dist/entries/picker-catalogs.js.map +1 -0
  596. package/dist/entries/pipelines.cjs +13 -0
  597. package/dist/entries/pipelines.cjs.map +1 -0
  598. package/dist/entries/pipelines.d.cts +255 -0
  599. package/dist/entries/pipelines.d.ts +255 -0
  600. package/dist/entries/pipelines.js +4 -0
  601. package/dist/entries/pipelines.js.map +1 -0
  602. package/dist/entries/projects.cjs +13 -0
  603. package/dist/entries/projects.cjs.map +1 -0
  604. package/dist/entries/projects.d.cts +49 -0
  605. package/dist/entries/projects.d.ts +49 -0
  606. package/dist/entries/projects.js +4 -0
  607. package/dist/entries/projects.js.map +1 -0
  608. package/dist/entries/prompt-helper.cjs +13 -0
  609. package/dist/entries/prompt-helper.cjs.map +1 -0
  610. package/dist/entries/prompt-helper.d.cts +73 -0
  611. package/dist/entries/prompt-helper.d.ts +73 -0
  612. package/dist/entries/prompt-helper.js +4 -0
  613. package/dist/entries/prompt-helper.js.map +1 -0
  614. package/dist/entries/recast.cjs +17 -0
  615. package/dist/entries/recast.cjs.map +1 -0
  616. package/dist/entries/recast.d.cts +229 -0
  617. package/dist/entries/recast.d.ts +229 -0
  618. package/dist/entries/recast.js +4 -0
  619. package/dist/entries/recast.js.map +1 -0
  620. package/dist/entries/reduce.cjs +13 -0
  621. package/dist/entries/reduce.cjs.map +1 -0
  622. package/dist/entries/reduce.d.cts +56 -0
  623. package/dist/entries/reduce.d.ts +56 -0
  624. package/dist/entries/reduce.js +4 -0
  625. package/dist/entries/reduce.js.map +1 -0
  626. package/dist/entries/saved-posts.cjs +13 -0
  627. package/dist/entries/saved-posts.cjs.map +1 -0
  628. package/dist/entries/saved-posts.d.cts +33 -0
  629. package/dist/entries/saved-posts.d.ts +33 -0
  630. package/dist/entries/saved-posts.js +4 -0
  631. package/dist/entries/saved-posts.js.map +1 -0
  632. package/dist/entries/scene3d.cjs +17 -0
  633. package/dist/entries/scene3d.cjs.map +1 -0
  634. package/dist/entries/scene3d.d.cts +131 -0
  635. package/dist/entries/scene3d.d.ts +131 -0
  636. package/dist/entries/scene3d.js +4 -0
  637. package/dist/entries/scene3d.js.map +1 -0
  638. package/dist/entries/sessions.cjs +13 -0
  639. package/dist/entries/sessions.cjs.map +1 -0
  640. package/dist/entries/sessions.d.cts +122 -0
  641. package/dist/entries/sessions.d.ts +122 -0
  642. package/dist/entries/sessions.js +4 -0
  643. package/dist/entries/sessions.js.map +1 -0
  644. package/dist/entries/shots.cjs +13 -0
  645. package/dist/entries/shots.cjs.map +1 -0
  646. package/dist/entries/shots.d.cts +78 -0
  647. package/dist/entries/shots.d.ts +78 -0
  648. package/dist/entries/shots.js +4 -0
  649. package/dist/entries/shots.js.map +1 -0
  650. package/dist/entries/studio.cjs +22 -0
  651. package/dist/entries/studio.cjs.map +1 -0
  652. package/dist/entries/studio.d.cts +281 -0
  653. package/dist/entries/studio.d.ts +281 -0
  654. package/dist/entries/studio.js +5 -0
  655. package/dist/entries/studio.js.map +1 -0
  656. package/dist/entries/templates.cjs +13 -0
  657. package/dist/entries/templates.cjs.map +1 -0
  658. package/dist/entries/templates.d.cts +110 -0
  659. package/dist/entries/templates.d.ts +110 -0
  660. package/dist/entries/templates.js +4 -0
  661. package/dist/entries/templates.js.map +1 -0
  662. package/dist/entries/tutorials.cjs +13 -0
  663. package/dist/entries/tutorials.cjs.map +1 -0
  664. package/dist/entries/tutorials.d.cts +63 -0
  665. package/dist/entries/tutorials.d.ts +63 -0
  666. package/dist/entries/tutorials.js +4 -0
  667. package/dist/entries/tutorials.js.map +1 -0
  668. package/dist/entries/uploads.cjs +13 -0
  669. package/dist/entries/uploads.cjs.map +1 -0
  670. package/dist/entries/uploads.d.cts +44 -0
  671. package/dist/entries/uploads.d.ts +44 -0
  672. package/dist/entries/uploads.js +4 -0
  673. package/dist/entries/uploads.js.map +1 -0
  674. package/dist/entries/video-pro.cjs +13 -0
  675. package/dist/entries/video-pro.cjs.map +1 -0
  676. package/dist/entries/video-pro.d.cts +60 -0
  677. package/dist/entries/video-pro.d.ts +60 -0
  678. package/dist/entries/video-pro.js +4 -0
  679. package/dist/entries/video-pro.js.map +1 -0
  680. package/dist/entries/voices.cjs +13 -0
  681. package/dist/entries/voices.cjs.map +1 -0
  682. package/dist/entries/voices.d.cts +498 -0
  683. package/dist/entries/voices.d.ts +498 -0
  684. package/dist/entries/voices.js +4 -0
  685. package/dist/entries/voices.js.map +1 -0
  686. package/dist/entries/webhooks.cjs +21 -0
  687. package/dist/entries/webhooks.cjs.map +1 -0
  688. package/dist/entries/webhooks.d.cts +64 -0
  689. package/dist/entries/webhooks.d.ts +64 -0
  690. package/dist/entries/webhooks.js +4 -0
  691. package/dist/entries/webhooks.js.map +1 -0
  692. package/dist/entries/workflows.cjs +13 -0
  693. package/dist/entries/workflows.cjs.map +1 -0
  694. package/dist/entries/workflows.d.cts +393 -0
  695. package/dist/entries/workflows.d.ts +393 -0
  696. package/dist/entries/workflows.js +4 -0
  697. package/dist/entries/workflows.js.map +1 -0
  698. package/dist/entries/workspaces.cjs +13 -0
  699. package/dist/entries/workspaces.cjs.map +1 -0
  700. package/dist/entries/workspaces.d.cts +124 -0
  701. package/dist/entries/workspaces.d.ts +124 -0
  702. package/dist/entries/workspaces.js +4 -0
  703. package/dist/entries/workspaces.js.map +1 -0
  704. package/dist/index.cjs +501 -5192
  705. package/dist/index.cjs.map +1 -1
  706. package/dist/index.d.cts +66 -10894
  707. package/dist/index.d.ts +66 -10894
  708. package/dist/index.js +100 -5074
  709. package/dist/index.js.map +1 -1
  710. package/dist/nodes-BPvrAoUs.d.cts +1264 -0
  711. package/dist/nodes-C2zu3uqn.d.ts +1264 -0
  712. package/dist/studio-productions-DUHvdSvk.d.cts +572 -0
  713. package/dist/studio-productions-vbCNSbtf.d.ts +572 -0
  714. package/dist/webhooks-BJawEIz8.d.ts +198 -0
  715. package/dist/webhooks-Dn_DtNTD.d.cts +198 -0
  716. package/package.json +253 -3
@@ -0,0 +1,1264 @@
1
+ import { ConnectedReference, DescribedReference } from '@nodaro/shared/types';
2
+ import { VideoCharacterReference } from '@nodaro/shared/video';
3
+ import { ImageEditTargetResolution, ImageAspectRatio, TaskChainedEditProvider, ImageEditProvider, ModifyImageProvider, ImageResolution, ImageQuality, ImageRenderingSpeed } from '@nodaro/shared/models';
4
+ import '@nodaro/shared/nodes';
5
+ import { SocialSearchParams, SocialPost, SocialPlatform, SocialSearchMode } from '@nodaro/shared/social';
6
+ import { GenerateMaskOutput, GenerateMaskRequest, VideoDepthProvider, VideoDepthModelSize, VideoDepthColormap, VideoDepthResolution } from '@nodaro/shared/media';
7
+ import * as _nodaro_shared_scene3d from '@nodaro/shared/scene3d';
8
+ import { Scene3DPlan, Scene3DEditOperation, Scene3DV2EditOperation, Scene3DReference, Pro3DRenderSource, Pro3DRenderEngine, Pro3DRenderQuality, Pro3DRenderStyle, Scene3DJobOutputAny, Pro3DRenderJobOutput as Pro3DRenderJobOutput$1, Pro3DRenderCapabilities, Scene3DPlanV2, Pro3DRenderQuote as Pro3DRenderQuote$1 } from '@nodaro/shared/scene3d';
9
+ import { TopazUpscaleFactor } from '@nodaro/shared/credits';
10
+ import { ImageToImageAttachColumn } from '@nodaro/shared/entities';
11
+ import { N as NodaroClientCore } from './developer-apps-zSQXWmEG.js';
12
+ import { JobsResource, JobStatusResult } from './entries/jobs.js';
13
+ import { NodaroError } from './entries/errors.js';
14
+ import { ModelInputAdjustment } from '@nodaro/shared/model-catalog';
15
+ import { DirectionFields, SubjectFields } from '@nodaro/prompts/prompt-builder';
16
+
17
+ /** Reuse newRevisionId for transport retries of the same immutable edit. */
18
+ interface RetainedScene3DEditParams {
19
+ newRevisionId: string;
20
+ expectedContentHash: string;
21
+ operations: readonly Scene3DV2EditOperation[];
22
+ lockedObjectIds?: readonly string[];
23
+ }
24
+ interface RetainedScene3DEditResult {
25
+ scenePlan: Scene3DPlanV2;
26
+ changeSummary: string;
27
+ }
28
+ /**
29
+ * The kind of bytes a delivery descriptor names, and the usage it is pinned under.
30
+ *
31
+ * PAIRED, not two free enums: the platform refuses a pin whose usage is not the one its kind is
32
+ * defined to have, and a client that checks only one of the two would accept a mis-pinned
33
+ * artifact the server would then refuse. {@link SCENE3D_DELIVERY_ASSET_USAGE} is the map both
34
+ * halves are read from.
35
+ */
36
+ declare const SCENE3D_DELIVERY_ASSET_USAGE: {
37
+ readonly poster: "poster";
38
+ readonly "validation-report": "validation";
39
+ readonly "shot-still": "shot-still";
40
+ /** The recipe a run that never compiled was refused for. See {@link Scene3DDeliveryAsset}. */
41
+ readonly "source-json": "checkpoint";
42
+ };
43
+ type Scene3DDeliveryAssetKind = keyof typeof SCENE3D_DELIVERY_ASSET_USAGE;
44
+ /**
45
+ * One artifact a delivery pins, as a descriptor: opaque ids and digests only.
46
+ *
47
+ * Four kinds, and two of them are conditional:
48
+ *
49
+ * - `poster` and `validation-report` are on every delivery;
50
+ * - `shot-still` appears once per shot on a render that produced a contact sheet, and carries
51
+ * its own shot identity (`shotIndex`, `frame`, and the frame size);
52
+ * - `source-json` appears on ONE shape only — a `refused-authoring` delivery, published by a
53
+ * 3D Render Pro run whose recipe the compiler refused on every pass. It is the planner's last
54
+ * admitted recipe, and it is the only thing such a run leaves that names what was attempted.
55
+ * Reading it needs `edit` on the job's workflow (the same access the `.blend` export costs);
56
+ * a reader with less simply does not see the descriptor.
57
+ */
58
+ interface Scene3DDeliveryAsset {
59
+ assetId: string;
60
+ kind: Scene3DDeliveryAssetKind;
61
+ usage: (typeof SCENE3D_DELIVERY_ASSET_USAGE)[Scene3DDeliveryAssetKind];
62
+ byteLength: number;
63
+ sha256: string;
64
+ viaRevisionId: string | null;
65
+ /** Set on a `shot-still` and absent on every other kind — never `null`. */
66
+ shotIndex?: number;
67
+ frame?: number;
68
+ width?: number;
69
+ height?: number;
70
+ }
71
+ /** Export evidence is retained separately from the immutable scene it rendered. */
72
+ interface Scene3DDelivery {
73
+ deliveryId: string;
74
+ /**
75
+ * Null on a `refused-authoring` delivery and on that alone.
76
+ *
77
+ * A Pro run whose recipe the compiler refused on every pass still retains the refusal
78
+ * report, but nothing was ever compiled, so no scene revision was published. The field is
79
+ * null rather than absent so the shape stays one shape; read `sourceKind` to tell why.
80
+ */
81
+ sceneRevisionId: string | null;
82
+ /**
83
+ * What this delivery was made from. Absent when read from a deployment that predates the
84
+ * refused lane, where every delivery necessarily had a scene behind it.
85
+ */
86
+ sourceKind?: "retained-revision" | "job-output" | "refused-authoring";
87
+ /** Null when there is no plan to hash — see `sceneRevisionId`. */
88
+ sourcePlanSha256: string | null;
89
+ sourceContentHash: string | null;
90
+ sourceJobId: string | null;
91
+ workflowId: string | null;
92
+ mode: "authored" | "render-only";
93
+ createdAt: string;
94
+ access: "view" | "edit" | "own";
95
+ assets: Scene3DDeliveryAsset[];
96
+ }
97
+ type Scene3DAuthoringEngine = "basic" | "blender-cloud" | "blender-local";
98
+ interface Scene3DCapabilities {
99
+ basic: {
100
+ available: boolean;
101
+ sceneSchemaVersions: number[];
102
+ };
103
+ advanced: null | {
104
+ version: string;
105
+ engines: Array<Exclude<Scene3DAuthoringEngine, "basic">>;
106
+ sceneSchemaVersions: number[];
107
+ maxRepairPasses: number;
108
+ };
109
+ /**
110
+ * What this deployment can serve for `pro-3d-render`, including which
111
+ * quality profiles, engines and aspect ratios a client may OFFER. Optional so
112
+ * a client of this version reads an older backend without throwing; absent
113
+ * means the node is unavailable.
114
+ */
115
+ pro?: Pro3DRenderCapabilities;
116
+ }
117
+ interface Scene3DEngineParams {
118
+ /** Basic is the default. Discover optional engines through scene3d.capabilities(). */
119
+ engine?: Scene3DAuthoringEngine;
120
+ acceptedSceneSchemaVersions?: readonly number[];
121
+ localConnectionId?: string;
122
+ quoteId?: string;
123
+ maxRepairPasses?: number;
124
+ }
125
+ /** Structured authoring inputs; reference roles are interpreted by the platform. */
126
+ interface GenerateScene3DParams extends Record<string, unknown>, Scene3DEngineParams, GenerationSessionParams {
127
+ /** Existing GLBs selected by immutable revision/artifact IDs. Requires an import-capable advanced engine. */
128
+ inputAssets?: readonly _nodaro_shared_scene3d.Scene3DInputAsset[];
129
+ prompt: string;
130
+ durationSeconds?: number;
131
+ fps?: number;
132
+ aspectRatio?: string;
133
+ references?: readonly Scene3DReference[];
134
+ llmModel?: string;
135
+ reasoningEffort?: string;
136
+ workflowId?: string;
137
+ nodeId?: string;
138
+ }
139
+ /** Editing creates a new revision and never mutates the supplied scene. */
140
+ interface EditScene3DParams extends Record<string, unknown>, Scene3DEngineParams, GenerationSessionParams {
141
+ scenePlan: Scene3DPlan;
142
+ expectedRevisionId: string;
143
+ /** Replace the complete reference set, including clearing it with an empty list. Default: merge by id. */
144
+ replaceReferences?: boolean;
145
+ /** Supply an instruction or deterministic operations, never both. */
146
+ prompt?: string;
147
+ operations?: readonly (Scene3DEditOperation | Scene3DV2EditOperation)[];
148
+ references?: readonly Scene3DReference[];
149
+ lockedObjectIds?: readonly string[];
150
+ selectedObjectIds?: readonly string[];
151
+ llmModel?: string;
152
+ reasoningEffort?: string;
153
+ workflowId?: string;
154
+ nodeId?: string;
155
+ }
156
+ /**
157
+ * 3D Render Pro — ONE durable operation producing a composition and its MP4.
158
+ *
159
+ * `source` is a strict discriminated union, not a bag of optionals:
160
+ * - `{kind:'prompt', prompt, references?}` authors a new scene;
161
+ * - `{kind:'scene', revisionId, sourceJobId}` with NO `editPrompt` is the
162
+ * render-only export — it spends no authoring or build credits, and OMIT
163
+ * the field rather than sending `""`, which would buy an authoring pass;
164
+ * - `{kind:'local-export', exportId, connectionId}` uses a paired desktop.
165
+ *
166
+ * There is no model or effort field: the planner is fixed and server-owned.
167
+ *
168
+ * `durationSeconds` / `fps` / `aspectRatio` on a `scene` source are an EXPLICIT
169
+ * re-time request. Omit them to keep the source's own timing; a conflicting
170
+ * override is rejected rather than silently applied.
171
+ */
172
+ interface Pro3DRenderParams extends Record<string, unknown> {
173
+ source: Pro3DRenderSource;
174
+ /** Optional. An unknown or unavailable engine is rejected, never downgraded. */
175
+ engine?: Pro3DRenderEngine;
176
+ /** Names a paired desktop for a local run. */
177
+ localConnectionId?: string;
178
+ durationSeconds?: number;
179
+ fps?: number;
180
+ aspectRatio?: string;
181
+ quality?: Pro3DRenderQuality;
182
+ style?: Pro3DRenderStyle;
183
+ /** Correction budget, 0-2. Each pass is paid work. */
184
+ maxRepairPasses?: number;
185
+ /**
186
+ * Which scene-schema versions THIS client can render. A prompt or
187
+ * local-export source mints v2, so omitting 2 is refused for free; a scene
188
+ * source inherits its revision's version and is left to the server.
189
+ */
190
+ acceptedSceneSchemaVersions?: readonly number[];
191
+ workflowId?: string;
192
+ nodeId?: string;
193
+ /** Keep every artifact of this run out of publicly-readable storage. */
194
+ forcePrivate?: boolean;
195
+ }
196
+ /** A run additionally carries the quote it was priced under. */
197
+ interface Pro3DRenderRunParams extends Pro3DRenderParams {
198
+ quoteId: string;
199
+ }
200
+ /** The quote's answer. `maxCredits` is a ceiling; quoting spends nothing. */
201
+ type Pro3DRenderQuote = Readonly<Pro3DRenderQuote$1> & Readonly<Record<string, unknown>>;
202
+ /** Per-call transport controls for the paid run. */
203
+ interface Pro3DRenderRunOptions {
204
+ /**
205
+ * The `Idempotency-Key` the run is submitted under. Reuse the same value when
206
+ * retrying a call that timed out, so the run is not started twice; the SDK
207
+ * generates a fresh one per call when this is omitted, because two deliberate
208
+ * calls are two runs.
209
+ */
210
+ idempotencyKey?: string;
211
+ }
212
+ /**
213
+ * Render the exact scene revision through the existing render-video node.
214
+ *
215
+ * The price follows the plan's OWN `width`/`height`, not any node setting: a
216
+ * frame up to 1920 px on its longest side settles under `render-video`, a
217
+ * larger one under `render-video:3d-large` (1.5x) or, above 5.12 megapixels,
218
+ * `render-video:3d-xlarge` (2.5x). Read the current numbers from the
219
+ * model-cost API for those three identifiers.
220
+ */
221
+ interface RenderScene3DParams extends Record<string, unknown>, GenerationSessionParams {
222
+ planType: "3d-scene";
223
+ plan: Scene3DPlan;
224
+ workflowId?: string;
225
+ nodeId?: string;
226
+ }
227
+ /**
228
+ * Preserve the shared wire contract while allowing additive job metadata.
229
+ *
230
+ * A scene authored by an ADVANCED engine additionally reports what the run knows about its own
231
+ * answer, every field optional and all of them absent on the deterministic Basic lane:
232
+ * `validation.warnings[]` entries coded `SCENE_AUTHORING_ASSUMPTION` (the planner's
233
+ * assumptions), `metadata.summary` (its description of what it authored), `repairPasses`
234
+ * (repairs actually run — `0` when the scene was accepted first time), `admissionRetries`
235
+ * (pre-build planner retries, which spend no repair pass), `mechanicalPasses` (repairs the engine
236
+ * applied from the compiler's own remedy with no planner call, counted APART from `repairPasses`
237
+ * on their own quoted allowance, each with a `REMEDY_AUTO_APPLIED` warning) and
238
+ * `restoredAssertions` (mandatory assertions put back after a planner answer re-shaped one the
239
+ * feedback had not named, each a `ASSERTION_RESTORED` warning).
240
+ *
241
+ * A scene that passed every mandatory assertion but did not get the visual reviewer's approval
242
+ * is delivered anyway, and `metadata.review` carries a verdict saying why. `verdict: "refused"`
243
+ * is the ADVISORY delivery — the reviewer objected once the repair budget was spent — with one
244
+ * `SCENE_REVIEW_REFUSED` warning per objection. `verdict: "unavailable"` is the UNREVIEWED
245
+ * delivery: the review produced no usable verdict after `attempts` asks — `reason: "provider"`
246
+ * when it never reached its provider, `"unusable"` when the provider answered with nothing usable
247
+ * (`Scene3DReviewUnavailableReason` in `@nodaro/shared`) — so nobody judged the scene, and
248
+ * `validation.warnings[]` LEADS with `SCENE_REVIEW_UNAVAILABLE` (any objections under it came from
249
+ * review batches that answered usably first, and are not the whole verdict).
250
+ *
251
+ * `validation.status` stays `"passed"` on both, so `metadata.review` being present is the only
252
+ * reliable test — use `scene3DReviewVerdictOf` from `@nodaro/shared` rather than reading it by
253
+ * hand, and `scene3DReviewNote` rather than writing the sentence yourself: a message that says
254
+ * the reviewer refused a scene nobody reviewed invents an opinion.
255
+ */
256
+ type Scene3DJobOutput = Readonly<Scene3DJobOutputAny> & Readonly<Record<string, unknown>>;
257
+ /**
258
+ * The settled 3D Render Pro result, plus any additive job metadata.
259
+ *
260
+ * On a run that AUTHORED, the result reports the run's own account of its answer:
261
+ * `validation.warnings[]` entries coded `SCENE_AUTHORING_ASSUMPTION`, `metadata.summary`,
262
+ * `repairPasses` (`0` when accepted first time), `admissionRetries` (pre-build planner retries,
263
+ * which spend no repair pass), `mechanicalPasses` (repairs the engine authored itself from the
264
+ * compiler's own remedy, counted APART from `repairPasses` because they buy their own quoted
265
+ * allowance rather than spending one of your repairs) and `restoredAssertions`. A render-only
266
+ * export authored nothing, so it carries no summary and omits the counts rather than claiming `0`.
267
+ *
268
+ * The one case where `mechanicalPasses` IS a subset of `repairPasses` is a run quoted before that
269
+ * allowance existed — its quote carries no `mechanical` line. The discriminant is the quote, not
270
+ * the result, so read the quote you were given rather than deriving it from the two counts.
271
+ *
272
+ * A completed result may also be published without the visual reviewer's approval, and then
273
+ * `metadata.review` holds a verdict saying which way. `{ verdict: "refused", objections[],
274
+ * observed? }` is the ADVISORY delivery: every mandatory assertion passed, the reviewer still
275
+ * objected, and the scene was published once the repair budget was spent, with one
276
+ * `SCENE_REVIEW_REFUSED` warning per objection. `{ verdict: "unavailable", reason, attempts,
277
+ * objections[], observed? }` is the UNREVIEWED delivery: the review produced no usable verdict in
278
+ * `attempts` asks — `reason: "provider"` when it never reached its provider, `"unusable"` when the
279
+ * provider answered with nothing usable — so the assertion-passing scene was delivered with no
280
+ * verdict on it and `validation.warnings[]` LEADS with `SCENE_REVIEW_UNAVAILABLE`. Objections on
281
+ * that arm are whatever review batches answered usably first — real, but not the whole verdict.
282
+ *
283
+ * `validation.status` is `"passed"` on both, so test for `metadata.review` — via
284
+ * `scene3DReviewVerdictOf` from `@nodaro/shared` — rather than for the status or the warnings,
285
+ * and render it with `scene3DReviewNote` rather than assuming a refusal.
286
+ */
287
+ type Pro3DRenderJobOutput = Readonly<Pro3DRenderJobOutput$1> & Readonly<Record<string, unknown>>;
288
+
289
+ /**
290
+ * Typed request bodies and results for the image routes beside
291
+ * `generate-image`: `image-to-image`, `edit-image`, `split-image` and
292
+ * `generate-mask` — the overloads live on `NodesResource.run` / `runAndWait`.
293
+ *
294
+ * Every vocabulary is the platform's own (`@nodaro/shared`), never a copy:
295
+ * the route Zod enums are built from the same tuples. The field lists are held
296
+ * to the route bodies by `backend/src/routes/__tests__/sdk-image-params-contract.test.ts`.
297
+ */
298
+
299
+ /**
300
+ * What `nodes.run("image-to-image" | "edit-image" | "generate-mask", …)`
301
+ * answers: the job it started. Wait for it with `runAndWait` (or poll
302
+ * `jobs.getStatus(jobId)`).
303
+ */
304
+ type ImageJobStarted = {
305
+ jobId: string;
306
+ /** Parameters the server corrected for the chosen model (an aspect ratio it does not draw, …); the run used the corrected values. */
307
+ adjustments?: RunNodeAdjustment[];
308
+ [k: string]: unknown;
309
+ };
310
+ /**
311
+ * Typed request body for `nodes.run("image-to-image", …)` / `runAndWait` —
312
+ * restyle or edit one image with a prompt (`POST /v1/image-to-image`). The
313
+ * completed job writes `imageUrl`. (`modify-image` runs through this route.)
314
+ *
315
+ * Levers a model does not take are corrected to one it does, and reported in
316
+ * the answer's `adjustments` — never rejected. Any other route field passes
317
+ * through.
318
+ */
319
+ interface ImageToImageParams extends GenerationSessionParams {
320
+ /** The source image — a public http(s) URL. */
321
+ imageUrl: string;
322
+ prompt: string;
323
+ /** The prompt as your user typed it, when `prompt` is a version your app expanded. Stored on the job; never sent to the model. */
324
+ userPrompt?: string;
325
+ /** Omitted: the platform's default edit model for the requested `aspectRatio`. */
326
+ provider?: ModifyImageProvider;
327
+ /** Extra reference images, up to 13. On models priced per reference, `imageUrl` counts as one. */
328
+ referenceImageUrls?: string[];
329
+ resolution?: ImageResolution;
330
+ quality?: ImageQuality;
331
+ /** 0–1: how far the result may move from the source (taken by the models in `I2I_STRENGTH_SUPPORT`). */
332
+ strength?: number;
333
+ /** `"auto"` on a model without a native auto keeps the source image's shape (the model's nearest ratio). */
334
+ aspectRatio?: ImageAspectRatio;
335
+ /** Up to 5,000 characters. */
336
+ negativePrompt?: string;
337
+ /** A whole number ≥ 0 (taken by the models in `SEED_SUPPORT`). */
338
+ seed?: number;
339
+ /** Ideogram's speed tier (the models in `RENDERING_SPEED_SUPPORT`). */
340
+ renderingSpeed?: ImageRenderingSpeed;
341
+ /** 0–30: prompt adherence (taken by the models in `GUIDANCE_SCALE_SUPPORT`). */
342
+ guidanceScale?: number;
343
+ /**
344
+ * Inpainting mask — white = the area to change, black = keep. Sent to the
345
+ * model as its own mask, so only the mask-capable image-to-image models use
346
+ * it (`I2I_MASK_SUPPORT`: `ideogram-edit`, `flux-fill`); others ignore it.
347
+ * For a mask on any image model, see `GenerateImageParams.maskUrl`.
348
+ */
349
+ maskUrl?: string;
350
+ /** Character Studio: the asset's one-line description (up to 1,000 characters); drafted for you when omitted on the studio path. */
351
+ description?: string;
352
+ /** Character Studio: real-life reference photos, up to 5. Used on the studio path only. */
353
+ realLifeRefs?: string[];
354
+ /** Character Studio: with `attachToColumn` and `attachName`, the result is added to this character (one of yours). */
355
+ attachToCharacterId?: string;
356
+ attachToColumn?: ImageToImageAttachColumn;
357
+ /** 1–200 characters. */
358
+ attachName?: string;
359
+ /** Append the character's identity description to the prompt (not on the studio path). Default `false`. */
360
+ injectCharacterContext?: boolean;
361
+ [k: string]: unknown;
362
+ }
363
+ /**
364
+ * The fields both forms of an `edit-image` request take. See
365
+ * {@link EditImageParams}.
366
+ */
367
+ interface EditImageCommonParams extends GenerationSessionParams {
368
+ /**
369
+ * The edit instruction. REQUIRED for `nano-banana-edit` and `grok-2-edit`
370
+ * (a `400 validation_error` without one); the upscalers and background
371
+ * removal take none.
372
+ */
373
+ prompt?: string;
374
+ /** The prompt as your user typed it. Stored on the job; never sent to the model. */
375
+ userPrompt?: string;
376
+ /** `topaz-image-upscale`: the factor. Wins over `targetResolution`. */
377
+ upscaleFactor?: TopazUpscaleFactor;
378
+ /** The upscalers' output tier. On `topaz-image-upscale` it maps to a factor (2K → 2, 4K and 8K → 4) when `upscaleFactor` is absent. */
379
+ targetResolution?: ImageEditTargetResolution;
380
+ /** Corrected per model; dropped for the models that take none (the upscalers, background removal, the Grok task ops). */
381
+ aspectRatio?: ImageAspectRatio;
382
+ /** Up to 5,000 characters. */
383
+ negativePrompt?: string;
384
+ /** Up to 500 characters. */
385
+ style?: string;
386
+ /** A whole number ≥ 0. */
387
+ seed?: number;
388
+ /** Up to 13. */
389
+ referenceImageUrls?: string[];
390
+ /** Inpainting mask, passed to the model as its mask; a model that takes none ignores it. */
391
+ maskUrl?: string;
392
+ [k: string]: unknown;
393
+ }
394
+ /** An `edit-image` request on an image URL — every provider but the Grok task ops. */
395
+ interface EditImageFromUrlParams extends EditImageCommonParams {
396
+ /** The image to edit — a public http(s) URL. */
397
+ imageUrl: string;
398
+ /** Default `recraft-upscale`. */
399
+ provider?: Exclude<ImageEditProvider, TaskChainedEditProvider>;
400
+ taskId?: never;
401
+ }
402
+ /**
403
+ * An `edit-image` request on a prior Grok generation — `grok-upscale`,
404
+ * `grok-2-edit`, `grok-2-segment` take that generation's task id instead of an
405
+ * image URL (`TASK_CHAINED_EDIT_PROVIDER_IDS`).
406
+ */
407
+ interface EditImageFromTaskParams extends EditImageCommonParams {
408
+ /** The prior Grok generation's task id — its job's `output_data.kieTaskId`. 1–200 characters. */
409
+ taskId: string;
410
+ provider: TaskChainedEditProvider;
411
+ imageUrl?: never;
412
+ /**
413
+ * `grok-2-edit` only: limit the edit to these segments — the `index` values
414
+ * a `grok-2-segment` run returned, passed through as they are. 1–64 whole
415
+ * numbers ≥ 0.
416
+ */
417
+ maskIndexes?: number[];
418
+ }
419
+ /**
420
+ * Typed request body for `nodes.run("edit-image", …)` / `runAndWait` —
421
+ * upscale, remove the background, or prompt-edit (`POST /v1/edit-image`).
422
+ * Exactly one source: `imageUrl` for every provider except the Grok task ops,
423
+ * which take `taskId` (and must name their `provider`). The provider defaults
424
+ * to `recraft-upscale`. The completed job writes `imageUrl`.
425
+ *
426
+ * The union is checked when the body is typed as `EditImageParams`
427
+ * (`const params: EditImageParams = …` or `{ … } satisfies EditImageParams`). A
428
+ * body written inline that fails it falls through to the untyped
429
+ * `run(type: string, …)` overload, compiles, and resolves `RunNodeResult`.
430
+ */
431
+ type EditImageParams = EditImageFromUrlParams | EditImageFromTaskParams;
432
+ /**
433
+ * Typed request body for `nodes.run("split-image", …)` — cut one image into a
434
+ * grid of tiles (`POST /v1/split-image`). Free and SYNCHRONOUS: no job is
435
+ * created, so `runAndWait` does not apply (it would throw: the answer has no
436
+ * `jobId`) and there are no session fields; the answer is the tiles
437
+ * themselves ({@link SplitImageResult}).
438
+ */
439
+ interface SplitImageParams {
440
+ /** The image to cut — a public http(s) URL. */
441
+ imageUrl: string;
442
+ /** Columns, 1–6. */
443
+ gridCols: number;
444
+ /** Rows, 1–6. */
445
+ gridRows: number;
446
+ /**
447
+ * One name per tile, row by row (1–36). Must hold exactly
448
+ * `gridCols × gridRows` entries (`gridCols` and `gridRows` each 1–6) — a
449
+ * `400 validation_error` otherwise.
450
+ */
451
+ names: string[];
452
+ [k: string]: unknown;
453
+ }
454
+ /** One tile of a split — see {@link SplitImageResult}. */
455
+ type SplitImageTile = {
456
+ name: string;
457
+ url: string;
458
+ };
459
+ /** What `nodes.run("split-image", …)` answers: every tile as a PNG, in `names` order. */
460
+ type SplitImageResult = {
461
+ images: SplitImageTile[];
462
+ };
463
+ /**
464
+ * Typed request body for `nodes.run("generate-mask", …)` / `runAndWait` — a
465
+ * black-and-white mask of the subject a prompt names (`POST /v1/generate-mask`),
466
+ * ready for `maskUrl` on the inpainting routes. The SDK's one way to start it.
467
+ * The completed job writes {@link GenerateMaskJobOutput}.
468
+ *
469
+ * The fields are `@nodaro/shared`'s {@link GenerateMaskRequest} — the route's
470
+ * one wire contract, bounds in `GENERATE_MASK_LIMITS` — plus the session
471
+ * fields every job-creating request takes. Any other route field passes
472
+ * through.
473
+ */
474
+ interface GenerateMaskParams extends GenerateMaskRequest, GenerationSessionParams {
475
+ [k: string]: unknown;
476
+ }
477
+ /**
478
+ * The completed `generate-mask` job's `output_data`: `@nodaro/shared`'s
479
+ * {@link GenerateMaskOutput} — `maskUrl`, the mask PNG (white = the subject),
480
+ * and `imageUrl`, the source passed through unchanged — on top of the common
481
+ * {@link NodeJobOutput} fields.
482
+ */
483
+ type GenerateMaskJobOutput = NodeJobOutput & GenerateMaskOutput;
484
+
485
+ type NodeCategory = "input" | "parameter" | "ai-image" | "ai-video" | "ai-audio" | "ai-text" | "processing" | "composition" | "trigger" | "output" | "control" | "entity" | "utility";
486
+ type OutputType = "text" | "image" | "video" | "audio" | "data" | "none";
487
+ /**
488
+ * Field shape inside a node's `inputSchema.fields[]`. Mirrors
489
+ * `backend/src/lib/node-registry.ts`.
490
+ */
491
+ interface NodeInputField {
492
+ key: string;
493
+ type: string;
494
+ required?: boolean;
495
+ options?: string[];
496
+ }
497
+ interface NodeInputSchema {
498
+ fields: NodeInputField[];
499
+ }
500
+ /**
501
+ * A per-unit price on a node descriptor. A run of N units is charged
502
+ * `ceil(N × creditsPerUnit)`, rounded up once — so `GET /v1/credits/model-cost`
503
+ * for `identifier` (one unit, rounded up: the least a run pays) times N can come
504
+ * to more. `<identifier>:<N>u` is the exact price of N units; for a whole run
505
+ * use `POST /v1/credits/estimate-workflow`.
506
+ */
507
+ interface NodeCreditRate {
508
+ /** The price id the rate is read from. */
509
+ identifier: string;
510
+ /** What one unit is, as a token (`"1000-frames"`: one started block of 1,000 sampled frames). */
511
+ unit: string;
512
+ /** The credits one unit adds to a run's total — exact, not rounded. */
513
+ creditsPerUnit: number;
514
+ /** The fewest units a run is charged for. */
515
+ minUnits: number;
516
+ /** `"ceil-run-total"`: the run's total is rounded up to a whole credit once, never per unit. */
517
+ rounding: "ceil-run-total";
518
+ /** The rule in words. */
519
+ note: string;
520
+ }
521
+ /**
522
+ * Node descriptor returned by `GET /v1/nodes` and `GET /v1/nodes/:type`.
523
+ * Mirrors `backend/src/lib/node-registry.ts#NodeDescriptor`.
524
+ */
525
+ interface NodeDescriptor {
526
+ type: string;
527
+ label: string;
528
+ category: NodeCategory;
529
+ description: string;
530
+ outputType: OutputType;
531
+ /** The credits a run is charged, the figure on the node's Run button.
532
+ * Number when fixed, string range like "10-80" when model-dependent.
533
+ * Undefined when the node is free — or on editions
534
+ * without a credit system (community/business omit the field entirely;
535
+ * it is meaningful on Cloud only). */
536
+ creditCost?: number | string;
537
+ /** A node charged per unit of its own measure (its `creditCost` is a word
538
+ * such as `"per-1000-frames"`): the charged price of one unit and how a run
539
+ * rounds. Cloud only, like `creditCost`. */
540
+ creditRate?: NodeCreditRate;
541
+ /** Input fields the node exposes for user override (subset of full config). */
542
+ inputSchema?: NodeInputSchema;
543
+ /** For AI nodes: list of provider IDs supported. */
544
+ providers?: string[];
545
+ /** Capability flags such as "supports-reference-image" or "supports-end-frame". */
546
+ capabilities?: string[];
547
+ /** Hard duration ceiling in seconds (e.g. Generate Video Pro's env-configured cap). */
548
+ maxDurationSec?: number;
549
+ /** Providers whose segment-duration menu is sparse (off-menu values snap to the nearest entry). */
550
+ sparseProviders?: string[];
551
+ /** Per-provider resolution tiers, e.g. `{ "minimax-h3": ["2K", "768P"] }`. */
552
+ providerResolutions?: Record<string, string[]>;
553
+ /** Per-provider map of display resolution → the literal wire value the API expects. */
554
+ providerResolutionWire?: Record<string, Record<string, string>>;
555
+ /** Generate Video Pro: the deployed engine accepts the `soundtrack` input (original-audio replay). */
556
+ soundtrack?: boolean;
557
+ }
558
+ /**
559
+ * Result of a direct node execution. Most node types return `{ jobId }` and
560
+ * are processed asynchronously by a worker — the caller polls
561
+ * `client.jobs.get(jobId)` until status is `completed`/`failed`.
562
+ *
563
+ * Some node types (`meta-ads-scrape`, for one) answer synchronously and
564
+ * return their full result body. The shape is route-specific; consumers
565
+ * should branch on the presence of `jobId`.
566
+ */
567
+ /**
568
+ * One parameter the server corrected because the chosen model does not accept
569
+ * the value you sent (e.g. `gpt-image-2` has no 3:2 aspect ratio). The run
570
+ * proceeds with the corrected value rather than failing — this is how you find
571
+ * out what it actually used.
572
+ *
573
+ * Re-exports `@nodaro/shared`'s `ModelInputAdjustment` — the same shape the
574
+ * server's `normalizeModelInput` / `resolveNormalizedImageGen` populate — under
575
+ * the SDK's naming convention, rather than declaring a second copy of the
576
+ * fields.
577
+ */
578
+ type RunNodeAdjustment = ModelInputAdjustment;
579
+ /**
580
+ * WHO is in the shot, as picker-catalog option ids — the `subject` field of
581
+ * `generate-image` (and `text-to-video`). The platform writes the wording from
582
+ * the ids you send; you never write prompt text for the subject. It composes
583
+ * with `prompt`: the subject clauses are folded in right after your prompt and
584
+ * ahead of any `direction`.
585
+ *
586
+ * A flat map of field → id(s):
587
+ * - **Keys** are the platform's own picker field names — every Person field
588
+ * (`type`, `age`, `ethnicity`, `hairBase`, `lipState`, …), every Styling
589
+ * field (`makeup`, `jewelry`, `outerwear`, …), and the prop keys `heldProp`,
590
+ * `material` and `animal`. They and their ids come from the picker catalogs:
591
+ * `pickerCatalogs.get("person")` / `get("styling")` list each dimension's
592
+ * `field` with its `options[].id`; `get("held-prop")`, `get("material")` and
593
+ * `get("animal")` write their `options[].id` to the catalog's `valueField`.
594
+ * - **Values** are one id or a list of ids. Ids past a dimension's own cap are
595
+ * dropped, not rejected.
596
+ * - **One number:** `customAge` (years, rounded and clamped to 0–120), read only
597
+ * when `age` is `"age-custom"`. A number on any other key does nothing.
598
+ * - **Bounds** (without `presetId`): at most 128 keys, 64 characters per key,
599
+ * 8 ids per key and 100 characters per id — a map over any of them is a 400
600
+ * `validation_error`. Unknown keys and unknown ids within them are skipped,
601
+ * and the job's `input_data.subject` records the ids that were used.
602
+ * - **With `presetId`** your `subject` replaces the preset's own and is folded
603
+ * into the preset's prompt, as `direction` and `structured` are: an over-long
604
+ * key, id or list is dropped rather than rejected, and `input_data` does not
605
+ * record the subject.
606
+ *
607
+ * Same type as `@nodaro/prompts`' `SubjectFields`, under the SDK's name.
608
+ */
609
+ type Subject = SubjectFields;
610
+ /**
611
+ * Something you asked for that the run did not send, with why — e.g.
612
+ * `moodboard_images_not_sent`: some of a `moodboard:<id>` direction's images
613
+ * did not fit the model's reference limit after your own references. The run
614
+ * goes ahead; the same warnings are kept on the job's `input_data.warnings`.
615
+ */
616
+ interface RunNodeWarning {
617
+ code: string;
618
+ message: string;
619
+ }
620
+ type RunNodeResult = {
621
+ jobId: string;
622
+ usageLogId?: string;
623
+ adjustments?: RunNodeAdjustment[];
624
+ warnings?: RunNodeWarning[];
625
+ [k: string]: unknown;
626
+ } | Record<string, unknown>;
627
+ /**
628
+ * Structured references — the editor's wired-reference shape — shared by
629
+ * `generate-image` and `generate-video`. The route assembles them server-side
630
+ * into per-ref `@image_N` directives and resolves `{image:N}` prompt tokens, so
631
+ * a direct SDK run binds inline references exactly like the canvas. Pass the
632
+ * same `ConnectedReference[]` the editor builds; the route dedupes + caps them
633
+ * to the provider's image-reference limit.
634
+ */
635
+ interface StructuredReferenceParams {
636
+ /** Wired references assembled server-side (deduped + capped per provider). */
637
+ connectedReferences?: ConnectedReference[];
638
+ /**
639
+ * References you can NAME and DESCRIBE but have no media for — a cast role no
640
+ * entity is bound to yet, a character that exists only in the script. They
641
+ * carry no url, so nothing is attached and no `@image_N` seat is used: each
642
+ * becomes a `<Name> — <description>.` line, and a name left in the prompt
643
+ * prose reaches the model as a real, described subject. Up to 10.
644
+ */
645
+ describedReferences?: DescribedReference[];
646
+ /** Reorder the assembled reference list by stable ref ids; renumbers `@image_N`. */
647
+ referenceOrder?: string[];
648
+ }
649
+ /**
650
+ * Captions for a node's video / audio rail references — INDEX-ALIGNED with
651
+ * `referenceVideoUrls` / `referenceAudioUrls`, so `referenceVideoCaptions[0]`
652
+ * describes `referenceVideoUrls[0]`. Each renders as `@video_N: <caption>.` /
653
+ * `@audio_N: <caption>.` in the assembled prompt and is bounded by the number of
654
+ * rail references that actually ship, so a caption can never bind a slot the
655
+ * payload dropped. A blank entry is a hole in the alignment, not a line.
656
+ */
657
+ interface ReferenceCaptionParams {
658
+ referenceVideoCaptions?: string[];
659
+ referenceAudioCaptions?: string[];
660
+ }
661
+ /**
662
+ * Typed request body for `nodes.run("text-to-speech", …)` / `runAndWait`.
663
+ * Common fields are typed; any other route field passes through.
664
+ */
665
+ interface TextToSpeechParams extends GenerationSessionParams {
666
+ text: string;
667
+ /** A premade voice NAME (Rachel, George, …) or a library / custom voice id. */
668
+ voice?: string;
669
+ voiceType?: "premade" | "custom" | "library";
670
+ /** `elevenlabs-v4` (the default), `elevenlabs-v3`, `elevenlabs-v4-turbo`, `elevenlabs-turbo`, `elevenlabs-multilingual`. */
671
+ provider?: string;
672
+ stability?: number;
673
+ similarityBoost?: number;
674
+ style?: number;
675
+ speed?: number;
676
+ languageCode?: string;
677
+ /**
678
+ * Continuity across clips: the line spoken just BEFORE this one in the finished piece
679
+ * (the previous clip's text). Context, not spoken — a model that stitches (v4, Turbo, Multilingual; not v3) carries the
680
+ * intonation across the cut; others ignore it. Up to 1,000 characters (a 400 above, on a model that stitches).
681
+ */
682
+ previousText?: string;
683
+ /** The line spoken just AFTER this one. Same rule as `previousText`. */
684
+ nextText?: string;
685
+ [k: string]: unknown;
686
+ }
687
+ /**
688
+ * Fields every job-creating request accepts beside its own params, on any
689
+ * route: the platform stamps them on the job it creates. Typed on every
690
+ * generation params type.
691
+ */
692
+ interface GenerationSessionParams {
693
+ /** A session from `client.sessions.create()` — the job is born in it and
694
+ * shows in its feed. Must be one of yours (404 otherwise). */
695
+ sessionId?: string;
696
+ /** Your app's slug (`create-image`, …): stored on the job, and what
697
+ * `jobs.list({ origin })` filters on. Lowercase letters, digits, dashes. */
698
+ origin?: string;
699
+ }
700
+ /**
701
+ * Typed request body for `nodes.run("generate-image", …)` / `runAndWait`.
702
+ * Common fields are typed; any other route field passes through via the index
703
+ * signature (the route Zod-validates the full body).
704
+ *
705
+ * `count` above 1 or `models` makes several jobs in one call: the answer is a
706
+ * {@link GenerateImageBatchResult}, and {@link NodesResource.runBatchAndWait}
707
+ * (not `runAndWait`) waits for it.
708
+ */
709
+ interface GenerateImageParams extends StructuredReferenceParams, GenerationSessionParams {
710
+ prompt?: string;
711
+ /**
712
+ * Apply a node preset (a factory id like `"generate-image/cinematic-still"`, from
713
+ * `presets.listFactory("generate-image")`, or one of yours) exactly as the editor does:
714
+ * its prompt and pre/post text, placeholder defaults, style, negative prompt and
715
+ * levers. Fields you pass override it; your `prompt` is wrapped in its pre/post text.
716
+ */
717
+ presetId?: string;
718
+ /** Values for the preset's placeholders that have no default, e.g. `{ BRAND: "Acme" }`.
719
+ * Without them such a preset answers 400 `preset_variables_required`, naming them. */
720
+ presetVariables?: Record<string, string>;
721
+ /** The prompt as your user typed it, when `prompt` is a version your app
722
+ * expanded (filled-in fields, resolved references). Stored on the job as
723
+ * `input_data.userPrompt` to show what the user wrote; never sent to the
724
+ * model. Defaults to `prompt`. */
725
+ userPrompt?: string;
726
+ /** Pre & post text wrapped around `prompt` (a preset's words), joined the
727
+ * same way every AI prompt node joins them. */
728
+ promptPrefix?: string;
729
+ promptSuffix?: string;
730
+ provider?: string;
731
+ /** How many images to make, 1–4 — each its own job, one image each, under
732
+ * its own Idempotency-Key (`<key>:<i>`). With `models`, per model. */
733
+ count?: number;
734
+ /** 2–4 distinct image model ids: the same request runs on each, instead of
735
+ * `provider`. models × count is at most 8. With `presetId`, the preset is
736
+ * applied once per model. */
737
+ models?: string[];
738
+ /** With `count`, image i gets `seed + i` — one seed would draw the same image every time. */
739
+ seed?: number;
740
+ /** Flat reference image URLs — appended after `connectedReferences`. */
741
+ referenceImageUrls?: string[];
742
+ negativePrompt?: string;
743
+ /**
744
+ * Cinematic direction as catalog IDS — the route renders the wording. Two
745
+ * keys also take one of YOUR saved resources:
746
+ * - `colorLook: "palette:<id>"` (`paletteDirectionId(id)`) — the palette's
747
+ * colours, each by an everyday name and its hex, go into the prompt;
748
+ * - `style: "moodboard:<id>"` (`moodboardDirectionId(id)`) — the moodboard's
749
+ * description goes into the prompt and its images go to the model as style
750
+ * references, after your own references and up to the model's reference
751
+ * limit (the answer's `warnings` says when some did not fit). Its images
752
+ * are references, so on models priced per reference the run costs what is
753
+ * sent.
754
+ * A malformed one answers 400; one that is not yours (or was deleted) 404
755
+ * `direction_not_found`. The job keeps the id, so a re-run resolves it again.
756
+ * Not combinable with `presetId` yet (400 `validation_error`).
757
+ */
758
+ direction?: DirectionFields;
759
+ /**
760
+ * WHO is in the shot — person, styling and props as picker-catalog ids
761
+ * ({@link Subject}). The platform writes the wording and folds it in after
762
+ * `prompt`, ahead of `direction`. With `presetId`, it replaces the preset's own
763
+ * and is folded into the preset's prompt (over-long values dropped, not 400).
764
+ */
765
+ subject?: Subject;
766
+ /**
767
+ * The image to edit. Alone, the run is image-to-image on it (a text-to-image
768
+ * model runs as its image-to-image sibling); with `maskUrl`, an inpaint.
769
+ */
770
+ baseImageUrl?: string;
771
+ /**
772
+ * Inpaint mask — white = the area to change, black = keep (what
773
+ * `generate-mask` writes). Needs a base: `baseImageUrl`, else the first
774
+ * `referenceImageUrls` entry. Works on EVERY image model: the result's masked
775
+ * area is composited back over the base, so everything outside the mask is
776
+ * the base's own pixels. On the models whose `IMAGE_MASK_MODE` is `"prompt"`
777
+ * (`@nodaro/shared`) the masked area's position is also described in the
778
+ * prompt; the rest rely on the composite alone. (A model that takes the mask
779
+ * itself is on `image-to-image` — `I2I_MASK_SUPPORT`.)
780
+ */
781
+ maskUrl?: string;
782
+ /** 0–1: how far the result may move from the base (taken by the models in `I2I_STRENGTH_SUPPORT`). */
783
+ strength?: number;
784
+ /** 0–20: prompt adherence (taken by the models in `GUIDANCE_SCALE_SUPPORT`). */
785
+ guidanceScale?: number;
786
+ [k: string]: unknown;
787
+ }
788
+ /** One model's share of a generate-image batch. */
789
+ interface GenerateImageBatchGroup {
790
+ /** The model id as requested. */
791
+ model: string;
792
+ jobIds: string[];
793
+ /** Credits held for this model's images; absent where nothing is charged. */
794
+ credits?: number;
795
+ /** Parameters corrected for this model, as on a single call. */
796
+ adjustments?: RunNodeAdjustment[];
797
+ /** Something asked for that was not sent on this model (e.g. a moodboard past its reference limit), as on a single call. */
798
+ warnings?: RunNodeWarning[];
799
+ }
800
+ /**
801
+ * What `nodes.run("generate-image", …)` answers when `count` is above 1 or
802
+ * `models` is set: every job, grouped by model. The whole batch was checked
803
+ * against the balance and created, charged and queued together — or not at
804
+ * all (`InsufficientCreditsError`'s `required` is then the batch's total).
805
+ */
806
+ interface GenerateImageBatchResult {
807
+ /** The first job — so code reading the single-image answer keeps working. */
808
+ jobId: string;
809
+ /** Every job: model by model, then image by image. */
810
+ jobIds: string[];
811
+ /** On every job of the batch as `input_data.batchId`; `jobs.list({ batchId })` lists them. */
812
+ batchId: string;
813
+ groups: GenerateImageBatchGroup[];
814
+ /** The groups' credits summed; absent where nothing is charged. */
815
+ totalCredits?: number;
816
+ /** Every job already existed and this request charged nothing: a repeat of an earlier request with the same Idempotency-Key. */
817
+ deduped?: true;
818
+ }
819
+ /**
820
+ * One job of a batch once {@link NodesResource.runBatchAndWait} stops waiting
821
+ * for it: its output, or the typed error that ended the wait — a
822
+ * `JobFailedError` (failed or cancelled), `JobHeldError` (held for review) or
823
+ * `JobTimeoutError`. One job's error never discards the others' images.
824
+ */
825
+ type BatchJobOutcome = {
826
+ readonly jobId: string;
827
+ readonly model: string;
828
+ readonly status: "completed";
829
+ readonly output: NodeJobOutput;
830
+ } | {
831
+ readonly jobId: string;
832
+ readonly model: string;
833
+ readonly status: "error";
834
+ readonly error: NodaroError;
835
+ };
836
+ /** What {@link NodesResource.runBatchAndWait} resolves. */
837
+ interface GenerateImageBatchOutput {
838
+ /** The submit's answer: the ids, the groups, the credits. */
839
+ readonly batch: GenerateImageBatchResult;
840
+ /** Every job, in `batch.jobIds` order. */
841
+ readonly results: readonly BatchJobOutcome[];
842
+ }
843
+ /**
844
+ * Typed request body for `nodes.run("generate-video", …)` / `runAndWait`.
845
+ * Common fields are typed; any other route field passes through.
846
+ */
847
+ interface GenerateVideoParams extends StructuredReferenceParams, ReferenceCaptionParams, GenerationSessionParams {
848
+ prompt?: string;
849
+ provider?: string;
850
+ /** Start-frame image (image-to-video). */
851
+ imageUrl?: string;
852
+ /** Closing frame, paired with `imageUrl` on models that support one. */
853
+ endFrameUrl?: string;
854
+ referenceImageUrls?: string[];
855
+ referenceVideoUrls?: string[];
856
+ referenceAudioUrls?: string[];
857
+ /**
858
+ * Identity inputs that keep a real person's face — a portrait + description
859
+ * per person, up to 3. Only models with a dedicated character channel take
860
+ * them (Gemini Omni: `gemini-omni-video`, `gemini-omni-flash`); any other
861
+ * model answers `400`. Distinct from `referenceImageUrls`, which a multimodal
862
+ * model treats as loose context. Cannot be combined with a start frame
863
+ * (`imageUrl`); each character uses 1 of the model's 7 input units (2 with a
864
+ * `bodyImageUrl`). Adds no credit charge. Give a character a `voice` to pin one
865
+ * voice persona (a Gemini preset + optional description / example line) across
866
+ * clips — up to 3 distinct voices a request.
867
+ */
868
+ characterReferences?: VideoCharacterReference[];
869
+ /** How a start/end frame is reshaped before the model sees it. Default
870
+ * `"resolution"`: resize it to the pixel size that model actually renders,
871
+ * which is what stops the provider reshaping it mid-clip. `"ratio"` corrects
872
+ * only the aspect; `"original"` sends it untouched. */
873
+ frameFit?: "original" | "ratio" | "resolution";
874
+ /** Whether the frame travels as a real start frame or as a reference image
875
+ * bound in the prompt as the opening frame. Default `"auto"`, which picks per
876
+ * model. Ignored by models that take no reference images. */
877
+ frameDelivery?: "auto" | "frame" | "reference";
878
+ /** Seedance Draft (`seedance-2-5` only; ignored elsewhere): render a 480p
879
+ * DRAFT — it costs the same as a 480p run and any `resolution` is replaced
880
+ * by 480p. Finalize the take you like with `nodes.run("video-upscale",
881
+ * { provider: "seedance-2-5-hd", sourceJobId })`: the same take, frame for
882
+ * frame, at 1080p. Drafts are kept about 7 days. */
883
+ draft?: boolean;
884
+ [k: string]: unknown;
885
+ }
886
+ /**
887
+ * Typed request body for `nodes.run("text-to-video", …)` / `runAndWait` — the
888
+ * PROMPT-ONLY video lane (`POST /v1/text-to-video`).
889
+ *
890
+ * Which lane takes what: `text-to-video` renders from text (plus optional
891
+ * references) and `prompt` is REQUIRED; frames belong to `generate-video`
892
+ * alone, which is the image-to-video lane (`imageUrl` start frame, `endFrameUrl`
893
+ * closing frame) and where a prompt is optional. A model with no text-to-video
894
+ * mode answers this lane with a `400 image_required` naming itself.
895
+ *
896
+ * Common fields are typed; any other route field passes through.
897
+ */
898
+ interface TextToVideoParams extends StructuredReferenceParams, ReferenceCaptionParams, GenerationSessionParams {
899
+ prompt: string;
900
+ provider?: string;
901
+ duration?: number;
902
+ /** Native audio toggle, on the models that render sound. */
903
+ sound?: boolean;
904
+ negativePrompt?: string;
905
+ aspectRatio?: string;
906
+ resolution?: string;
907
+ seed?: number;
908
+ referenceImageUrls?: string[];
909
+ referenceVideoUrls?: string[];
910
+ referenceAudioUrls?: string[];
911
+ /** Identity inputs that keep a real person's face — see {@link GenerateVideoParams.characterReferences}. */
912
+ characterReferences?: VideoCharacterReference[];
913
+ /** Cinematic direction as catalog IDS — the route renders the wording. */
914
+ direction?: DirectionFields;
915
+ /** WHO is in the shot as picker-catalog ids ({@link Subject}), folded ahead of the direction clauses. */
916
+ subject?: Subject;
917
+ /** Seedance Draft (`seedance-2-5` only; ignored elsewhere): render a 480p
918
+ * DRAFT — it costs the same as a 480p run and any `resolution` is replaced
919
+ * by 480p. Finalize the take you like with `nodes.run("video-upscale",
920
+ * { provider: "seedance-2-5-hd", sourceJobId })`: the same take, frame for
921
+ * frame, at 1080p. Drafts are kept about 7 days. */
922
+ draft?: boolean;
923
+ [k: string]: unknown;
924
+ }
925
+ /**
926
+ * Typed request body for `nodes.run("video-upscale", …)` / `runAndWait`.
927
+ *
928
+ * - `topaz` (default): upscale any `videoUrl` by `upscaleFactor`.
929
+ * - `veo-1080p` / `veo-4k`: re-render a VEO generation by its `taskId`.
930
+ * - `seedance-2-5-hd`: finalize a Seedance 2.5 DRAFT (a `draft: true` run) —
931
+ * the same take re-rendered at 1080p at the draft's own length. Name the
932
+ * draft by `sourceJobId` (its job id) or `taskId` (its providerTaskId). The
933
+ * price comes from the draft (its length, and whether it used a reference
934
+ * video), never from this body. A foreign, unfinished or non-draft source is
935
+ * refused with a 4xx before anything is charged.
936
+ *
937
+ * Any other route field passes through.
938
+ */
939
+ interface VideoUpscaleParams extends GenerationSessionParams {
940
+ provider?: "topaz" | "veo-1080p" | "veo-4k" | "seedance-2-5-hd";
941
+ videoUrl?: string;
942
+ upscaleFactor?: "1" | "2" | "4";
943
+ taskId?: string;
944
+ sourceJobId?: string;
945
+ [k: string]: unknown;
946
+ }
947
+ /**
948
+ * Typed request body for `nodes.run("assemble-narrated-video", …)` / `runAndWait`.
949
+ * Assembles blocks of video with audio narration into a single composed video.
950
+ */
951
+ interface AssembleNarratedVideoParams extends GenerationSessionParams {
952
+ blocks: {
953
+ videoUrl: string;
954
+ audioUrl?: string;
955
+ }[];
956
+ voiceVolume?: number;
957
+ clipAudioVolume?: number;
958
+ maxSlowdown?: number;
959
+ trimStartFrames?: number;
960
+ trimEndFrames?: number;
961
+ [k: string]: unknown;
962
+ }
963
+ /**
964
+ * Typed request body for `nodes.run("video-depth", …)` / `runAndWait` — turns a
965
+ * video into a depth video (`POST /v1/video-depth`, near is bright, far is
966
+ * dark). The completed job writes `videoUrl` (MP4) and `thumbnailUrl`.
967
+ *
968
+ * Two providers: `video-depth-anything` (the default, temporally consistent)
969
+ * honours every lever below; `depth-anything-frames` (Depth Anything per
970
+ * frame) takes `modelSize` and `colormap` only, and renders only `grayscale` /
971
+ * `inferno`. A lever the chosen provider does not take is dropped and a
972
+ * colormap it cannot render becomes `grayscale` — coerced, never rejected (a
973
+ * value outside the vocabularies below is still a `400 validation_error`).
974
+ *
975
+ * The clip is measured before any credits are reserved. Too long answers
976
+ * `400 video_too_long` (`video-depth-anything`: more than 2,400 frames or
977
+ * 300 s; `depth-anything-frames`: more than 80 s); a clip that cannot be read
978
+ * answers `400 video_unreadable`; a provider the deployment has turned off
979
+ * answers `403 model_not_available`.
980
+ *
981
+ * Common fields are typed; any other route field passes through.
982
+ */
983
+ interface VideoDepthParams extends GenerationSessionParams {
984
+ /** The source video — a public http(s) URL. */
985
+ videoUrl: string;
986
+ /** Default `video-depth-anything`. */
987
+ provider?: VideoDepthProvider;
988
+ /** `small` / `base` / `large` (the default) — larger is more detailed and slower. */
989
+ modelSize?: VideoDepthModelSize;
990
+ /** Default `grayscale`. `depth-anything-frames` renders only `grayscale` / `inferno`. */
991
+ colormap?: VideoDepthColormap;
992
+ /** `video-depth-anything` only. Default `auto`. */
993
+ resolution?: VideoDepthResolution;
994
+ /** `video-depth-anything` only: render the original and the depth next to each other. */
995
+ sideBySide?: boolean;
996
+ [k: string]: unknown;
997
+ }
998
+ /**
999
+ * The `output_data` shape a finalized generation job writes. Every async
1000
+ * generation node persists one (or more) of these media URLs to
1001
+ * `jobs.output_data` on completion — `generate-image` → `imageUrl`,
1002
+ * `generate-video` / `combine-videos` / `merge-video-audio` / `video-upscale` /
1003
+ * `video-depth` → `videoUrl` (+ `thumbnailUrl`), `text-to-speech` / `generate-music` →
1004
+ * `audioUrl` (a `text-to-speech` run with `withTimestamps: true` on a model
1005
+ * that returns timings, and every `text-to-dialogue` run on one, also carries
1006
+ * `transcript`). Resolved by {@link NodesResource.runAndWait}. Extra fields may be
1007
+ * present, so the index signature is open.
1008
+ */
1009
+ /**
1010
+ * The completed `social-search` job's `output_data`: EVERY post the search
1011
+ * found, in the order it asked for (Social Search, Nodaro Cloud). Picking the
1012
+ * posts a workflow passes on is an editor step; a direct caller gets them all.
1013
+ */
1014
+ interface SocialSearchJobOutput extends NodeJobOutput {
1015
+ readonly json: readonly SocialPost[];
1016
+ readonly platform: SocialPlatform;
1017
+ readonly mode: SocialSearchMode;
1018
+ readonly query: string;
1019
+ /** Non-fatal notes ("only part of the results could be loaded"). */
1020
+ readonly warnings?: readonly string[];
1021
+ }
1022
+ interface NodeJobOutput {
1023
+ /** `text-to-speech` / `generate-music` / audio nodes write here. For
1024
+ * `audio-separation` this is the primary stem (vocals). */
1025
+ readonly audioUrl?: string;
1026
+ /** `audio-separation` (Demucs) per-stem URLs. `vocalUrl`/`instrumentalUrl`
1027
+ * in vocal/instrumental mode; the rest in full-stems mode. */
1028
+ readonly vocalUrl?: string;
1029
+ readonly instrumentalUrl?: string;
1030
+ readonly drumsUrl?: string;
1031
+ readonly bassUrl?: string;
1032
+ readonly otherUrl?: string;
1033
+ readonly guitarUrl?: string;
1034
+ readonly pianoUrl?: string;
1035
+ /** `generate-video` / `combine-videos` / `merge-video-audio` / `video-upscale` / `video-depth` write here. */
1036
+ readonly videoUrl?: string;
1037
+ /** `generate-image` / `edit-image` / `extract-frame` write here. */
1038
+ readonly imageUrl?: string;
1039
+ /** Every image, when the job made more than one; `imageUrl` is the first. */
1040
+ readonly imageUrls?: readonly string[];
1041
+ /**
1042
+ * The output's pixel size. On an image job: the size of `imageUrl` as it is
1043
+ * stored — what you download, a free-tier watermark included — with EXIF
1044
+ * orientation applied, so the size a browser shows. Lay a grid tile out
1045
+ * before the image loads, or show and sort by size.
1046
+ *
1047
+ * Present on image jobs completed after this release (and on the jobs that
1048
+ * always recorded it: image overlay, video overlay, video mask, mask
1049
+ * composite). Absent when the size could not be read — never half a size.
1050
+ */
1051
+ readonly width?: number;
1052
+ readonly height?: number;
1053
+ /**
1054
+ * Beside `imageUrls`: each image with its pixel size, index-aligned
1055
+ * (`images[i]` is `imageUrls[i]`). Present on image jobs completed after
1056
+ * this release when at least one size was read; an entry whose size could
1057
+ * not be read has its `url` and no `width` / `height`.
1058
+ */
1059
+ readonly images?: readonly JobOutputImage[];
1060
+ /** Poster frame for video outputs. */
1061
+ readonly thumbnailUrl?: string;
1062
+ readonly [k: string]: unknown;
1063
+ }
1064
+ /** One image of a job that made several — see {@link NodeJobOutput.images}. */
1065
+ interface JobOutputImage {
1066
+ readonly url: string;
1067
+ /** Pixel size as stored, EXIF orientation applied. Absent when it could not be read. */
1068
+ readonly width?: number;
1069
+ readonly height?: number;
1070
+ }
1071
+ /** Options for {@link NodesResource.runAndWait} and {@link NodesResource.runMany}. */
1072
+ interface RunAndWaitOptions {
1073
+ /**
1074
+ * Abort the run/poll loop. Aborting (or passing an already-aborted signal)
1075
+ * stops polling and rejects with {@link JobAbortedError}, whose `jobId`
1076
+ * names the job once it was submitted. Aborting stops the WAITING only: the
1077
+ * job keeps running and is charged, unless {@link cancelOnAbort} is set.
1078
+ */
1079
+ readonly signal?: AbortSignal;
1080
+ /**
1081
+ * Also cancel the job when `signal` aborts after it was submitted
1082
+ * (`POST /v1/jobs/:id/cancel`, which refunds its credit hold). Best effort:
1083
+ * a failed cancel still rejects with the {@link JobAbortedError}. Default
1084
+ * `false` — aborting only stops waiting.
1085
+ */
1086
+ readonly cancelOnAbort?: boolean;
1087
+ /** Called with each lean status the poll loop observes (running → terminal). */
1088
+ readonly onProgress?: (status: JobStatusResult) => void;
1089
+ /** Poll interval in ms. Default 2000. */
1090
+ readonly pollMs?: number;
1091
+ /** Wall-clock cap before giving up, in ms. Default ~15 min (900_000). */
1092
+ readonly maxMs?: number;
1093
+ /**
1094
+ * `Idempotency-Key` for the submit half. Reuse the same value when retrying a
1095
+ * call that timed out, so the run is not started or charged twice. Omitted →
1096
+ * no key, which is the historical behaviour for every node that does not
1097
+ * require one.
1098
+ */
1099
+ readonly idempotencyKey?: string;
1100
+ }
1101
+ /** Per-call transport controls for {@link NodesResource.run}. */
1102
+ interface RunNodeOptions {
1103
+ /** `Idempotency-Key` header. See {@link RunAndWaitOptions.idempotencyKey}. */
1104
+ readonly idempotencyKey?: string;
1105
+ }
1106
+ /** One settled result from {@link NodesResource.runMany}. */
1107
+ interface RunManyResult {
1108
+ readonly jobId: string;
1109
+ readonly output: NodeJobOutput;
1110
+ }
1111
+ declare class NodesResource {
1112
+ private client;
1113
+ /** Runs poll through `jobs`, so the client must carry that resource too. */
1114
+ constructor(client: NodaroClientCore & {
1115
+ readonly jobs: JobsResource;
1116
+ });
1117
+ /** List all known node descriptors. Server caches publicly for 5 minutes. */
1118
+ list(): Promise<{
1119
+ data: NodeDescriptor[];
1120
+ }>;
1121
+ /** Get a single node descriptor by type slug (e.g. "generate-image"). */
1122
+ get(type: string): Promise<{
1123
+ data: NodeDescriptor;
1124
+ }>;
1125
+ /**
1126
+ * Run a single node directly without wrapping it in a workflow. Posts
1127
+ * `params` as the request body to the node's API route. Most use
1128
+ * `POST /v1/<type>`; the rest are listed in `NODE_RUN_ROUTES` (exported by
1129
+ * `@nodaro/shared`): scene authoring uses `/v1/3d-scene/generate|edit`,
1130
+ * `llm-chat` uses `/v1/llm-chat/generate`, the Suno nodes `/v1/suno/…`, the
1131
+ * social post nodes `/v1/social/publish` (a per-platform node fills in its
1132
+ * `platform` when you leave it out), and render-video with a planType uses
1133
+ * `/v1/render-video/plan`.
1134
+ *
1135
+ * A node type with no route of its own (`NODE_TYPES_WITHOUT_RUN_ROUTE`, e.g.
1136
+ * `modify-image`, which runs through `image-to-image`) rejects with a
1137
+ * {@link NodaroError} of code `node_not_runnable` naming what to run
1138
+ * instead, without calling the API. A type that runs only inside a workflow
1139
+ * (an input, trigger, utility or parameter node such as `upload-image`)
1140
+ * rejects the same way once the API answers that it has no such route; a
1141
+ * 404 about a missing resource stays a `NotFoundError`.
1142
+ *
1143
+ * This is the SDK equivalent of the MCP server's verb tools — and the
1144
+ * path the Nodaro CLI uses for `nodaro nodes run <type>`.
1145
+ *
1146
+ * Most node types are async: the response includes `{ jobId }` and the
1147
+ * actual generation runs on a worker. Poll `client.jobs.get(jobId)` until
1148
+ * completed. Synchronous node types (`meta-ads-scrape`, etc.) return their
1149
+ * full result without a `jobId` field.
1150
+ *
1151
+ * @param type Node type slug — must match an entry in the registry
1152
+ * returned by `list()` (e.g. "generate-image").
1153
+ * @param params Request body. Field names must match the node's
1154
+ * `inputSchema` (see `get(type).inputSchema`).
1155
+ */
1156
+ run(type: "generate-3d-scene", params: GenerateScene3DParams): Promise<RunNodeResult>;
1157
+ run(type: "edit-3d-scene", params: EditScene3DParams): Promise<RunNodeResult>;
1158
+ run(type: "render-video", params: RenderScene3DParams): Promise<RunNodeResult>;
1159
+ run(type: "pro-3d-render", params: Pro3DRenderRunParams, options?: RunNodeOptions): Promise<RunNodeResult>;
1160
+ run(type: "generate-image", params: GenerateImageParams & ({
1161
+ count: 2 | 3 | 4;
1162
+ } | {
1163
+ models: string[];
1164
+ }), options?: RunNodeOptions): Promise<GenerateImageBatchResult>;
1165
+ run(type: "generate-image", params?: GenerateImageParams, options?: RunNodeOptions): Promise<RunNodeResult>;
1166
+ run(type: "text-to-speech", params: TextToSpeechParams): Promise<RunNodeResult>;
1167
+ run(type: "generate-video", params?: GenerateVideoParams): Promise<RunNodeResult>;
1168
+ run(type: "text-to-video", params: TextToVideoParams): Promise<RunNodeResult>;
1169
+ run(type: "video-upscale", params: VideoUpscaleParams): Promise<RunNodeResult>;
1170
+ run(type: "assemble-narrated-video", params?: AssembleNarratedVideoParams): Promise<RunNodeResult>;
1171
+ run(type: "social-search", params: SocialSearchParams, options?: RunNodeOptions): Promise<RunNodeResult>;
1172
+ run(type: "video-depth", params: VideoDepthParams, options?: RunNodeOptions): Promise<RunNodeResult>;
1173
+ run(type: "image-to-image", params: ImageToImageParams, options?: RunNodeOptions): Promise<ImageJobStarted>;
1174
+ run(type: "edit-image", params: EditImageParams, options?: RunNodeOptions): Promise<ImageJobStarted>;
1175
+ run(type: "generate-mask", params: GenerateMaskParams, options?: RunNodeOptions): Promise<ImageJobStarted>;
1176
+ /** Synchronous and free: answers the tiles, no job. */
1177
+ run(type: "split-image", params: SplitImageParams, options?: RunNodeOptions): Promise<SplitImageResult>;
1178
+ run(type: string, params?: Record<string, unknown>, options?: RunNodeOptions): Promise<RunNodeResult>;
1179
+ /**
1180
+ * Run a single async node to completion: {@link run} it, extract the
1181
+ * `{ jobId }`, then client-poll `jobs.getStatus(jobId)` every `pollMs`
1182
+ * (default 2000) until a terminal status, up to `maxMs` (default ~15 min).
1183
+ *
1184
+ * Resolves the job's typed `output_data` ({@link NodeJobOutput}) on
1185
+ * `completed`. Throws (all typed, catchable by `instanceof`):
1186
+ * - {@link InsufficientCreditsError} / {@link StorageExceededError} etc. —
1187
+ * surfaced by the underlying {@link run} on 402/413/… before any poll.
1188
+ * - {@link JobFailedError} — terminal `failed`/`cancelled` (carries the
1189
+ * job's `error_message` + `jobId`).
1190
+ * - {@link JobTimeoutError} — `maxMs` deadline exceeded before terminal.
1191
+ * - {@link JobAbortedError} — `signal` fired (or was already aborted);
1192
+ * polling stops immediately.
1193
+ * - {@link JobHeldError} — the job entered `pending_review` on a deployment
1194
+ * that registers a job policy. Ends the poll on the FIRST held tick (that
1195
+ * status waits on a human, not on the job) and does NOT cancel it.
1196
+ * - {@link JobBlockedError} — a 422 from {@link run} before any poll: the
1197
+ * deployment's job policy refused the request outright.
1198
+ *
1199
+ * Polling is fully client-side (no server function blocks) — the same model
1200
+ * thin clients use, lifted out of their hand-rolled run→poll loops.
1201
+ *
1202
+ * @param type Node type slug (e.g. "generate-video"). See {@link run}.
1203
+ * @param params Request body — field names match the node's `inputSchema`.
1204
+ * @param opts `signal` / `onProgress` / `pollMs` / `maxMs`.
1205
+ */
1206
+ runAndWait(type: "generate-3d-scene", params: GenerateScene3DParams, options?: RunAndWaitOptions): Promise<Scene3DJobOutput>;
1207
+ runAndWait(type: "edit-3d-scene", params: EditScene3DParams, options?: RunAndWaitOptions): Promise<Scene3DJobOutput>;
1208
+ runAndWait(type: "render-video", params: RenderScene3DParams, options?: RunAndWaitOptions): Promise<NodeJobOutput>;
1209
+ runAndWait(type: "pro-3d-render", params: Pro3DRenderRunParams, options?: RunAndWaitOptions): Promise<Pro3DRenderJobOutput>;
1210
+ runAndWait(type: "generate-image", params?: GenerateImageParams, opts?: RunAndWaitOptions): Promise<NodeJobOutput>;
1211
+ runAndWait(type: "text-to-speech", params: TextToSpeechParams, opts?: RunAndWaitOptions): Promise<NodeJobOutput>;
1212
+ runAndWait(type: "generate-video", params?: GenerateVideoParams, opts?: RunAndWaitOptions): Promise<NodeJobOutput>;
1213
+ runAndWait(type: "text-to-video", params: TextToVideoParams, opts?: RunAndWaitOptions): Promise<NodeJobOutput>;
1214
+ runAndWait(type: "video-upscale", params: VideoUpscaleParams, opts?: RunAndWaitOptions): Promise<NodeJobOutput>;
1215
+ runAndWait(type: "assemble-narrated-video", params?: AssembleNarratedVideoParams, opts?: RunAndWaitOptions): Promise<NodeJobOutput>;
1216
+ runAndWait(type: "social-search", params: SocialSearchParams, opts?: RunAndWaitOptions): Promise<SocialSearchJobOutput>;
1217
+ runAndWait(type: "video-depth", params: VideoDepthParams, opts?: RunAndWaitOptions): Promise<NodeJobOutput>;
1218
+ runAndWait(type: "image-to-image", params: ImageToImageParams, opts?: RunAndWaitOptions): Promise<NodeJobOutput>;
1219
+ runAndWait(type: "edit-image", params: EditImageParams, opts?: RunAndWaitOptions): Promise<NodeJobOutput>;
1220
+ runAndWait(type: "generate-mask", params: GenerateMaskParams, opts?: RunAndWaitOptions): Promise<GenerateMaskJobOutput>;
1221
+ runAndWait<T extends string>(type: T, params?: Record<string, unknown>, opts?: RunAndWaitOptions): Promise<T extends "pro-3d-render" ? Pro3DRenderJobOutput : T extends "generate-3d-scene" | "edit-3d-scene" ? Scene3DJobOutput : T extends "generate-mask" ? GenerateMaskJobOutput : NodeJobOutput>;
1222
+ /**
1223
+ * Run a generate-image BATCH — `count` above 1 and/or `models` — to the end:
1224
+ * submit it once ({@link run}, with your `idempotencyKey` if any), then wait
1225
+ * for every job at once, each the way {@link runAndWait} waits.
1226
+ *
1227
+ * Resolves `{ batch, results }`: the submit's answer
1228
+ * ({@link GenerateImageBatchResult} — ids, groups by model, credits) and one
1229
+ * {@link BatchJobOutcome} per job, in `batch.jobIds` order — its output, or the
1230
+ * typed error that ended the wait for it. One image failing never discards the
1231
+ * others. Rejects only before any job exists (the submit's own errors, e.g.
1232
+ * `InsufficientCreditsError` with the batch total as `required`), and on
1233
+ * `signal` ({@link JobAbortedError}; `cancelOnAbort` cancels every job).
1234
+ *
1235
+ * A request for one image is refused before anything is sent (code
1236
+ * `not_a_batch`) — wait for it with {@link runAndWait}.
1237
+ */
1238
+ runBatchAndWait(type: "generate-image", params: GenerateImageParams, opts?: RunAndWaitOptions): Promise<GenerateImageBatchOutput>;
1239
+ /**
1240
+ * Fan out N async runs of the same node `type` to completion concurrently —
1241
+ * the candidate-grid path (generate N stills/clips in parallel). Each runs
1242
+ * via {@link runAndWait}; resolves once ALL settle, to an array of
1243
+ * `{ jobId, output }` in input order. Rejects (and the rejection wins) if any
1244
+ * single run rejects — same typed errors as {@link runAndWait}, including
1245
+ * {@link JobHeldError} when one candidate is held for review while the
1246
+ * others complete. A shared `signal` aborts the whole batch.
1247
+ *
1248
+ * @param type Node type slug, applied to every entry.
1249
+ * @param paramsList One request body per candidate.
1250
+ * @param opts Shared `signal` / `cancelOnAbort` / `onProgress` / `pollMs` / `maxMs`.
1251
+ */
1252
+ runMany(type: string, paramsList: Record<string, unknown>[], opts?: RunAndWaitOptions): Promise<RunManyResult[]>;
1253
+ /** {@link pollUntilSettled}, plus what an abort does to the job: it keeps
1254
+ * running unless `cancelOnAbort` asks to cancel it too, and the rejection
1255
+ * always names it (an abort landing mid-sleep carries no id of its own). */
1256
+ private pollJob;
1257
+ /** Poll an already-kicked job id until it stops moving; resolve output_data
1258
+ * or throw. Two non-terminal statuses end the loop: an abort, and
1259
+ * `pending_review` (a job policy held the output for a human — see
1260
+ * {@link JobHeldError}). */
1261
+ private pollUntilSettled;
1262
+ }
1263
+
1264
+ export { type StructuredReferenceParams as $, type AssembleNarratedVideoParams as A, type BatchJobOutcome as B, type RunAndWaitOptions as C, type RunManyResult as D, type EditImageCommonParams as E, type RunNodeAdjustment as F, type GenerateImageBatchGroup as G, type RunNodeOptions as H, type ImageJobStarted as I, type JobOutputImage as J, type RunNodeResult as K, type RunNodeWarning as L, type Scene3DAuthoringEngine as M, type NodeCategory as N, type OutputType as O, type Pro3DRenderJobOutput as P, type Scene3DCapabilities as Q, type ReferenceCaptionParams as R, SCENE3D_DELIVERY_ASSET_USAGE as S, type Scene3DDelivery as T, type Scene3DDeliveryAsset as U, type Scene3DDeliveryAssetKind as V, type Scene3DJobOutput as W, type SocialSearchJobOutput as X, type SplitImageParams as Y, type SplitImageResult as Z, type SplitImageTile as _, type EditImageFromTaskParams as a, type Subject as a0, type TextToSpeechParams as a1, type TextToVideoParams as a2, type VideoDepthParams as a3, type VideoUpscaleParams as a4, type EditImageFromUrlParams as b, type EditImageParams as c, type EditScene3DParams as d, type GenerateImageBatchOutput as e, type GenerateImageBatchResult as f, type GenerateImageParams as g, type GenerateMaskJobOutput as h, type GenerateMaskParams as i, type GenerateScene3DParams as j, type GenerateVideoParams as k, type GenerationSessionParams as l, type ImageToImageParams as m, type NodeCreditRate as n, type NodeDescriptor as o, type NodeInputField as p, type NodeInputSchema as q, type NodeJobOutput as r, NodesResource as s, type Pro3DRenderParams as t, type Pro3DRenderQuote as u, type Pro3DRenderRunOptions as v, type Pro3DRenderRunParams as w, type RenderScene3DParams as x, type RetainedScene3DEditParams as y, type RetainedScene3DEditResult as z };