@kadi.build/deploy-ability 0.0.1

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 (198) hide show
  1. package/README.md +523 -0
  2. package/dist/constants.d.ts +82 -0
  3. package/dist/constants.d.ts.map +1 -0
  4. package/dist/constants.js +82 -0
  5. package/dist/constants.js.map +1 -0
  6. package/dist/errors/certificate-error.d.ts +95 -0
  7. package/dist/errors/certificate-error.d.ts.map +1 -0
  8. package/dist/errors/certificate-error.js +111 -0
  9. package/dist/errors/certificate-error.js.map +1 -0
  10. package/dist/errors/deployment-error.d.ts +122 -0
  11. package/dist/errors/deployment-error.d.ts.map +1 -0
  12. package/dist/errors/deployment-error.js +185 -0
  13. package/dist/errors/deployment-error.js.map +1 -0
  14. package/dist/errors/index.d.ts +13 -0
  15. package/dist/errors/index.d.ts.map +1 -0
  16. package/dist/errors/index.js +18 -0
  17. package/dist/errors/index.js.map +1 -0
  18. package/dist/errors/profile-error.d.ts +106 -0
  19. package/dist/errors/profile-error.d.ts.map +1 -0
  20. package/dist/errors/profile-error.js +127 -0
  21. package/dist/errors/profile-error.js.map +1 -0
  22. package/dist/errors/provider-error.d.ts +104 -0
  23. package/dist/errors/provider-error.d.ts.map +1 -0
  24. package/dist/errors/provider-error.js +120 -0
  25. package/dist/errors/provider-error.js.map +1 -0
  26. package/dist/errors/wallet-error.d.ts +131 -0
  27. package/dist/errors/wallet-error.d.ts.map +1 -0
  28. package/dist/errors/wallet-error.js +154 -0
  29. package/dist/errors/wallet-error.js.map +1 -0
  30. package/dist/index.d.ts +49 -0
  31. package/dist/index.d.ts.map +1 -0
  32. package/dist/index.js +53 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/targets/akash/bid-selectors.d.ts +251 -0
  35. package/dist/targets/akash/bid-selectors.d.ts.map +1 -0
  36. package/dist/targets/akash/bid-selectors.js +322 -0
  37. package/dist/targets/akash/bid-selectors.js.map +1 -0
  38. package/dist/targets/akash/bid-types.d.ts +297 -0
  39. package/dist/targets/akash/bid-types.d.ts.map +1 -0
  40. package/dist/targets/akash/bid-types.js +89 -0
  41. package/dist/targets/akash/bid-types.js.map +1 -0
  42. package/dist/targets/akash/blockchain-client.d.ts +577 -0
  43. package/dist/targets/akash/blockchain-client.d.ts.map +1 -0
  44. package/dist/targets/akash/blockchain-client.js +803 -0
  45. package/dist/targets/akash/blockchain-client.js.map +1 -0
  46. package/dist/targets/akash/certificate-manager.d.ts +228 -0
  47. package/dist/targets/akash/certificate-manager.d.ts.map +1 -0
  48. package/dist/targets/akash/certificate-manager.js +395 -0
  49. package/dist/targets/akash/certificate-manager.js.map +1 -0
  50. package/dist/targets/akash/constants.d.ts +231 -0
  51. package/dist/targets/akash/constants.d.ts.map +1 -0
  52. package/dist/targets/akash/constants.js +225 -0
  53. package/dist/targets/akash/constants.js.map +1 -0
  54. package/dist/targets/akash/deployer.d.ts +136 -0
  55. package/dist/targets/akash/deployer.d.ts.map +1 -0
  56. package/dist/targets/akash/deployer.js +599 -0
  57. package/dist/targets/akash/deployer.js.map +1 -0
  58. package/dist/targets/akash/environment.d.ts +241 -0
  59. package/dist/targets/akash/environment.d.ts.map +1 -0
  60. package/dist/targets/akash/environment.js +245 -0
  61. package/dist/targets/akash/environment.js.map +1 -0
  62. package/dist/targets/akash/index.d.ts +1113 -0
  63. package/dist/targets/akash/index.d.ts.map +1 -0
  64. package/dist/targets/akash/index.js +909 -0
  65. package/dist/targets/akash/index.js.map +1 -0
  66. package/dist/targets/akash/lease-monitor.d.ts +51 -0
  67. package/dist/targets/akash/lease-monitor.d.ts.map +1 -0
  68. package/dist/targets/akash/lease-monitor.js +110 -0
  69. package/dist/targets/akash/lease-monitor.js.map +1 -0
  70. package/dist/targets/akash/logs.d.ts +71 -0
  71. package/dist/targets/akash/logs.d.ts.map +1 -0
  72. package/dist/targets/akash/logs.js +311 -0
  73. package/dist/targets/akash/logs.js.map +1 -0
  74. package/dist/targets/akash/logs.types.d.ts +102 -0
  75. package/dist/targets/akash/logs.types.d.ts.map +1 -0
  76. package/dist/targets/akash/logs.types.js +9 -0
  77. package/dist/targets/akash/logs.types.js.map +1 -0
  78. package/dist/targets/akash/pricing.d.ts +247 -0
  79. package/dist/targets/akash/pricing.d.ts.map +1 -0
  80. package/dist/targets/akash/pricing.js +246 -0
  81. package/dist/targets/akash/pricing.js.map +1 -0
  82. package/dist/targets/akash/provider-client.d.ts +114 -0
  83. package/dist/targets/akash/provider-client.d.ts.map +1 -0
  84. package/dist/targets/akash/provider-client.js +318 -0
  85. package/dist/targets/akash/provider-client.js.map +1 -0
  86. package/dist/targets/akash/provider-metadata.d.ts +228 -0
  87. package/dist/targets/akash/provider-metadata.d.ts.map +1 -0
  88. package/dist/targets/akash/provider-metadata.js +14 -0
  89. package/dist/targets/akash/provider-metadata.js.map +1 -0
  90. package/dist/targets/akash/provider-service.d.ts +133 -0
  91. package/dist/targets/akash/provider-service.d.ts.map +1 -0
  92. package/dist/targets/akash/provider-service.js +391 -0
  93. package/dist/targets/akash/provider-service.js.map +1 -0
  94. package/dist/targets/akash/query-client.d.ts +125 -0
  95. package/dist/targets/akash/query-client.d.ts.map +1 -0
  96. package/dist/targets/akash/query-client.js +332 -0
  97. package/dist/targets/akash/query-client.js.map +1 -0
  98. package/dist/targets/akash/sdl-generator.d.ts +31 -0
  99. package/dist/targets/akash/sdl-generator.d.ts.map +1 -0
  100. package/dist/targets/akash/sdl-generator.js +279 -0
  101. package/dist/targets/akash/sdl-generator.js.map +1 -0
  102. package/dist/targets/akash/types.d.ts +285 -0
  103. package/dist/targets/akash/types.d.ts.map +1 -0
  104. package/dist/targets/akash/types.js +54 -0
  105. package/dist/targets/akash/types.js.map +1 -0
  106. package/dist/targets/akash/wallet-manager.d.ts +526 -0
  107. package/dist/targets/akash/wallet-manager.d.ts.map +1 -0
  108. package/dist/targets/akash/wallet-manager.js +953 -0
  109. package/dist/targets/akash/wallet-manager.js.map +1 -0
  110. package/dist/targets/local/compose-generator.d.ts +244 -0
  111. package/dist/targets/local/compose-generator.d.ts.map +1 -0
  112. package/dist/targets/local/compose-generator.js +324 -0
  113. package/dist/targets/local/compose-generator.js.map +1 -0
  114. package/dist/targets/local/deployer.d.ts +82 -0
  115. package/dist/targets/local/deployer.d.ts.map +1 -0
  116. package/dist/targets/local/deployer.js +367 -0
  117. package/dist/targets/local/deployer.js.map +1 -0
  118. package/dist/targets/local/engine-manager.d.ts +155 -0
  119. package/dist/targets/local/engine-manager.d.ts.map +1 -0
  120. package/dist/targets/local/engine-manager.js +250 -0
  121. package/dist/targets/local/engine-manager.js.map +1 -0
  122. package/dist/targets/local/index.d.ts +40 -0
  123. package/dist/targets/local/index.d.ts.map +1 -0
  124. package/dist/targets/local/index.js +43 -0
  125. package/dist/targets/local/index.js.map +1 -0
  126. package/dist/targets/local/network-manager.d.ts +160 -0
  127. package/dist/targets/local/network-manager.d.ts.map +1 -0
  128. package/dist/targets/local/network-manager.js +337 -0
  129. package/dist/targets/local/network-manager.js.map +1 -0
  130. package/dist/targets/local/types.d.ts +327 -0
  131. package/dist/targets/local/types.d.ts.map +1 -0
  132. package/dist/targets/local/types.js +9 -0
  133. package/dist/targets/local/types.js.map +1 -0
  134. package/dist/types/common.d.ts +585 -0
  135. package/dist/types/common.d.ts.map +1 -0
  136. package/dist/types/common.js +13 -0
  137. package/dist/types/common.js.map +1 -0
  138. package/dist/types/index.d.ts +15 -0
  139. package/dist/types/index.d.ts.map +1 -0
  140. package/dist/types/index.js +12 -0
  141. package/dist/types/index.js.map +1 -0
  142. package/dist/types/options.d.ts +329 -0
  143. package/dist/types/options.d.ts.map +1 -0
  144. package/dist/types/options.js +10 -0
  145. package/dist/types/options.js.map +1 -0
  146. package/dist/types/profiles.d.ts +329 -0
  147. package/dist/types/profiles.d.ts.map +1 -0
  148. package/dist/types/profiles.js +27 -0
  149. package/dist/types/profiles.js.map +1 -0
  150. package/dist/types/results.d.ts +443 -0
  151. package/dist/types/results.d.ts.map +1 -0
  152. package/dist/types/results.js +64 -0
  153. package/dist/types/results.js.map +1 -0
  154. package/dist/types/validators.d.ts +118 -0
  155. package/dist/types/validators.d.ts.map +1 -0
  156. package/dist/types/validators.js +198 -0
  157. package/dist/types/validators.js.map +1 -0
  158. package/dist/utils/command-runner.d.ts +128 -0
  159. package/dist/utils/command-runner.d.ts.map +1 -0
  160. package/dist/utils/command-runner.js +210 -0
  161. package/dist/utils/command-runner.js.map +1 -0
  162. package/dist/utils/index.d.ts +10 -0
  163. package/dist/utils/index.d.ts.map +1 -0
  164. package/dist/utils/index.js +10 -0
  165. package/dist/utils/index.js.map +1 -0
  166. package/dist/utils/logger.d.ts +68 -0
  167. package/dist/utils/logger.d.ts.map +1 -0
  168. package/dist/utils/logger.js +93 -0
  169. package/dist/utils/logger.js.map +1 -0
  170. package/dist/utils/profile-loader.d.ts +76 -0
  171. package/dist/utils/profile-loader.d.ts.map +1 -0
  172. package/dist/utils/profile-loader.js +194 -0
  173. package/dist/utils/profile-loader.js.map +1 -0
  174. package/dist/utils/registry/index.d.ts +27 -0
  175. package/dist/utils/registry/index.d.ts.map +1 -0
  176. package/dist/utils/registry/index.js +29 -0
  177. package/dist/utils/registry/index.js.map +1 -0
  178. package/dist/utils/registry/manager.d.ts +319 -0
  179. package/dist/utils/registry/manager.d.ts.map +1 -0
  180. package/dist/utils/registry/manager.js +671 -0
  181. package/dist/utils/registry/manager.js.map +1 -0
  182. package/dist/utils/registry/setup.d.ts +135 -0
  183. package/dist/utils/registry/setup.d.ts.map +1 -0
  184. package/dist/utils/registry/setup.js +207 -0
  185. package/dist/utils/registry/setup.js.map +1 -0
  186. package/dist/utils/registry/transformer.d.ts +92 -0
  187. package/dist/utils/registry/transformer.d.ts.map +1 -0
  188. package/dist/utils/registry/transformer.js +131 -0
  189. package/dist/utils/registry/transformer.js.map +1 -0
  190. package/dist/utils/registry/types.d.ts +241 -0
  191. package/dist/utils/registry/types.d.ts.map +1 -0
  192. package/dist/utils/registry/types.js +10 -0
  193. package/dist/utils/registry/types.js.map +1 -0
  194. package/docs/EXAMPLES.md +293 -0
  195. package/docs/PLACEMENT.md +433 -0
  196. package/docs/STORAGE.md +318 -0
  197. package/docs/building-provider-reliability-tracker.md +2581 -0
  198. package/package.json +109 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blockchain-client.js","sourceRoot":"","sources":["../../../src/targets/akash/blockchain-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,+CAA+C,CAAC;AACjG,OAAO,EAAE,MAAM,EAAE,MAAM,0CAA0C,CAAC;AAClE,OAAO,EACL,gBAAgB,EAEhB,eAAe,IAAI,iBAAiB,EACpC,cAAc,EAEd,OAAO,GACR,MAAM,8CAA8C,CAAC;AACtD,OAAO,EACL,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,kDAAkD,CAAC;AAG1D,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAqB,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAE9F,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAsJ1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAAqB,EACrB,OAAqB;IAErB,IAAI,CAAC;QACH,4EAA4E;QAC5E,uEAAuE;QACvE,yEAAyE;QACzE,uEAAuE;QACvE,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,oBAAoB,EAAE,CAAC,CAAC;QAEtD,oDAAoD;QACpD,MAAM,aAAa,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAChD,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC;QAE9B,oDAAoD;QACpD,sEAAsE;QACtE,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;QAC1D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,IAAI,eAAe,CACxB,6BAA6B,EAC7B,cAAc,EACd,EAAE,EACF,KAAK,EACL,4EAA4E,CAC7E;aACF,CAAC;QACJ,CAAC;QAED,8DAA8D;QAC9D,4EAA4E;QAC5E,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,iBAAiB,CAC1D,GAAG,EACH,MAAM,CAAC,aAAa,EACpB,EAAE,QAAQ,EAAE,CACb,CAAC;QAEF,oEAAoE;QACpE,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAE,CAAC;QAC7B,OAAO;YACL,OAAO,EAAE,IAAI;YACb,IAAI,EAAE;gBACJ,MAAM;gBACN,OAAO,EAAE;oBACP,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,aAAa,EAAE,CAAC,EAAE,yCAAyC;oBAC3D,QAAQ,EAAE,CAAC,EAAE,yCAAyC;iBACvD;aACF;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,IAAI,eAAe,CACxB,oCAAoC,KAAK,EAAE,EAC3C,WAAW,EACX,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,EACxB,KAAK,EACL,wDAAwD,CACzD;SACF,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8DG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,aAAmC,EACnC,MAAqB,EACrB,GAAQ,EACR,aAAqB,CAAC;IAEtB,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC;QAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC;QAE7B,4CAA4C;QAC5C,6EAA6E;QAC7E,gEAAgE;QAChE,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;QAEtC,kEAAkE;QAClE,oEAAoE;QACpE,0EAA0E;QAC1E,qDAAqD;QACrD,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;QAC5B,MAAM,eAAe,GAAG,MAAM,GAAG,CAAC,eAAe,EAAE,CAAC;QAEpD,uDAAuD;QACvD,yBAAyB;QACzB,oEAAoE;QACpE,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QACjF,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC;QAEjE,wDAAwD;QACxD,MAAM,GAAG,GAAG,mBAAmB,CAAC,WAAW,CAAC;YAC1C,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;YACnB,MAAM,EAAE,MAAa,EAAE,2CAA2C;YAClE,OAAO,EAAE,eAAe;YACxB,OAAO,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE;YAC/C,SAAS,EAAE,KAAK;SACjB,CAAC,CAAC;QAEH,0CAA0C;QAC1C,mEAAmE;QACnE,8DAA8D;QAC9D,MAAM,MAAM,GAAG;YACb,OAAO,EAAE,UAAU,CAAC,mBAAmB,CAAC;YACxC,KAAK,EAAE,GAAG;SACX,CAAC;QAEF,8BAA8B;QAC9B,oCAAoC;QACpC,4CAA4C;QAC5C,MAAM,GAAG,GAAG;YACV,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;YAC3C,GAAG,EAAE,QAAQ;SACd,CAAC;QAEF,oDAAoD;QACpD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,gBAAgB,CACvC,OAAO,CAAC,OAAO,EACf,CAAC,MAAM,CAAC,EACR,GAAG,EACH,sCAAsC,CACvC,CAAC;QAEF,mCAAmC;QACnC,uDAAuD;QACvD,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACnB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,IAAI,eAAe,CACxB,kCAAkC,GAAG,CAAC,MAAM,EAAE,EAC9C,oBAAoB,EACpB;oBACE,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,MAAM,EAAE,GAAG,CAAC,MAAM;oBAClB,eAAe,EAAE,GAAG,CAAC,eAAe;iBACrC,EACD,KAAK,EACL,uEAAuE,CACxE;aACF,CAAC;QACJ,CAAC;QAED,6CAA6C;QAC7C,OAAO;YACL,OAAO,EAAE,IAAI;YACb,IAAI,EAAE;gBACJ,IAAI;gBACJ,eAAe,EAAE,GAAG,CAAC,eAAe;gBACpC,MAAM,EAAE,GAAG,CAAC,MAAM;aACnB;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,IAAI,eAAe,CACxB,gCAAgC,KAAK,EAAE,EACvC,mBAAmB,EACnB,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,EACxB,KAAK,EACL,2DAA2D,CAC5D;SACF,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAS,gBAAgB,CAAC,QAA2B;IACnD,IAAI,CAAC,QAAQ,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IAE9B,OAAO,QAAQ,CAAC,IAAI;SACjB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,SAAS,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC;SACpD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAI,CAAC;SAClB,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;QACd,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,EAAE,QAAQ,IAAI,EAAE,CAAC;QAC3C,OAAO,QAAQ,KAAK,EAAE,CAAC;IACzB,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+DG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,MAAqB,EACrB,OAAqB,EACrB,IAAY,EACZ,OAGC;IAED,IAAI,CAAC;QACH,uCAAuC;QACvC,MAAM,aAAa,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAChD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAE5C,0CAA0C;QAC1C,MAAM,WAAW,GAAG,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAE/C,kCAAkC;QAClC,oDAAoD;QACpD,MAAM,OAAO,GAAG,gBAAgB,CAAC,WAAW,CAAC;YAC3C,OAAO,EAAE;gBACP,KAAK,EAAE,MAAM,CAAC,OAAO;gBACrB,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE;gBACrB,KAAK,EAAE,MAAM;aACd;SACF,CAAC,CAAC;QAEH,qCAAqC;QACrC,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEjD,wDAAwD;QACxD,kDAAkD;QAClD,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAChC,CAAC,OAAO,EAAE,eAAe,IAAI,EAAE,CAAC;aAC7B,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;aAC5D,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CACrC,CAAC;QAEF,wCAAwC;QACxC,kEAAkE;QAClE,MAAM,SAAS,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;YAC1D,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,EAAE,QAAQ,IAAI,EAAE,CAAC;YAC3C,OAAO,CACL,QAAQ,KAAK,EAAE;gBACf,CAAC,qBAAqB,CAAC,QAAQ,CAAC;gBAChC,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAClC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,+CAA+C;QAC/C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,OAAO,CAAC,EAAE,CAAC,CAAC;QACrB,CAAC;QAED,uDAAuD;QACvD,iEAAiE;QACjE,wCAAwC;QACxC,MAAM,kBAAkB,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAE5D,uEAAuE;QACvE,MAAM,eAAe,GAAG,kBAAkB,CAAC,OAAO;YAChD,CAAC,CAAC,kBAAkB,CAAC,IAAI;YACzB,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;QAEd,+CAA+C;QAC/C,MAAM,YAAY,GAAkB,EAAE,CAAC;QAEvC,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC;YACrC,IAAI,CAAC,QAAQ;gBAAE,SAAS;YAExB,iDAAiD;YACjD,IAAI,YAAY,GAAG,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACjD,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,YAAY,GAAG;oBACb,KAAK,EAAE,QAAQ;oBACf,OAAO,EAAE,EAAE,EAAE,wCAAwC;oBACrD,SAAS,EAAE,KAAK;iBACjB,CAAC;YACJ,CAAC;YAED,4CAA4C;YAC5C,IACE,CAAC,OAAO,EAAE,cAAc;gBACxB,YAAY,CAAC,WAAW;gBACxB,CAAC,YAAY,CAAC,WAAW,CAAC,QAAQ,EAClC,CAAC;gBACD,SAAS;YACX,CAAC;YAED,6BAA6B;YAC7B,MAAM,OAAO,GAAG,gBAAgB,CAAC;gBAC/B,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,KAAK,IAAI,MAAM;gBACjC,MAAM,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,IAAI,GAAG;aACjC,CAAC,CAAC;YAEH,wCAAwC;YACxC,MAAM,KAAK,GAAG,GAAG,QAAQ,IAAI,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;YAE1E,MAAM,WAAW,GAAgB;gBAC/B,EAAE,EAAE,KAAK;gBACT,GAAG;gBACH,QAAQ,EAAE,YAAY;gBACtB,OAAO;gBACP,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,oBAAoB;aAC5C,CAAC;YAEF,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACjC,CAAC;QAED,OAAO,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,OAAO,CACZ,IAAI,eAAe,CACjB,yBAAyB,KAAK,EAAE,EAChC,cAAc,EACd,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,EAC9B,IAAI,EACJ,wCAAwC,CACzC,CACF,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,MAAqB,EACrB,OAAqB,EACrB,IAAY,EACZ,OAIC;IAED,MAAM,YAAY,GAAG,IAAI,CAAC,CAAC,YAAY;IACvC,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,MAAM,CAAC,CAAC,qBAAqB;IACrE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,SAAS,EAAE,CAAC;QAC1C,uCAAuC;QACvC,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;YACvD,eAAe,EAAE,OAAO,EAAE,eAAe;YACzC,cAAc,EAAE,OAAO,EAAE,cAAc;SACxC,CAAC,CAAC;QAEH,yBAAyB;QACzB,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YACvB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,mCAAmC;QACnC,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;QAED,wBAAwB;QACxB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,yCAAyC;IACzC,OAAO,OAAO,CACZ,IAAI,eAAe,CACjB,mCAAmC,EACnC,SAAS,EACT,EAAE,IAAI,EAAE,SAAS,EAAE,EACnB,IAAI,EACJ,mKAAmK,CACpK,CACF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,aAAmC,EACnC,GAAgB;IAEhB,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC;QAC1C,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;QAEtB,iDAAiD;QACjD,iEAAiE;QACjE,MAAM,GAAG,GAAG;YACV,OAAO,EAAE,UAAU,CAAC,cAAc,CAAC;YACnC,KAAK,EAAE,cAAc,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC;SAC7C,CAAC;QAEF,mCAAmC;QACnC,0DAA0D;QAC1D,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,QAAQ,CACzC,OAAO,CAAC,OAAO,EACf,CAAC,GAAG,CAAC,EACL,iCAAiC,CAClC,CAAC;QAEF,+DAA+D;QAC/D,mDAAmD;QACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC,CAAC;QAEhD,6CAA6C;QAC7C,4CAA4C;QAC5C,MAAM,GAAG,GAAG;YACV,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;YAC3C,GAAG,EAAE,QAAQ,CAAC,QAAQ,EAAE;SACzB,CAAC;QAEF,+CAA+C;QAC/C,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,gBAAgB,CACvC,OAAO,CAAC,OAAO,EACf,CAAC,GAAG,CAAC,EACL,GAAG,EACH,iCAAiC,CAClC,CAAC;QAEF,mCAAmC;QACnC,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACnB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,IAAI,eAAe,CACxB,6BAA6B,GAAG,CAAC,MAAM,EAAE,EACzC,oBAAoB,EACpB;oBACE,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,MAAM,EAAE,GAAG,CAAC,MAAM;oBAClB,eAAe,EAAE,GAAG,CAAC,eAAe;iBACrC,EACD,KAAK,EACL,oGAAoG,CACrG;aACF,CAAC;QACJ,CAAC;QAED,oDAAoD;QACpD,6EAA6E;QAC7E,yEAAyE;QACzE,mFAAmF;QACnF,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,IAAI,eAAe,CACxB,4BAA4B,EAC5B,aAAa,EACb,EAAE,GAAG,EAAE,EACP,KAAK,EACL,oDAAoD,CACrD;aACF,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI;YACb,IAAI,EAAE;gBACJ,4EAA4E;gBAC5E,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC;oBAC3B,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,IAAI,EAAE,KAAK,CAAC,IAAI;iBACjB,CAAC;gBACF,eAAe,EAAE,GAAG,CAAC,eAAe;gBACpC,MAAM,EAAE,GAAG,CAAC,MAAM;aACnB;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,IAAI,eAAe,CACxB,2BAA2B,KAAK,EAAE,EAClC,cAAc,EACd,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,EACxB,KAAK,EACL,4CAA4C,CAC7C;SACF,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,aAAmC,EACnC,MAAqB,EACrB,IAAqB;IAErB,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC;QAE1C,yCAAyC;QACzC,MAAM,UAAU,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAErE,0CAA0C;QAC1C,gEAAgE;QAChE,6CAA6C;QAC7C,MAAM,GAAG,GAAG,kBAAkB,CAAC,WAAW,CAAC;YACzC,EAAE,EAAE;gBACF,IAAI,EAAE,UAAU;gBAChB,KAAK,EAAE,MAAM,CAAC,OAAO;aACtB;SACF,CAAC,CAAC;QAEH,0CAA0C;QAC1C,MAAM,MAAM,GAAG;YACb,OAAO,EAAE,UAAU,CAAC,kBAAkB,CAAC;YACvC,KAAK,EAAE,GAAG;SACX,CAAC;QAEF,mCAAmC;QACnC,0DAA0D;QAC1D,sEAAsE;QACtE,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,QAAQ,CACzC,OAAO,CAAC,OAAO,EACf,CAAC,MAAM,CAAC,EACR,qCAAqC,CACtC,CAAC;QAEF,+DAA+D;QAC/D,mDAAmD;QACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC,CAAC;QAEhD,6CAA6C;QAC7C,4CAA4C;QAC5C,MAAM,GAAG,GAAG;YACV,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;YAC3C,GAAG,EAAE,QAAQ,CAAC,QAAQ,EAAE;SACzB,CAAC;QAEF,0DAA0D;QAC1D,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,gBAAgB,CACvC,OAAO,CAAC,OAAO,EACf,CAAC,MAAM,CAAC,EACR,GAAG,EACH,qCAAqC,CACtC,CAAC;QAEF,mCAAmC;QACnC,uDAAuD;QACvD,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACnB,OAAO,OAAO,CACZ,IAAI,eAAe,CACjB,wCAAwC,GAAG,CAAC,MAAM,EAAE,EACpD,oBAAoB,EACpB;gBACE,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,eAAe,EAAE,GAAG,CAAC,eAAe;gBACpC,IAAI,EAAE,UAAU;aACjB,EACD,KAAK,EACL,gGAAgG,CACjG,CACF,CAAC;QACJ,CAAC;QAED,sCAAsC;QACtC,OAAO,OAAO,CAAC;YACb,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,MAAM,CAAC,OAAO;YACrB,eAAe,EAAE,GAAG,CAAC,eAAe;YACpC,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,QAAQ,EAAE,IAAI,IAAI,EAAE;SACrB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,OAAO,CACZ,IAAI,eAAe,CACjB,+BAA+B,KAAK,EAAE,EACtC,yBAAyB,EACzB,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,EAC5C,KAAK,EACL,mEAAmE,CACpE,CACF,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,228 @@
