@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,55 @@
1
+ import type { Witnet } from "@witnet/sdk";
2
+ import { type BlockTag, Contract, type ContractTransactionReceipt, type TransactionReceipt } from "ethers";
3
+ import type { RandomizeStatus } from "../types.js";
4
+ import { WitAppliance } from "./WitAppliance.js";
5
+ import type { WitOracle } from "./WitOracle.js";
6
+ export declare class WitRandomness extends WitAppliance {
7
+ protected _legacy: Contract;
8
+ protected constructor(witOracle: WitOracle, at: string);
9
+ static at(witOracle: WitOracle, target: string): Promise<WitRandomness>;
10
+ clone(curator: string, options?: {
11
+ evmConfirmations?: number;
12
+ evmGasPrice?: bigint;
13
+ evmTimeout?: number;
14
+ onTransaction?: (TxHash: Witnet.Hash) => any;
15
+ onTransactionReceipt?: (receipt: TransactionReceipt | null) => any;
16
+ }): Promise<ContractTransactionReceipt | TransactionReceipt | null>;
17
+ estimateRandomizeFee(evmGasPrice: bigint): Promise<bigint>;
18
+ fetchRandomnessAfter(evmBlockNumber: bigint): Promise<Witnet.HexString | undefined>;
19
+ fetchRandomnessAfterProof(evmBlockNumber: bigint): Promise<{
20
+ finality: bigint;
21
+ timestamp: number;
22
+ trail: Witnet.Hash;
23
+ uuid: Witnet.Hash;
24
+ }>;
25
+ filterEvents(options: {
26
+ fromBlock: BlockTag;
27
+ toBlock?: BlockTag;
28
+ }): Promise<Array<{
29
+ queryId: bigint;
30
+ randomizeBlock: bigint;
31
+ requester?: string;
32
+ transactionHash: string;
33
+ }>>;
34
+ getEvmBase(): Promise<string>;
35
+ getEvmConsumer(): Promise<Witnet.HexString>;
36
+ getEvmCurator(): Promise<Witnet.HexString>;
37
+ getSettings(): Promise<{
38
+ callbackGasLimit: number;
39
+ extraFeePercentage: number;
40
+ randomizeWaitBlocks: number;
41
+ witCommitteeSize: number;
42
+ witInclusionFees: bigint;
43
+ }>;
44
+ getLastRandomizeBlock(): Promise<bigint>;
45
+ getRandomizeStatus(evmBlockNumber: bigint): Promise<RandomizeStatus>;
46
+ isRandomized(evmBlockNumber: bigint): Promise<boolean>;
47
+ randomize(options?: {
48
+ evmConfirmations?: number;
49
+ evmGasPrice?: bigint;
50
+ evmTimeout?: number;
51
+ onRandomizeTransaction?: (txHash: Witnet.Hash) => any;
52
+ onRandomizeTransactionReceipt?: (receipt: TransactionReceipt | null) => any;
53
+ }): Promise<ContractTransactionReceipt | TransactionReceipt | null>;
54
+ }
55
+ //# sourceMappingURL=WitRandomness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WitRandomness.d.ts","sourceRoot":"","sources":["../../../../src/lib/wrappers/WitRandomness.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,165 @@
1
+ import { Contract, } from "ethers";
2
+ import { ABIs } from "../../index.js";
3
+ import { WitAppliance } from "./WitAppliance.js";
4
+ export class WitRandomness extends WitAppliance {
5
+ _legacy;
6
+ constructor(witOracle, at) {
7
+ super(witOracle, "WitRandomnessV3", at);
8
+ this._legacy = new Contract(at, ABIs.WitRandomnessV2, this.signer);
9
+ }
10
+ static async at(witOracle, target) {
11
+ const randomizer = new WitRandomness(witOracle, target);
12
+ try {
13
+ let oracleAddr;
14
+ try {
15
+ oracleAddr = await randomizer.contract.witOracle.staticCall();
16
+ }
17
+ catch {
18
+ const abi = ["function witnet() public view returns (address)"];
19
+ const contract = new Contract(target, abi, randomizer.signer);
20
+ oracleAddr = await contract.witnet.staticCall();
21
+ }
22
+ if (oracleAddr !== witOracle.address) {
23
+ throw new Error(`WitRandomness at ${target}: mismatching Wit/Oracle address (${oracleAddr})`);
24
+ }
25
+ }
26
+ catch (error) {
27
+ throw new Error(`WitRandomness at ${target}: cannot fetch Wit/Oracle address\n${error?.stack?.split("\n")[0] || error}`);
28
+ }
29
+ return randomizer;
30
+ }
31
+ async clone(curator, options) {
32
+ const tx = await this.contract.clone.populateTransaction(curator);
33
+ tx.gasPrice = options?.evmGasPrice || tx?.gasPrice;
34
+ return this.signer
35
+ .sendTransaction(tx)
36
+ .then((response) => {
37
+ if (options?.onTransaction) {
38
+ options.onTransaction(response.hash);
39
+ }
40
+ return response.wait(options?.evmConfirmations || 1, options?.evmTimeout);
41
+ })
42
+ .then((receipt) => {
43
+ if (options?.onTransactionReceipt) {
44
+ options.onTransactionReceipt(receipt);
45
+ }
46
+ return receipt;
47
+ });
48
+ }
49
+ async estimateRandomizeFee(evmGasPrice) {
50
+ return this.contract
51
+ .getFunction("estimateRandomizeFee(uint256)")
52
+ .staticCall(evmGasPrice);
53
+ }
54
+ async fetchRandomnessAfter(evmBlockNumber) {
55
+ return this.isRandomized(evmBlockNumber).then((isRandomized) => {
56
+ return isRandomized
57
+ ? this.contract.fetchRandomnessAfter.staticCall(evmBlockNumber)
58
+ : undefined;
59
+ });
60
+ }
61
+ async fetchRandomnessAfterProof(evmBlockNumber) {
62
+ return this.contract.fetchRandomnessAfterProof
63
+ .staticCall(evmBlockNumber)
64
+ .then((result) => ({
65
+ finality: BigInt(result[3]),
66
+ timestamp: Number(result[1]),
67
+ trail: result[2],
68
+ uuid: result[0],
69
+ }));
70
+ }
71
+ async filterEvents(options) {
72
+ const logs = await this._legacy.queryFilter("Randomizing", options.fromBlock, options?.toBlock);
73
+ if (logs && logs.length > 0) {
74
+ return logs
75
+ .filter((log) => !log.removed)
76
+ .map((log) => ({
77
+ queryId: log?.args[3],
78
+ randomizeBlock: log?.args[0],
79
+ transactionHash: log.transactionHash,
80
+ }));
81
+ }
82
+ else {
83
+ return this.contract
84
+ .queryFilter("Randomizing", options.fromBlock, options?.toBlock)
85
+ .then((logs) => logs.filter((log) => !log.removed))
86
+ .then((logs) => logs.map((log) => ({
87
+ queryId: log?.args[2],
88
+ randomizeBlock: log?.args[1],
89
+ requester: log?.args[0],
90
+ transactionHash: log.transactionHash,
91
+ })));
92
+ }
93
+ }
94
+ async getEvmBase() {
95
+ return this.contract.base.staticCall().catch((_) => {
96
+ return this._address;
97
+ });
98
+ }
99
+ async getEvmConsumer() {
100
+ return this.contract.consumer.staticCall().catch((_) => {
101
+ return this._address;
102
+ });
103
+ }
104
+ async getEvmCurator() {
105
+ return this.contract.owner.staticCall();
106
+ }
107
+ async getSettings() {
108
+ const [queryParams, waitingBlocks] = await Promise.all([
109
+ this.contract.getRandomizeQueryParams(),
110
+ this.contract.getRandomizeWaitingBlocks(),
111
+ ]);
112
+ return {
113
+ callbackGasLimit: Number(queryParams[0]),
114
+ extraFeePercentage: Number(queryParams[1]),
115
+ randomizeWaitBlocks: Number(waitingBlocks),
116
+ witCommitteeSize: Number(queryParams[2]),
117
+ witInclusionFees: BigInt(queryParams[3]),
118
+ };
119
+ }
120
+ async getLastRandomizeBlock() {
121
+ return this.contract.getFunction("getLastRandomizeBlock()").staticCall();
122
+ }
123
+ async getRandomizeStatus(evmBlockNumber) {
124
+ return this.contract.getRandomizeStatus
125
+ .staticCall(evmBlockNumber)
126
+ .then((result) => {
127
+ switch (Number(result)) {
128
+ case 1:
129
+ return "Awaiting";
130
+ case 2:
131
+ return "Ready";
132
+ case 3:
133
+ return "Error";
134
+ case 4:
135
+ return "Finalizing";
136
+ }
137
+ return "Void";
138
+ });
139
+ }
140
+ async isRandomized(evmBlockNumber) {
141
+ return this.contract.isRandomized.staticCall(evmBlockNumber);
142
+ }
143
+ async randomize(options) {
144
+ const evmGasPrice = options?.evmGasPrice || (await this.provider.getFeeData()).gasPrice || 0n;
145
+ const evmRandomizeFee = await this.estimateRandomizeFee(evmGasPrice);
146
+ const evmTransaction = await this.contract
147
+ .getFunction("randomize()")
148
+ .populateTransaction();
149
+ evmTransaction.gasPrice = evmGasPrice || evmTransaction?.gasPrice;
150
+ evmTransaction.value = evmRandomizeFee;
151
+ return this.signer
152
+ .sendTransaction(evmTransaction)
153
+ .then((response) => {
154
+ if (options?.onRandomizeTransaction)
155
+ options.onRandomizeTransaction(response.hash);
156
+ return response.wait(options?.evmConfirmations || 1, options?.evmTimeout);
157
+ })
158
+ .then((receipt) => {
159
+ if (options?.onRandomizeTransactionReceipt)
160
+ options.onRandomizeTransactionReceipt(receipt);
161
+ return receipt;
162
+ });
163
+ }
164
+ }
165
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2l0UmFuZG9tbmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvd3JhcHBlcnMvV2l0UmFuZG9tbmVzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBRU4sUUFBUSxHQUtSLE1BQU0sUUFBUSxDQUFBO0FBQ2YsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBR3JDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUdoRCxNQUFNLE9BQU8sYUFBYyxTQUFRLFlBQVk7SUFDcEMsT0FBTyxDQUFVO0lBRTNCLFlBQXNCLFNBQW9CLEVBQUUsRUFBVTtRQUNyRCxLQUFLLENBQUMsU0FBUyxFQUFFLGlCQUFpQixFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBQ3ZDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxRQUFRLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ25FLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FDZCxTQUFvQixFQUNwQixNQUFjO1FBRWQsTUFBTSxVQUFVLEdBQUcsSUFBSSxhQUFhLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQ3ZELElBQUksQ0FBQztZQUNKLElBQUksVUFBVSxDQUFBO1lBQ2QsSUFBSSxDQUFDO2dCQUNKLFVBQVUsR0FBRyxNQUFNLFVBQVUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxDQUFBO1lBQzlELENBQUM7WUFBQyxNQUFNLENBQUM7Z0JBQ1IsTUFBTSxHQUFHLEdBQUcsQ0FBQyxpREFBaUQsQ0FBQyxDQUFBO2dCQUMvRCxNQUFNLFFBQVEsR0FBRyxJQUFJLFFBQVEsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQTtnQkFDN0QsVUFBVSxHQUFHLE1BQU0s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QUFRO2FBQzdELFdBQVcsQ0FBQyxhQUFhLENBQUM7YUFDMUIsbUJBQW1CLEVBQUUsQ0FBQTtRQUN2QixjQUFjLENBQUMsUUFBUSxHQUFHLFdBQVcsSUFBSSxjQUFjLEVBQUUsUUFBUSxDQUFBO1FBQ2pFLGNBQWMsQ0FBQyxLQUFLLEdBQUcsZUFBZSxDQUFBO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLE1BQU07YUFDaEIsZUFBZSxDQUFDLGNBQWMsQ0FBQzthQUMvQixJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNsQixJQUFJLE9BQU8sRUFBRSxzQkFBc0I7Z0JBQ2xDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDOUMsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUNuQixPQUFPLEVBQUUsZ0JBQWdCLElBQUksQ0FBQyxFQUM5QixPQUFPLEVBQUUsVUFBVSxDQUNuQixDQUFBO1FBQ0YsQ0FBQyxDQUFDO2FBQ0QsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDakIsSUFBSSxPQUFPLEVBQUUsNkJBQTZCO2dCQUN6QyxPQUFPLENBQUMsNkJBQTZCLENBQUMsT0FBTyxDQUFDLENBQUE7WUFDL0MsT0FBTyxPQUFPLENBQUE7UUFDZixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7Q0FDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgV2l0bmV0IH0gZnJvbSBcIkB3aXRuZXQvc2RrXCJcbmltcG9ydCB7XG5cdHR5cGUgQmxvY2tUYWcsXG5cdENvbnRyYWN0LFxuXHR0eXBlIENvbnRyYWN0VHJhbnNhY3Rpb24sXG5cdHR5cGUgQ29udHJhY3RUcmFuc2FjdGlvblJlY2VpcHQsXG5cdHR5cGUgRXZlbnRMb2csXG5cdHR5cGUgVHJhbnNhY3Rpb25SZWNlaXB0LFxufSBmcm9tIFwiZXRoZXJzXCJcbmltcG9ydCB7IEFCSXMgfSBmcm9tIFwiLi4vLi4vaW5kZXguanNcIlxuaW1wb3J0IHR5cGUgeyBSYW5kb21pemVTdGF0dXMgfSBmcm9tIFwiLi4vdHlwZXMuanNcIlxuXG5pbXBvcnQgeyBXaXRBcHBsaWFuY2UgfSBmcm9tIFwiLi9XaXRBcHBsaWFuY2UuanNcIlxuaW1wb3J0IHR5cGUgeyBXaXRPcmFjbGUgfSBmcm9tIFwiLi9XaXRPcmFjbGUuanNcIlxuXG5leHBvcnQgY2xhc3MgV2l0UmFuZG9tbmVzcyBleHRlbmRzIFdpdEFwcGxpYW5jZSB7XG5cdHByb3RlY3RlZCBfbGVnYWN5OiBDb250cmFjdFxuXG5cdHByb3RlY3RlZCBjb25zdHJ1Y3Rvcih3aXRPcmFjbGU6IFdpdE9yYWNsZSwgYXQ6IHN0cmluZykge1xuXHRcdHN1cGVyKHdpdE9yYWNsZSwgXCJXaXRSYW5kb21uZXNzVjNcIiwgYXQpXG5cdFx0dGhpcy5fbGVnYWN5ID0gbmV3IENvbnRyYWN0KGF0LCBBQklzLldpdFJhbmRvbW5lc3NWMiwgdGhpcy5zaWduZXIpXG5cdH1cblxuXHRzdGF0aWMgYXN5bmMgYXQoXG5cdFx0d2l0T3JhY2xlOiBXaXRPcmFjbGUsXG5cdFx0dGFyZ2V0OiBzdHJpbmcsXG5cdCk6IFByb21pc2U8V2l0UmFuZG9tbmVzcz4ge1xuXHRcdGNvbnN0IHJhbmRvbWl6ZXIgPSBuZXcgV2l0UmFuZG9tbmVzcyh3aXRPcmFjbGUsIHRhcmdldClcblx0XHR0cnkge1xuXHRcdFx0bGV0IG9yYWNsZUFkZHJcblx0XHRcdHRyeSB7XG5cdFx0XHRcdG9yYWNsZUFkZHIgPSBhd2FpdCByYW5kb21pemVyLmNvbnRyYWN0LndpdE9yYWNsZS5zdGF0aWNDYWxsKClcblx0XHRcdH0gY2F0Y2gge1xuXHRcdFx0XHRjb25zdCBhYmkgPSBbXCJmdW5jdGlvbiB3aXRuZXQoKSBwdWJsaWMgdmlldyByZXR1cm5zIChhZGRyZXNzKVwiXVxuXHRcdFx0XHRjb25zdCBjb250cmFjdCA9IG5ldyBDb250cmFjdCh0YXJnZXQsIGFiaSwgcmFuZG9taXplci5zaWduZXIpXG5cdFx0XHRcdG9yYWNsZUFkZHIgPSBhd2FpdCBjb250cmFjdC53aXRuZXQuc3RhdGljQ2FsbCgpXG5cdFx0XHR9XG5cdFx0XHRpZiAob3JhY2xlQWRkciAhPT0gd2l0T3JhY2xlLmFkZHJlc3MpIHtcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKFxuXHRcdFx0XHRcdGBXaXRSYW5kb21uZXNzIGF0ICR7dGFyZ2V0fTogbWlzbWF0Y2hpbmcgV2l0L09yYWNsZSBhZGRyZXNzICgke29yYWNsZUFkZHJ9KWAsXG5cdFx0XHRcdClcblx0XHRcdH1cblx0XHR9IGNhdGNoIChlcnJvcjogYW55KSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXG5cdFx0XHRcdGBXaXRSYW5kb21uZXNzIGF0ICR7dGFyZ2V0fTogY2Fubm90IGZldGNoIFdpdC9PcmFjbGUgYWRkcmVzc1xcbiR7XG5cdFx0XHRcdFx0ZXJyb3I/LnN0YWNrPy5zcGxpdChcIlxcblwiKVswXSB8fCBlcnJvclxuXHRcdFx0XHR9YCxcblx0XHRcdClcblx0XHR9XG5cdFx0cmV0dXJuIHJhbmRvbWl6ZXJcblx0fVxuXG5cdHB1YmxpYyBhc3luYyBjbG9uZShcblx0XHRjdXJhdG9yOiBzdHJpbmcsXG5cdFx0b3B0aW9ucz86IHtcblx0XHRcdGV2bUNvbmZpcm1hdGlvbnM/OiBudW1iZXJcblx0XHRcdGV2bUdhc1ByaWNlPzogYmlnaW50XG5cdFx0XHRldm1UaW1lb3V0PzogbnVtYmVyXG5cdFx0XHRvblRyYW5zYWN0aW9uPzogKFR4SGFzaDogV2l0bmV0Lkhhc2gpID0+IGFueVxuXHRcdFx0b25UcmFuc2FjdGlvblJlY2VpcHQ/OiAocmVjZWlwdDogVHJhbnNhY3Rpb25SZWNlaXB0IHwgbnVsbCkgPT4gYW55XG5cdFx0fSxcblx0KTogUHJvbWlzZTxDb250cmFjdFRyYW5zYWN0aW9uUmVjZWlwdCB8IFRyYW5zYWN0aW9uUmVjZWlwdCB8IG51bGw+IHtcblx0XHRjb25zdCB0eDogQ29udHJhY3RUcmFuc2FjdGlvbiA9XG5cdFx0XHRhd2FpdCB0aGlzLmNvbnRyYWN0LmNsb25lLnBvcHVsYXRlVHJhbnNhY3Rpb24oY3VyYXRvcilcblx0XHR0eC5nYXNQcmljZSA9IG9wdGlvbnM/LmV2bUdhc1ByaWNlIHx8IHR4Py5nYXNQcmljZVxuXHRcdHJldHVybiB0aGlzLnNpZ25lclxuXHRcdFx0LnNlbmRUcmFuc2FjdGlvbih0eClcblx0XHRcdC50aGVuKChyZXNwb25zZSkgPT4ge1xuXHRcdFx0XHRpZiAob3B0aW9ucz8ub25UcmFuc2FjdGlvbikge1xuXHRcdFx0XHRcdG9wdGlvbnMub25UcmFuc2FjdGlvbihyZXNwb25zZS5oYXNoKVxuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiByZXNwb25zZS53YWl0KFxuXHRcdFx0XHRcdG9wdGlvbnM/LmV2bUNvbmZpcm1hdGlvbnMgfHwgMSxcblx0XHRcdFx0XHRvcHRpb25zPy5ldm1UaW1lb3V0LFxuXHRcdFx0XHQpXG5cdFx0XHR9KVxuXHRcdFx0LnRoZW4oKHJlY2VpcHQpID0+IHtcblx0XHRcdFx0aWYgKG9wdGlvbnM/Lm9uVHJhbnNhY3Rpb25SZWNlaXB0KSB7XG5cdFx0XHRcdFx0b3B0aW9ucy5vblRyYW5zYWN0aW9uUmVjZWlwdChyZWNlaXB0KVxuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiByZWNlaXB0XG5cdFx0XHR9KVxuXHR9XG5cblx0cHVibGljIGFzeW5jIGVzdGltYXRlUmFuZG9taXplRmVlKGV2bUdhc1ByaWNlOiBiaWdpbnQpOiBQcm9taXNlPGJpZ2ludD4ge1xuXHRcdHJldHVybiB0aGlzLmNvbnRyYWN0XG5cdFx0XHQuZ2V0RnVuY3Rpb24oXCJlc3RpbWF0ZVJhbmRvbWl6ZUZlZSh1aW50MjU2KVwiKVxuXHRcdFx0LnN0YXRpY0NhbGwoZXZtR2FzUHJpY2UpXG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgZmV0Y2hSYW5kb21uZXNzQWZ0ZXIoXG5cdFx0ZXZtQmxvY2tOdW1iZXI6IGJpZ2ludCxcblx0KTogUHJvbWlzZTxXaXRuZXQuSGV4U3RyaW5nIHwgdW5kZWZpbmVkPiB7XG5cdFx0cmV0dXJuIHRoaXMuaXNSYW5kb21pemVkKGV2bUJsb2NrTnVtYmVyKS50aGVuKChpc1JhbmRvbWl6ZWQpID0+IHtcblx0XHRcdHJldHVybiBpc1JhbmRvbWl6ZWRcblx0XHRcdFx0PyB0aGlzLmNvbnRyYWN0LmZldGNoUmFuZG9tbmVzc0FmdGVyLnN0YXRpY0NhbGwoZXZtQmxvY2tOdW1iZXIpXG5cdFx0XHRcdDogdW5kZWZpbmVkXG5cdFx0fSlcblx0fVxuXG5cdHB1YmxpYyBhc3luYyBmZXRjaFJhbmRvbW5lc3NBZnRlclByb29mKGV2bUJsb2NrTnVtYmVyOiBiaWdpbnQpOiBQcm9taXNlPHtcblx0XHRmaW5hbGl0eTogYmlnaW50XG5cdFx0dGltZXN0YW1wOiBudW1iZXJcblx0XHR0cmFpbDogV2l0bmV0Lkhhc2hcblx0XHR1dWlkOiBXaXRuZXQuSGFzaFxuXHR9PiB7XG5cdFx0cmV0dXJuIHRoaXMuY29udHJhY3QuZmV0Y2hSYW5kb21uZXNzQWZ0ZXJQcm9vZlxuXHRcdFx0LnN0YXRpY0NhbGwoZXZtQmxvY2tOdW1iZXIpXG5cdFx0XHQudGhlbigocmVzdWx0KSA9PiAoe1xuXHRcdFx0XHRmaW5hbGl0eTogQmlnSW50KHJlc3VsdFszXSksXG5cdFx0XHRcdHRpbWVzdGFtcDogTnVtYmVyKHJlc3VsdFsxXSksXG5cdFx0XHRcdHRyYWlsOiByZXN1bHRbMl0sXG5cdFx0XHRcdHV1aWQ6IHJlc3VsdFswXSxcblx0XHRcdH0pKVxuXHR9XG5cblx0cHVibGljIGFzeW5jIGZpbHRlckV2ZW50cyhvcHRpb25zOiB7XG5cdFx0ZnJvbUJsb2NrOiBCbG9ja1RhZ1xuXHRcdHRvQmxvY2s/OiBCbG9ja1RhZ1xuXHR9KTogUHJvbWlzZTxcblx0XHRBcnJheTx7XG5cdFx0XHRxdWVyeUlkOiBiaWdpbnRcblx0XHRcdHJhbmRvbWl6ZUJsb2NrOiBiaWdpbnRcblx0XHRcdHJlcXVlc3Rlcj86IHN0cmluZ1xuXHRcdFx0dHJhbnNhY3Rpb25IYXNoOiBzdHJpbmdcblx0XHR9PlxuXHQ+IHtcblx0XHRjb25zdCBsb2dzID0gYXdhaXQgdGhpcy5fbGVnYWN5LnF1ZXJ5RmlsdGVyKFxuXHRcdFx0XCJSYW5kb21pemluZ1wiLFxuXHRcdFx0b3B0aW9ucy5mcm9tQmxvY2ssXG5cdFx0XHRvcHRpb25zPy50b0Jsb2NrLFxuXHRcdClcblx0XHRpZiAobG9ncyAmJiBsb2dzLmxlbmd0aCA+IDApIHtcblx0XHRcdHJldHVybiBsb2dzXG5cdFx0XHRcdC5maWx0ZXIoKGxvZykgPT4gIWxvZy5yZW1vdmVkKVxuXHRcdFx0XHQubWFwKChsb2cpID0+ICh7XG5cdFx0XHRcdFx0cXVlcnlJZDogKGxvZyBhcyBFdmVudExvZyk/LmFyZ3NbM10sXG5cdFx0XHRcdFx0cmFuZG9taXplQmxvY2s6IChsb2cgYXMgRXZlbnRMb2cpPy5hcmdzWzBdLFxuXHRcdFx0XHRcdHRyYW5zYWN0aW9uSGFzaDogbG9nLnRyYW5zYWN0aW9uSGFzaCxcblx0XHRcdFx0fSkpXG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiB0aGlzLmNvbnRyYWN0XG5cdFx0XHRcdC5xdWVyeUZpbHRlcihcIlJhbmRvbWl6aW5nXCIsIG9wdGlvbnMuZnJvbUJsb2NrLCBvcHRpb25zPy50b0Jsb2NrKVxuXHRcdFx0XHQudGhlbigobG9ncykgPT4gbG9ncy5maWx0ZXIoKGxvZykgPT4gIWxvZy5yZW1vdmVkKSlcblx0XHRcdFx0LnRoZW4oKGxvZ3MpID0+XG5cdFx0XHRcdFx0bG9ncy5tYXAoKGxvZykgPT4gKHtcblx0XHRcdFx0XHRcdHF1ZXJ5SWQ6IChsb2cgYXMgRXZlbnRMb2cpPy5hcmdzWzJdLFxuXHRcdFx0XHRcdFx0cmFuZG9taXplQmxvY2s6IChsb2cgYXMgRXZlbnRMb2cpPy5hcmdzWzFdLFxuXHRcdFx0XHRcdFx0cmVxdWVzdGVyOiAobG9nIGFzIEV2ZW50TG9nKT8uYXJnc1swXSxcblx0XHRcdFx0XHRcdHRyYW5zYWN0aW9uSGFzaDogbG9nLnRyYW5zYWN0aW9uSGFzaCxcblx0XHRcdFx0XHR9KSksXG5cdFx0XHRcdClcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgZ2V0RXZtQmFzZSgpOiBQcm9taXNlPHN0cmluZz4ge1xuXHRcdHJldHVybiB0aGlzLmNvbnRyYWN0LmJhc2Uuc3RhdGljQ2FsbCgpLmNhdGNoKChfKSA9PiB7XG5cdFx0XHRyZXR1cm4gdGhpcy5fYWRkcmVzc1xuXHRcdH0pXG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgZ2V0RXZtQ29uc3VtZXIoKTogUHJvbWlzZTxXaXRuZXQuSGV4U3RyaW5nPiB7XG5cdFx0cmV0dXJuIHRoaXMuY29udHJhY3QuY29uc3VtZXIuc3RhdGljQ2FsbCgpLmNhdGNoKChfKSA9PiB7XG5cdFx0XHRyZXR1cm4gdGhpcy5fYWRkcmVzc1xuXHRcdH0pXG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgZ2V0RXZtQ3VyYXRvcigpOiBQcm9taXNlPFdpdG5ldC5IZXhTdHJpbmc+IHtcblx0XHRyZXR1cm4gdGhpcy5jb250cmFjdC5vd25lci5zdGF0aWNDYWxsKClcblx0fVxuXG5cdHB1YmxpYyBhc3luYyBnZXRTZXR0aW5ncygpOiBQcm9taXNlPHtcblx0XHRjYWxsYmFja0dhc0xpbWl0OiBudW1iZXJcblx0XHRleHRyYUZlZVBlcmNlbnRhZ2U6IG51bWJlclxuXHRcdHJhbmRvbWl6ZVdhaXRCbG9ja3M6IG51bWJlclxuXHRcdHdpdENvbW1pdHRlZVNpemU6IG51bWJlclxuXHRcdHdpdEluY2x1c2lvbkZlZXM6IGJpZ2ludFxuXHR9PiB7XG5cdFx0Y29uc3QgW3F1ZXJ5UGFyYW1zLCB3YWl0aW5nQmxvY2tzXSA9IGF3YWl0IFByb21pc2UuYWxsKFtcblx0XHRcdHRoaXMuY29udHJhY3QuZ2V0UmFuZG9taXplUXVlcnlQYXJhbXMoKSxcblx0XHRcdHRoaXMuY29udHJhY3QuZ2V0UmFuZG9taXplV2FpdGluZ0Jsb2NrcygpLFxuXHRcdF0pXG5cdFx0cmV0dXJuIHtcblx0XHRcdGNhbGxiYWNrR2FzTGltaXQ6IE51bWJlcihxdWVyeVBhcmFtc1swXSksXG5cdFx0XHRleHRyYUZlZVBlcmNlbnRhZ2U6IE51bWJlcihxdWVyeVBhcmFtc1sxXSksXG5cdFx0XHRyYW5kb21pemVXYWl0QmxvY2tzOiBOdW1iZXIod2FpdGluZ0Jsb2NrcyksXG5cdFx0XHR3aXRDb21taXR0ZWVTaXplOiBOdW1iZXIocXVlcnlQYXJhbXNbMl0pLFxuXHRcdFx0d2l0SW5jbHVzaW9uRmVlczogQmlnSW50KHF1ZXJ5UGFyYW1zWzNdKSxcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgZ2V0TGFzdFJhbmRvbWl6ZUJsb2NrKCk6IFByb21pc2U8YmlnaW50PiB7XG5cdFx0cmV0dXJuIHRoaXMuY29udHJhY3QuZ2V0RnVuY3Rpb24oXCJnZXRMYXN0UmFuZG9taXplQmxvY2soKVwiKS5zdGF0aWNDYWxsKClcblx0fVxuXG5cdHB1YmxpYyBhc3luYyBnZXRSYW5kb21pemVTdGF0dXMoXG5cdFx0ZXZtQmxvY2tOdW1iZXI6IGJpZ2ludCxcblx0KTogUHJvbWlzZTxSYW5kb21pemVTdGF0dXM+IHtcblx0XHRyZXR1cm4gdGhpcy5jb250cmFjdC5nZXRSYW5kb21pemVTdGF0dXNcblx0XHRcdC5zdGF0aWNDYWxsKGV2bUJsb2NrTnVtYmVyKVxuXHRcdFx0LnRoZW4oKHJlc3VsdCkgPT4ge1xuXHRcdFx0XHRzd2l0Y2ggKE51bWJlcihyZXN1bHQpKSB7XG5cdFx0XHRcdFx0Y2FzZSAxOlxuXHRcdFx0XHRcdFx0cmV0dXJuIFwiQXdhaXRpbmdcIlxuXHRcdFx0XHRcdGNhc2UgMjpcblx0XHRcdFx0XHRcdHJldHVybiBcIlJlYWR5XCJcblx0XHRcdFx0XHRjYXNlIDM6XG5cdFx0XHRcdFx0XHRyZXR1cm4gXCJFcnJvclwiXG5cdFx0XHRcdFx0Y2FzZSA0OlxuXHRcdFx0XHRcdFx0cmV0dXJuIFwiRmluYWxpemluZ1wiXG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIFwiVm9pZFwiXG5cdFx0XHR9KVxuXHR9XG5cblx0cHVibGljIGFzeW5jIGlzUmFuZG9taXplZChldm1CbG9ja051bWJlcjogYmlnaW50KTogUHJvbWlzZTxib29sZWFuPiB7XG5cdFx0cmV0dXJuIHRoaXMuY29udHJhY3QuaXNSYW5kb21pemVkLnN0YXRpY0NhbGwoZXZtQmxvY2tOdW1iZXIpXG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgcmFuZG9taXplKG9wdGlvbnM/OiB7XG5cdFx0ZXZtQ29uZmlybWF0aW9ucz86IG51bWJlclxuXHRcdGV2bUdhc1ByaWNlPzogYmlnaW50XG5cdFx0ZXZtVGltZW91dD86IG51bWJlclxuXHRcdG9uUmFuZG9taXplVHJhbnNhY3Rpb24/OiAodHhIYXNoOiBXaXRuZXQuSGFzaCkgPT4gYW55XG5cdFx0b25SYW5kb21pemVUcmFuc2FjdGlvblJlY2VpcHQ/OiAocmVjZWlwdDogVHJhbnNhY3Rpb25SZWNlaXB0IHwgbnVsbCkgPT4gYW55XG5cdH0pOiBQcm9taXNlPENvbnRyYWN0VHJhbnNhY3Rpb25SZWNlaXB0IHwgVHJhbnNhY3Rpb25SZWNlaXB0IHwgbnVsbD4ge1xuXHRcdGNvbnN0IGV2bUdhc1ByaWNlID1cblx0XHRcdG9wdGlvbnM/LmV2bUdhc1ByaWNlIHx8IChhd2FpdCB0aGlzLnByb3ZpZGVyLmdldEZlZURhdGEoKSkuZ2FzUHJpY2UgfHwgMG5cblx0XHRjb25zdCBldm1SYW5kb21pemVGZWUgPSBhd2FpdCB0aGlzLmVzdGltYXRlUmFuZG9taXplRmVlKGV2bUdhc1ByaWNlKVxuXHRcdGNvbnN0IGV2bVRyYW5zYWN0aW9uOiBDb250cmFjdFRyYW5zYWN0aW9uID0gYXdhaXQgdGhpcy5jb250cmFjdFxuXHRcdFx0LmdldEZ1bmN0aW9uKFwicmFuZG9taXplKClcIilcblx0XHRcdC5wb3B1bGF0ZVRyYW5zYWN0aW9uKClcblx0XHRldm1UcmFuc2FjdGlvbi5nYXNQcmljZSA9IGV2bUdhc1ByaWNlIHx8IGV2bVRyYW5zYWN0aW9uPy5nYXNQcmljZVxuXHRcdGV2bVRyYW5zYWN0aW9uLnZhbHVlID0gZXZtUmFuZG9taXplRmVlXG5cdFx0cmV0dXJuIHRoaXMuc2lnbmVyXG5cdFx0XHQuc2VuZFRyYW5zYWN0aW9uKGV2bVRyYW5zYWN0aW9uKVxuXHRcdFx0LnRoZW4oKHJlc3BvbnNlKSA9PiB7XG5cdFx0XHRcdGlmIChvcHRpb25zPy5vblJhbmRvbWl6ZVRyYW5zYWN0aW9uKVxuXHRcdFx0XHRcdG9wdGlvbnMub25SYW5kb21pemVUcmFuc2FjdGlvbihyZXNwb25zZS5oYXNoKVxuXHRcdFx0XHRyZXR1cm4gcmVzcG9uc2Uud2FpdChcblx0XHRcdFx0XHRvcHRpb25zPy5ldm1Db25maXJtYXRpb25zIHx8IDEsXG5cdFx0XHRcdFx0b3B0aW9ucz8uZXZtVGltZW91dCxcblx0XHRcdFx0KVxuXHRcdFx0fSlcblx0XHRcdC50aGVuKChyZWNlaXB0KSA9PiB7XG5cdFx0XHRcdGlmIChvcHRpb25zPy5vblJhbmRvbWl6ZVRyYW5zYWN0aW9uUmVjZWlwdClcblx0XHRcdFx0XHRvcHRpb25zLm9uUmFuZG9taXplVHJhbnNhY3Rpb25SZWNlaXB0KHJlY2VpcHQpXG5cdFx0XHRcdHJldHVybiByZWNlaXB0XG5cdFx0XHR9KVxuXHR9XG59XG4iXX0=
@@ -0,0 +1,8 @@
1
+ export * from "./wrappers/WitOracle.js";
2
+ export * from "./wrappers/WitOracleConsumer.js";
3
+ export * from "./wrappers/WitOracleRadonRegistry.js";
4
+ export * from "./wrappers/WitOracleRadonRequestFactory.js";
5
+ export * from "./wrappers/WitPriceFeeds.js";
6
+ export * from "./wrappers/WitPriceFeedsLegacy.js";
7
+ export * from "./wrappers/WitRandomness.js";
8
+ //# sourceMappingURL=wrappers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrappers.d.ts","sourceRoot":"","sources":["../../../src/lib/wrappers.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAA;AACvC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,sCAAsC,CAAA;AACpD,cAAc,4CAA4C,CAAA;AAC1D,cAAc,6BAA6B,CAAA;AAC3C,cAAc,mCAAmC,CAAA;AACjD,cAAc,6BAA6B,CAAA"}
@@ -0,0 +1,8 @@
1
+ export * from "./wrappers/WitOracle.js";
2
+ export * from "./wrappers/WitOracleConsumer.js";
3
+ export * from "./wrappers/WitOracleRadonRegistry.js";
4
+ export * from "./wrappers/WitOracleRadonRequestFactory.js";
5
+ export * from "./wrappers/WitPriceFeeds.js";
6
+ export * from "./wrappers/WitPriceFeedsLegacy.js";
7
+ export * from "./wrappers/WitRandomness.js";
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JhcHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3dyYXBwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMseUJBQXlCLENBQUE7QUFDdkMsY0FBYyxpQ0FBaUMsQ0FBQTtBQUMvQyxjQUFjLHNDQUFzQyxDQUFBO0FBQ3BELGNBQWMsNENBQTRDLENBQUE7QUFDMUQsY0FBYyw2QkFBNkIsQ0FBQTtBQUMzQyxjQUFjLG1DQUFtQyxDQUFBO0FBQ2pELGNBQWMsNkJBQTZCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi93cmFwcGVycy9XaXRPcmFjbGUuanNcIlxuZXhwb3J0ICogZnJvbSBcIi4vd3JhcHBlcnMvV2l0T3JhY2xlQ29uc3VtZXIuanNcIlxuZXhwb3J0ICogZnJvbSBcIi4vd3JhcHBlcnMvV2l0T3JhY2xlUmFkb25SZWdpc3RyeS5qc1wiXG5leHBvcnQgKiBmcm9tIFwiLi93cmFwcGVycy9XaXRPcmFjbGVSYWRvblJlcXVlc3RGYWN0b3J5LmpzXCJcbmV4cG9ydCAqIGZyb20gXCIuL3dyYXBwZXJzL1dpdFByaWNlRmVlZHMuanNcIlxuZXhwb3J0ICogZnJvbSBcIi4vd3JhcHBlcnMvV2l0UHJpY2VGZWVkc0xlZ2FjeS5qc1wiXG5leHBvcnQgKiBmcm9tIFwiLi93cmFwcGVycy9XaXRSYW5kb21uZXNzLmpzXCJcbiJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@witnet/solidity",
3
- "version": "3.0.4",
3
+ "version": "3.0.5",
4
4
  "description": "Wit/Oracle Solidity Framework for EVM-compatible chains",
