@witnet/solidity 3.0.4 → 3.0.5

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 (222) hide show
  1. package/LICENSE +2 -2
  2. package/build/contracts/Bech32.json +1 -1
  3. package/build/contracts/Clonable.json +1 -1
  4. package/build/contracts/Context.json +1 -1
  5. package/build/contracts/Create3.json +1 -1
  6. package/build/contracts/ERC165.json +1 -1
  7. package/build/contracts/Escrowable.json +1 -1
  8. package/build/contracts/IChainlinkAggregatorV3.json +1 -1
  9. package/build/contracts/IERC165.json +1 -1
  10. package/build/contracts/IERC20.json +1 -1
  11. package/build/contracts/IERC2362.json +1 -1
  12. package/build/contracts/IPythChainlinkAggregatorV3.json +1 -1
  13. package/build/contracts/IWitAppliance.json +1 -1
  14. package/build/contracts/IWitOracle.json +1 -1
  15. package/build/contracts/IWitOracleAppliance.json +1 -1
  16. package/build/contracts/IWitOracleConsumer.json +1 -1
  17. package/build/contracts/IWitOracleConsumerLegacy.json +1 -1
  18. package/build/contracts/IWitOracleLegacy.json +1 -1
  19. package/build/contracts/IWitOracleQueriable.json +1 -1
  20. package/build/contracts/IWitOracleQueriableConsumer.json +1 -1
  21. package/build/contracts/IWitOracleQueriableEvents.json +1 -1
  22. package/build/contracts/IWitOracleQueriableExperimental.json +1 -1
  23. package/build/contracts/IWitOracleQueriableTrustableReporter.json +1 -1
  24. package/build/contracts/IWitOracleQueriableTrustlessReporter.json +1 -1
  25. package/build/contracts/IWitOracleRadonRegistry.json +1 -1
  26. package/build/contracts/IWitOracleRadonRegistryEvents.json +1 -1
  27. package/build/contracts/IWitOracleRadonRegistryLegacy.json +1 -1
  28. package/build/contracts/IWitOracleRadonRequestFactory.json +1 -1
  29. package/build/contracts/IWitOracleRadonRequestModal.json +1 -1
  30. package/build/contracts/IWitOracleRadonRequestTemplate.json +1 -1
  31. package/build/contracts/IWitOracleRequest.json +1 -1
  32. package/build/contracts/IWitOracleRequestFactory.json +1 -1
  33. package/build/contracts/IWitOracleRequestFactoryEvents.json +1 -1
  34. package/build/contracts/IWitOracleRequestTemplate.json +1 -1
  35. package/build/contracts/IWitOracleTrustableAdmin.json +1 -1
  36. package/build/contracts/IWitOracleTrustless.json +1 -1
  37. package/build/contracts/IWitPriceFeeds.json +1 -1
  38. package/build/contracts/IWitPriceFeedsAdmin.json +1 -1
  39. package/build/contracts/IWitPriceFeedsConsumer.json +1 -1
  40. package/build/contracts/IWitPriceFeedsEvents.json +1 -1
  41. package/build/contracts/IWitPriceFeedsLegacy.json +1 -1
  42. package/build/contracts/IWitPriceFeedsLegacyAdmin.json +1 -1
  43. package/build/contracts/IWitPriceFeedsLegacySolver.json +1 -1
  44. package/build/contracts/IWitPriceFeedsLegacySolverFactory.json +1 -1
  45. package/build/contracts/IWitPriceFeedsTypes.json +1 -1
  46. package/build/contracts/IWitPyth.json +1 -1
  47. package/build/contracts/IWitPythChainlinkAggregator.json +1 -1
  48. package/build/contracts/IWitPythErrors.json +1 -1
  49. package/build/contracts/IWitPythEvents.json +1 -1
  50. package/build/contracts/IWitPythReporter.json +1 -1
  51. package/build/contracts/IWitRandomness.json +1 -1
  52. package/build/contracts/IWitRandomnessAdmin.json +1 -1
  53. package/build/contracts/IWitRandomnessAdminV2.json +1 -1
  54. package/build/contracts/IWitRandomnessConsumer.json +1 -1
  55. package/build/contracts/IWitRandomnessEvents.json +1 -1
  56. package/build/contracts/IWitRandomnessLegacy.json +1 -1
  57. package/build/contracts/IWitRandomnessTypes.json +1 -1
  58. package/build/contracts/Initializable.json +1 -1
  59. package/build/contracts/OVM_GasPriceOracle.json +1 -1
  60. package/build/contracts/Ownable.json +1 -1
  61. package/build/contracts/Ownable2Step.json +1 -1
  62. package/build/contracts/Payable.json +1 -1
  63. package/build/contracts/Proxiable.json +1 -1
  64. package/build/contracts/ReentrancyGuard.json +1 -1
  65. package/build/contracts/Secp256k1.json +1 -1
  66. package/build/contracts/Slices.json +1 -1
  67. package/build/contracts/TestBech32.json +1 -1
  68. package/build/contracts/TestSecp256k1.json +1 -1
  69. package/build/contracts/Upgradeable.json +1 -1
  70. package/build/contracts/UsingWitOracle.json +1 -1
  71. package/build/contracts/UsingWitPriceFeeds.json +1 -1
  72. package/build/contracts/UsingWitRandomness.json +1 -1
  73. package/build/contracts/WitOracle.json +2 -13
  74. package/build/contracts/WitOracleBasePushOnly.json +1 -1
  75. package/build/contracts/WitOracleBasePushOnlyTrustable.json +1 -1
  76. package/build/contracts/WitOracleBasePushOnlyTrustless.json +1 -1
  77. package/build/contracts/WitOracleBasePushOnlyUpgradable.json +1 -1
  78. package/build/contracts/WitOracleBaseQueriable.json +1 -1
  79. package/build/contracts/WitOracleBaseQueriableTrustable.json +1 -1
  80. package/build/contracts/WitOracleBaseQueriableTrustless.json +1 -1
  81. package/build/contracts/WitOracleBaseQueriableUpgradable.json +1 -1
  82. package/build/contracts/WitOracleDataLib.json +2 -254
  83. package/build/contracts/WitOraclePushOnly.json +1 -1
  84. package/build/contracts/WitOracleRadonEncodingLib.json +2 -13
  85. package/build/contracts/WitOracleRadonRegistry.json +2 -13
  86. package/build/contracts/WitOracleRadonRegistryBase.json +1 -1
  87. package/build/contracts/WitOracleRadonRegistryBaseUpgradable.json +1 -1
  88. package/build/contracts/WitOracleRadonRegistryData.json +1 -1
  89. package/build/contracts/WitOracleRadonRegistryDefaultV21.json +1 -1
  90. package/build/contracts/WitOracleRadonRegistryUpgradableDefault.json +2 -17
  91. package/build/contracts/WitOracleRadonRegistryUpgradableNoSha256.json +1 -1
  92. package/build/contracts/WitOracleRadonRegistryUpgradableZkSync.json +1 -1
  93. package/build/contracts/WitOracleRadonRequestFactory.json +2 -13
  94. package/build/contracts/WitOracleRadonRequestFactoryBase.json +1 -1
  95. package/build/contracts/WitOracleRadonRequestFactoryBaseUpgradable.json +1 -1
  96. package/build/contracts/WitOracleRadonRequestFactoryModals.json +2 -13
  97. package/build/contracts/WitOracleRadonRequestFactoryModalsDefault.json +2 -13
  98. package/build/contracts/WitOracleRadonRequestFactoryTemplates.json +2 -13
  99. package/build/contracts/WitOracleRadonRequestFactoryTemplatesDefault.json +2 -13
  100. package/build/contracts/WitOracleRadonRequestFactoryUpgradableConfluxCore.json +1 -1
  101. package/build/contracts/WitOracleRadonRequestFactoryUpgradableDefault.json +2 -13
  102. package/build/contracts/WitOracleResultStatusLib.json +2 -14
  103. package/build/contracts/WitOracleTrustableDefault.json +2 -259
  104. package/build/contracts/WitOracleTrustableExperimental.json +1 -1
  105. package/build/contracts/WitOracleTrustableObscuro.json +1 -1
  106. package/build/contracts/WitOracleTrustableOvm2.json +1 -1
  107. package/build/contracts/WitOracleTrustablePushOnly.json +1 -1
  108. package/build/contracts/WitOracleTrustableReef.json +1 -1
  109. package/build/contracts/WitOracleTrustableZkSync.json +1 -1
  110. package/build/contracts/WitOracleTrustlessDataLib.json +1 -1
  111. package/build/contracts/WitOracleTrustlessDefaultV22.json +1 -1
  112. package/build/contracts/WitOracleTrustlessUpgradableDefault.json +1 -1
  113. package/build/contracts/WitPriceFeeds.json +2 -13
  114. package/build/contracts/WitPriceFeedsDataLib.json +2 -14
  115. package/build/contracts/WitPriceFeedsLegacy.json +2 -8
  116. package/build/contracts/WitPriceFeedsLegacyDataLib.json +2 -84
  117. package/build/contracts/WitPriceFeedsLegacyUpgradable.json +1 -1
  118. package/build/contracts/WitPriceFeedsLegacyUpgradableBypass.json +2 -80
  119. package/build/contracts/WitPriceFeedsSolverBase.json +1 -1
  120. package/build/contracts/WitPriceFeedsV3.json +1 -1
  121. package/build/contracts/WitPriceFeedsV3Upgradable.json +2 -17
  122. package/build/contracts/WitPythChainlinkAggregator.json +1 -1
  123. package/build/contracts/WitRandomness.json +2 -13
  124. package/build/contracts/WitRandomnessLegacy.json +1 -1
  125. package/build/contracts/WitRandomnessV3.json +2 -13
  126. package/build/contracts/WitRngConsumer.json +1 -1
  127. package/build/contracts/Witnet.json +1 -1
  128. package/build/contracts/WitnetBuffer.json +1 -1
  129. package/build/contracts/WitnetCBOR.json +1 -1
  130. package/build/contracts/WitnetDeployer.json +2 -13
  131. package/build/contracts/WitnetDeployerConfluxCore.json +1 -1
  132. package/build/contracts/WitnetDeployerDeferred.json +1 -1
  133. package/build/contracts/WitnetDeployerMeter.json +1 -1
  134. package/build/contracts/WitnetProxy.json +2 -9
  135. package/build/contracts/WitnetUpgradableBase.json +1 -1
  136. package/{migrations → dist/migrations}/addresses.json +1 -25
  137. package/{migrations → dist/migrations}/constructorArgs.json +1 -6
  138. package/dist/migrations/settings/artifacts.d.ts +95 -0
  139. package/dist/migrations/settings/artifacts.d.ts.map +1 -0
  140. package/dist/migrations/settings/artifacts.js +80 -0
  141. package/dist/migrations/settings/networks.d.ts +593 -0
  142. package/dist/migrations/settings/networks.d.ts.map +1 -0
  143. package/dist/migrations/settings/networks.js +593 -0
  144. package/dist/src/bin/helpers.cjs +350 -0
  145. package/dist/src/bin/helpers.d.cts +76 -0
  146. package/dist/src/bin/helpers.d.cts.map +1 -0
  147. package/dist/src/index.d.ts +6 -0
  148. package/dist/src/index.d.ts.map +1 -0
  149. package/dist/src/index.js +33 -0
  150. package/dist/src/lib/types.d.ts +99 -0
  151. package/dist/src/lib/types.d.ts.map +1 -0
  152. package/dist/src/lib/types.js +18 -0
  153. package/dist/src/lib/utils.d.ts +22 -0
  154. package/dist/src/lib/utils.d.ts.map +1 -0
  155. package/dist/src/lib/utils.js +267 -0
  156. package/dist/src/lib/wrappers/ContractWrapper.d.ts +47 -0
  157. package/dist/src/lib/wrappers/ContractWrapper.d.ts.map +1 -0
  158. package/dist/src/lib/wrappers/ContractWrapper.js +81 -0
  159. package/dist/src/lib/wrappers/WitAppliance.d.ts +7 -0
  160. package/dist/src/lib/wrappers/WitAppliance.d.ts.map +1 -0
  161. package/dist/src/lib/wrappers/WitAppliance.js +17 -0
  162. package/dist/src/lib/wrappers/WitArtifact.d.ts +6 -0
  163. package/dist/src/lib/wrappers/WitArtifact.d.ts.map +1 -0
  164. package/dist/src/lib/wrappers/WitArtifact.js +16 -0
  165. package/dist/src/lib/wrappers/WitOracle.d.ts +105 -0
  166. package/dist/src/lib/wrappers/WitOracle.d.ts.map +1 -0
  167. package/dist/src/lib/wrappers/WitOracle.js +217 -0
  168. package/dist/src/lib/wrappers/WitOracleConsumer.d.ts +16 -0
  169. package/dist/src/lib/wrappers/WitOracleConsumer.d.ts.map +1 -0
  170. package/dist/src/lib/wrappers/WitOracleConsumer.js +30 -0
  171. package/dist/src/lib/wrappers/WitOracleRadonRegistry.d.ts +102 -0
  172. package/dist/src/lib/wrappers/WitOracleRadonRegistry.d.ts.map +1 -0
  173. package/dist/src/lib/wrappers/WitOracleRadonRegistry.js +140 -0
  174. package/dist/src/lib/wrappers/WitOracleRadonRequestFactory.d.ts +81 -0
  175. package/dist/src/lib/wrappers/WitOracleRadonRequestFactory.d.ts.map +1 -0
  176. package/dist/src/lib/wrappers/WitOracleRadonRequestFactory.js +257 -0
  177. package/dist/src/lib/wrappers/WitPriceFeeds.d.ts +91 -0
  178. package/dist/src/lib/wrappers/WitPriceFeeds.d.ts.map +1 -0
  179. package/dist/src/lib/wrappers/WitPriceFeeds.js +356 -0
  180. package/dist/src/lib/wrappers/WitPriceFeedsLegacy.d.ts +14 -0
  181. package/dist/src/lib/wrappers/WitPriceFeedsLegacy.d.ts.map +1 -0
  182. package/dist/src/lib/wrappers/WitPriceFeedsLegacy.js +64 -0
  183. package/dist/src/lib/wrappers/WitRandomness.d.ts +55 -0
  184. package/dist/src/lib/wrappers/WitRandomness.d.ts.map +1 -0
  185. package/dist/src/lib/wrappers/WitRandomness.js +165 -0
  186. package/dist/src/lib/wrappers.d.ts +8 -0
  187. package/dist/src/lib/wrappers.d.ts.map +1 -0
  188. package/dist/src/lib/wrappers.js +8 -0
  189. package/package.json +78 -54
  190. package/scripts/clean.cjs +21 -0
  191. package/scripts/eth-create2.cjs +38 -0
  192. package/scripts/eth-create3.cjs +45 -0
  193. package/scripts/postinstall.cjs +9 -0
  194. package/scripts/prepare.cjs +27 -0
  195. package/scripts/vanity2gen.cjs +121 -0
  196. package/scripts/vanity3gen.cjs +84 -0
  197. package/scripts/verify-proxies.cjs +50 -0
  198. package/scripts/verify-truffle.cjs +69 -0
  199. package/scripts/verify.js +95 -0
  200. package/scripts/wof-acls.js +17 -0
  201. package/src/bin/bots/bridge.cjs +0 -0
  202. package/src/bin/bots/randomizer.cjs +290 -0
  203. package/src/bin/bots/reporter.cjs +0 -0
  204. package/src/bin/cli/accounts.cjs +47 -0
  205. package/src/bin/cli/assets.cjs +466 -0
  206. package/src/bin/cli/framework.cjs +100 -0
  207. package/src/bin/cli/gateway.cjs +26 -0
  208. package/src/bin/cli/networks.cjs +63 -0
  209. package/src/bin/cli/priceFeeds.cjs +170 -0
  210. package/src/bin/cli/queries.cjs +217 -0
  211. package/src/bin/cli/randomness.cjs +367 -0
  212. package/src/bin/cli/reports.cjs +272 -0
  213. package/src/bin/cli/wizard.cjs +352 -0
  214. package/src/bin/helpers.cjs +388 -0
  215. package/src/bin/index.cjs +407 -0
  216. package/settings/artifacts.js +0 -71
  217. package/settings/index.js +0 -49
  218. package/settings/networks.js +0 -593
  219. package/settings/solidity.js +0 -11
  220. package/settings/specs.js +0 -102
  221. package/src/index.js +0 -96
  222. package/src/utils.js +0 -305
