@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.
- package/README.md +523 -0
- package/dist/constants.d.ts +82 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +82 -0
- package/dist/constants.js.map +1 -0
- package/dist/errors/certificate-error.d.ts +95 -0
- package/dist/errors/certificate-error.d.ts.map +1 -0
- package/dist/errors/certificate-error.js +111 -0
- package/dist/errors/certificate-error.js.map +1 -0
- package/dist/errors/deployment-error.d.ts +122 -0
- package/dist/errors/deployment-error.d.ts.map +1 -0
- package/dist/errors/deployment-error.js +185 -0
- package/dist/errors/deployment-error.js.map +1 -0
- package/dist/errors/index.d.ts +13 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +18 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/errors/profile-error.d.ts +106 -0
- package/dist/errors/profile-error.d.ts.map +1 -0
- package/dist/errors/profile-error.js +127 -0
- package/dist/errors/profile-error.js.map +1 -0
- package/dist/errors/provider-error.d.ts +104 -0
- package/dist/errors/provider-error.d.ts.map +1 -0
- package/dist/errors/provider-error.js +120 -0
- package/dist/errors/provider-error.js.map +1 -0
- package/dist/errors/wallet-error.d.ts +131 -0
- package/dist/errors/wallet-error.d.ts.map +1 -0
- package/dist/errors/wallet-error.js +154 -0
- package/dist/errors/wallet-error.js.map +1 -0
- package/dist/index.d.ts +49 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +53 -0
- package/dist/index.js.map +1 -0
- package/dist/targets/akash/bid-selectors.d.ts +251 -0
- package/dist/targets/akash/bid-selectors.d.ts.map +1 -0
- package/dist/targets/akash/bid-selectors.js +322 -0
- package/dist/targets/akash/bid-selectors.js.map +1 -0
- package/dist/targets/akash/bid-types.d.ts +297 -0
- package/dist/targets/akash/bid-types.d.ts.map +1 -0
- package/dist/targets/akash/bid-types.js +89 -0
- package/dist/targets/akash/bid-types.js.map +1 -0
- package/dist/targets/akash/blockchain-client.d.ts +577 -0
- package/dist/targets/akash/blockchain-client.d.ts.map +1 -0
- package/dist/targets/akash/blockchain-client.js +803 -0
- package/dist/targets/akash/blockchain-client.js.map +1 -0
- package/dist/targets/akash/certificate-manager.d.ts +228 -0
- package/dist/targets/akash/certificate-manager.d.ts.map +1 -0
- package/dist/targets/akash/certificate-manager.js +395 -0
- package/dist/targets/akash/certificate-manager.js.map +1 -0
- package/dist/targets/akash/constants.d.ts +231 -0
- package/dist/targets/akash/constants.d.ts.map +1 -0
- package/dist/targets/akash/constants.js +225 -0
- package/dist/targets/akash/constants.js.map +1 -0
- package/dist/targets/akash/deployer.d.ts +136 -0
- package/dist/targets/akash/deployer.d.ts.map +1 -0
- package/dist/targets/akash/deployer.js +599 -0
- package/dist/targets/akash/deployer.js.map +1 -0
- package/dist/targets/akash/environment.d.ts +241 -0
- package/dist/targets/akash/environment.d.ts.map +1 -0
- package/dist/targets/akash/environment.js +245 -0
- package/dist/targets/akash/environment.js.map +1 -0
- package/dist/targets/akash/index.d.ts +1113 -0
- package/dist/targets/akash/index.d.ts.map +1 -0
- package/dist/targets/akash/index.js +909 -0
- package/dist/targets/akash/index.js.map +1 -0
- package/dist/targets/akash/lease-monitor.d.ts +51 -0
- package/dist/targets/akash/lease-monitor.d.ts.map +1 -0
- package/dist/targets/akash/lease-monitor.js +110 -0
- package/dist/targets/akash/lease-monitor.js.map +1 -0
- package/dist/targets/akash/logs.d.ts +71 -0
- package/dist/targets/akash/logs.d.ts.map +1 -0
- package/dist/targets/akash/logs.js +311 -0
- package/dist/targets/akash/logs.js.map +1 -0
- package/dist/targets/akash/logs.types.d.ts +102 -0
- package/dist/targets/akash/logs.types.d.ts.map +1 -0
- package/dist/targets/akash/logs.types.js +9 -0
- package/dist/targets/akash/logs.types.js.map +1 -0
- package/dist/targets/akash/pricing.d.ts +247 -0
- package/dist/targets/akash/pricing.d.ts.map +1 -0
- package/dist/targets/akash/pricing.js +246 -0
- package/dist/targets/akash/pricing.js.map +1 -0
- package/dist/targets/akash/provider-client.d.ts +114 -0
- package/dist/targets/akash/provider-client.d.ts.map +1 -0
- package/dist/targets/akash/provider-client.js +318 -0
- package/dist/targets/akash/provider-client.js.map +1 -0
- package/dist/targets/akash/provider-metadata.d.ts +228 -0
- package/dist/targets/akash/provider-metadata.d.ts.map +1 -0
- package/dist/targets/akash/provider-metadata.js +14 -0
- package/dist/targets/akash/provider-metadata.js.map +1 -0
- package/dist/targets/akash/provider-service.d.ts +133 -0
- package/dist/targets/akash/provider-service.d.ts.map +1 -0
- package/dist/targets/akash/provider-service.js +391 -0
- package/dist/targets/akash/provider-service.js.map +1 -0
- package/dist/targets/akash/query-client.d.ts +125 -0
- package/dist/targets/akash/query-client.d.ts.map +1 -0
- package/dist/targets/akash/query-client.js +332 -0
- package/dist/targets/akash/query-client.js.map +1 -0
- package/dist/targets/akash/sdl-generator.d.ts +31 -0
- package/dist/targets/akash/sdl-generator.d.ts.map +1 -0
- package/dist/targets/akash/sdl-generator.js +279 -0
- package/dist/targets/akash/sdl-generator.js.map +1 -0
- package/dist/targets/akash/types.d.ts +285 -0
- package/dist/targets/akash/types.d.ts.map +1 -0
- package/dist/targets/akash/types.js +54 -0
- package/dist/targets/akash/types.js.map +1 -0
- package/dist/targets/akash/wallet-manager.d.ts +526 -0
- package/dist/targets/akash/wallet-manager.d.ts.map +1 -0
- package/dist/targets/akash/wallet-manager.js +953 -0
- package/dist/targets/akash/wallet-manager.js.map +1 -0
- package/dist/targets/local/compose-generator.d.ts +244 -0
- package/dist/targets/local/compose-generator.d.ts.map +1 -0
- package/dist/targets/local/compose-generator.js +324 -0
- package/dist/targets/local/compose-generator.js.map +1 -0
- package/dist/targets/local/deployer.d.ts +82 -0
- package/dist/targets/local/deployer.d.ts.map +1 -0
- package/dist/targets/local/deployer.js +367 -0
- package/dist/targets/local/deployer.js.map +1 -0
- package/dist/targets/local/engine-manager.d.ts +155 -0
- package/dist/targets/local/engine-manager.d.ts.map +1 -0
- package/dist/targets/local/engine-manager.js +250 -0
- package/dist/targets/local/engine-manager.js.map +1 -0
- package/dist/targets/local/index.d.ts +40 -0
- package/dist/targets/local/index.d.ts.map +1 -0
- package/dist/targets/local/index.js +43 -0
- package/dist/targets/local/index.js.map +1 -0
- package/dist/targets/local/network-manager.d.ts +160 -0
- package/dist/targets/local/network-manager.d.ts.map +1 -0
- package/dist/targets/local/network-manager.js +337 -0
- package/dist/targets/local/network-manager.js.map +1 -0
- package/dist/targets/local/types.d.ts +327 -0
- package/dist/targets/local/types.d.ts.map +1 -0
- package/dist/targets/local/types.js +9 -0
- package/dist/targets/local/types.js.map +1 -0
- package/dist/types/common.d.ts +585 -0
- package/dist/types/common.d.ts.map +1 -0
- package/dist/types/common.js +13 -0
- package/dist/types/common.js.map +1 -0
- package/dist/types/index.d.ts +15 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +12 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/options.d.ts +329 -0
- package/dist/types/options.d.ts.map +1 -0
- package/dist/types/options.js +10 -0
- package/dist/types/options.js.map +1 -0
- package/dist/types/profiles.d.ts +329 -0
- package/dist/types/profiles.d.ts.map +1 -0
- package/dist/types/profiles.js +27 -0
- package/dist/types/profiles.js.map +1 -0
- package/dist/types/results.d.ts +443 -0
- package/dist/types/results.d.ts.map +1 -0
- package/dist/types/results.js +64 -0
- package/dist/types/results.js.map +1 -0
- package/dist/types/validators.d.ts +118 -0
- package/dist/types/validators.d.ts.map +1 -0
- package/dist/types/validators.js +198 -0
- package/dist/types/validators.js.map +1 -0
- package/dist/utils/command-runner.d.ts +128 -0
- package/dist/utils/command-runner.d.ts.map +1 -0
- package/dist/utils/command-runner.js +210 -0
- package/dist/utils/command-runner.js.map +1 -0
- package/dist/utils/index.d.ts +10 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +10 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +68 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +93 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/profile-loader.d.ts +76 -0
- package/dist/utils/profile-loader.d.ts.map +1 -0
- package/dist/utils/profile-loader.js +194 -0
- package/dist/utils/profile-loader.js.map +1 -0
- package/dist/utils/registry/index.d.ts +27 -0
- package/dist/utils/registry/index.d.ts.map +1 -0
- package/dist/utils/registry/index.js +29 -0
- package/dist/utils/registry/index.js.map +1 -0
- package/dist/utils/registry/manager.d.ts +319 -0
- package/dist/utils/registry/manager.d.ts.map +1 -0
- package/dist/utils/registry/manager.js +671 -0
- package/dist/utils/registry/manager.js.map +1 -0
- package/dist/utils/registry/setup.d.ts +135 -0
- package/dist/utils/registry/setup.d.ts.map +1 -0
- package/dist/utils/registry/setup.js +207 -0
- package/dist/utils/registry/setup.js.map +1 -0
- package/dist/utils/registry/transformer.d.ts +92 -0
- package/dist/utils/registry/transformer.d.ts.map +1 -0
- package/dist/utils/registry/transformer.js +131 -0
- package/dist/utils/registry/transformer.js.map +1 -0
- package/dist/utils/registry/types.d.ts +241 -0
- package/dist/utils/registry/types.d.ts.map +1 -0
- package/dist/utils/registry/types.js +10 -0
- package/dist/utils/registry/types.js.map +1 -0
- package/docs/EXAMPLES.md +293 -0
- package/docs/PLACEMENT.md +433 -0
- package/docs/STORAGE.md +318 -0
- package/docs/building-provider-reliability-tracker.md +2581 -0
- 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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"}
|