5
5
  "author": "Witnet Foundation <info@witnet.foundation>",
6
6
  "license": "MIT",
@@ -10,89 +10,113 @@
10
10
  },
11
11
  "type": "module",
12
12
  "keywords": [
13
- "bridge",
14
13
  "witnet",
15
- "ethereum"
14
+ "wit/oracle",
15
+ "solidity",
16
+ "oracle",
17
+ "bridge",
18
+ "web3",
19
+ "arbitrum",
20
+ "avalanche",
21
+ "base",
22
+ "celo",
23
+ "conflux",
24
+ "cronos",
25
+ "doge",
26
+ "ethereum",
27
+ "gnosis",
28
+ "kaia",
29
+ "kava",
30
+ "kcc",
31
+ "moonbeam",
32
+ "optimism",
33
+ "polygon",
34
+ "scroll",
35
+ "unichain",
36
+ "ten",
37
+ "worldchain"
16
38
  ],
39
+ "bin": {
40
+ "witeth": "src/bin/index.cjs",
41
+ "witnet-ethers": "src/bin/index.cjs",
42
+ "witnet-solidity": "src/bin/index.cjs",
43
+ "randomizer": "src/bin/bots/randomizer.cjs"
44
+ },
17
45
  "exports": {
18
- ".": "./src/index.js",
46
+ ".": {
47
+ "default": "./dist/src/index.js",
48
+ "require": "./dist/src/index.js",
49
+ "types": "./dist/src/*.d.ts"
50
+ },
19
51
  "./contracts/*": "./contracts/",
20
- "./utils": "./src/utils.js"
52
+ "./utils": {
53
+ "default": "./dist/src/lib/utils.js",
54
+ "require": "./dist/src/lib/utils.js",
55
+ "types": "./dist/src/lib/*.d.ts"
56
+ }
21
57
  },