@@ -0,0 +1,18 @@
1
+ export var PriceFeedMappers;
2
+ (function (PriceFeedMappers) {
3
+ PriceFeedMappers[PriceFeedMappers["None"] = 0] = "None";
4
+ PriceFeedMappers[PriceFeedMappers["Fallback"] = 1] = "Fallback";
5
+ PriceFeedMappers[PriceFeedMappers["Hottest"] = 2] = "Hottest";
6
+ PriceFeedMappers[PriceFeedMappers["Product"] = 3] = "Product";
7
+ PriceFeedMappers[PriceFeedMappers["Inverse"] = 4] = "Inverse";
8
+ })(PriceFeedMappers || (PriceFeedMappers = {}));
9
+ export var PriceFeedOracles;
10
+ (function (PriceFeedOracles) {
11
+ PriceFeedOracles[PriceFeedOracles["Witnet"] = 0] = "Witnet";
12
+ PriceFeedOracles[PriceFeedOracles["Erc2362"] = 1] = "Erc2362";
13
+ PriceFeedOracles[PriceFeedOracles["Chainlink"] = 2] = "Chainlink";
14
+ // Pyth,
15
+ // Redstone,
16
+ })(PriceFeedOracles || (PriceFeedOracles = {}));
17
+ export { TransactionReceipt } from "ethers";
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXFCQSxNQUFNLENBQU4sSUFBWSxnQkFNWDtBQU5ELFdBQVksZ0JBQWdCO0lBQzNCLHVEQUFJLENBQUE7SUFDSiwrREFBUSxDQUFBO0lBQ1IsNkRBQU8sQ0FBQTtJQUNQLDZEQUFPLENBQUE7SUFDUCw2REFBTyxDQUFBO0FBQ1IsQ0FBQyxFQU5XLGdCQUFnQixLQUFoQixnQkFBZ0IsUUFNM0I7QUFRRCxNQUFNLENBQU4sSUFBWSxnQkFNWDtBQU5ELFdBQVksZ0JBQWdCO0lBQzNCLDJEQUFNLENBQUE7SUFDTiw2REFBTyxDQUFBO0lBQ1AsaUVBQVMsQ0FBQTtJQUNULFFBQVE7SUFDUixZQUFZO0FBQ2IsQ0FBQyxFQU5XLGdCQUFnQixLQUFoQixnQkFBZ0IsUUFNM0I7QUF5QkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sUUFBUSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBXaXRuZXQgfSBmcm9tIFwiQHdpdG5ldC9zZGtcIlxuaW1wb3J0IHR5cGUgeyBDb250cmFjdFdyYXBwZXIgfSBmcm9tIFwiLi93cmFwcGVycy9Db250cmFjdFdyYXBwZXIuanNcIlxuXG5leHBvcnQgdHlwZSBEYXRhUHVzaFJlcG9ydCA9IFdpdG5ldC5EYXRhUHVzaFJlcG9ydFxuXG5leHBvcnQgdHlwZSBQcmljZUZlZWQgPSB7XG5cdGlkPzogc3RyaW5nXG5cdGlkNDogc3RyaW5nXG5cdGV4cG9uZW50OiBudW1iZXJcblx0c3ltYm9sOiBzdHJpbmdcblx0bWFwcGVyPzogUHJpY2VGZWVkTWFwcGVyXG5cdG9yYWNsZT86IFByaWNlRmVlZE9yYWNsZVxuXHR1cGRhdGVDb25kaXRpb25zPzogUHJpY2VGZWVkVXBkYXRlQ29uZGl0aW9uc1xuXHRsYXN0VXBkYXRlPzogUHJpY2VGZWVkVXBkYXRlXG59XG5cbmV4cG9ydCB0eXBlIFByaWNlRmVlZE1hcHBlciA9IHtcblx0Y2xhc3M6IHN0cmluZ1xuXHRkZXBzOiBBcnJheTxzdHJpbmc+XG59XG5cbmV4cG9ydCBlbnVtIFByaWNlRmVlZE1hcHBlcnMge1xuXHROb25lLFxuXHRGYWxsYmFjayxcblx0SG90dGVzdCxcblx0UHJvZHVjdCxcblx0SW52ZXJzZSxcbn1cblxuZXhwb3J0IHR5cGUgUHJpY2VGZWVkT3JhY2xlID0ge1xuXHRjbGFzczogc3RyaW5nXG5cdHRhcmdldDogc3RyaW5nXG5cdHNvdXJjZXM6IFdpdG5ldC5IYXNoXG59XG5cbmV4cG9ydCBlbnVtIFByaWNlRmVlZE9yYWNsZXMge1xuXHRXaXRuZXQsXG5cdEVyYzIzNjIsXG5cdENoYWlubGluayxcblx0Ly8gUHl0aCxcblx0Ly8gUmVkc3RvbmUsXG59XG5cbmV4cG9ydCB0eXBlIFByaWNlRmVlZFVwZGF0ZSA9IHtcblx0cHJpY2U6IG51bWJlclxuXHRkZWx0YVByaWNlPzogbnVtYmVyXG5cdGV4cG9uZW50PzogbnVtYmVyXG5cdHRpbWVzdGFtcDogbnVtYmVyXG5cdHRyYWlsOiBXaXRuZXQuSGFzaFxufVxuXG5leHBvcnQgdHlwZSBQcmljZUZlZWRVcGRhdGVDb25kaXRpb25zID0ge1xuXHRjYWxsYmFja0dhczogbnVtYmVyXG5cdGNvbXB1dGVFTUE6IGJvb2xlYW5cblx0Y29vbGRvd25TZWNzOiBudW1iZXJcblx0aGVhcnRiZWF0U2VjczogbnVtYmVyXG5cdG1heERldmlhdGlvblBlcmNlbnRhZ2U6IG51bWJlclxuXHRtaW5XaXRuZXNzZXM6IG51bWJlclxufVxuXG5leHBvcnQgdHlwZSBSYW5kb21pemVTdGF0dXMgPVxuXHR8IFwiVm9pZFwiXG5cdHwgXCJBd2FpdGluZ1wiXG5cdHwgXCJGaW5hbGl6aW5nXCJcblx0fCBcIlJlYWR5XCJcblx0fCBcIkVycm9yXCJcbmV4cG9ydCB7IFRyYW5zYWN0aW9uUmVjZWlwdCB9IGZyb20gXCJldGhlcnNcIlxuXG5leHBvcnQgdHlwZSBXaXRPcmFjbGVBcnRpZmFjdCA9IHtcblx0YWRkcmVzczogV2l0bmV0LkhleFN0cmluZ1xuXHRhYmk6IGFueVxuXHRjbGFzczogc3RyaW5nXG5cdGdpdEhhc2g/OiBzdHJpbmdcblx0aW50ZXJmYWNlSWQ6IFdpdG5ldC5IZXhTdHJpbmdcblx0aXNVcGdyYWRhYmxlOiBib29sZWFuXG5cdHNlbVZlcj86IHN0cmluZ1xuXHR2ZXJzaW9uPzogc3RyaW5nXG5cdHdyYXBwZXI/OiBDb250cmFjdFdyYXBwZXJcbn1cblxuZXhwb3J0IHR5cGUgV2l0T3JhY2xlUXVlcnkgPSB7XG5cdGNoZWNrcG9pbnQ6IGJpZ2ludFxuXHRoYXNoOiBXaXRuZXQuSGFzaFxuXHRwYXJhbXM6IFdpdE9yYWNsZVF1ZXJ5UGFyYW1zXG5cdHJlcXVlc3Q6IFdpdE9yYWNsZVF1ZXJ5UmVxdWVzdFxuXHRyZXNwb25zZT86IFdpdE9yYWNsZVF1ZXJ5UmVzcG9uc2Vcbn1cblxuZXhwb3J0IHR5cGUgV2l0T3JhY2xlUXVlcnlQYXJhbXMgPSB7XG5cdC8qKlxuXHQgKiBNYXhpbXVtIGV4cGVjdGVkIHNpemUgb2YgdGhlIENCT1ItZW5jb2RlZCBxdWVyeSByZXN1bHQsIG9uY2Ugc29sdmVkIGJ5IHRoZSBXaXRuZXQgYmxvY2tjaGFpbi5cblx0ICovXG5cdHJlc3VsdE1heFNpemU/OiBudW1iZXJcblx0LyoqXG5cdCAqIE1pbmludW0gcmV3YXJkIGluICRuYW5vV0lUIGZvciB2ZXJ5IHZhbGlkYXRvciB0aGF0IHBvc2l0aXZlbHkgY29udHJpYnV0ZXMgdG8gZ2V0IHRoZSBXaXQvT3JhY2xlXG5cdCAqIHF1ZXJ5IGF0dGVuZGVkLCBzb2x2ZWQgYW5kIHN0b3JlZCBpbnRvIHRoZSBXaXRuZXQgYmxvY2tjaGFpbi5cblx0ICovXG5cdHVuaXRhcnlSZXdhcmQ6IGJpZ2ludFxuXHQvKipcblx0ICogTWF4aW11bSBudW1iZXIgb2Ygd2l0bmVzc2luZyBub2RlcyByZXF1aXJlZCB0byBwYXJ0aWNpcGF0ZSBpbiBzb2x2aW5nIHRoZSBvcmFjbGUgcXVlcnkuXG5cdCAqL1xuXHR3aXRuZXNzZXM6IG51bWJlclxufVxuXG5leHBvcnQgdHlwZSBXaXRPcmFjbGVRdWVyeVJlcXVlc3QgPSB7XG5cdGNhbGxiYWNrR2FzPzogbnVtYmVyXG5cdHJhZG9uSGFzaDogV2l0bmV0Lkhhc2hcblx0cmVxdWVzdGVyOiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgV2l0T3JhY2xlUXVlcnlSZXNwb25zZSA9IHtcblx0ZGlzcHV0ZXI/OiBzdHJpbmdcblx0cmVwb3J0ZXI/OiBzdHJpbmdcblx0cmVzdWx0VGltZXN0YW1wPzogbnVtYmVyXG5cdHJlc3VsdERyVHhIYXNoOiBXaXRuZXQuSGFzaFxuXHRyZXN1bHRDYm9yQnl0ZXM6IFdpdG5ldC5IZXhTdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgV2l0T3JhY2xlUXVlcnlTdGF0dXMgPVxuXHR8IFwiVm9pZFwiXG5cdHwgXCJQb3N0ZWRcIlxuXHR8IFwiUmVwb3J0ZWRcIlxuXHR8IFwiRmluYWxpemVkXCJcblx0fCBcIkRlbGF5ZWRcIlxuXHR8IFwiRXhwaXJlZFwiXG5cdHwgXCJEaXNwdXRlZFwiXG5leHBvcnQgdHlwZSBXaXRPcmFjbGVSZXN1bHREYXRhVHlwZXMgPVxuXHR8IFwiYW55XCJcblx0fCBcImFycmF5XCJcblx0fCBcImJvb2xlYW5cIlxuXHR8IFwiYnl0ZXNcIlxuXHR8IFwiZmxvYXRcIlxuXHR8IFwiaW50ZWdlclwiXG5cdHwgXCJtYXBcIlxuXHR8IFwic3RyaW5nXCJcbiJdfQ==
@@ -0,0 +1,22 @@
1
+ import { Witnet } from "@witnet/sdk";
2
+ import { type JsonRpcProvider } from "ethers";
3
+ import type { PriceFeedUpdateConditions, WitOracleArtifact, WitOracleQueryParams, WitOracleQueryStatus } from "./types.js";
4
+ export * from "@witnet/sdk/utils";
5
+ export declare function getNetworkTagsFromString(network: string): any[];
6
+ export declare function fetchWitOracleFramework(provider: JsonRpcProvider): Promise<{
7
+ [key: string]: WitOracleArtifact;
8
+ }>;
9
+ export declare function getEvmNetworkAddresses(network: string): any;
10
+ export declare function getEvmNetworkByChainId(chainId: number): string | undefined;
11
+ export declare function getEvmNetworkSymbol(network: string): string;
12
+ export declare function getEvmNetworks(): string[];
13
+ export declare function isEvmNetworkMainnet(network: string): boolean;
14
+ export declare function isEvmNetworkSupported(network: string): boolean;
15
+ export declare function abiDecodeQueryStatus(status: bigint): WitOracleQueryStatus;
16
+ export declare function abiEncodeDataPushReport(report: Witnet.DataPushReport): any;
17
+ export declare function abiEncodeDataPushReportMessage(report: Witnet.DataPushReport): Witnet.HexString;
18
+ export declare function abiEncodeDataPushReportDigest(report: Witnet.DataPushReport): Witnet.HexString;
19
+ export declare function abiEncodePriceFeedUpdateConditions(conditions: PriceFeedUpdateConditions): any;
20
+ export declare function abiEncodeWitOracleQueryParams(queryParams: WitOracleQueryParams): any;
21
+ export declare function abiEncodeRadonAsset(asset: any): any;
22
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGpC,OAAO,EAGN,KAAK,eAAe,EAEpB,MAAM,QAAQ,CAAA;AAKf,OAAO,KAAK,EACX,yBAAyB,EACzB,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,MAAM,YAAY,CAAA;AAUnB,cAAc,mBAAmB,CAAA;AAEjC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,SAEvD;AAED,wBAAsB,uBAAuB,CAC5C,QAAQ,EAAE,eAAe,GACvB,OAAO,CAAC;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,CAAA;CAAE,CAAC,CA6J/C;AAgBD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG,CAE3D;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAO1E;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAM3D;AAED,wBAAgB,cAAc,IAAI,MAAM,EAAE,CAEzC;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAK5D;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,oBAAoB,CAiBzE;AA4CD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,CAAC,cAAc,GAAG,GAAG,CAS1E;AAED,wBAAgB,8BAA8B,CAC7C,MAAM,EAAE,MAAM,CAAC,cAAc,GAC3B,MAAM,CAAC,SAAS,CAKlB;AAED,wBAAgB,6BAA6B,CAC5C,MAAM,EAAE,MAAM,CAAC,cAAc,GAC3B,MAAM,CAAC,SAAS,CAKlB;AAED,wBAAgB,kCAAkC,CACjD,UAAU,EAAE,yBAAyB,GACnC,GAAG,CASL;AAED,wBAAgB,6BAA6B,CAC5C,WAAW,EAAE,oBAAoB,GAC/B,GAAG,CAML;AACD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,GAAG,GAAG,GAAG,CAwBnD"}
@@ -0,0 +1,267 @@
1
+ import { Witnet } from "@witnet/sdk";
2
+ import * as cbor from "cbor";
3
+ import { AbiCoder, Contract, solidityPackedKeccak256, } from "ethers";
4
+ import { default as merge } from "lodash.merge";
5
+ import { default as helpers } from "../bin/helpers.cjs";
6
+ import { ABIs } from "../index.js";
7
+ import { WitOracle, WitOracleRadonRegistry, WitOracleRadonRequestFactory, WitPriceFeeds, WitPriceFeedsLegacy, WitRandomness, } from "./wrappers.js";
8
+ export * from "@witnet/sdk/utils";
9
+ export function getNetworkTagsFromString(network) {
10
+ return helpers.getNetworkTagsFromString(network);
11
+ }
12
+ export async function fetchWitOracleFramework(provider) {
13
+ return provider.getNetwork().then(async (value) => {
14
+ const network = getEvmNetworkByChainId(Number(value.chainId));
15
+ if (network) {
16
+ const exclusions = [
17
+ "WitOracleRadonRequestFactoryModals",
18
+ "WitOracleRadonRequestFactoryTemplates",
19
+ ];
20
+ const targets = [
21
+ "WitOracle",
22
+ "WitOracleRadonRegistry",
23
+ "WitOracleRadonRequestFactory",
24
+ "WitPriceFeeds",
25
+ "WitPriceFeedsLegacy",
26
+ "WitRandomnessV2",
27
+ "WitRandomnessV3",
28
+ ];
29
+ const contracts = Object.fromEntries(Object.entries(helpers.flattenObject(helpers.getNetworkArtifacts(network))).map(([key, value]) => [key.split(".").pop(), value]));
30
+ let { addresses } = helpers.readWitnetJsonFiles("addresses");
31
+ addresses = merge(helpers.getNetworkAddresses(network), addresses[network]);
32
+ return await Promise.all(Object.entries(helpers.flattenObject(addresses))
33
+ .map(([key, address]) => [key.split(".").pop(), address])
34
+ .sort(([a], [b]) => a.localeCompare(b))
35
+ .filter(([key]) => {
36
+ const base = _findBase(contracts, key);
37
+ return (targets.includes(key) &&
38
+ !exclusions.includes(base) &&
39
+ (ABIs[key] || ABIs[base]));
40
+ })
41
+ .map(async ([key, address]) => {
42
+ const bytecode = await provider
43
+ .getCode(address)
44
+ .catch((err) => console.error(`Warning: ${key}: ${err}`));
45
+ if (bytecode?.length && bytecode.length > 2) {
46
+ let impl, isUpgradable = false, interfaceId, version;
47
+ const appliance = new Contract(address, ABIs.WitAppliance, provider);
48
+ try {
49
+ impl = await appliance.class.staticCall();
50
+ }
51
+ catch {
52
+ impl = key;
53
+ }
54
+ try {
55
+ interfaceId = await appliance.specs.staticCall();
56
+ }
57
+ catch { }
58
+ const upgradable = new Contract(address, ABIs.WitnetUpgradableBase, provider);
59
+ try {
60
+ isUpgradable = await upgradable.isUpgradable.staticCall();
61
+ }
62
+ catch {
63
+ isUpgradable = false;
64
+ }
65
+ try {
66
+ version = await upgradable.version.staticCall();
67
+ }
68
+ catch { }
69
+ return [
70
+ key,
71
+ {
72
+ abi: ABIs[key] || ABIs[impl],
73
+ address,
74
+ class: impl,
75
+ gitHash: _versionLastCommitOf(version),
76
+ interfaceId,
77
+ isUpgradable,
78
+ semVer: _versionTagOf(version),
79
+ version,
80
+ },
81
+ ];
82
+ }
83
+ else {
84
+ return [key, undefined];
85
+ }
86
+ }))
87
+ .then((artifacts) => artifacts.filter(([, artifact]) => artifact !== undefined))
88
+ .then(async (artifacts) => {
89
+ if (Object.fromEntries(artifacts).WitOracle) {
90
+ const signer = await provider.getSigner();
91
+ const witOracle = new WitOracle(signer, network);
92
+ let witOracleRadonRegistry;
93
+ if (Object.fromEntries(artifacts).WitOraclRadonRegistry) {
94
+ witOracleRadonRegistry = new WitOracleRadonRegistry(signer, network);
95
+ }
96
+ artifacts = await Promise.all(artifacts.map(async ([key, artifact]) => {
97
+ let wrapper;
98
+ switch (key) {
99
+ case "WitOracle":
100
+ wrapper = witOracle;
101
+ break;
102
+ case "WitOracleRadonRegistry":
103
+ wrapper = witOracleRadonRegistry;
104
+ break;
105
+ case "WitOracleRadonRequestFactory":
106
+ if (witOracleRadonRegistry) {
107
+ wrapper = await WitOracleRadonRequestFactory.deployed(witOracle, witOracleRadonRegistry);
108
+ }
109
+ break;
110
+ case "WitPriceFeeds":
111
+ wrapper = await WitPriceFeeds.at(witOracle, artifact.address);
112
+ break;
113
+ case "WitPriceFeedsLegacy":
114
+ wrapper = await WitPriceFeedsLegacy.at(witOracle, artifact.address);
115
+ break;
116
+ default:
117
+ if (key.startsWith("WitRandomness") ||
118
+ key.startsWith("WitnetRandomness")) {
119
+ wrapper = await WitRandomness.at(witOracle, artifact.address);
120
+ }
121
+ }
122
+ return [key, { ...artifact, wrapper }];
123
+ }));
124
+ }
125
+ return Object.fromEntries(artifacts);
126
+ });
127
+ }
128
+ else {
129
+ return {};
130
+ }
131
+ });
132
+ }
133
+ function _findBase(obj, value) {
134
+ return Object.entries(obj).find(([, impl]) => impl === value)?.[0] || "";
135
+ }
136
+ function _versionTagOf(version) {
137
+ return version?.slice(0, 5);
138
+ }
139
+ function _versionLastCommitOf(version) {
140
+ if (version) {
141
+ return version?.length >= 21 ? version?.slice(-15, -8) : "";
142
+ }
143
+ else {
144
+ return undefined;
145
+ }
146
+ }
147
+ export function getEvmNetworkAddresses(network) {
148
+ return helpers.getNetworkAddresses(network);
149
+ }
150
+ export function getEvmNetworkByChainId(chainId) {
151
+ const found = Object.entries(helpers.supportedNetworks()).find(([, config]) => config?.network_id.toString() === chainId.toString());
152
+ if (found)
153
+ return found[0];
154
+ else
155
+ return undefined;
156
+ }
157
+ export function getEvmNetworkSymbol(network) {
158
+ const found = Object.entries(helpers.supportedNetworks()).find(([key]) => key.toLowerCase() === network.toLowerCase());
159
+ if (found)
160
+ return found[1]?.symbol;
161
+ else
162
+ return "ETH";
163
+ }
164
+ export function getEvmNetworks() {
165
+ return Object.keys(helpers.supportedNetworks());
166
+ }
167
+ export function isEvmNetworkMainnet(network) {
168
+ const found = Object.entries(helpers.supportedNetworks()).find(([key]) => key === network.toLowerCase());
169
+ return found?.[1].mainnet;
170
+ }
171
+ export function isEvmNetworkSupported(network) {
172
+ return helpers.supportsNetwork(network);
173
+ }
174
+ export function abiDecodeQueryStatus(status) {
175
+ switch (status) {
176
+ case 1n:
177
+ return "Posted";
178
+ case 2n:
179
+ return "Reported";
180
+ case 3n:
181
+ return "Finalized";
182
+ case 4n:
183
+ return "Delayed";
184
+ case 5n:
185
+ return "Expired";
186
+ case 6n:
187
+ return "Disputed";
188
+ default:
189
+ return "Void";
190
+ }
191
+ }
192
+ function _intoDataPushReportSolidity(report) {
193
+ return {
194
+ drTxHash: `0x${report.hash}`,
195
+ queryParams: {
196
+ witnesses: report.query?.witnesses || 0,
197
+ unitaryReward: report.query?.unitary_reward || 0n,
198
+ resultMaxSize: 0,
199
+ },
200
+ queryRadHash: `0x${report.query?.rad_hash}`,
201
+ resultCborBytes: `0x${report.result?.cbor_bytes}`,
202
+ resultTimestamp: report.result?.timestamp || 0,
203
+ };
204
+ }
205
+ export function abiEncodeDataPushReport(report) {
206
+ const internal = _intoDataPushReportSolidity(report);
207
+ return [
208
+ internal.drTxHash,
209
+ internal.queryRadHash,
210
+ abiEncodeWitOracleQueryParams(internal.queryParams),
211
+ internal.resultTimestamp,
212
+ internal.resultCborBytes,
213
+ ];
214
+ }
215
+ export function abiEncodeDataPushReportMessage(report) {
216
+ return AbiCoder.defaultAbiCoder().encode(["bytes32", "bytes32", "(uint16, uint16, uint64)", "uint64", "bytes"], abiEncodeDataPushReport(report));
217
+ }
218
+ export function abiEncodeDataPushReportDigest(report) {
219
+ return solidityPackedKeccak256(["bytes"], [abiEncodeDataPushReportMessage(report)]);
220
+ }
221
+ export function abiEncodePriceFeedUpdateConditions(conditions) {
222
+ return [
223
+ conditions.callbackGas,
224
+ conditions.computeEMA,
225
+ conditions.cooldownSecs,
226
+ conditions.heartbeatSecs,
227
+ Math.floor(conditions.maxDeviationPercentage * 10),
228
+ conditions.minWitnesses,
229
+ ];
230
+ }
231
+ export function abiEncodeWitOracleQueryParams(queryParams) {
232
+ return [
233
+ queryParams?.resultMaxSize || 0,
234
+ queryParams?.witnesses || 0,
235
+ queryParams?.unitaryReward || 0,
236
+ ];
237
+ }
238
+ export function abiEncodeRadonAsset(asset) {
239
+ if (asset instanceof Witnet.Radon.RadonRetrieval) {
240
+ return [
241
+ asset.method,
242
+ asset.url || "",
243
+ asset.body || "",
244
+ asset?.headers ? Object.entries(asset.headers) : [],
245
+ abiEncodeRadonAsset(asset.script) || "0x80",
246
+ ];
247
+ }
248
+ else if (asset instanceof Witnet.Radon.types.RadonScript) {
249
+ return asset.toBytecode();
250
+ }
251
+ else if (asset instanceof Witnet.Radon.reducers.Class) {
252
+ return [
253
+ asset.opcode,
254
+ asset.filters?.map((filter) => abiEncodeRadonAsset(filter)) || [],
255
+ ];
256
+ }
257
+ else if (asset instanceof Witnet.Radon.filters.Class) {
258
+ return [
259
+ asset.opcode,
260
+ `0x${asset.args ? cbor.encode(asset.args).toString("hex") : ""}`,
261
+ ];
262
+ }
263
+ else {
264
+ throw new TypeError(`Not a Radon asset: ${asset}`);
265
+ }
266
+ }
267
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFFcEMsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUE7QUFDNUIsT0FBTyxFQUNOLFFBQVEsRUFDUixRQUFRLEVBRVIsdUJBQXVCLEdBQ3ZCLE1BQU0sUUFBUSxDQUFBO0FBQ2YsT0FBTyxFQUFFLE9BQU8sSUFBSSxLQUFLLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDL0MsT0FBTyxFQUFFLE9BQU8sSUFBSSxPQUFPLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUN2RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBUWxDLE9BQU8sRUFDTixTQUFTLEVBQ1Qsc0JBQXNCLEVBQ3RCLDRCQUE0QixFQUM1QixhQUFhLEVBQ2IsbUJBQW1CLEVBQ25CLGFBQWEsR0FDYixNQUFNLGVBQWUsQ0FBQTtBQUV0QixjQUFjLG1CQUFtQixDQUFBO0FBRWpDLE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxPQUFlO0lBQ3ZELE9BQU8sT0FBTyxDQUFDLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxDQUFBO0FBQ2pELENBQUM7QUFFRCxNQUFNLENBQUMsS0FBSyxVQUFVLHVCQUF1QixDQUM1QyxRQUF5QjtJQUV6QixPQUFPLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQ2pELE1BQU0sT0FBTyxHQUFHLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtRQUM3RCxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ2IsTUFBTSxVQUFVLEdBQUc7Z0JBQ2xCLG9DQUFvQztnQkFDcEMsdUNBQXVDO2FBQ3ZDLENBQUE7WUFDRCxNQUFNLE9BQU8sR0FB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LENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN4RCxPQUFPO1lBQ04sS0FBSyxDQUFDLE1BQU07WUFDWixLQUFLLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1NBQ2hFLENBQUE7SUFDRixDQUFDO1NBQU0sQ0FBQztRQUNQLE1BQU0sSUFBSSxTQUFTLENBQUMsc0JBQXNCLEtBQUssRUFBRSxDQUFDLENBQUE7SUFDbkQsQ0FBQztBQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBXaXRuZXQgfSBmcm9tIFwiQHdpdG5ldC9zZGtcIlxuXG5pbXBvcnQgKiBhcyBjYm9yIGZyb20gXCJjYm9yXCJcbmltcG9ydCB7XG5cdEFiaUNvZGVyLFxuXHRDb250cmFjdCxcblx0dHlwZSBKc29uUnBjUHJvdmlkZXIsXG5cdHNvbGlkaXR5UGFja2VkS2VjY2FrMjU2LFxufSBmcm9tIFwiZXRoZXJzXCJcbmltcG9ydCB7IGRlZmF1bHQgYXMgbWVyZ2UgfSBmcm9tIFwibG9kYXNoLm1lcmdlXCJcbmltcG9ydCB7IGRlZmF1bHQgYXMgaGVscGVycyB9IGZyb20gXCIuLi9iaW4vaGVscGVycy5janNcIlxuaW1wb3J0IHsgQUJJcyB9IGZyb20gXCIuLi9pbmRleC5qc1wiXG5cbmltcG9ydCB0eXBlIHtcblx0UHJpY2VGZWVkVXBkYXRlQ29uZGl0aW9ucyxcblx0V2l0T3JhY2xlQXJ0aWZhY3QsXG5cdFdpdE9yYWNsZVF1ZXJ5UGFyYW1zLFxuXHRXaXRPcmFjbGVRdWVyeVN0YXR1cyxcbn0gZnJvbSBcIi4vdHlwZXMuanNcIlxuaW1wb3J0IHtcblx0V2l0T3JhY2xlLFxuXHRXaXRPcmFjbGVSYWRvblJlZ2lzdHJ5LFxuXHRXaXRPcmFjbGVSYWRvblJlcXVlc3RGYWN0b3J5LFxuXHRXaXRQcmljZUZlZWRzLFxuXHRXaXRQcmljZUZlZWRzTGVnYWN5LFxuXHRXaXRSYW5kb21uZXNzLFxufSBmcm9tIFwiLi93cmFwcGVycy5qc1wiXG5cbmV4cG9ydCAqIGZyb20gXCJAd2l0bmV0L3Nkay91dGlsc1wiXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXROZXR3b3JrVGFnc0Zyb21TdHJpbmcobmV0d29yazogc3RyaW5nKSB7XG5cdHJldHVybiBoZWxwZXJzLmdldE5ldHdvcmtUYWdzRnJvbVN0cmluZyhuZXR3b3JrKVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmV0Y2hXaXRPcmFjbGVGcmFtZXdvcmsoXG5cdHByb3ZpZGVyOiBKc29uUnBjUHJvdmlkZXIsXG4pOiBQcm9taXNlPHsgW2tleTogc3RyaW5nXTogV2l0T3JhY2xlQXJ0aWZhY3QgfT4ge1xuXHRyZXR1cm4gcHJvdmlkZXIuZ2V0TmV0d29yaygpLnRoZW4oYXN5bmMgKHZhbHVlKSA9PiB7XG5cdFx0Y29uc3QgbmV0d29yayA9IGdldEV2bU5ldHdvcmtCeUNoYWluSWQoTnVtYmVyKHZhbHVlLmNoYWluSWQpKVxuXHRcdGlmIChuZXR3b3JrKSB7XG5cdFx0XHRjb25zdCBleGNsdXNpb25zID0gW1xuXHRcdFx0XHRcIldpdE9yYWNsZVJhZG9uUmVxdWVzdEZhY3RvcnlNb2RhbHNcIixcblx0XHRcdFx0XCJXaXRPcmFjbGVSYWRvblJlcXVlc3RGYWN0b3J5VGVtcGxhdGVzXCIsXG5cdFx0XHRdXG5cdFx0XHRjb25zdCB0YXJnZXRzID0gW1xuXHRcdFx0XHRcIldpdE9yYWNsZVwiLFxuXHRcdFx0XHRcIldpdE9yYWNsZVJhZG9uUmVnaXN0cnlcIixcblx0XHRcdFx0XCJXaXRPcmFjbGVSYWRvblJlcXVlc3RGYWN0b3J5XCIsXG5cdFx0XHRcdFwiV2l0UHJpY2VGZWVkc1wiLFxuXHRcdFx0XHRcIldpdFByaWNlRmVlZHNMZWdhY3lcIixcblx0XHRcdFx0XCJXaXRSYW5kb21uZXNzVjJcIixcblx0XHRcdFx0XCJXaXRSYW5kb21uZXNzVjNcIixcblx0XHRcdF1cblx0XHRcdGNvbnN0IGNvbnRyYWN0cyA9IE9iamVjdC5mcm9tRW50cmllcyhcblx0XHRcdFx0T2JqZWN0LmVudHJpZXMoXG5cdFx0XHRcdFx0aGVscGVycy5mbGF0dGVuT2JqZWN0KGhlbHBlcnMuZ2V0TmV0d29ya0FydGlmYWN0cyhuZXR3b3JrKSksXG5cdFx0XHRcdCkubWFwKChba2V5LCB2YWx1ZV0pID0+IFtrZXkuc3BsaXQoXCIuXCIpLnBvcCgpLCB2YWx1ZV0pLFxuXHRcdFx0KVxuXHRcdFx0bGV0IHsgYWRkcmVzc2VzIH0gPSBoZWxwZXJzLnJlYWRXaXRuZXRKc29uRmlsZXMoXCJhZGRyZXNzZXNcIilcblx0XHRcdGFkZHJlc3NlcyA9IG1lcmdlKFxuXHRcdFx0XHRoZWxwZXJzLmdldE5ldHdvcmtBZGRyZXNzZXMobmV0d29yayksXG5cdFx0XHRcdGFkZHJlc3Nlc1tuZXR3b3JrXSxcblx0XHRcdClcblx0XHRcdHJldHVybiBhd2FpdCBQcm9taXNlLmFsbChcblx0XHRcdFx0T2JqZWN0LmVudHJpZXMoaGVscGVycy5mbGF0dGVuT2JqZWN0KGFkZHJlc3NlcykpXG5cdFx0XHRcdFx0Lm1hcCgoW2tleSwgYWRkcmVzc10pID0+IFtrZXkuc3BsaXQoXCIuXCIpLnBvcCgpLCBhZGRyZXNzXSlcblx0XHRcdFx0XHQuc29ydCgoW2FdLCBbYl0pID0+IChhIGFzIHN0cmluZykubG9jYWxlQ29tcGFyZShiKSlcblx0XHRcdFx0XHQuZmlsdGVyKChba2V5XSkgPT4ge1xuXHRcdFx0XHRcdFx0Y29uc3QgYmFzZSA9IF9maW5kQmFzZShjb250cmFjdHMsIGtleSlcblx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdHRhcmdldHMuaW5jbHVkZXMoa2V5KSAmJlxuXHRcdFx0XHRcdFx0XHQhZXhjbHVzaW9ucy5pbmNsdWRlcyhiYXNlKSAmJlxuXHRcdFx0XHRcdFx0XHQoQUJJc1trZXldIHx8IEFCSXNbYmFzZV0pXG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0XHQubWFwKGFzeW5jIChba2V5LCBhZGRyZXNzXSkgPT4ge1xuXHRcdFx0XHRcdFx0Y29uc3QgYnl0ZWNvZGUgPSBhd2FpdCBwcm92aWRlclxuXHRcdFx0XHRcdFx0XHQuZ2V0Q29kZShhZGRyZXNzKVxuXHRcdFx0XHRcdFx0XHQuY2F0Y2goKGVycikgPT4gY29uc29sZS5lcnJvcihgV2FybmluZzogJHtrZXl9OiAke2Vycn1gKSlcblx0XHRcdFx0XHRcdGlmIChieXRlY29kZT8ubGVuZ3RoICYmIGJ5dGVjb2RlLmxlbmd0aCA+IDIpIHtcblx0XHRcdFx0XHRcdFx0bGV0IGltcGwsXG5cdFx0XHRcdFx0XHRcdFx0aXNVcGdyYWRhYmxlID0gZmFsc2UsXG5cdFx0XHRcdFx0XHRcdFx0aW50ZXJmYWNlSWQsXG5cdFx0XHRcdFx0XHRcdFx0dmVyc2lvblxuXHRcdFx0XHRcdFx0XHRjb25zdCBhcHBsaWFuY2UgPSBuZXcgQ29udHJhY3QoXG5cdFx0XHRcdFx0XHRcdFx0YWRkcmVzcyxcblx0XHRcdFx0XHRcdFx0XHRBQklzLldpdEFwcGxpYW5jZSxcblx0XHRcdFx0XHRcdFx0XHRwcm92aWRlcixcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRcdGltcGwgPSBhd2FpdCBhcHBsaWFuY2UuY2xhc3Muc3RhdGljQ2FsbCgpXG5cdFx0XHRcdFx0XHRcdH0gY2F0Y2gge1xuXHRcdFx0XHRcdFx0XHRcdGltcGwgPSBrZXlcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRcdGludGVyZmFjZUlkID0gYXdhaXQgYXBwbGlhbmNlLnNwZWNzLnN0YXRpY0NhbGwoKVxuXHRcdFx0XHRcdFx0XHR9IGNhdGNoIHt9XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHVwZ3JhZGFibGUgPSBuZXcgQ29udHJhY3QoXG5cdFx0XHRcdFx0XHRcdFx0YWRkcmVzcyxcblx0XHRcdFx0XHRcdFx0XHRBQklzLldpdG5ldFVwZ3JhZGFibGVCYXNlLFxuXHRcdFx0XHRcdFx0XHRcdHByb3ZpZGVyLFxuXHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdFx0aXNVcGdyYWRhYmxlID0gYXdhaXQgdXBncmFkYWJsZS5pc1VwZ3JhZGFibGUuc3RhdGljQ2FsbCgpXG5cdFx0XHRcdFx0XHRcdH0gY2F0Y2gge1xuXHRcdFx0XHRcdFx0XHRcdGlzVXBncmFkYWJsZSA9IGZhbHNlXG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0XHR2ZXJzaW9uID0gYXdhaXQgdXBncmFkYWJsZS52ZXJzaW9uLnN0YXRpY0NhbGwoKVxuXHRcdFx0XHRcdFx0XHR9IGNhdGNoIHt9XG5cdFx0XHRcdFx0XHRcdHJldHVybiBbXG5cdFx0XHRcdFx0XHRcdFx0a2V5LFxuXHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdGFiaTogQUJJc1trZXldIHx8IEFCSXNbaW1wbF0sXG5cdFx0XHRcdFx0XHRcdFx0XHRhZGRyZXNzLFxuXHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M6IGltcGwsXG5cdFx0XHRcdFx0XHRcdFx0XHRnaXRIYXNoOiBfdmVyc2lvbkxhc3RDb21taXRPZih2ZXJzaW9uKSxcblx0XHRcdFx0XHRcdFx0XHRcdGludGVyZmFjZUlkLFxuXHRcdFx0XHRcdFx0XHRcdFx0aXNVcGdyYWRhYmxlLFxuXHRcdFx0XHRcdFx0XHRcdFx0c2VtVmVyOiBfdmVyc2lvblRhZ09mKHZlcnNpb24pLFxuXHRcdFx0XHRcdFx0XHRcdFx0dmVyc2lvbixcblx0XHRcdFx0XHRcdFx0XHR9IGFzIFdpdE9yYWNsZUFydGlmYWN0LFxuXHRcdFx0XHRcdFx0XHRdXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gW2tleSwgdW5kZWZpbmVkXVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pLFxuXHRcdFx0KVxuXHRcdFx0XHQudGhlbigoYXJ0aWZhY3RzKSA9PlxuXHRcdFx0XHRcdGFydGlmYWN0cy5maWx0ZXIoKFssIGFydGlmYWN0XSkgPT4gYXJ0aWZhY3QgIT09IHVuZGVmaW5lZCksXG5cdFx0XHRcdClcblx0XHRcdFx0LnRoZW4oYXN5bmMgKGFydGlmYWN0cykgPT4ge1xuXHRcdFx0XHRcdGlmIChPYmplY3QuZnJvbUVudHJpZXMoYXJ0aWZhY3RzKS5XaXRPcmFjbGUpIHtcblx0XHRcdFx0XHRcdGNvbnN0IHNpZ25lciA9IGF3YWl0IHByb3ZpZGVyLmdldFNpZ25lcigpXG5cdFx0XHRcdFx0XHRjb25zdCB3aXRPcmFjbGUgPSBuZXcgV2l0T3JhY2xlKHNpZ25lciwgbmV0d29yaylcblx0XHRcdFx0XHRcdGxldCB3aXRPcmFjbGVSYWRvblJlZ2lzdHJ5OiBXaXRPcmFjbGVSYWRvblJlZ2lzdHJ5XG5cdFx0XHRcdFx0XHRpZiAoT2JqZWN0LmZyb21FbnRyaWVzKGFydGlmYWN0cykuV2l0T3JhY2xSYWRvblJlZ2lzdHJ5KSB7XG5cdFx0XHRcdFx0XHRcdHdpdE9yYWNsZVJhZG9uUmVnaXN0cnkgPSBuZXcgV2l0T3JhY2xlUmFkb25SZWdpc3RyeShcblx0XHRcdFx0XHRcdFx0XHRzaWduZXIsXG5cdFx0XHRcdFx0XHRcdFx0bmV0d29yayxcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0YXJ0aWZhY3RzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG5cdFx0XHRcdFx0XHRcdGFydGlmYWN0cy5tYXAoYXN5bmMgKFtrZXksIGFydGlmYWN0XSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdGxldCB3cmFwcGVyXG5cdFx0XHRcdFx0XHRcdFx0c3dpdGNoIChrZXkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgXCJXaXRPcmFjbGVcIjpcblx0XHRcdFx0XHRcdFx0XHRcdFx0d3JhcHBlciA9IHdpdE9yYWNsZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRicmVha1xuXHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSBcIldpdE9yYWNsZVJhZG9uUmVnaXN0cnlcIjpcblx0XHRcdFx0XHRcdFx0XHRcdFx0d3JhcHBlciA9IHdpdE9yYWNsZVJhZG9uUmVnaXN0cnlcblx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgXCJXaXRPcmFjbGVSYWRvblJlcXVlc3RGYWN0b3J5XCI6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICh3aXRPcmFjbGVSYWRvblJlZ2lzdHJ5KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0d3JhcHBlciA9IGF3YWl0IFdpdE9yYWNsZVJhZG9uUmVxdWVzdEZhY3RvcnkuZGVwbG95ZWQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR3aXRPcmFjbGUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR3aXRPcmFjbGVSYWRvblJlZ2lzdHJ5LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRicmVha1xuXHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSBcIldpdFByaWNlRmVlZHNcIjpcblx0XHRcdFx0XHRcdFx0XHRcdFx0d3JhcHBlciA9IGF3YWl0IFdpdFByaWNlRmVlZHMuYXQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0d2l0T3JhY2xlLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFydGlmYWN0LmFkZHJlc3MsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgXCJXaXRQcmljZUZlZWRzTGVnYWN5XCI6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHdyYXBwZXIgPSBhd2FpdCBXaXRQcmljZUZlZWRzTGVnYWN5LmF0KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHdpdE9yYWNsZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhcnRpZmFjdC5hZGRyZXNzLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrXG5cdFx0XHRcdFx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0a2V5LnN0YXJ0c1dpdGgoXCJXaXRSYW5kb21uZXNzXCIpIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0a2V5LnN0YXJ0c1dpdGgoXCJXaXRuZXRSYW5kb21uZXNzXCIpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHdyYXBwZXIgPSBhd2FpdCBXaXRSYW5kb21uZXNzLmF0KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0d2l0T3JhY2xlLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXJ0aWZhY3QuYWRkcmVzcyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIFtrZXksIHsgLi4uYXJ0aWZhY3QsIHdyYXBwZXIgfSBhcyBXaXRPcmFjbGVBcnRpZmFjdF1cblx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoYXJ0aWZhY3RzKVxuXHRcdFx0XHR9KVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4ge31cblx0XHR9XG5cdH0pXG59XG5cbmZ1bmN0aW9uIF9maW5kQmFzZShvYmo6IHsgW2s6IHN0cmluZ106IGFueSB9LCB2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcblx0cmV0dXJuIE9iamVjdC5lbnRyaWVzKG9iaikuZmluZCgoWywgaW1wbF0pID0+IGltcGwgPT09IHZhbHVlKT8uWzBdIHx8IFwiXCJcbn1cbmZ1bmN0aW9uIF92ZXJzaW9uVGFnT2YodmVyc2lvbj86IHN0cmluZykge1xuXHRyZXR1cm4gdmVyc2lvbj8uc2xpY2UoMCwgNSlcbn1cbmZ1bmN0aW9uIF92ZXJzaW9uTGFzdENvbW1pdE9mKHZlcnNpb24/OiBzdHJpbmcpIHtcblx0aWYgKHZlcnNpb24pIHtcblx0XHRyZXR1cm4gdmVyc2lvbj8ubGVuZ3RoID49IDIxID8gdmVyc2lvbj8uc2xpY2UoLTE1LCAtOCkgOiBcIlwiXG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIHVuZGVmaW5lZFxuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFdm1OZXR3b3JrQWRkcmVzc2VzKG5ldHdvcms6IHN0cmluZyk6IGFueSB7XG5cdHJldHVybiBoZWxwZXJzLmdldE5ldHdvcmtBZGRyZXNzZXMobmV0d29yaylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEV2bU5ldHdvcmtCeUNoYWluSWQoY2hhaW5JZDogbnVtYmVyKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0Y29uc3QgZm91bmQgPSBPYmplY3QuZW50cmllcyhoZWxwZXJzLnN1cHBvcnRlZE5ldHdvcmtzKCkpLmZpbmQoXG5cdFx0KFssIGNvbmZpZ106IFtzdHJpbmcsIGFueV0pID0+XG5cdFx0XHRjb25maWc/Lm5ldHdvcmtfaWQudG9TdHJpbmcoKSA9PT0gY2hhaW5JZC50b1N0cmluZygpLFxuXHQpXG5cdGlmIChmb3VuZCkgcmV0dXJuIGZvdW5kWzBdXG5cdGVsc2UgcmV0dXJuIHVuZGVmaW5lZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RXZtTmV0d29ya1N5bWJvbChuZXR3b3JrOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRjb25zdCBmb3VuZCA9IE9iamVjdC5lbnRyaWVzKGhlbHBlcnMuc3VwcG9ydGVkTmV0d29ya3MoKSkuZmluZChcblx0XHQoW2tleV06IFtzdHJpbmcsIGFueV0pID0+IGtleS50b0xvd2VyQ2FzZSgpID09PSBuZXR3b3JrLnRvTG93ZXJDYXNlKCksXG5cdClcblx0aWYgKGZvdW5kKSByZXR1cm4gKGZvdW5kWzFdIGFzIGFueSk/LnN5bWJvbFxuXHRlbHNlIHJldHVybiBcIkVUSFwiXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFdm1OZXR3b3JrcygpOiBzdHJpbmdbXSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhoZWxwZXJzLnN1cHBvcnRlZE5ldHdvcmtzKCkpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0V2bU5ldHdvcmtNYWlubmV0KG5ldHdvcms6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRjb25zdCBmb3VuZCA9IE9iamVjdC5lbnRyaWVzKGhlbHBlcnMuc3VwcG9ydGVkTmV0d29ya3MoKSkuZmluZChcblx0XHQoW2tleV0pID0+IGtleSA9PT0gbmV0d29yay50b0xvd2VyQ2FzZSgpLFxuXHQpXG5cdHJldHVybiAoZm91bmQgYXMgYW55KT8uWzFdLm1haW5uZXRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRXZtTmV0d29ya1N1cHBvcnRlZChuZXR3b3JrOiBzdHJpbmcpOiBib29sZWFuIHtcblx0cmV0dXJuIGhlbHBlcnMuc3VwcG9ydHNOZXR3b3JrKG5ldHdvcmspXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhYmlEZWNvZGVRdWVyeVN0YXR1cyhzdGF0dXM6IGJpZ2ludCk6IFdpdE9yYWNsZVF1ZXJ5U3RhdHVzIHtcblx0c3dpdGNoIChzdGF0dXMpIHtcblx0XHRjYXNlIDFuOlxuXHRcdFx0cmV0dXJuIFwiUG9zdGVkXCJcblx0XHRjYXNlIDJuOlxuXHRcdFx0cmV0dXJuIFwiUmVwb3J0ZWRcIlxuXHRcdGNhc2UgM246XG5cdFx0XHRyZXR1cm4gXCJGaW5hbGl6ZWRcIlxuXHRcdGNhc2UgNG46XG5cdFx0XHRyZXR1cm4gXCJEZWxheWVkXCJcblx0XHRjYXNlIDVuOlxuXHRcdFx0cmV0dXJuIFwiRXhwaXJlZFwiXG5cdFx0Y2FzZSA2bjpcblx0XHRcdHJldHVybiBcIkRpc3B1dGVkXCJcblx0XHRkZWZhdWx0OlxuXHRcdFx0cmV0dXJuIFwiVm9pZFwiXG5cdH1cbn1cblxuLyoqXG4gKiBDb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVzb2x1dGlvbiBvZiBzb21lIERhdGEgUmVxdWVzdCBUcmFuc2FjdGlvbiBpbiB0aGUgV2l0bmV0IGJsb2NrY2hhaW4uXG4gKi9cbnR5cGUgX0RhdGFQdXNoUmVwb3J0U29saWRpdHkgPSB7XG5cdC8qKlxuXHQgKiBVbmlxdWUgaGFzaCBvZiB0aGUgRGF0YSBSZXF1ZXN0IFRyYW5zYWN0aW9uIHRoYXQgcHJvZHVjZWQgdGhlIG91dGNvbWluZyByZXN1bHQuXG5cdCAqL1xuXHRkclR4SGFzaDogV2l0bmV0Lkhhc2hcblx0LyoqXG5cdCAqIFJBRCBoYXNoIG9mIHRoZSBSYWRvbiBSZXF1ZXN0IGJlaW5nIHNvbHZlZC5cblx0ICovXG5cdHF1ZXJ5UmFkSGFzaDogV2l0bmV0Lkhhc2hcblx0LyoqXG5cdCAqIFNMQSBwYXJhbWV0ZXJzIHJlcXVpcmVkIHRvIGJlIGZ1bGZpbGxlZCBieSB0aGUgV2l0bmV0IGJsb2NrY2hhaW4uXG5cdCAqL1xuXHRxdWVyeVBhcmFtczogV2l0T3JhY2xlUXVlcnlQYXJhbXNcblx0LyoqXG5cdCAqIFRpbWVzdGFtcCB3aGVuIHRoZSBkYXRhIHNvdXJjZXMgd2hlcmUgcXVlcmllZCBhbmQgdGhlIGNvbnRhaW5lZCByZXN1bHQgcHJvZHVjZWQuXG5cdCAqL1xuXHRyZXN1bHRUaW1lc3RhbXA6IG51bWJlclxuXHQvKipcblx0ICogQ0JPUi1lbmNvZGVkIGJ1ZmZlciBjb250YWluaW5nIHRoZSBhY3R1YWwgcmVzdWx0IGRhdGEgdG8gc29tZSBxdWVyeSBhcyBzb2x2ZWQgYnkgdGhlIFdpdG5ldCBibG9ja2NoYWluLlxuXHQgKi9cblx0cmVzdWx0Q2JvckJ5dGVzOiBXaXRuZXQuSGV4U3RyaW5nXG59XG5cbmZ1bmN0aW9uIF9pbnRvRGF0YVB1c2hSZXBvcnRTb2xpZGl0eShcblx0cmVwb3J0OiBXaXRuZXQuRGF0YVB1c2hSZXBvcnQsXG4pOiBfRGF0YVB1c2hSZXBvcnRTb2xpZGl0eSB7XG5cdHJldHVybiB7XG5cdFx0ZHJUeEhhc2g6IGAweCR7cmVwb3J0Lmhhc2h9YCxcblx0XHRxdWVyeVBhcmFtczoge1xuXHRcdFx0d2l0bmVzc2VzOiByZXBvcnQucXVlcnk/LndpdG5lc3NlcyB8fCAwLFxuXHRcdFx0dW5pdGFyeVJld2FyZDogcmVwb3J0LnF1ZXJ5Py51bml0YXJ5X3Jld2FyZCB8fCAwbixcblx0XHRcdHJlc3VsdE1heFNpemU6IDAsXG5cdFx0fSxcblx0XHRxdWVyeVJhZEhhc2g6IGAweCR7cmVwb3J0LnF1ZXJ5Py5yYWRfaGFzaH1gLFxuXHRcdHJlc3VsdENib3JCeXRlczogYDB4JHtyZXBvcnQucmVzdWx0Py5jYm9yX2J5dGVzfWAsXG5cdFx0cmVzdWx0VGltZXN0YW1wOiByZXBvcnQucmVzdWx0Py50aW1lc3RhbXAgfHwgMCxcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYWJpRW5jb2RlRGF0YVB1c2hSZXBvcnQocmVwb3J0OiBXaXRuZXQuRGF0YVB1c2hSZXBvcnQpOiBhbnkge1xuXHRjb25zdCBpbnRlcm5hbCA9IF9pbnRvRGF0YVB1c2hSZXBvcnRTb2xpZGl0eShyZXBvcnQpXG5cdHJldHVybiBbXG5cdFx0aW50ZXJuYWwuZHJUeEhhc2gsXG5cdFx0aW50ZXJuYWwucXVlcnlSYWRIYXNoLFxuXHRcdGFiaUVuY29kZVdpdE9yYWNsZVF1ZXJ5UGFyYW1zKGludGVybmFsLnF1ZXJ5UGFyYW1zKSxcblx0XHRpbnRlcm5hbC5yZXN1bHRUaW1lc3RhbXAsXG5cdFx0aW50ZXJuYWwucmVzdWx0Q2JvckJ5dGVzLFxuXHRdXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhYmlFbmNvZGVEYXRhUHVzaFJlcG9ydE1lc3NhZ2UoXG5cdHJlcG9ydDogV2l0bmV0LkRhdGFQdXNoUmVwb3J0LFxuKTogV2l0bmV0LkhleFN0cmluZyB7XG5cdHJldHVybiBBYmlDb2Rlci5kZWZhdWx0QWJpQ29kZXIoKS5lbmNvZGUoXG5cdFx0W1wiYnl0ZXMzMlwiLCBcImJ5dGVzMzJcIiwgXCIodWludDE2LCB1aW50MTYsIHVpbnQ2NClcIiwgXCJ1aW50NjRcIiwgXCJieXRlc1wiXSxcblx0XHRhYmlFbmNvZGVEYXRhUHVzaFJlcG9ydChyZXBvcnQpLFxuXHQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhYmlFbmNvZGVEYXRhUHVzaFJlcG9ydERpZ2VzdChcblx0cmVwb3J0OiBXaXRuZXQuRGF0YVB1c2hSZXBvcnQsXG4pOiBXaXRuZXQuSGV4U3RyaW5nIHtcblx0cmV0dXJuIHNvbGlkaXR5UGFja2VkS2VjY2FrMjU2KFxuXHRcdFtcImJ5dGVzXCJdLFxuXHRcdFthYmlFbmNvZGVEYXRhUHVzaFJlcG9ydE1lc3NhZ2UocmVwb3J0KV0sXG5cdClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFiaUVuY29kZVByaWNlRmVlZFVwZGF0ZUNvbmRpdGlvbnMoXG5cdGNvbmRpdGlvbnM6IFByaWNlRmVlZFVwZGF0ZUNvbmRpdGlvbnMsXG4pOiBhbnkge1xuXHRyZXR1cm4gW1xuXHRcdGNvbmRpdGlvbnMuY2FsbGJhY2tHYXMsXG5cdFx0Y29uZGl0aW9ucy5jb21wdXRlRU1BLFxuXHRcdGNvbmRpdGlvbnMuY29vbGRvd25TZWNzLFxuXHRcdGNvbmRpdGlvbnMuaGVhcnRiZWF0U2Vjcyxcblx0XHRNYXRoLmZsb29yKGNvbmRpdGlvbnMubWF4RGV2aWF0aW9uUGVyY2VudGFnZSAqIDEwKSxcblx0XHRjb25kaXRpb25zLm1pbldpdG5lc3Nlcyxcblx0XVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYWJpRW5jb2RlV2l0T3JhY2xlUXVlcnlQYXJhbXMoXG5cdHF1ZXJ5UGFyYW1zOiBXaXRPcmFjbGVRdWVyeVBhcmFtcyxcbik6IGFueSB7XG5cdHJldHVybiBbXG5cdFx0cXVlcnlQYXJhbXM/LnJlc3VsdE1heFNpemUgfHwgMCxcblx0XHRxdWVyeVBhcmFtcz8ud2l0bmVzc2VzIHx8IDAsXG5cdFx0cXVlcnlQYXJhbXM/LnVuaXRhcnlSZXdhcmQgfHwgMCxcblx0XVxufVxuZXhwb3J0IGZ1bmN0aW9uIGFiaUVuY29kZVJhZG9uQXNzZXQoYXNzZXQ6IGFueSk6IGFueSB7XG5cdGlmIChhc3NldCBpbnN0YW5jZW9mIFdpdG5ldC5SYWRvbi5SYWRvblJldHJpZXZhbCkge1xuXHRcdHJldHVybiBbXG5cdFx0XHRhc3NldC5tZXRob2QsXG5cdFx0XHRhc3NldC51cmwgfHwgXCJcIixcblx0XHRcdGFzc2V0LmJvZHkgfHwgXCJcIixcblx0XHRcdGFzc2V0Py5oZWFkZXJzID8gT2JqZWN0LmVudHJpZXMoYXNzZXQuaGVhZGVycykgOiBbXSxcblx0XHRcdGFiaUVuY29kZVJhZG9uQXNzZXQoYXNzZXQuc2NyaXB0KSB8fCBcIjB4ODBcIixcblx0XHRdXG5cdH0gZWxzZSBpZiAoYXNzZXQgaW5zdGFuY2VvZiBXaXRuZXQuUmFkb24udHlwZXMuUmFkb25TY3JpcHQpIHtcblx0XHRyZXR1cm4gYXNzZXQudG9CeXRlY29kZSgpXG5cdH0gZWxzZSBpZiAoYXNzZXQgaW5zdGFuY2VvZiBXaXRuZXQuUmFkb24ucmVkdWNlcnMuQ2xhc3MpIHtcblx0XHRyZXR1cm4gW1xuXHRcdFx0YXNzZXQub3Bjb2RlLFxuXHRcdFx0YXNzZXQuZmlsdGVycz8ubWFwKChmaWx0ZXIpID0+IGFiaUVuY29kZVJhZG9uQXNzZXQoZmlsdGVyKSkgfHwgW10sXG5cdFx0XVxuXHR9IGVsc2UgaWYgKGFzc2V0IGluc3RhbmNlb2YgV2l0bmV0LlJhZG9uLmZpbHRlcnMuQ2xhc3MpIHtcblx0XHRyZXR1cm4gW1xuXHRcdFx0YXNzZXQub3Bjb2RlLFxuXHRcdFx0YDB4JHthc3NldC5hcmdzID8gY2Jvci5lbmNvZGUoYXNzZXQuYXJncykudG9TdHJpbmcoXCJoZXhcIikgOiBcIlwifWAsXG5cdFx0XVxuXHR9IGVsc2Uge1xuXHRcdHRocm93IG5ldyBUeXBlRXJyb3IoYE5vdCBhIFJhZG9uIGFzc2V0OiAke2Fzc2V0fWApXG5cdH1cbn1cbiJdfQ==
@@ -0,0 +1,47 @@
1
+ import { type Addressable, Contract, type Interface, type InterfaceAbi, type JsonRpcApiProvider, type JsonRpcSigner } from "ethers";
2
+ export declare abstract class ContractWrapper {
3
+ constructor(signer: JsonRpcSigner, network: string, abi: Interface | InterfaceAbi, target: string | Addressable);
4
+ protected _address: string | Addressable;
5
+ protected _contract: Contract;
6
+ attach(target: string | Addressable): any;
7
+ /**
8
+ * The contract's ABI.
9
+ */
10
+ readonly abi: Interface | InterfaceAbi;
11
+ /**
12
+ * The address of the underlying Wit/Oracle Framework artifact.
13
+ */
14
+ get address(): string | Addressable;
15
+ /**
16
+ * The underlying Ethers' contract wrapper.
17
+ */
18
+ get contract(): Contract;
19
+ /**
20
+ * The EVM network currently connected to.
21
+ */
22
+ readonly network: string;
23
+ /**
24
+ * The ETH/RPC provider used of contract interactions.
25
+ */
26
+ readonly provider: JsonRpcApiProvider;
27
+ /**
28
+ * The EVM address that will sign contract interaction transactions, when required.
29
+ */
30
+ readonly signer: JsonRpcSigner;
31
+ /**
32
+ * Name of the underlying logic implementation contract.
33
+ * @returns Contract name.
34
+ */
35
+ getEvmImplClass(): Promise<string>;
36
+ /**
37
+ * Get specs identifier of the underlying logic implementation contract.
38
+ * @returns 4-byte hex string.
39
+ */
40
+ getEvmImplSpecs(): Promise<string>;
41
+ /**
42
+ * Version tag of the underlying logic implementation contract.
43
+ * @returns Version tag.
44
+ */
45
+ getEvmImplVersion(): Promise<string>;
46
+ }
47
+ //# sourceMappingURL=ContractWrapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContractWrapper.d.ts","sourceRoot":"","sources":["../../../../src/lib/wrappers/ContractWrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,KAAK,WAAW,EAChB,QAAQ,EAER,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,MAAM,QAAQ,CAAA;AAEf,8BAAsB,eAAe;gBAEnC,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,SAAS,GAAG,YAAY,EAC7B,MAAM,EAAE,MAAM,GAAG,WAAW;IAU7B,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,CAAA;IACxC,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAA;IAEtB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,GAAG;IAMhD;;OAEG;IACH,SAAgB,GAAG,EAAE,SAAS,GAAG,YAAY,CAAA;IAE7C;;OAEG;IACH,IAAW,OAAO,IAAI,MAAM,GAAG,WAAW,CAEzC;IAED;;OAEG;IACH,IAAW,QAAQ,IAAI,QAAQ,CAE9B;IAED;;OAEG;IACH,SAAgB,OAAO,EAAE,MAAM,CAAA;IAE/B;;OAEG;IACH,SAAgB,QAAQ,EAAE,kBAAkB,CAAA;IAE5C;;OAEG;IACH,SAAgB,MAAM,EAAE,aAAa,CAAA;IAErC;;;OAGG;IACU,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;IAI/C;;;OAGG;IACU,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;IAI/C;;;OAGG;IACU,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC;CAejD"}
@@ -0,0 +1,81 @@
1
+ import { AbiCoder, Contract, } from "ethers";
2
+ export class ContractWrapper {
3
+ constructor(signer, network, abi, target) {
4
+ this._address = target;
5
+ this._contract = new Contract(target, abi, signer);
6
+ this.abi = abi;
7
+ this.network = network;
8
+ this.provider = signer.provider;
9
+ this.signer = signer;
10
+ }
11
+ _address;
12
+ _contract;
13
+ attach(target) {
14
+ this._contract = new Contract(target, this.abi, this.signer);
15
+ this._address = target;
16
+ return this;
17
+ }
18
+ /**
19
+ * The contract's ABI.
20
+ */
21
+ abi;
22
+ /**
23
+ * The address of the underlying Wit/Oracle Framework artifact.
24
+ */
25
+ get address() {
26
+ return this._address;
27
+ }
28
+ /**
29
+ * The underlying Ethers' contract wrapper.
30
+ */
31
+ get contract() {
32
+ return this._contract;
33
+ }
34
+ /**
35
+ * The EVM network currently connected to.
36
+ */
37
+ network;
38
+ /**
39
+ * The ETH/RPC provider used of contract interactions.
40
+ */
41
+ provider;
42
+ /**
43
+ * The EVM address that will sign contract interaction transactions, when required.
44
+ */
45
+ signer;
46
+ /**
47
+ * Name of the underlying logic implementation contract.
48
+ * @returns Contract name.
49
+ */
50
+ async getEvmImplClass() {
51
+ return this.contract.getFunction("class()").staticCall();
52
+ }
53
+ /**
54
+ * Get specs identifier of the underlying logic implementation contract.
55
+ * @returns 4-byte hex string.
56
+ */
57
+ async getEvmImplSpecs() {
58
+ return this.contract.getFunction("specs()").staticCall();
59
+ }
60
+ /**
61
+ * Version tag of the underlying logic implementation contract.
62
+ * @returns Version tag.
63
+ */
64
+ async getEvmImplVersion() {
65
+ let version;
66
+ try {
67
+ version = await this.provider
68
+ .call({
69
+ to: this.address,
70
+ data: "0x54fd4d50", // funcSig for 'version()'
71
+ })
72
+ .then((result) => AbiCoder.defaultAbiCoder().decode(["string"], result))
73
+ .then((result) => result.toString());
74
+ }
75
+ catch (_err) {
76
+ return "(immutable)";
77
+ }
78
+ return version;
79
+ }
80
+ }
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udHJhY3RXcmFwcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi93cmFwcGVycy9Db250cmFjdFdyYXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLFFBQVEsRUFFUixRQUFRLEdBTVIsTUFBTSxRQUFRLENBQUE7QUFFZixNQUFNLE9BQWdCLGVBQWU7SUFDcEMsWUFDQyxNQUFxQixFQUNyQixPQUFlLEVBQ2YsR0FBNkIsRUFDN0IsTUFBNEI7UUFFNUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUE7UUFDdEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLFFBQVEsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQXdCLENBQUMsQ0FBQTtRQUNwRSxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQTtRQUNkLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQTtRQUMvQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQTtJQUNyQixDQUFDO0lBRVMsUUFBUSxDQUFzQjtJQUM5QixTQUFTLENBQVU7SUFFdEIsTUFBTSxDQUFDLE1BQTRCO1FBQ3pDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxRQUFRLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQzVELElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFBO1FBQ3RCLE9BQU8sSUFBSSxDQUFBO0lBQ1osQ0FBQztJQUVEOztPQUVHO0lBQ2EsR0FBRyxDQUEwQjtJQUU3Qzs7T0FFRztJQUNILElBQVcsT0FBTztRQUNqQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUE7SUFDckIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxRQUFRO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQTtJQUN0QixDQUFDO0lBRUQ7O09BRUc7SUFDYSxPQUFPLENBQVE7SUFFL0I7O09BRUc7SUFDYSxRQUFRLENBQW9CO0lBRTVDOztPQUVHO0lBQ2EsTUFBTSxDQUFlO0lBRXJDOzs7T0FHRztJQUNJLEtBQUssQ0FBQyxlQUFlO1FBQzNCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUE7SUFDekQsQ0FBQztJQUVEOzs7T0FHRztJQUNJLEtBQUssQ0FBQyxlQUFlO1FBQzNCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUE7SUFDekQsQ0FBQztJQUVEOzs7T0FHRztJQUNJLEtBQUssQ0FBQyxpQkFBaUI7UUFDN0IsSUFBSSxPQUFPLENBQUE7UUFDWCxJQUFJLENBQUM7WUFDSixPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsUUFBUTtpQkFDM0IsSUFBSSxDQUFDO2dCQUNMLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBTztnQkFDaEIsSUFBSSxFQUFFLFlBQVksRUFBRSwwQkFBMEI7YUFDOUMsQ0FBQztpQkFDRCxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztpQkFDdkUsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQTtRQUN0QyxDQUFDO1FBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztZQUNmLE9BQU8sYUFBYSxDQUFBO1FBQ3JCLENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQTtJQUNmLENBQUM7Q0FDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdEFiaUNvZGVyLFxuXHR0eXBlIEFkZHJlc3NhYmxlLFxuXHRDb250cmFjdCxcblx0dHlwZSBDb250cmFjdFJ1bm5lcixcblx0dHlwZSBJbnRlcmZhY2UsXG5cdHR5cGUgSW50ZXJmYWNlQWJpLFxuXHR0eXBlIEpzb25ScGNBcGlQcm92aWRlcixcblx0dHlwZSBKc29uUnBjU2lnbmVyLFxufSBmcm9tIFwiZXRoZXJzXCJcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENvbnRyYWN0V3JhcHBlciB7XG5cdGNvbnN0cnVjdG9yKFxuXHRcdHNpZ25lcjogSnNvblJwY1NpZ25lcixcblx0XHRuZXR3b3JrOiBzdHJpbmcsXG5cdFx0YWJpOiBJbnRlcmZhY2UgfCBJbnRlcmZhY2VBYmksXG5cdFx0dGFyZ2V0OiBzdHJpbmcgfCBBZGRyZXNzYWJsZSxcblx0KSB7XG5cdFx0dGhpcy5fYWRkcmVzcyA9IHRhcmdldFxuXHRcdHRoaXMuX2NvbnRyYWN0ID0gbmV3IENvbnRyYWN0KHRhcmdldCwgYWJpLCBzaWduZXIgYXMgQ29udHJhY3RSdW5uZXIpXG5cdFx0dGhpcy5hYmkgPSBhYmlcblx0XHR0aGlzLm5ldHdvcmsgPSBuZXR3b3JrXG5cdFx0dGhpcy5wcm92aWRlciA9IHNpZ25lci5wcm92aWRlclxuXHRcdHRoaXMuc2lnbmVyID0gc2lnbmVyXG5cdH1cblxuXHRwcm90ZWN0ZWQgX2FkZHJlc3M6IHN0cmluZyB8IEFkZHJlc3NhYmxlXG5cdHByb3RlY3RlZCBfY29udHJhY3Q6IENvbnRyYWN0XG5cblx0cHVibGljIGF0dGFjaCh0YXJnZXQ6IHN0cmluZyB8IEFkZHJlc3NhYmxlKTogYW55IHtcblx0XHR0aGlzLl9jb250cmFjdCA9IG5ldyBDb250cmFjdCh0YXJnZXQsIHRoaXMuYWJpLCB0aGlzLnNpZ25lcilcblx0XHR0aGlzLl9hZGRyZXNzID0gdGFyZ2V0XG5cdFx0cmV0dXJuIHRoaXNcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGUgY29udHJhY3QncyBBQkkuXG5cdCAqL1xuXHRwdWJsaWMgcmVhZG9ubHkgYWJpOiBJbnRlcmZhY2UgfCBJbnRlcmZhY2VBYmlcblxuXHQvKipcblx0ICogVGhlIGFkZHJlc3Mgb2YgdGhlIHVuZGVybHlpbmcgV2l0L09yYWNsZSBGcmFtZXdvcmsgYXJ0aWZhY3QuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0IGFkZHJlc3MoKTogc3RyaW5nIHwgQWRkcmVzc2FibGUge1xuXHRcdHJldHVybiB0aGlzLl9hZGRyZXNzXG5cdH1cblxuXHQvKipcblx0ICogVGhlIHVuZGVybHlpbmcgRXRoZXJzJyBjb250cmFjdCB3cmFwcGVyLlxuXHQgKi9cblx0cHVibGljIGdldCBjb250cmFjdCgpOiBDb250cmFjdCB7XG5cdFx0cmV0dXJuIHRoaXMuX2NvbnRyYWN0XG5cdH1cblxuXHQvKipcblx0ICogVGhlIEVWTSBuZXR3b3JrIGN1cnJlbnRseSBjb25uZWN0ZWQgdG8uXG5cdCAqL1xuXHRwdWJsaWMgcmVhZG9ubHkgbmV0d29yazogc3RyaW5nXG5cblx0LyoqXG5cdCAqIFRoZSBFVEgvUlBDIHByb3ZpZGVyIHVzZWQgb2YgY29udHJhY3QgaW50ZXJhY3Rpb25zLlxuXHQgKi9cblx0cHVibGljIHJlYWRvbmx5IHByb3ZpZGVyOiBKc29uUnBjQXBpUHJvdmlkZXJcblxuXHQvKipcblx0ICogVGhlIEVWTSBhZGRyZXNzIHRoYXQgd2lsbCBzaWduIGNvbnRyYWN0IGludGVyYWN0aW9uIHRyYW5zYWN0aW9ucywgd2hlbiByZXF1aXJlZC5cblx0ICovXG5cdHB1YmxpYyByZWFkb25seSBzaWduZXI6IEpzb25ScGNTaWduZXJcblxuXHQvKipcblx0ICogTmFtZSBvZiB0aGUgdW5kZXJseWluZyBsb2dpYyBpbXBsZW1lbnRhdGlvbiBjb250cmFjdC5cblx0ICogQHJldHVybnMgQ29udHJhY3QgbmFtZS5cblx0ICovXG5cdHB1YmxpYyBhc3luYyBnZXRFdm1JbXBsQ2xhc3MoKTogUHJvbWlzZTxzdHJpbmc+IHtcblx0XHRyZXR1cm4gdGhpcy5jb250cmFjdC5nZXRGdW5jdGlvbihcImNsYXNzKClcIikuc3RhdGljQ2FsbCgpXG5cdH1cblxuXHQvKipcblx0ICogR2V0IHNwZWNzIGlkZW50aWZpZXIgb2YgdGhlIHVuZGVybHlpbmcgbG9naWMgaW1wbGVtZW50YXRpb24gY29udHJhY3QuXG5cdCAqIEByZXR1cm5zIDQtYnl0ZSBoZXggc3RyaW5nLlxuXHQgKi9cblx0cHVibGljIGFzeW5jIGdldEV2bUltcGxTcGVjcygpOiBQcm9taXNlPHN0cmluZz4ge1xuXHRcdHJldHVybiB0aGlzLmNvbnRyYWN0LmdldEZ1bmN0aW9uKFwic3BlY3MoKVwiKS5zdGF0aWNDYWxsKClcblx0fVxuXG5cdC8qKlxuXHQgKiBWZXJzaW9uIHRhZyBvZiB0aGUgdW5kZXJseWluZyBsb2dpYyBpbXBsZW1lbnRhdGlvbiBjb250cmFjdC5cblx0ICogQHJldHVybnMgVmVyc2lvbiB0YWcuXG5cdCAqL1xuXHRwdWJsaWMgYXN5bmMgZ2V0RXZtSW1wbFZlcnNpb24oKTogUHJvbWlzZTxzdHJpbmc+IHtcblx0XHRsZXQgdmVyc2lvblxuXHRcdHRyeSB7XG5cdFx0XHR2ZXJzaW9uID0gYXdhaXQgdGhpcy5wcm92aWRlclxuXHRcdFx0XHQuY2FsbCh7XG5cdFx0XHRcdFx0dG86IHRoaXMuYWRkcmVzcyxcblx0XHRcdFx0XHRkYXRhOiBcIjB4NTRmZDRkNTBcIiwgLy8gZnVuY1NpZyBmb3IgJ3ZlcnNpb24oKSdcblx0XHRcdFx0fSlcblx0XHRcdFx0LnRoZW4oKHJlc3VsdCkgPT4gQWJpQ29kZXIuZGVmYXVsdEFiaUNvZGVyKCkuZGVjb2RlKFtcInN0cmluZ1wiXSwgcmVzdWx0KSlcblx0XHRcdFx0LnRoZW4oKHJlc3VsdCkgPT4gcmVzdWx0LnRvU3RyaW5nKCkpXG5cdFx0fSBjYXRjaCAoX2Vycikge1xuXHRcdFx0cmV0dXJuIFwiKGltbXV0YWJsZSlcIlxuXHRcdH1cblx0XHRyZXR1cm4gdmVyc2lvblxuXHR9XG59XG4iXX0=
@@ -0,0 +1,7 @@
1
+ import { ContractWrapper } from "./ContractWrapper.js";
2
+ import type { WitOracle } from "./WitOracle.js";
3
+ export declare abstract class WitAppliance extends ContractWrapper {
4
+ readonly witOracle: WitOracle;
5
+ constructor(witOracle: WitOracle, artifact: string, at?: string);
6
+ }
7
+ //# sourceMappingURL=WitAppliance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WitAppliance.d.ts","sourceRoot":"","sources":["../../../../src/lib/wrappers/WitAppliance.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE/C,8BAAsB,YAAa,SAAQ,eAAe;IACzD,SAAgB,SAAS,EAAE,SAAS,CAAA;gBAExB,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM;CAY/D"}
@@ -0,0 +1,17 @@
1
+ import { ABIs } from "../../index.js";
2
+ import { getEvmNetworkAddresses } from "../utils.js";
3
+ import { ContractWrapper } from "./ContractWrapper.js";
4
+ export class WitAppliance extends ContractWrapper {
5
+ witOracle;
6
+ constructor(witOracle, artifact, at) {
7
+ const abis = ABIs;
8
+ const addresses = getEvmNetworkAddresses(witOracle.network);
9
+ const target = at || addresses?.core[artifact] || addresses?.apps[artifact];
10
+ if (!abis[artifact] || !target) {
11
+ throw new Error(`EVM network ${witOracle.network} => artifact not available: ${artifact}`);
12
+ }
13
+ super(witOracle.signer, witOracle.network, abis[artifact], target);
14
+ this.witOracle = witOracle;
15
+ }
16
+ }
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2l0QXBwbGlhbmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi93cmFwcGVycy9XaXRBcHBsaWFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ3JDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFHdEQsTUFBTSxPQUFnQixZQUFhLFNBQVEsZUFBZTtJQUN6QyxTQUFTLENBQVc7SUFFcEMsWUFBWSxTQUFvQixFQUFFLFFBQWdCLEVBQUUsRUFBVztRQUM5RCxNQUFNLElBQUksR0FBNkMsSUFBSSxDQUFBO1FBQzNELE1BQU0sU0FBUyxHQUFHLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUMzRCxNQUFNLE1BQU0sR0FBRyxFQUFFLElBQUksU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQzNFLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQyxNQUFNLElBQUksS0FBSyxDQUNkLGVBQWUsU0FBUyxDQUFDLE9BQU8sK0JBQStCLFFBQVEsRUFBRSxDQUN6RSxDQUFBO1FBQ0YsQ0FBQztRQUNELEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQ2xFLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFBO0lBQzNCLENBQUM7Q0FDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgSW50ZXJmYWNlLCBJbnRlcmZhY2VBYmkgfSBmcm9tIFwiZXRoZXJzXCJcbmltcG9ydCB7IEFCSXMgfSBmcm9tIFwiLi4vLi4vaW5kZXguanNcIlxuaW1wb3J0IHsgZ2V0RXZtTmV0d29ya0FkZHJlc3NlcyB9IGZyb20gXCIuLi91dGlscy5qc1wiXG5pbXBvcnQgeyBDb250cmFjdFdyYXBwZXIgfSBmcm9tIFwiLi9Db250cmFjdFdyYXBwZXIuanNcIlxuaW1wb3J0IHR5cGUgeyBXaXRPcmFjbGUgfSBmcm9tIFwiLi9XaXRPcmFjbGUuanNcIlxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgV2l0QXBwbGlhbmNlIGV4dGVuZHMgQ29udHJhY3RXcmFwcGVyIHtcblx0cHVibGljIHJlYWRvbmx5IHdpdE9yYWNsZTogV2l0T3JhY2xlXG5cblx0Y29uc3RydWN0b3Iod2l0T3JhY2xlOiBXaXRPcmFjbGUsIGFydGlmYWN0OiBzdHJpbmcsIGF0Pzogc3RyaW5nKSB7XG5cdFx0Y29uc3QgYWJpczogUmVjb3JkPHN0cmluZywgSW50ZXJmYWNlIHwgSW50ZXJmYWNlQWJpPiA9IEFCSXNcblx0XHRjb25zdCBhZGRyZXNzZXMgPSBnZXRFdm1OZXR3b3JrQWRkcmVzc2VzKHdpdE9yYWNsZS5uZXR3b3JrKVxuXHRcdGNvbnN0IHRhcmdldCA9IGF0IHx8IGFkZHJlc3Nlcz8uY29yZVthcnRpZmFjdF0gfHwgYWRkcmVzc2VzPy5hcHBzW2FydGlmYWN0XVxuXHRcdGlmICghYWJpc1thcnRpZmFjdF0gfHwgIXRhcmdldCkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFxuXHRcdFx0XHRgRVZNIG5ldHdvcmsgJHt3aXRPcmFjbGUubmV0d29ya30gPT4gYXJ0aWZhY3Qgbm90IGF2YWlsYWJsZTogJHthcnRpZmFjdH1gLFxuXHRcdFx0KVxuXHRcdH1cblx0XHRzdXBlcih3aXRPcmFjbGUuc2lnbmVyLCB3aXRPcmFjbGUubmV0d29yaywgYWJpc1thcnRpZmFjdF0sIHRhcmdldClcblx0XHR0aGlzLndpdE9yYWNsZSA9IHdpdE9yYWNsZVxuXHR9XG59XG4iXX0=
@@ -0,0 +1,6 @@
1
+ import type { JsonRpcSigner } from "ethers";
2
+ import { ContractWrapper } from "./ContractWrapper.js";
3
+ export declare abstract class WitArtifact extends ContractWrapper {
4
+ constructor(signer: JsonRpcSigner, network: string, artifact: string, at?: string);
5
+ }
6
+ //# sourceMappingURL=WitArtifact.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WitArtifact.d.ts","sourceRoot":"","sources":["../../../../src/lib/wrappers/WitArtifact.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA2B,aAAa,EAAE,MAAM,QAAQ,CAAA;AAGpE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAEtD,8BAAsB,WAAY,SAAQ,eAAe;gBAEvD,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,EAAE,CAAC,EAAE,MAAM;CAYZ"}
@@ -0,0 +1,16 @@
1
+ import { ABIs } from "../../index.js";
2
+ import { getEvmNetworkAddresses } from "../utils.js";
3
+ import { ContractWrapper } from "./ContractWrapper.js";
4
+ export class WitArtifact extends ContractWrapper {
5
+ constructor(signer, network, artifact, at) {
6
+ const abis = ABIs;
7
+ const target = at || getEvmNetworkAddresses(network)?.core[artifact];
8
+ if (!abis[artifact] || !target) {
9
+ throw new Error(`EVM network ${network} => artifact is not available: ${artifact}`);
10
+ }
11
+ else {
12
+ super(signer, network, abis[artifact], target);
13
+ }
14
+ }
15
+ }
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2l0QXJ0aWZhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3dyYXBwZXJzL1dpdEFydGlmYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUNyQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBRXRELE1BQU0sT0FBZ0IsV0FBWSxTQUFRLGVBQWU7SUFDeEQsWUFDQyxNQUFxQixFQUNyQixPQUFlLEVBQ2YsUUFBZ0IsRUFDaEIsRUFBVztRQUVYLE1BQU0sSUFBSSxHQUE2QyxJQUFJLENBQUE7UUFDM0QsTUFBTSxNQUFNLEdBQUcsRUFBRSxJQUFJLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUNwRSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEMsTUFBTSxJQUFJLEtBQUssQ0FDZCxlQUFlLE9BQU8sa0NBQWtDLFFBQVEsRUFBRSxDQUNsRSxDQUFBO1FBQ0YsQ0FBQzthQUFNLENBQUM7WUFDUCxLQUFLLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDL0MsQ0FBQztJQUNGLENBQUM7Q0FDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgSW50ZXJmYWNlLCBJbnRlcmZhY2VBYmksIEpzb25ScGNTaWduZXIgfSBmcm9tIFwiZXRoZXJzXCJcbmltcG9ydCB7IEFCSXMgfSBmcm9tIFwiLi4vLi4vaW5kZXguanNcIlxuaW1wb3J0IHsgZ2V0RXZtTmV0d29ya0FkZHJlc3NlcyB9IGZyb20gXCIuLi91dGlscy5qc1wiXG5pbXBvcnQgeyBDb250cmFjdFdyYXBwZXIgfSBmcm9tIFwiLi9Db250cmFjdFdyYXBwZXIuanNcIlxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgV2l0QXJ0aWZhY3QgZXh0ZW5kcyBDb250cmFjdFdyYXBwZXIge1xuXHRjb25zdHJ1Y3Rvcihcblx0XHRzaWduZXI6IEpzb25ScGNTaWduZXIsXG5cdFx0bmV0d29yazogc3RyaW5nLFxuXHRcdGFydGlmYWN0OiBzdHJpbmcsXG5cdFx0YXQ/OiBzdHJpbmcsXG5cdCkge1xuXHRcdGNvbnN0IGFiaXM6IFJlY29yZDxzdHJpbmcsIEludGVyZmFjZSB8IEludGVyZmFjZUFiaT4gPSBBQklzXG5cdFx0Y29uc3QgdGFyZ2V0ID0gYXQgfHwgZ2V0RXZtTmV0d29ya0FkZHJlc3NlcyhuZXR3b3JrKT8uY29yZVthcnRpZmFjdF1cblx0XHRpZiAoIWFiaXNbYXJ0aWZhY3RdIHx8ICF0YXJnZXQpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcblx0XHRcdFx0YEVWTSBuZXR3b3JrICR7bmV0d29ya30gPT4gYXJ0aWZhY3QgaXMgbm90IGF2YWlsYWJsZTogJHthcnRpZmFjdH1gLFxuXHRcdFx0KVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRzdXBlcihzaWduZXIsIG5ldHdvcmssIGFiaXNbYXJ0aWZhY3RdLCB0YXJnZXQpXG5cdFx0fVxuXHR9XG59XG4iXX0=