1
+ /**
2
+ * Akash Network Certificate Management
3
+ *
4
+ * Provides certificate operations for Akash Network deployments. Certificates are
5
+ * required for mTLS authentication with Akash providers and are tied to wallet addresses.
6
+ *
7
+ * Key Improvements from kadi-deploy:
8
+ * - ✅ ZERO file I/O (caller handles persistence)
9
+ * - ✅ ZERO CLI dependencies (no chalk, enquirer, prompts)
10
+ * - ✅ ZERO `any` types (proper TypeScript throughout)
11
+ * - ✅ Result types for all operations
12
+ * - ✅ Composable API (small, focused functions)
13
+ * - ✅ Step-by-step comments explaining logic
14
+ *
15
+ * Design Philosophy:
16
+ * This is a LIBRARY, not a CLI. Certificates are passed as data structures.
17
+ * The caller (kadi-deploy CLI) handles file I/O, prompts, and display.
18
+ *
19
+ * @module targets/akash/certificate-manager
20
+ */
21
+ import type { SigningStargateClient } from '@cosmjs/stargate';
22
+ import type { Result } from '../../types/index.js';
23
+ import type { WalletContext, AkashProviderTlsCertificate } from './types.js';
24
+ import { CertificateError } from '../../errors/index.js';
25
+ import { type AkashNetwork } from './environment.js';
26
+ /**
27
+ * Certificate JSON structure (for parsing)
28
+ *
29
+ * This is the format expected when loading certificates from external sources.
30
+ */
31
+ export interface CertificateJson {
32
+ /** PEM-encoded X.509 certificate */
33
+ cert: string;
34
+ /** PEM-encoded private key */
35
+ privateKey: string;
36
+ /** PEM-encoded public key */
37
+ publicKey: string;
38
+ /** Optional certificate chain */
39
+ chain?: string;
40
+ }
41
+ /**
42
+ * Certificate broadcast result
43
+ *
44
+ * Contains the transaction hash and confirmation details.
45
+ */
46
+ export interface CertificateBroadcastResult {
47
+ /** Transaction hash */
48
+ transactionHash: string;
49
+ /** Block height */
50
+ height: number;
51
+ /** Whether broadcast was successful */
52
+ success: boolean;
53
+ }
54
+ /**
55
+ * On-chain certificate information
56
+ *
57
+ * Represents whether a certificate exists on the Akash blockchain.
58
+ */
59
+ export interface OnChainCertificateInfo {
60
+ /** Whether certificate exists on blockchain */
61
+ exists: boolean;
62
+ /** Number of certificates found */
63
+ count: number;
64
+ }
65
+ /**
66
+ * Generate a new Akash certificate
67
+ *
68
+ * Creates a fresh X.509 certificate with PEM encoding for mTLS authentication.
69
+ * This certificate is tied to the wallet address and can be reused across deployments.
70
+ *
71
+ * **What this does:**
72
+ * 1. Generates RSA key pair (2048-bit)
73
+ * 2. Creates X.509 certificate
74
+ * 3. Encodes in PEM format
75
+ * 4. Returns certificate ready for blockchain broadcast
76
+ *
77
+ * @param walletAddress - Akash wallet address to tie certificate to
78
+ * @returns Result with generated certificate or error
79
+ *
80
+ * @example
81
+ * ```typescript
82
+ * const result = generateCertificate('akash1abc...');
83
+ * if (result.success) {
84
+ * console.log('Certificate generated:', result.data);
85
+ * // Now broadcast to blockchain with broadcastCertificate()
86
+ * }
87
+ * ```
88
+ */
89
+ export declare function generateCertificate(walletAddress: string): Result<AkashProviderTlsCertificate, CertificateError>;
90
+ /**
91
+ * Parse and validate certificate from JSON
92
+ *
93
+ * Converts certificate JSON data into a validated Certificate object.
94
+ * Performs comprehensive structure and format validation.
95
+ *
96
+ * **Validation checks:**
97
+ * 1. Object structure (not null/undefined)
98
+ * 2. Required fields present (cert, privateKey, publicKey)
99
+ * 3. PEM format validation (BEGIN/END markers)
100
+ * 4. String type validation
101
+ *
102
+ * @param json - Certificate data to parse (from file, API, etc.)
103
+ * @returns Result with validated certificate or error
104
+ *
105
+ * @example
106
+ * ```typescript
107
+ * const certJson = JSON.parse(fileContents);
108
+ * const result = parseCertificate(certJson);
109
+ *
110
+ * if (result.success) {
111
+ * // Certificate is valid and ready to use
112
+ * await broadcastCertificate(wallet, result.data, client);
113
+ * } else {
114
+ * console.error('Invalid certificate:', result.error.message);
115
+ * }
116
+ * ```
117
+ */
118
+ export declare function parseCertificate(json: unknown): Result<AkashProviderTlsCertificate, CertificateError>;
119
+ /**
120
+ * Query certificate from Akash blockchain
121
+ *
122
+ * Checks if a valid certificate exists on-chain for the wallet address.
123
+ * Returns the first valid certificate found, or null if none exist.
124
+ *
125
+ * **What this does:**
126
+ * 1. Connects to Akash RPC endpoint
127
+ * 2. Queries certificate module
128
+ * 3. Filters for valid certificates only
129
+ * 4. Returns first match or null
130
+ *
131
+ * @param wallet - Wallet context with address
132
+ * @param network - Akash network to query
133
+ * @returns Result with certificate info or null if not found
134
+ *
135
+ * @example
136
+ * ```typescript
137
+ * const result = await queryCertificate(wallet, 'mainnet');
138
+ *
139
+ * if (result.success && result.data) {
140
+ * console.log(`Found ${result.data.count} certificate(s) on-chain`);
141
+ * } else if (result.success && !result.data) {
142
+ * console.log('No certificate found - need to create one');
143
+ * }
144
+ * ```
145
+ */
146
+ export declare function queryCertificate(wallet: WalletContext, network: AkashNetwork): Promise<Result<OnChainCertificateInfo | null, CertificateError>>;
147
+ /**
148
+ * Broadcast certificate to Akash blockchain
149
+ *
150
+ * Submits a certificate transaction to the blockchain, making it available
151
+ * for mTLS authentication with providers.
152
+ *
153
+ * **What this does:**
154
+ * 1. Validates certificate structure
155
+ * 2. Creates blockchain transaction
156
+ * 3. Signs with wallet
157
+ * 4. Broadcasts to network
158
+ * 5. Returns transaction result
159
+ *
160
+ * **Important:** Certificate must be generated first with generateCertificate()
161
+ *
162
+ * @param wallet - Wallet context with signing capability
163
+ * @param certificate - Certificate to broadcast
164
+ * @param client - Signing client for blockchain transactions
165
+ * @returns Result with broadcast result or error
166
+ *
167
+ * @example
168
+ * ```typescript
169
+ * // Generate certificate
170
+ * const certResult = generateCertificate(wallet.address);
171
+ * if (!certResult.success) return;
172
+ *
173
+ * // Broadcast to blockchain
174
+ * const broadcastResult = await broadcastCertificate(
175
+ * wallet,
176
+ * certResult.data,
177
+ * client
178
+ * );
179
+ *
180
+ * if (broadcastResult.success) {
181
+ * console.log('Certificate on-chain:', broadcastResult.data.transactionHash);
182
+ * }
183
+ * ```
184
+ */
185
+ export declare function broadcastCertificate(wallet: WalletContext, certificate: AkashProviderTlsCertificate, client: SigningStargateClient): Promise<Result<CertificateBroadcastResult, CertificateError>>;
186
+ /**
187
+ * Ensure certificate exists (convenience function)
188
+ *
189
+ * High-level function that handles the complete certificate workflow:
190
+ * 1. Use existing certificate if provided
191
+ * 2. Query blockchain for existing certificate
192
+ * 3. Generate and broadcast new certificate if needed
193
+ *
194
+ * This is a convenience wrapper for the common case where you just want
195
+ * "a valid certificate" without manually orchestrating the steps.
196
+ *
197
+ * @param wallet - Wallet context
198
+ * @param network - Akash network
199
+ * @param client - Signing client for blockchain operations
200
+ * @param options - Optional existing certificate
201
+ * @returns Result with valid certificate or error
202
+ *
203
+ * @example
204
+ * ```typescript
205
+ * // Simple: just get me a valid certificate
206
+ * const result = await ensureCertificate(wallet, 'mainnet', client);
207
+ *
208
+ * if (result.success) {
209
+ * // Certificate is ready to use with providers
210
+ * await sendManifest(lease, manifest, result.data);
211
+ * }
212
+ * ```
213
+ *
214
+ * @example With existing certificate
215
+ * ```typescript
216
+ * // Use existing cert if available, otherwise create
217
+ * const result = await ensureCertificate(
218
+ * wallet,
219
+ * 'mainnet',
220
+ * client,
221
+ * { existingCertificate: loadedCert }
222
+ * );
223
+ * ```
224
+ */
225
+ export declare function ensureCertificate(wallet: WalletContext, network: AkashNetwork, client: SigningStargateClient, options?: {
226
+ existingCertificate?: AkashProviderTlsCertificate;
227
+ }): Promise<Result<AkashProviderTlsCertificate, CertificateError>>;
228
+ //# sourceMappingURL=certificate-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"certificate-manager.d.ts","sourceRoot":"","sources":["../../../src/targets/akash/certificate-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAUH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAE9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAyB,MAAM,uBAAuB,CAAC;AAChF,OAAO,EAAoB,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEvE;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,8BAA8B;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,MAAM,WAAW,0BAA0B;IACzC,uBAAuB;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,+CAA+C;IAC/C,MAAM,EAAE,OAAO,CAAC;IAChB,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,mBAAmB,CACjC,aAAa,EAAE,MAAM,GACpB,MAAM,CAAC,2BAA2B,EAAE,gBAAgB,CAAC,CAuCvD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,OAAO,GACZ,MAAM,CAAC,2BAA2B,EAAE,gBAAgB,CAAC,CAmEvD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,MAAM,CAAC,sBAAsB,GAAG,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAiDlE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,2BAA2B,EACxC,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,MAAM,CAAC,0BAA0B,EAAE,gBAAgB,CAAC,CAAC,CA0D/D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,qBAAqB,EAC7B,OAAO,CAAC,EAAE;IACR,mBAAmB,CAAC,EAAE,2BAA2B,CAAC;CACnD,GACA,OAAO,CAAC,MAAM,CAAC,2BAA2B,EAAE,gBAAgB,CAAC,CAAC,CA+DhE"}
@@ -0,0 +1,395 @@
1
+ /**
2
+ * Akash Network Certificate Management
3
+ *
4
+ * Provides certificate operations for Akash Network deployments. Certificates are
5
+ * required for mTLS authentication with Akash providers and are tied to wallet addresses.
6
+ *
7
+ * Key Improvements from kadi-deploy:
8
+ * - ✅ ZERO file I/O (caller handles persistence)
9
+ * - ✅ ZERO CLI dependencies (no chalk, enquirer, prompts)
10
+ * - ✅ ZERO `any` types (proper TypeScript throughout)
11
+ * - ✅ Result types for all operations
12
+ * - ✅ Composable API (small, focused functions)
13
+ * - ✅ Step-by-step comments explaining logic
14
+ *
15
+ * Design Philosophy:
16
+ * This is a LIBRARY, not a CLI. Certificates are passed as data structures.
17
+ * The caller (kadi-deploy CLI) handles file I/O, prompts, and display.
18
+ *
19
+ * @module targets/akash/certificate-manager
20
+ */
21
+ import { certificateManager } from '@akashnetwork/akashjs/build/certificates/certificate-manager/index.js';
22
+ import * as cert from '@akashnetwork/akashjs/build/certificates/index.js';
23
+ import { getRpc } from '@akashnetwork/akashjs/build/rpc/index.js';
24
+ import { QueryClientImpl as CertQueryClientImpl, QueryCertificatesRequest, } from '@akashnetwork/akashjs/build/protobuf/akash/cert/v1beta3/query.js';
25
+ import { CertificateError, CertificateErrorCodes } from '../../errors/index.js';
26
+ import { getNetworkConfig } from './environment.js';
27
+ /**
28
+ * Generate a new Akash certificate
29
+ *
30
+ * Creates a fresh X.509 certificate with PEM encoding for mTLS authentication.
31
+ * This certificate is tied to the wallet address and can be reused across deployments.
32
+ *
33
+ * **What this does:**
34
+ * 1. Generates RSA key pair (2048-bit)
35
+ * 2. Creates X.509 certificate
36
+ * 3. Encodes in PEM format
37
+ * 4. Returns certificate ready for blockchain broadcast
38
+ *
39
+ * @param walletAddress - Akash wallet address to tie certificate to
40
+ * @returns Result with generated certificate or error
41
+ *
42
+ * @example
43
+ * ```typescript
44
+ * const result = generateCertificate('akash1abc...');
45
+ * if (result.success) {
46
+ * console.log('Certificate generated:', result.data);
47
+ * // Now broadcast to blockchain with broadcastCertificate()
48
+ * }
49
+ * ```
50
+ */
51
+ export function generateCertificate(walletAddress) {
52
+ try {
53
+ // Step 1: Validate wallet address format
54
+ if (!walletAddress || !walletAddress.startsWith('akash')) {
55
+ return {
56
+ success: false,
57
+ error: new CertificateError('Invalid wallet address format', CertificateErrorCodes.CERT_INVALID, { walletAddress }),
58
+ };
59
+ }
60
+ // Step 2: Generate certificate with PEM encoding
61
+ // akashjs certificateManager handles all cryptographic operations
62
+ const certificate = certificateManager.generatePEM(walletAddress);
63
+ // Step 3: Validate generated certificate structure
64
+ const validationResult = parseCertificate(certificate);
65
+ if (!validationResult.success) {
66
+ return validationResult;
67
+ }
68
+ // Step 4: Return generated certificate
69
+ return {
70
+ success: true,
71
+ data: certificate,
72
+ };
73
+ }
74
+ catch (error) {
75
+ return {
76
+ success: false,
77
+ error: new CertificateError(`Failed to generate certificate: ${error}`, CertificateErrorCodes.CERT_CREATION_FAILED, { error: String(error) }),
78
+ };
79
+ }
80
+ }
81
+ /**
82
+ * Parse and validate certificate from JSON
83
+ *
84
+ * Converts certificate JSON data into a validated Certificate object.
85
+ * Performs comprehensive structure and format validation.
86
+ *
87
+ * **Validation checks:**
88
+ * 1. Object structure (not null/undefined)
89
+ * 2. Required fields present (cert, privateKey, publicKey)
90
+ * 3. PEM format validation (BEGIN/END markers)
91
+ * 4. String type validation
92
+ *
93
+ * @param json - Certificate data to parse (from file, API, etc.)
94
+ * @returns Result with validated certificate or error
95
+ *
96
+ * @example
97
+ * ```typescript
98
+ * const certJson = JSON.parse(fileContents);
99
+ * const result = parseCertificate(certJson);
100
+ *
101
+ * if (result.success) {
102
+ * // Certificate is valid and ready to use
103
+ * await broadcastCertificate(wallet, result.data, client);
104
+ * } else {
105
+ * console.error('Invalid certificate:', result.error.message);
106
+ * }
107
+ * ```
108
+ */
109
+ export function parseCertificate(json) {
110
+ try {
111
+ // Step 1: Validate input is an object
112
+ if (!json || typeof json !== 'object') {
113
+ return {
114
+ success: false,
115
+ error: new CertificateError('Certificate must be an object', CertificateErrorCodes.CERT_INVALID, { providedType: typeof json }),
116
+ };
117
+ }
118
+ const cert = json;
119
+ // Step 2: Check required fields exist
120
+ const requiredFields = ['cert', 'privateKey', 'publicKey'];
121
+ for (const field of requiredFields) {
122
+ if (!cert[field] || typeof cert[field] !== 'string') {
123
+ return {
124
+ success: false,
125
+ error: new CertificateError(`Certificate is missing required field: ${field}`, CertificateErrorCodes.CERT_INVALID, { missingField: field, provided: Object.keys(cert) }),
126
+ };
127
+ }
128
+ }
129
+ // Step 3: Validate PEM format for each field
130
+ // PEM format requires -----BEGIN ... and -----END ... markers
131
+ for (const field of requiredFields) {
132
+ const pemData = cert[field];
133
+ if (!pemData.includes('-----BEGIN') || !pemData.includes('-----END')) {
134
+ return {
135
+ success: false,
136
+ error: new CertificateError(`Certificate field ${field} is not in PEM format`, CertificateErrorCodes.CERT_INVALID, { field, pemData: pemData.substring(0, 50) + '...' }),
137
+ };
138
+ }
139
+ }
140
+ // Step 4: Return validated certificate
141
+ return {
142
+ success: true,
143
+ data: {
144
+ cert: cert.cert,
145
+ privateKey: cert.privateKey,
146
+ publicKey: cert.publicKey,
147
+ chain: cert.chain,
148
+ },
149
+ };
150
+ }
151
+ catch (error) {
152
+ return {
153
+ success: false,
154
+ error: new CertificateError(`Failed to parse certificate: ${error}`, CertificateErrorCodes.CERT_INVALID, { error: String(error) }),
155
+ };
156
+ }
157
+ }
158
+ /**
159
+ * Query certificate from Akash blockchain
160
+ *
161
+ * Checks if a valid certificate exists on-chain for the wallet address.
162
+ * Returns the first valid certificate found, or null if none exist.
163
+ *
164
+ * **What this does:**
165
+ * 1. Connects to Akash RPC endpoint
166
+ * 2. Queries certificate module
167
+ * 3. Filters for valid certificates only
168
+ * 4. Returns first match or null
169
+ *
170
+ * @param wallet - Wallet context with address
171
+ * @param network - Akash network to query
172
+ * @returns Result with certificate info or null if not found
173
+ *
174
+ * @example
175
+ * ```typescript
176
+ * const result = await queryCertificate(wallet, 'mainnet');
177
+ *
178
+ * if (result.success && result.data) {
179
+ * console.log(`Found ${result.data.count} certificate(s) on-chain`);
180
+ * } else if (result.success && !result.data) {
181
+ * console.log('No certificate found - need to create one');
182
+ * }
183
+ * ```
184
+ */
185
+ export async function queryCertificate(wallet, network) {
186
+ try {
187
+ // Step 1: Get RPC endpoint for network
188
+ const networkConfig = getNetworkConfig(network);
189
+ const rpcEndpoint = networkConfig.rpc;
190
+ // Step 2: Create RPC client
191
+ const rpc = await getRpc(rpcEndpoint);
192
+ const queryClient = new CertQueryClientImpl(rpc);
193
+ // Step 3: Query certificates for wallet address
194
+ // Filter for valid certificates only (exclude revoked)
195
+ const request = QueryCertificatesRequest.fromPartial({
196
+ filter: {
197
+ owner: wallet.address,
198
+ state: 'valid',
199
+ },
200
+ });
201
+ const response = await queryClient.Certificates(request);
202
+ // Step 4: Return certificate existence info
203
+ const certificateCount = response.certificates?.length || 0;
204
+ const certificateExists = certificateCount > 0;
205
+ if (certificateExists) {
206
+ return {
207
+ success: true,
208
+ data: {
209
+ exists: true,
210
+ count: certificateCount,
211
+ },
212
+ };
213
+ }
214
+ // No certificate found
215
+ return {
216
+ success: true,
217
+ data: null,
218
+ };
219
+ }
220
+ catch (error) {
221
+ // Don't fail for query errors - certificate might still work
222
+ // Just return null and let caller decide what to do
223
+ return {
224
+ success: true,
225
+ data: null,
226
+ };
227
+ }
228
+ }
229
+ /**
230
+ * Broadcast certificate to Akash blockchain
231
+ *
232
+ * Submits a certificate transaction to the blockchain, making it available
233
+ * for mTLS authentication with providers.
234
+ *
235
+ * **What this does:**
236
+ * 1. Validates certificate structure
237
+ * 2. Creates blockchain transaction
238
+ * 3. Signs with wallet
239
+ * 4. Broadcasts to network
240
+ * 5. Returns transaction result
241
+ *
242
+ * **Important:** Certificate must be generated first with generateCertificate()
243
+ *
244
+ * @param wallet - Wallet context with signing capability
245
+ * @param certificate - Certificate to broadcast
246
+ * @param client - Signing client for blockchain transactions
247
+ * @returns Result with broadcast result or error
248
+ *
249
+ * @example
250
+ * ```typescript
251
+ * // Generate certificate
252
+ * const certResult = generateCertificate(wallet.address);
253
+ * if (!certResult.success) return;
254
+ *
255
+ * // Broadcast to blockchain
256
+ * const broadcastResult = await broadcastCertificate(
257
+ * wallet,
258
+ * certResult.data,
259
+ * client
260
+ * );
261
+ *
262
+ * if (broadcastResult.success) {
263
+ * console.log('Certificate on-chain:', broadcastResult.data.transactionHash);
264
+ * }
265
+ * ```
266
+ */
267
+ export async function broadcastCertificate(wallet, certificate, client) {
268
+ try {
269
+ // Step 1: Validate certificate structure
270
+ const validationResult = parseCertificate(certificate);
271
+ if (!validationResult.success) {
272
+ return {
273
+ success: false,
274
+ error: new CertificateError('Cannot broadcast invalid certificate', CertificateErrorCodes.CERT_INVALID, { originalError: validationResult.error.message }),
275
+ };
276
+ }
277
+ // Step 2: Broadcast certificate to blockchain
278
+ // akashjs cert.broadcastCertificate handles transaction creation and signing
279
+ // Type assertion needed due to @cosmjs/stargate version incompatibility between packages
280
+ const broadcastResult = await cert.broadcastCertificate(certificate, wallet.address, client);
281
+ // Step 3: Check broadcast result
282
+ if (broadcastResult.code !== 0) {
283
+ return {
284
+ success: false,
285
+ error: new CertificateError(`Certificate broadcast failed: ${broadcastResult.rawLog}`, CertificateErrorCodes.CERT_BROADCAST_FAILED, {
286
+ code: broadcastResult.code,
287
+ rawLog: broadcastResult.rawLog,
288
+ }),
289
+ };
290
+ }
291
+ // Step 4: Return successful broadcast result
292
+ return {
293
+ success: true,
294
+ data: {
295
+ transactionHash: broadcastResult.transactionHash,
296
+ height: broadcastResult.height,
297
+ success: true,
298
+ },
299
+ };
300
+ }
301
+ catch (error) {
302
+ return {
303
+ success: false,
304
+ error: new CertificateError(`Failed to broadcast certificate: ${error}`, CertificateErrorCodes.CERT_BROADCAST_FAILED, { error: String(error) }),
305
+ };
306
+ }
307
+ }
308
+ /**
309
+ * Ensure certificate exists (convenience function)
310
+ *
311
+ * High-level function that handles the complete certificate workflow:
312
+ * 1. Use existing certificate if provided
313
+ * 2. Query blockchain for existing certificate
314
+ * 3. Generate and broadcast new certificate if needed
315
+ *
316
+ * This is a convenience wrapper for the common case where you just want
317
+ * "a valid certificate" without manually orchestrating the steps.
318
+ *
319
+ * @param wallet - Wallet context
320
+ * @param network - Akash network
321
+ * @param client - Signing client for blockchain operations
322
+ * @param options - Optional existing certificate
323
+ * @returns Result with valid certificate or error
324
+ *
325
+ * @example
326
+ * ```typescript
327
+ * // Simple: just get me a valid certificate
328
+ * const result = await ensureCertificate(wallet, 'mainnet', client);
329
+ *
330
+ * if (result.success) {
331
+ * // Certificate is ready to use with providers
332
+ * await sendManifest(lease, manifest, result.data);
333
+ * }
334
+ * ```
335
+ *
336
+ * @example With existing certificate
337
+ * ```typescript
338
+ * // Use existing cert if available, otherwise create
339
+ * const result = await ensureCertificate(
340
+ * wallet,
341
+ * 'mainnet',
342
+ * client,
343
+ * { existingCertificate: loadedCert }
344
+ * );
345
+ * ```
346
+ */
347
+ export async function ensureCertificate(wallet, network, client, options) {
348
+ try {
349
+ // Step 1: Use existing certificate if provided and valid
350
+ if (options?.existingCertificate) {
351
+ const validationResult = parseCertificate(options.existingCertificate);
352
+ if (validationResult.success) {
353
+ return validationResult;
354
+ }
355
+ // Invalid existing cert, continue to generate new one
356
+ }
357
+ // Step 2: Check blockchain for existing certificate
358
+ const queryResult = await queryCertificate(wallet, network);
359
+ if (queryResult.success && queryResult.data) {
360
+ // Certificate exists on-chain, but we don't have the private key
361
+ // This shouldn't happen in normal flow - caller should provide cert
362
+ return {
363
+ success: false,
364
+ error: new CertificateError('Certificate exists on blockchain but private key not provided', CertificateErrorCodes.CERT_NOT_FOUND, {
365
+ suggestion: 'Provide existing certificate or revoke on-chain certificate',
366
+ }),
367
+ };
368
+ }
369
+ // Step 3: Generate new certificate
370
+ const generateResult = generateCertificate(wallet.address);
371
+ if (!generateResult.success) {
372
+ return generateResult;
373
+ }
374
+ // Step 4: Broadcast to blockchain
375
+ const broadcastResult = await broadcastCertificate(wallet, generateResult.data, client);
376
+ if (!broadcastResult.success) {
377
+ return {
378
+ success: false,
379
+ error: broadcastResult.error,
380
+ };
381
+ }
382
+ // Step 5: Return generated and broadcast certificate
383
+ return {
384
+ success: true,
385
+ data: generateResult.data,
386
+ };
387
+ }
388
+ catch (error) {
389
+ return {
390
+ success: false,
391
+ error: new CertificateError(`Failed to ensure certificate: ${error}`, CertificateErrorCodes.CERT_ERROR, { error: String(error) }),
392
+ };
393
+ }
394
+ }
395
+ //# sourceMappingURL=certificate-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"certificate-manager.js","sourceRoot":"","sources":["../../../src/targets/akash/certificate-manager.ts"],"names":[],"mappings":"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"}