22
58
  "files": [
23
59
  "artifacts",
24
60
  "build/contracts",
61
+ "dist",
25
62
  "contracts",
26
- "migrations/*.json",
27
- "settings",
28
- "src"
63
+ "scripts",
64
+ "src/bin"
29
65
  ],
30
66
  "dependencies": {
31
- "dotenv": "^16.6.1",
32
- "lodash.merge": "^4.6.2"
67
+ "@witnet/sdk": "^1.2.2",
68
+ "cbor": "^10.0.11",
69
+ "cross-env": "^10.1.0",
70
+ "dotenv": "^17.2.3",
71
+ "ethers": "^6.15.0",
72
+ "ethrpc-gateway": "^2.3.1",
73
+ "inquirer": "^8.2.7",
74
+ "lodash.merge": "^4.6.2",
75
+ "moment": "^2.30.1",
76
+ "node-cron": "^4.2.1",
77
+ "promise-poller": "^1.9.1"
33
78
  },
34
79
  "devDependencies": {
35
- "@matterlabs/hardhat-zksync": "^1.6.2",
36
- "@matterlabs/hardhat-zksync-deploy": "^1.8.0",
37
- "@matterlabs/hardhat-zksync-solc": "^1.5.1",
38
- "@matterlabs/hardhat-zksync-upgradable": "^1.10.0",
39
- "@matterlabs/hardhat-zksync-verify": "^1.9.0",
40
- "@nomicfoundation/hardhat-ethers": "^4.0.1",
41
- "@nomicfoundation/hardhat-toolbox": "^6.1.0",
42
- "@nomicfoundation/hardhat-verify": "^3.0.2",
80
+ "@biomejs/biome": "^2.3.4",
81
+ "@nomicfoundation/hardhat-verify": "^3.0.5",
43
82
  "@openzeppelin/contracts": "^5.4.0",
44
83
  "@openzeppelin/contracts-upgradeable": "^5.4.0",
84
+ "@types/lodash.merge": "^4.6.9",
85
+ "@types/node": "^24.10.0",
45
86
  "ado-contracts": "1.0.0",
46
- "bn.js": "^4.12.2",
47
- "chai": "^4.5.0",
48
- "custom-error-test-helper": "^1.0.6",
49
- "eslint": "^8.57.1",
50
- "eslint-config-standard": "^17.1.0",
51
- "eslint-plugin-import": "^2.32.0",
52
- "eslint-plugin-n": "^16.6.2",
53
- "eslint-plugin-promise": "^6.6.0",
87
+ "chai": "^6.2.0",
54
88
  "eth-gas-reporter": "^0.2.27",
55
89
  "eth-helpers": "^1.3.1",
56
- "hardhat": "^3.0.6",
57
- "hardhat-gas-reporter": "^2.3.0",
58
- "nanoassert": "^2.0.0",
90
+ "hardhat": "^3.0.11",
91
+ "nanoassert": "^3.0.1",
59
92
  "sha3-wasm": "^1.0.0",
60
- "solhint": "^5.2.0",
93
+ "solhint": "^6.0.1",
61
94
  "truffle": "^5.11.5",
62
- "truffle-assertions": "^0.9.2",
63
- "truffle-flattener": "^1.6.0",
64
95
  "truffle-plugin-verify": "^0.6.7",
65
- "web3": "^4.16.0",
66
- "zksync-ethers": "^6.20.1"
96
+ "typescript": "^5.9.3",
97
+ "utf-8-validate": "^5.0.10",
98
+ "web3": "^4.16.0"
67
99
  },
68
100
  "scripts": {
69
- "clean": "pnpm run clean:artifacts && pnpm run clean:build && pnpm run clean:cache && pnpm run clean:flattened",
70
- "clean:artifacts": "node ./scripts/clean.cjs artifacts migrations/zksync/artifacts-zk",
101
+ "build": "tsc -p tsconfig.json",
102
+ "clean": "npm run clean:artifacts && npm run clean:build && npm run clean:cache && npm run clean:dist",
103
+ "clean:artifacts": "node ./scripts/clean.cjs artifacts",
71
104
  "clean:build": "node ./scripts/clean.cjs build",
72
- "clean:cache": "node ./scripts/clean.cjs cache migrations/zksync/cache-zk",
73
- "clean:flattened": "node ./scripts/clean.cjs flattened",
105
+ "clean:cache": "node ./scripts/clean.cjs cache",
106
+ "clean:dist": "node ./scripts/clean.cjs dist",
74
107
  "compile": "npx truffle compile --all --config ./truffle-config.cjs",
75
- "console": "npx hardhat console",
76
- "flatten": "node ./scripts/flatten.cjs 2>&1",
77
- "flatten:all": "pnpm run clean && pnpm run flatten:core && pnpm run flatten:apps && pnpm run flatten:libs && pnpm run flatten:proxy",
78
- "flatten:apps": "pnpm run flatten contracts/apps/",
79
- "flatten:core": "pnpm run flatten contracts/core/",
80
- "flatten:libs": "pnpm run flatten contracts/libs/WitOracleResultErrorsLib.sol && pnpm run flatten contracts/libs/WitOracleRadonEncodingLib.sol && pnpm run flatten contracts/libs/WitPriceFeedsLegacyDataLib.sol",
81
- "flatten:proxy": "pnpm run flatten contracts/core/WitnetProxy.sol",
82
- "fmt:js": "eslint \"**/*.cjs\"",
108
+ "console": "npx truffle console",
109
+ "fmt:js": "npx biome check",
83
110
  "fmt:sol": "solhint --max-warnings 0 \"contracts/**/*.sol\"",
84
- "fmt!:js": "eslint \"**/*.cjs\" --fix",
111
+ "fmt!:js": "npx biome check --write --unsafe",
85
112
  "fmt!:sol": "solhint --max-warnings 0 \"contracts/**/*.sol\" --fix",
86
113
  "fmt!": "pnpm run fmt!:js && pnpm run fmt!:sol",
87
114
  "fmt": "pnpm run fmt:js && pnpm run fmt:sol",
88
115
  "deploy": "npx truffle migrate --config ./truffle-config.cjs",
89
- "ops:rng:sla": "npx truffle migrate --migrations_directory ./migrations/ops/rng/sla --compile-none --network",
90
- "ops:drp:pfs": "npx truffle migrate --migrations_directory ./migrations/ops/drp/pfs --compile-none --network",
91
- "ops:drp:wrb": "npx truffle migrate --migrations_directory ./migrations/ops/drp/wrb --compile-none --network",
92
- "test": "npx truffle test",
116
+ "ops:wrb:acls": "npx truffle migrate --config ./truffle-config.cjs --migrations_directory ./migrations/ops/wrb/acls --compile-none --network",
117
+ "ops:curator": "npx truffle migrate --config ./truffle-config.cjs --migrations_directory ./migrations/ops/wrb/curator --compile-none --network",
118
+ "postinstall": "node ./scripts/postinstall.cjs",
93
119
  "verify": "npx hardhat run ./scripts/verify.js 2>&1",
94
- "zksync:compile": "npx hardhat --config migrations/zksync/hardhat.config.js compile",
95
- "zksync:deploy": "npx hardhat --config migrations/zksync/hardhat.config.js deploy-zksync:contract --deployment-type create2 --verify --contract-name",
96
- "zksync:verify": "npx hardhat --config migrations/zksync/hardhat.config.js verify"
120
+ "witeth": "cross-env-shell WITNET_SDK_RADON_ASSETS_PATH='../..' node ./src/bin/index.cjs"
97
121
  }
98
122
  }
@@ -0,0 +1,21 @@
1
+ const exec = require("node:child_process").execSync
2
+ const os = require("node:os")
3
+ const fs = require("node:fs")
4
+
5
+ if (process.argv.length < 3) {
6
+ console.log(`Usage: ${0} ${1} /path/to/be/cleaned`)
7
+ process.exit(0)
8
+ }
9
+
10
+ process.argv.slice(2).forEach((target) => {
11
+ if (fs.existsSync(target)) {
12
+ if (os.type() === "Windows_NT") {
13
+ target = target.replace(/\//g, "\\")
14
+ exec(`del ${target}\\ /f /q /s`)
15
+ exec(`rmdir ${target}\\ /q /s`)
16
+ } else {
17
+ target = target.replace(/\\/g, "/")
18
+ exec(`rm -rf ${target}`)
19
+ }
20
+ }
21
+ })
@@ -0,0 +1,38 @@
1
+ const assert = require("nanoassert")
2
+ const { utils } = require("eth-helpers")
3
+ const keccak = require("sha3-wasm").keccak256
4
+
5
+ const prefix = Buffer.from([0xff])
6
+
7
+ /**
8
+ * Generate Ethereum CREATE2 address
9
+ *
10
+ * @param {string|Buffer} address Ethereum address of creator contract as
11
+ * string or as a 20 byte `Buffer`
12
+ * @param {string|Buffer} salt 256 bit salt as either string or 32 byte `Buffer`
13
+ * @param {string|Buffer} initCode init_code as string or Buffer
14
+ * @returns {string} result address as hex encoded string. Not
15
+ * checksum'ed. This can be done with
16
+ * `eth-checksum` or similar modules
17
+ */
18
+ module.exports = function create2(address, salt, initCode) {
19
+ if (typeof address === "string") address = utils.parse.address(address)
20
+ if (typeof salt === "string") salt = utils.parse.uint256(salt)
21
+ if (typeof initCode === "string") initCode = utils.parse.bytes(initCode)
22
+
23
+ assert(address.byteLength === 20, "address must be 20 bytes")
24
+ assert(salt.byteLength === 32, "salt must be 32 bytes")
25
+ assert(initCode.byteLength != null, "initCode must be Buffer")
26
+
27
+ const codeHash = keccak().update(initCode).digest()
28
+
29
+ return utils.format.address(
30
+ keccak()
31
+ .update(prefix)
32
+ .update(address)
33
+ .update(salt)
34
+ .update(codeHash)
35
+ .digest()
36
+ .slice(-20),
37
+ )
38
+ }
@@ -0,0 +1,45 @@
1
+ const assert = require("nanoassert")
2
+ const { utils } = require("eth-helpers")
3
+ const keccak = require("sha3-wasm").keccak256
4
+
5
+ const factoryPrefix = Buffer.from([0xff])
6
+
7
+ /**
8
+ * Generate Ethereum CREATE3-library address
9
+ *
10
+ * @param {string|Buffer} address Ethereum address of creator contract as
11
+ * string or as a 20 byte `Buffer`
12
+ * @param {string|Buffer} salt 256 bit salt as either string or 32 byte `Buffer`
13
+ * @returns {string} result address as hex encoded string. Not
14
+ * checksum'ed. This can be done with
15
+ * `eth-checksum` or similar modules
16
+ */
17
+ module.exports = function create3(address, salt) {
18
+ if (typeof address === "string") address = utils.parse.address(address)
19
+ if (typeof salt === "string") salt = utils.parse.uint256(salt)
20
+
21
+ assert(address.byteLength === 20, "address must be 20 bytes")
22
+ assert(salt.byteLength === 32, "salt must be 32 bytes")
23
+
24
+ const factoryHash = utils.parse.uint256(
25
+ "0x21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f",
26
+ )
27
+ const factoryAddr = keccak()
28
+ .update(factoryPrefix)
29
+ .update(address)
30
+ .update(salt)
31
+ .update(factoryHash)
32
+ .digest()
33
+ .slice(-20)
34
+
35
+ assert(factoryAddr.byteLength === 20, "address must be 20 bytes")
36
+
37
+ return utils.format.address(
38
+ keccak()
39
+ .update(Buffer.from([0xd6, 0x94]))
40
+ .update(factoryAddr)
41
+ .update(Buffer.from([0x01]))
42
+ .digest()
43
+ .slice(-20),
44
+ )
45
+ }
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env node
2
+ const fs = require("node:fs")
3
+ if (
4
+ !fs.existsSync(".no-postinstall") &&
5
+ !fs.existsSync(`${process.env.INIT_CWD}/.env_witnet`)
6
+ ) {
7
+ console.info(`Copying .env_witnet file from ${process.env.INIT_CWD}...`)
8
+ fs.cpSync(".env_witnet", `${process.env.INIT_CWD}/.env_witnet`)
9
+ }
@@ -0,0 +1,27 @@
1
+ const exec = require("node:child_process").execSync
2
+ const os = require("node:os")
3
+ const fs = require("node:fs")
4
+
5
+ if (fs.existsSync("./artifacts")) {
6
+ if (os.type() === "Windows_NT") {
7
+ exec("del /s /q artifacts\\*.dbg.json")
8
+ } else {
9
+ exec('find ./artifacts -name "*.dbg.json" -exec rm -r {} \\;')
10
+ }
11
+ }
12
+
13
+ if (fs.existsSync("./build/contracts")) {
14
+ exec('sed -i -- "/\bsourcePath\b/d" ./build/contracts/*.json')
15
+ }
16
+
17
+ if (fs.existsSync("./migrations/frosts")) {
18
+ exec('sed -i -- "/\bsourcePath\b/d" ./migrations/frosts/*.json')
19
+ }
20
+
21
+ if (fs.existsSync("./migrations/frosts/apps")) {
22
+ exec('sed -i -- "/\bsourcePath\b/d" ./migrations/frosts/apps/*.json')
23
+ }
24
+
25
+ if (fs.existsSync("./migrations/frosts/core")) {
26
+ exec('sed -i -- "/\bsourcePath\b/d" ./migrations/frosts/core/*.json')
27
+ }