@recoillink/aleo-sdk 0.0.0-stage → 45.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (259) hide show
  1. package/LICENSE.md +193 -0
  2. package/README.md +56 -2
  3. package/dist/artifacts.d.ts +14 -0
  4. package/dist/artifacts.d.ts.map +1 -0
  5. package/dist/artifacts.js +23 -0
  6. package/dist/artifacts.js.map +1 -0
  7. package/dist/clients/base.d.ts +27 -0
  8. package/dist/clients/base.d.ts.map +1 -0
  9. package/dist/clients/base.js +105 -0
  10. package/dist/clients/base.js.map +1 -0
  11. package/dist/clients/protocol.d.ts +26 -0
  12. package/dist/clients/protocol.d.ts.map +1 -0
  13. package/dist/clients/protocol.js +104 -0
  14. package/dist/clients/protocol.js.map +1 -0
  15. package/dist/clients/provider.d.ts +42 -0
  16. package/dist/clients/provider.d.ts.map +1 -0
  17. package/dist/clients/provider.js +460 -0
  18. package/dist/clients/provider.js.map +1 -0
  19. package/dist/clients/provider.node.d.ts +7 -0
  20. package/dist/clients/provider.node.d.ts.map +1 -0
  21. package/dist/clients/provider.node.js +20 -0
  22. package/dist/clients/provider.node.js.map +1 -0
  23. package/dist/clients/signer.d.ts +32 -0
  24. package/dist/clients/signer.d.ts.map +1 -0
  25. package/dist/clients/signer.js +137 -0
  26. package/dist/clients/signer.js.map +1 -0
  27. package/dist/constants.d.ts +8 -0
  28. package/dist/constants.d.ts.map +1 -0
  29. package/dist/constants.js +8 -0
  30. package/dist/constants.js.map +1 -0
  31. package/dist/hook/base.d.ts +19 -0
  32. package/dist/hook/base.d.ts.map +1 -0
  33. package/dist/hook/base.js +29 -0
  34. package/dist/hook/base.js.map +1 -0
  35. package/dist/hook/hook-artifact-manager.d.ts +25 -0
  36. package/dist/hook/hook-artifact-manager.d.ts.map +1 -0
  37. package/dist/hook/hook-artifact-manager.js +62 -0
  38. package/dist/hook/hook-artifact-manager.js.map +1 -0
  39. package/dist/hook/hook-query.d.ts +44 -0
  40. package/dist/hook/hook-query.d.ts.map +1 -0
  41. package/dist/hook/hook-query.js +103 -0
  42. package/dist/hook/hook-query.js.map +1 -0
  43. package/dist/hook/hook-tx.d.ts +46 -0
  44. package/dist/hook/hook-tx.d.ts.map +1 -0
  45. package/dist/hook/hook-tx.js +89 -0
  46. package/dist/hook/hook-tx.js.map +1 -0
  47. package/dist/hook/igp-hook.d.ts +21 -0
  48. package/dist/hook/igp-hook.d.ts.map +1 -0
  49. package/dist/hook/igp-hook.js +145 -0
  50. package/dist/hook/igp-hook.js.map +1 -0
  51. package/dist/hook/merkle-tree-hook.d.ts +21 -0
  52. package/dist/hook/merkle-tree-hook.d.ts.map +1 -0
  53. package/dist/hook/merkle-tree-hook.js +58 -0
  54. package/dist/hook/merkle-tree-hook.js.map +1 -0
  55. package/dist/index.d.ts +15 -0
  56. package/dist/index.d.ts.map +1 -0
  57. package/dist/index.js +14 -0
  58. package/dist/index.js.map +1 -0
  59. package/dist/ism/base.d.ts +15 -0
  60. package/dist/ism/base.d.ts.map +1 -0
  61. package/dist/ism/base.js +25 -0
  62. package/dist/ism/base.js.map +1 -0
  63. package/dist/ism/ism-artifact-manager.d.ts +12 -0
  64. package/dist/ism/ism-artifact-manager.d.ts.map +1 -0
  65. package/dist/ism/ism-artifact-manager.js +62 -0
  66. package/dist/ism/ism-artifact-manager.js.map +1 -0
  67. package/dist/ism/ism-query.d.ts +51 -0
  68. package/dist/ism/ism-query.d.ts.map +1 -0
  69. package/dist/ism/ism-query.js +155 -0
  70. package/dist/ism/ism-query.js.map +1 -0
  71. package/dist/ism/ism-tx.d.ts +14 -0
  72. package/dist/ism/ism-tx.d.ts.map +1 -0
  73. package/dist/ism/ism-tx.js +77 -0
  74. package/dist/ism/ism-tx.js.map +1 -0
  75. package/dist/ism/multisig-ism.d.ts +20 -0
  76. package/dist/ism/multisig-ism.d.ts.map +1 -0
  77. package/dist/ism/multisig-ism.js +56 -0
  78. package/dist/ism/multisig-ism.js.map +1 -0
  79. package/dist/ism/routing-ism.d.ts +20 -0
  80. package/dist/ism/routing-ism.d.ts.map +1 -0
  81. package/dist/ism/routing-ism.js +108 -0
  82. package/dist/ism/routing-ism.js.map +1 -0
  83. package/dist/ism/test-ism.d.ts +20 -0
  84. package/dist/ism/test-ism.d.ts.map +1 -0
  85. package/dist/ism/test-ism.js +50 -0
  86. package/dist/ism/test-ism.js.map +1 -0
  87. package/dist/mailbox/mailbox-artifact-manager.d.ts +21 -0
  88. package/dist/mailbox/mailbox-artifact-manager.d.ts.map +1 -0
  89. package/dist/mailbox/mailbox-artifact-manager.js +36 -0
  90. package/dist/mailbox/mailbox-artifact-manager.js.map +1 -0
  91. package/dist/mailbox/mailbox-query.d.ts +12 -0
  92. package/dist/mailbox/mailbox-query.d.ts.map +1 -0
  93. package/dist/mailbox/mailbox-query.js +33 -0
  94. package/dist/mailbox/mailbox-query.js.map +1 -0
  95. package/dist/mailbox/mailbox-tx.d.ts +42 -0
  96. package/dist/mailbox/mailbox-tx.d.ts.map +1 -0
  97. package/dist/mailbox/mailbox-tx.js +94 -0
  98. package/dist/mailbox/mailbox-tx.js.map +1 -0
  99. package/dist/mailbox/mailbox.d.ts +29 -0
  100. package/dist/mailbox/mailbox.d.ts.map +1 -0
  101. package/dist/mailbox/mailbox.js +165 -0
  102. package/dist/mailbox/mailbox.js.map +1 -0
  103. package/dist/programs.d.ts +3 -0
  104. package/dist/programs.d.ts.map +1 -0
  105. package/dist/programs.js +14 -0
  106. package/dist/programs.js.map +1 -0
  107. package/dist/runtime/mainnet.d.ts +3 -0
  108. package/dist/runtime/mainnet.d.ts.map +1 -0
  109. package/dist/runtime/mainnet.js +5 -0
  110. package/dist/runtime/mainnet.js.map +1 -0
  111. package/dist/runtime/provider.d.ts +10 -0
  112. package/dist/runtime/provider.d.ts.map +1 -0
  113. package/dist/runtime/provider.js +18 -0
  114. package/dist/runtime/provider.js.map +1 -0
  115. package/dist/runtime/provider.test.d.ts +2 -0
  116. package/dist/runtime/provider.test.d.ts.map +1 -0
  117. package/dist/runtime/provider.test.js +45 -0
  118. package/dist/runtime/provider.test.js.map +1 -0
  119. package/dist/runtime/testnet.d.ts +3 -0
  120. package/dist/runtime/testnet.d.ts.map +1 -0
  121. package/dist/runtime/testnet.js +8 -0
  122. package/dist/runtime/testnet.js.map +1 -0
  123. package/dist/runtime.d.ts +5 -0
  124. package/dist/runtime.d.ts.map +1 -0
  125. package/dist/runtime.js +4 -0
  126. package/dist/runtime.js.map +1 -0
  127. package/dist/testing/constants.d.ts +58 -0
  128. package/dist/testing/constants.d.ts.map +1 -0
  129. package/dist/testing/constants.js +60 -0
  130. package/dist/testing/constants.js.map +1 -0
  131. package/dist/testing/index.d.ts +4 -0
  132. package/dist/testing/index.d.ts.map +1 -0
  133. package/dist/testing/index.js +7 -0
  134. package/dist/testing/index.js.map +1 -0
  135. package/dist/testing/node.d.ts +10 -0
  136. package/dist/testing/node.d.ts.map +1 -0
  137. package/dist/testing/node.js +39 -0
  138. package/dist/testing/node.js.map +1 -0
  139. package/dist/testing/utils.d.ts +19 -0
  140. package/dist/testing/utils.d.ts.map +1 -0
  141. package/dist/testing/utils.js +23 -0
  142. package/dist/testing/utils.js.map +1 -0
  143. package/dist/tests/5_ism_artifacts.e2e-test.d.ts +2 -0
  144. package/dist/tests/5_ism_artifacts.e2e-test.d.ts.map +1 -0
  145. package/dist/tests/5_ism_artifacts.e2e-test.js +415 -0
  146. package/dist/tests/5_ism_artifacts.e2e-test.js.map +1 -0
  147. package/dist/tests/6_hook_artifacts.e2e-test.d.ts +2 -0
  148. package/dist/tests/6_hook_artifacts.e2e-test.d.ts.map +1 -0
  149. package/dist/tests/6_hook_artifacts.e2e-test.js +306 -0
  150. package/dist/tests/6_hook_artifacts.e2e-test.js.map +1 -0
  151. package/dist/tests/7a_warp_native_artifacts.e2e-test.d.ts +2 -0
  152. package/dist/tests/7a_warp_native_artifacts.e2e-test.d.ts.map +1 -0
  153. package/dist/tests/7a_warp_native_artifacts.e2e-test.js +105 -0
  154. package/dist/tests/7a_warp_native_artifacts.e2e-test.js.map +1 -0
  155. package/dist/tests/7b_warp_collateral_artifacts.e2e-test.d.ts +2 -0
  156. package/dist/tests/7b_warp_collateral_artifacts.e2e-test.d.ts.map +1 -0
  157. package/dist/tests/7b_warp_collateral_artifacts.e2e-test.js +144 -0
  158. package/dist/tests/7b_warp_collateral_artifacts.e2e-test.js.map +1 -0
  159. package/dist/tests/7c_warp_synthetic_artifacts.e2e-test.d.ts +2 -0
  160. package/dist/tests/7c_warp_synthetic_artifacts.e2e-test.d.ts.map +1 -0
  161. package/dist/tests/7c_warp_synthetic_artifacts.e2e-test.js +99 -0
  162. package/dist/tests/7c_warp_synthetic_artifacts.e2e-test.js.map +1 -0
  163. package/dist/tests/8_mailbox_artifacts.e2e-test.d.ts +2 -0
  164. package/dist/tests/8_mailbox_artifacts.e2e-test.d.ts.map +1 -0
  165. package/dist/tests/8_mailbox_artifacts.e2e-test.js +395 -0
  166. package/dist/tests/8_mailbox_artifacts.e2e-test.js.map +1 -0
  167. package/dist/tests/9_validator_announce_artifacts.e2e-test.d.ts +2 -0
  168. package/dist/tests/9_validator_announce_artifacts.e2e-test.d.ts.map +1 -0
  169. package/dist/tests/9_validator_announce_artifacts.e2e-test.js +138 -0
  170. package/dist/tests/9_validator_announce_artifacts.e2e-test.js.map +1 -0
  171. package/dist/tests/e2e-test.setup.d.ts +2 -0
  172. package/dist/tests/e2e-test.setup.d.ts.map +1 -0
  173. package/dist/tests/e2e-test.setup.js +33 -0
  174. package/dist/tests/e2e-test.setup.js.map +1 -0
  175. package/dist/tests/warp-artifact-test-suite.d.ts +34 -0
  176. package/dist/tests/warp-artifact-test-suite.d.ts.map +1 -0
  177. package/dist/tests/warp-artifact-test-suite.js +672 -0
  178. package/dist/tests/warp-artifact-test-suite.js.map +1 -0
  179. package/dist/utils/base-query.d.ts +50 -0
  180. package/dist/utils/base-query.d.ts.map +1 -0
  181. package/dist/utils/base-query.js +72 -0
  182. package/dist/utils/base-query.js.map +1 -0
  183. package/dist/utils/helper.crypto.d.ts +4 -0
  184. package/dist/utils/helper.crypto.d.ts.map +1 -0
  185. package/dist/utils/helper.crypto.js +12 -0
  186. package/dist/utils/helper.crypto.js.map +1 -0
  187. package/dist/utils/helper.d.ts +63 -0
  188. package/dist/utils/helper.d.ts.map +1 -0
  189. package/dist/utils/helper.js +291 -0
  190. package/dist/utils/helper.js.map +1 -0
  191. package/dist/utils/helper.node.d.ts +9 -0
  192. package/dist/utils/helper.node.d.ts.map +1 -0
  193. package/dist/utils/helper.node.js +159 -0
  194. package/dist/utils/helper.node.js.map +1 -0
  195. package/dist/utils/helper.test.d.ts +2 -0
  196. package/dist/utils/helper.test.d.ts.map +1 -0
  197. package/dist/utils/helper.test.js +22 -0
  198. package/dist/utils/helper.test.js.map +1 -0
  199. package/dist/utils/provable.d.ts +4 -0
  200. package/dist/utils/provable.d.ts.map +1 -0
  201. package/dist/utils/provable.js +2 -0
  202. package/dist/utils/provable.js.map +1 -0
  203. package/dist/utils/types.d.ts +104 -0
  204. package/dist/utils/types.d.ts.map +1 -0
  205. package/dist/utils/types.js +64 -0
  206. package/dist/utils/types.js.map +1 -0
  207. package/dist/validator-announce/validator-announce-artifact-manager.d.ts +21 -0
  208. package/dist/validator-announce/validator-announce-artifact-manager.d.ts.map +1 -0
  209. package/dist/validator-announce/validator-announce-artifact-manager.js +27 -0
  210. package/dist/validator-announce/validator-announce-artifact-manager.js.map +1 -0
  211. package/dist/validator-announce/validator-announce-query.d.ts +15 -0
  212. package/dist/validator-announce/validator-announce-query.d.ts.map +1 -0
  213. package/dist/validator-announce/validator-announce-query.js +32 -0
  214. package/dist/validator-announce/validator-announce-query.js.map +1 -0
  215. package/dist/validator-announce/validator-announce-tx.d.ts +11 -0
  216. package/dist/validator-announce/validator-announce-tx.d.ts.map +1 -0
  217. package/dist/validator-announce/validator-announce-tx.js +20 -0
  218. package/dist/validator-announce/validator-announce-tx.js.map +1 -0
  219. package/dist/validator-announce/validator-announce.d.ts +29 -0
  220. package/dist/validator-announce/validator-announce.d.ts.map +1 -0
  221. package/dist/validator-announce/validator-announce.js +71 -0
  222. package/dist/validator-announce/validator-announce.js.map +1 -0
  223. package/dist/warp/collateral-token.d.ts +21 -0
  224. package/dist/warp/collateral-token.d.ts.map +1 -0
  225. package/dist/warp/collateral-token.js +108 -0
  226. package/dist/warp/collateral-token.js.map +1 -0
  227. package/dist/warp/native-token.d.ts +21 -0
  228. package/dist/warp/native-token.d.ts.map +1 -0
  229. package/dist/warp/native-token.js +114 -0
  230. package/dist/warp/native-token.js.map +1 -0
  231. package/dist/warp/provider-query.d.ts +22 -0
  232. package/dist/warp/provider-query.d.ts.map +1 -0
  233. package/dist/warp/provider-query.js +89 -0
  234. package/dist/warp/provider-query.js.map +1 -0
  235. package/dist/warp/synthetic-token.d.ts +21 -0
  236. package/dist/warp/synthetic-token.d.ts.map +1 -0
  237. package/dist/warp/synthetic-token.js +108 -0
  238. package/dist/warp/synthetic-token.js.map +1 -0
  239. package/dist/warp/warp-artifact-manager.d.ts +15 -0
  240. package/dist/warp/warp-artifact-manager.d.ts.map +1 -0
  241. package/dist/warp/warp-artifact-manager.js +48 -0
  242. package/dist/warp/warp-artifact-manager.js.map +1 -0
  243. package/dist/warp/warp-query.d.ts +76 -0
  244. package/dist/warp/warp-query.d.ts.map +1 -0
  245. package/dist/warp/warp-query.js +321 -0
  246. package/dist/warp/warp-query.js.map +1 -0
  247. package/dist/warp/warp-query.test.d.ts +2 -0
  248. package/dist/warp/warp-query.test.d.ts.map +1 -0
  249. package/dist/warp/warp-query.test.js +270 -0
  250. package/dist/warp/warp-query.test.js.map +1 -0
  251. package/dist/warp/warp-tx.d.ts +58 -0
  252. package/dist/warp/warp-tx.d.ts.map +1 -0
  253. package/dist/warp/warp-tx.js +229 -0
  254. package/dist/warp/warp-tx.js.map +1 -0
  255. package/dist/warp/warp-tx.test.d.ts +2 -0
  256. package/dist/warp/warp-tx.test.d.ts.map +1 -0
  257. package/dist/warp/warp-tx.test.js +44 -0
  258. package/dist/warp/warp-tx.test.js.map +1 -0
  259. package/package.json +91 -3
@@ -0,0 +1,306 @@
1
+ import { expect } from 'chai';
2
+ import { step } from 'mocha-steps';
3
+ import { AltVM } from '@recoillink/provider-sdk';
4
+ import { HookType } from '@recoillink/provider-sdk/altvm';
5
+ import { ArtifactState, } from '@recoillink/provider-sdk/artifact';
6
+ import { assert, normalizeConfig } from '@recoillink/utils';
7
+ import { AleoSigner } from '../clients/signer.js';
8
+ import { AleoHookArtifactManager } from '../hook/hook-artifact-manager.js';
9
+ import { AleoIsmArtifactManager } from '../ism/ism-artifact-manager.js';
10
+ import { AleoMailboxArtifactManager } from '../mailbox/mailbox-artifact-manager.js';
11
+ import { TEST_ALEO_CHAIN_METADATA } from '../testing/constants.js';
12
+ import { ALEO_NULL_ADDRESS } from '../utils/helper.js';
13
+ import { AleoNetworkId } from '../utils/types.js';
14
+ describe('6. aleo sdk Hook artifacts e2e tests', async function () {
15
+ this.timeout(100_000);
16
+ let signer;
17
+ let aleoSigner;
18
+ let artifactManager;
19
+ let mailboxAddress;
20
+ before(async () => {
21
+ // test private key with funds
22
+ const privateKey = 'APrivateKey1zkp8CZNn3yeCseEtxuVPbDCwSyhGW6yZKUYKfgXmcpoGPWH';
23
+ const domainId = 1234;
24
+ aleoSigner = await AleoSigner.connectWithSigner(TEST_ALEO_CHAIN_METADATA, privateKey);
25
+ signer = aleoSigner;
26
+ const aleoClient = aleoSigner.getAleoClient();
27
+ // Create ISM for mailbox
28
+ const ismArtifactManager = new AleoIsmArtifactManager(aleoClient);
29
+ const ismWriter = ismArtifactManager.createWriter(AltVM.IsmType.TEST_ISM, aleoSigner);
30
+ const [ism] = await ismWriter.create({
31
+ config: { type: AltVM.IsmType.TEST_ISM },
32
+ });
33
+ // Create a mailbox for hook testing using artifact manager
34
+ const mailboxArtifactManager = new AleoMailboxArtifactManager({ domainId, aleoNetworkId: AleoNetworkId.TESTNET }, aleoClient);
35
+ const mailboxWriter = mailboxArtifactManager.createWriter('mailbox', aleoSigner);
36
+ const [deployedMailbox] = await mailboxWriter.create({
37
+ config: {
38
+ owner: aleoSigner.getSignerAddress(),
39
+ defaultIsm: {
40
+ artifactState: ArtifactState.UNDERIVED,
41
+ deployed: { address: ism.deployed.address },
42
+ },
43
+ defaultHook: {
44
+ artifactState: ArtifactState.UNDERIVED,
45
+ deployed: { address: ALEO_NULL_ADDRESS },
46
+ },
47
+ requiredHook: {
48
+ artifactState: ArtifactState.UNDERIVED,
49
+ deployed: { address: ALEO_NULL_ADDRESS },
50
+ },
51
+ },
52
+ });
53
+ mailboxAddress = deployedMailbox.deployed.address;
54
+ artifactManager = new AleoHookArtifactManager(aleoClient, mailboxAddress);
55
+ });
56
+ describe('MerkleTree Hook', () => {
57
+ let merkleTreeHookAddress;
58
+ step('should create and read a MerkleTree Hook', async () => {
59
+ // Create MerkleTree Hook using artifact writer
60
+ const writer = artifactManager.createWriter(AltVM.HookType.MERKLE_TREE, aleoSigner);
61
+ const [deployedArtifact] = await writer.create({
62
+ artifactState: ArtifactState.NEW,
63
+ config: {
64
+ type: AltVM.HookType.MERKLE_TREE,
65
+ },
66
+ });
67
+ merkleTreeHookAddress = deployedArtifact.deployed.address;
68
+ expect(merkleTreeHookAddress).to.be.a('string').and.not.be.empty;
69
+ // Read using artifact manager's specific reader
70
+ const reader = artifactManager.createReader(AltVM.HookType.MERKLE_TREE);
71
+ const readHook = await reader.read(merkleTreeHookAddress);
72
+ expect(readHook.artifactState).to.equal(ArtifactState.DEPLOYED);
73
+ expect(readHook.deployed.address).to.equal(merkleTreeHookAddress);
74
+ expect(readHook.config.type).to.equal(AltVM.HookType.MERKLE_TREE);
75
+ });
76
+ });
77
+ describe('IGP Hook', () => {
78
+ let igpHookAddress;
79
+ const DOMAIN_1 = 42;
80
+ const DOMAIN_2 = 96;
81
+ step('should create and read an IGP Hook', async () => {
82
+ // Create IGP Hook using artifact writer
83
+ const writer = artifactManager.createWriter(AltVM.HookType.INTERCHAIN_GAS_PAYMASTER, aleoSigner);
84
+ const [deployedArtifact] = await writer.create({
85
+ artifactState: ArtifactState.NEW,
86
+ config: {
87
+ type: AltVM.HookType.INTERCHAIN_GAS_PAYMASTER,
88
+ owner: aleoSigner.getSignerAddress(),
89
+ beneficiary: aleoSigner.getSignerAddress(),
90
+ oracleKey: aleoSigner.getSignerAddress(),
91
+ overhead: {
92
+ [DOMAIN_1]: 50000,
93
+ [DOMAIN_2]: 75000,
94
+ },
95
+ oracleConfig: {
96
+ [DOMAIN_1]: {
97
+ tokenExchangeRate: '1000000000000000000',
98
+ gasPrice: '1000000000',
99
+ },
100
+ [DOMAIN_2]: {
101
+ tokenExchangeRate: '2000000000000000000',
102
+ gasPrice: '2000000000',
103
+ },
104
+ },
105
+ },
106
+ });
107
+ igpHookAddress = deployedArtifact.deployed.address;
108
+ expect(igpHookAddress).to.be.a('string').and.not.be.empty;
109
+ // Read using artifact manager's specific reader
110
+ const reader = artifactManager.createReader(AltVM.HookType.INTERCHAIN_GAS_PAYMASTER);
111
+ const readHook = await reader.read(igpHookAddress);
112
+ expect(readHook.artifactState).to.equal(ArtifactState.DEPLOYED);
113
+ expect(readHook.deployed.address).to.equal(igpHookAddress);
114
+ expect(readHook.config.type).to.equal(AltVM.HookType.INTERCHAIN_GAS_PAYMASTER);
115
+ expect(readHook.config.owner).to.equal(aleoSigner.getSignerAddress());
116
+ // Verify gas configs
117
+ const expectedConfig = {
118
+ type: AltVM.HookType.INTERCHAIN_GAS_PAYMASTER,
119
+ owner: aleoSigner.getSignerAddress(),
120
+ beneficiary: aleoSigner.getSignerAddress(),
121
+ oracleKey: aleoSigner.getSignerAddress(),
122
+ overhead: {
123
+ [DOMAIN_1]: 50000,
124
+ [DOMAIN_2]: 75000,
125
+ },
126
+ oracleConfig: {
127
+ [DOMAIN_1]: {
128
+ tokenExchangeRate: '1000000000000000000',
129
+ gasPrice: '1000000000',
130
+ },
131
+ [DOMAIN_2]: {
132
+ tokenExchangeRate: '2000000000000000000',
133
+ gasPrice: '2000000000',
134
+ },
135
+ },
136
+ };
137
+ expect(normalizeConfig(readHook.config)).to.deep.equal(normalizeConfig(expectedConfig));
138
+ });
139
+ step('should verify IGP Hook gas config updates', async () => {
140
+ // Update one of the gas configs using artifact writer
141
+ const writer = artifactManager.createWriter(AltVM.HookType.INTERCHAIN_GAS_PAYMASTER, aleoSigner);
142
+ // Read current config
143
+ const reader = artifactManager.createReader(AltVM.HookType.INTERCHAIN_GAS_PAYMASTER);
144
+ const currentHook = await reader.read(igpHookAddress);
145
+ // Update DOMAIN_1 config
146
+ const updatedArtifact = {
147
+ artifactState: ArtifactState.DEPLOYED,
148
+ config: {
149
+ ...currentHook.config,
150
+ overhead: {
151
+ ...currentHook.config.overhead,
152
+ [DOMAIN_1]: 60000, // increased overhead
153
+ },
154
+ oracleConfig: {
155
+ ...currentHook.config.oracleConfig,
156
+ [DOMAIN_1]: {
157
+ tokenExchangeRate: '1500000000000000000', // updated exchange rate
158
+ gasPrice: '1500000000', // updated gas price
159
+ },
160
+ },
161
+ },
162
+ deployed: currentHook.deployed,
163
+ };
164
+ // Execute update transactions
165
+ const transactions = await writer.update(updatedArtifact);
166
+ for (const tx of transactions) {
167
+ await signer.sendAndConfirmTransaction(tx);
168
+ }
169
+ // Read and verify update
170
+ const readHook = await reader.read(igpHookAddress);
171
+ const domain1Oracle = readHook.config.oracleConfig[DOMAIN_1];
172
+ const domain2Oracle = readHook.config.oracleConfig[DOMAIN_2];
173
+ assert(domain1Oracle, `Missing oracle config for ${DOMAIN_1}`);
174
+ assert(domain2Oracle, `Missing oracle config for ${DOMAIN_2}`);
175
+ expect(readHook.config.overhead[DOMAIN_1]).to.equal(60000);
176
+ expect(domain1Oracle.tokenExchangeRate).to.equal('1500000000000000000');
177
+ expect(domain1Oracle.gasPrice).to.equal('1500000000');
178
+ // Verify DOMAIN_2 config unchanged
179
+ expect(readHook.config.overhead[DOMAIN_2]).to.equal(75000);
180
+ expect(domain2Oracle.tokenExchangeRate).to.equal('2000000000000000000');
181
+ });
182
+ step('should verify IGP Hook gas config removal', async () => {
183
+ // Remove DOMAIN_2 config using artifact writer
184
+ const writer = artifactManager.createWriter(AltVM.HookType.INTERCHAIN_GAS_PAYMASTER, aleoSigner);
185
+ // Read current config
186
+ const reader = artifactManager.createReader(AltVM.HookType.INTERCHAIN_GAS_PAYMASTER);
187
+ const currentHook = await reader.read(igpHookAddress);
188
+ const domain1Overhead = currentHook.config.overhead[DOMAIN_1];
189
+ const domain1Oracle = currentHook.config.oracleConfig[DOMAIN_1];
190
+ assert(domain1Overhead !== undefined, `Missing overhead for ${DOMAIN_1}`);
191
+ assert(domain1Oracle, `Missing oracle config for ${DOMAIN_1}`);
192
+ // Create updated artifact without DOMAIN_2
193
+ const updatedArtifact = {
194
+ artifactState: ArtifactState.DEPLOYED,
195
+ config: {
196
+ ...currentHook.config,
197
+ overhead: {
198
+ [DOMAIN_1]: domain1Overhead,
199
+ // DOMAIN_2 omitted to remove it
200
+ },
201
+ oracleConfig: {
202
+ [DOMAIN_1]: domain1Oracle,
203
+ // DOMAIN_2 omitted to remove it
204
+ },
205
+ },
206
+ deployed: currentHook.deployed,
207
+ };
208
+ // Execute update transactions
209
+ const transactions = await writer.update(updatedArtifact);
210
+ for (const tx of transactions) {
211
+ await signer.sendAndConfirmTransaction(tx);
212
+ }
213
+ // Read and verify removal
214
+ const readHook = await reader.read(igpHookAddress);
215
+ // DOMAIN_1 should still exist
216
+ expect(readHook.config.overhead[DOMAIN_1]).to.not.be.undefined;
217
+ expect(readHook.config.oracleConfig[DOMAIN_1]).to.not.be.undefined;
218
+ // DOMAIN_2 should be removed
219
+ expect(readHook.config.overhead[DOMAIN_2]).to.be.undefined;
220
+ expect(readHook.config.oracleConfig[DOMAIN_2]).to.be.undefined;
221
+ });
222
+ step('should transfer ownership when owner differs from deployer', async () => {
223
+ // Use a different address for the new owner (not the deployer's address)
224
+ // This is a valid Aleo address but different from the test account
225
+ const newOwnerAddress = 'aleo1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq3ljyzc';
226
+ // Create IGP hook using the artifact writer with a different owner
227
+ const writer = artifactManager.createWriter(AltVM.HookType.INTERCHAIN_GAS_PAYMASTER, aleoSigner);
228
+ const [deployedArtifact] = await writer.create({
229
+ artifactState: ArtifactState.NEW,
230
+ config: {
231
+ type: AltVM.HookType.INTERCHAIN_GAS_PAYMASTER,
232
+ owner: newOwnerAddress,
233
+ beneficiary: newOwnerAddress,
234
+ oracleKey: newOwnerAddress,
235
+ overhead: {},
236
+ oracleConfig: {},
237
+ },
238
+ });
239
+ expect(deployedArtifact.deployed.address).to.be.a('string').and.not.be
240
+ .empty;
241
+ // Read and verify owner was transferred
242
+ const reader = artifactManager.createReader(AltVM.HookType.INTERCHAIN_GAS_PAYMASTER);
243
+ const readHook = await reader.read(deployedArtifact.deployed.address);
244
+ expect(readHook.config.owner).to.equal(newOwnerAddress);
245
+ expect(readHook.config.owner).to.not.equal(aleoSigner.getSignerAddress());
246
+ });
247
+ });
248
+ describe('Generic hook reading via readHook', () => {
249
+ const DOMAIN_1 = 42;
250
+ step('should detect and read MerkleTree hook', async () => {
251
+ // Create MerkleTree Hook
252
+ const writer = artifactManager.createWriter(AltVM.HookType.MERKLE_TREE, aleoSigner);
253
+ const [deployedHook] = await writer.create({
254
+ artifactState: ArtifactState.NEW,
255
+ config: {
256
+ type: AltVM.HookType.MERKLE_TREE,
257
+ },
258
+ });
259
+ // Read via generic readHook (without knowing the type)
260
+ const readHook = await artifactManager.readHook(deployedHook.deployed.address);
261
+ expect(readHook.artifactState).to.equal(ArtifactState.DEPLOYED);
262
+ expect(readHook.config.type).to.equal(AltVM.HookType.MERKLE_TREE);
263
+ expect(readHook.deployed.address).to.equal(deployedHook.deployed.address);
264
+ });
265
+ step('should detect and read IGP hook', async () => {
266
+ // Create IGP Hook
267
+ const writer = artifactManager.createWriter(AltVM.HookType.INTERCHAIN_GAS_PAYMASTER, aleoSigner);
268
+ const [deployedHook] = await writer.create({
269
+ artifactState: ArtifactState.NEW,
270
+ config: {
271
+ type: AltVM.HookType.INTERCHAIN_GAS_PAYMASTER,
272
+ owner: aleoSigner.getSignerAddress(),
273
+ beneficiary: aleoSigner.getSignerAddress(),
274
+ oracleKey: aleoSigner.getSignerAddress(),
275
+ overhead: {
276
+ [DOMAIN_1]: 50000,
277
+ },
278
+ oracleConfig: {
279
+ [DOMAIN_1]: {
280
+ tokenExchangeRate: '1000000000000000000',
281
+ gasPrice: '1000000000',
282
+ },
283
+ },
284
+ },
285
+ });
286
+ // Read via generic readHook (without knowing the type)
287
+ const readHook = await artifactManager.readHook(deployedHook.deployed.address);
288
+ expect(readHook.artifactState).to.equal(ArtifactState.DEPLOYED);
289
+ expect(readHook.config.type).to.equal(AltVM.HookType.INTERCHAIN_GAS_PAYMASTER);
290
+ expect(readHook.deployed.address).to.equal(deployedHook.deployed.address);
291
+ // Verify IGP-specific config details
292
+ // After checking the type, we can safely cast to IgpHookConfig
293
+ const igpConfig = readHook.config;
294
+ assert(igpConfig.type === HookType.INTERCHAIN_GAS_PAYMASTER, `Expected config to be of type ${HookType.INTERCHAIN_GAS_PAYMASTER}`);
295
+ expect(igpConfig.owner).to.equal(aleoSigner.getSignerAddress());
296
+ expect(igpConfig.beneficiary).to.equal(aleoSigner.getSignerAddress());
297
+ expect(igpConfig.oracleKey).to.equal(aleoSigner.getSignerAddress());
298
+ expect(igpConfig.overhead[DOMAIN_1]).to.equal(50000);
299
+ const oracleConfig = igpConfig.oracleConfig[DOMAIN_1];
300
+ assert(oracleConfig, `Missing oracle config for ${DOMAIN_1}`);
301
+ expect(oracleConfig.gasPrice).to.equal('1000000000');
302
+ expect(oracleConfig.tokenExchangeRate).to.equal('1000000000000000000');
303
+ });
304
+ });
305
+ });
306
+ //# sourceMappingURL=6_hook_artifacts.e2e-test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"6_hook_artifacts.e2e-test.js","sourceRoot":"","sources":["../../src/tests/6_hook_artifacts.e2e-test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=7a_warp_native_artifacts.e2e-test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"7a_warp_native_artifacts.e2e-test.d.ts","sourceRoot":"","sources":["../../src/tests/7a_warp_native_artifacts.e2e-test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,105 @@
1
+ import chai from 'chai';
2
+ import chaiAsPromised from 'chai-as-promised';
3
+ import { AltVM } from '@recoillink/provider-sdk';
4
+ import { ArtifactState } from '@recoillink/provider-sdk/artifact';
5
+ import { isNullish } from '@recoillink/utils';
6
+ import { AleoSigner } from '../clients/signer.js';
7
+ import { AleoHookArtifactManager } from '../hook/hook-artifact-manager.js';
8
+ import { AleoIsmArtifactManager } from '../ism/ism-artifact-manager.js';
9
+ import { AleoMailboxArtifactManager } from '../mailbox/mailbox-artifact-manager.js';
10
+ import { TEST_ALEO_CHAIN_METADATA, TEST_ALEO_PRIVATE_KEY, } from '../testing/constants.js';
11
+ import { ALEO_NULL_ADDRESS, fromAleoAddress, getProgramSuffix, } from '../utils/helper.js';
12
+ import { AleoNetworkId } from '../utils/types.js';
13
+ import { AleoWarpArtifactManager } from '../warp/warp-artifact-manager.js';
14
+ import { warpArtifactTestSuite } from './warp-artifact-test-suite.js';
15
+ chai.use(chaiAsPromised);
16
+ describe('7a. Aleo Warp Native Token Artifact API (e2e)', function () {
17
+ this.timeout(300_000);
18
+ let aleoSigner;
19
+ let artifactManager;
20
+ let ismArtifactManager;
21
+ let hookArtifactManager;
22
+ let mailboxAddress;
23
+ let savedWarpSuffix;
24
+ let preDeployedNativeToken;
25
+ before(async () => {
26
+ savedWarpSuffix = process.env['ALEO_WARP_SUFFIX'];
27
+ delete process.env['ALEO_WARP_SUFFIX'];
28
+ const domainId = 1234;
29
+ aleoSigner = await AleoSigner.connectWithSigner(TEST_ALEO_CHAIN_METADATA, TEST_ALEO_PRIVATE_KEY);
30
+ const aleoClient = aleoSigner.getAleoClient();
31
+ const ismManagerProgramId = await aleoSigner.getIsmManager();
32
+ // Create ISM for mailbox
33
+ ismArtifactManager = new AleoIsmArtifactManager(aleoClient);
34
+ const ismWriter = ismArtifactManager.createWriter(AltVM.IsmType.TEST_ISM, aleoSigner);
35
+ const [ism] = await ismWriter.create({
36
+ config: { type: AltVM.IsmType.TEST_ISM },
37
+ });
38
+ // Create mailbox using artifact manager
39
+ const mailboxArtifactManager = new AleoMailboxArtifactManager({ domainId, aleoNetworkId: AleoNetworkId.TESTNET }, aleoClient);
40
+ const mailboxWriter = mailboxArtifactManager.createWriter('mailbox', aleoSigner);
41
+ const [deployedMailbox] = await mailboxWriter.create({
42
+ config: {
43
+ owner: aleoSigner.getSignerAddress(),
44
+ defaultIsm: {
45
+ artifactState: ArtifactState.UNDERIVED,
46
+ deployed: { address: ism.deployed.address },
47
+ },
48
+ defaultHook: {
49
+ artifactState: ArtifactState.UNDERIVED,
50
+ deployed: { address: ALEO_NULL_ADDRESS },
51
+ },
52
+ requiredHook: {
53
+ artifactState: ArtifactState.UNDERIVED,
54
+ deployed: { address: ALEO_NULL_ADDRESS },
55
+ },
56
+ },
57
+ });
58
+ mailboxAddress = deployedMailbox.deployed.address;
59
+ const { programId } = fromAleoAddress(mailboxAddress);
60
+ const suffix = getProgramSuffix(programId);
61
+ const hookManagerProgramId = await aleoSigner.getHookManager(suffix);
62
+ hookArtifactManager = new AleoHookArtifactManager(aleoClient, mailboxAddress);
63
+ artifactManager = new AleoWarpArtifactManager(aleoClient, {
64
+ ismManagerAddress: ismManagerProgramId,
65
+ hookManagerAddress: hookManagerProgramId,
66
+ });
67
+ // Deploy native token once — it always uses the fixed program name
68
+ // test_hyp_warp_token_credits.aleo, so all tests share it.
69
+ const nativeWriter = artifactManager.createWriter(AltVM.TokenType.native, aleoSigner);
70
+ [preDeployedNativeToken] = await nativeWriter.create({
71
+ config: {
72
+ type: AltVM.TokenType.native,
73
+ owner: aleoSigner.getSignerAddress(),
74
+ mailbox: mailboxAddress,
75
+ remoteRouters: {},
76
+ destinationGas: {},
77
+ },
78
+ });
79
+ });
80
+ after(() => {
81
+ if (!isNullish(savedWarpSuffix)) {
82
+ process.env['ALEO_WARP_SUFFIX'] = savedWarpSuffix;
83
+ }
84
+ });
85
+ warpArtifactTestSuite(() => ({
86
+ aleoSigner,
87
+ providerSdkSigner: aleoSigner,
88
+ artifactManager,
89
+ ismArtifactManager,
90
+ hookArtifactManager,
91
+ mailboxAddress,
92
+ preDeployedToken: preDeployedNativeToken,
93
+ }), {
94
+ type: AltVM.TokenType.native,
95
+ name: 'native',
96
+ getConfig: () => ({
97
+ type: AltVM.TokenType.native,
98
+ owner: aleoSigner.getSignerAddress(),
99
+ mailbox: mailboxAddress,
100
+ remoteRouters: {},
101
+ destinationGas: {},
102
+ }),
103
+ });
104
+ });
105
+ //# sourceMappingURL=7a_warp_native_artifacts.e2e-test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"7a_warp_native_artifacts.e2e-test.js","sourceRoot":"","sources":["../../src/tests/7a_warp_native_artifacts.e2e-test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=7b_warp_collateral_artifacts.e2e-test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"7b_warp_collateral_artifacts.e2e-test.d.ts","sourceRoot":"","sources":["../../src/tests/7b_warp_collateral_artifacts.e2e-test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,144 @@
1
+ import { Account, AleoKeyProvider, AleoNetworkClient, NetworkRecordProvider, ProgramManager, } from '@provablehq/sdk';
2
+ import chai from 'chai';
3
+ import chaiAsPromised from 'chai-as-promised';
4
+ import { AltVM } from '@recoillink/provider-sdk';
5
+ import { ArtifactState } from '@recoillink/provider-sdk/artifact';
6
+ import { isNullish, rootLogger } from '@recoillink/utils';
7
+ import { token_registry } from '../artifacts.js';
8
+ import { AleoSigner } from '../clients/signer.js';
9
+ import { AleoHookArtifactManager } from '../hook/hook-artifact-manager.js';
10
+ import { AleoIsmArtifactManager } from '../ism/ism-artifact-manager.js';
11
+ import { AleoMailboxArtifactManager } from '../mailbox/mailbox-artifact-manager.js';
12
+ import { TEST_ALEO_BURN_ADDRESS, TEST_ALEO_CHAIN_METADATA, TEST_ALEO_PRIVATE_KEY, } from '../testing/constants.js';
13
+ import { ALEO_NULL_ADDRESS, fromAleoAddress, getProgramSuffix, stringToU128, } from '../utils/helper.js';
14
+ import { AleoNetworkId } from '../utils/types.js';
15
+ import { AleoWarpArtifactManager } from '../warp/warp-artifact-manager.js';
16
+ import { warpArtifactTestSuite } from './warp-artifact-test-suite.js';
17
+ chai.use(chaiAsPromised);
18
+ const COLLATERAL_TOKEN_DENOM = `${Date.now()}${Math.floor(Math.random() * 1000)}field`;
19
+ const COLLATERAL_TOKEN_NAME = 'Test Token';
20
+ const COLLATERAL_TOKEN_SYMBOL = 'TEST';
21
+ const COLLATERAL_TOKEN_DECIMALS = 6;
22
+ describe('7b. Aleo Warp Collateral Token Artifact API (e2e)', function () {
23
+ this.timeout(300_000);
24
+ let aleoSigner;
25
+ let artifactManager;
26
+ let ismArtifactManager;
27
+ let hookArtifactManager;
28
+ let mailboxAddress;
29
+ let savedWarpSuffix;
30
+ before(async () => {
31
+ savedWarpSuffix = process.env['ALEO_WARP_SUFFIX'];
32
+ delete process.env['ALEO_WARP_SUFFIX'];
33
+ const domainId = 1234;
34
+ aleoSigner = await AleoSigner.connectWithSigner(TEST_ALEO_CHAIN_METADATA, TEST_ALEO_PRIVATE_KEY);
35
+ const aleoClient = aleoSigner.getAleoClient();
36
+ const ismManagerProgramId = await aleoSigner.getIsmManager();
37
+ // Create ISM for mailbox
38
+ ismArtifactManager = new AleoIsmArtifactManager(aleoClient);
39
+ const ismWriter = ismArtifactManager.createWriter(AltVM.IsmType.TEST_ISM, aleoSigner);
40
+ const [ism] = await ismWriter.create({
41
+ config: { type: AltVM.IsmType.TEST_ISM },
42
+ });
43
+ // Create mailbox using artifact manager
44
+ const mailboxArtifactManager = new AleoMailboxArtifactManager({ domainId, aleoNetworkId: AleoNetworkId.TESTNET }, aleoClient);
45
+ const mailboxWriter = mailboxArtifactManager.createWriter('mailbox', aleoSigner);
46
+ const [deployedMailbox] = await mailboxWriter.create({
47
+ config: {
48
+ owner: aleoSigner.getSignerAddress(),
49
+ defaultIsm: {
50
+ artifactState: ArtifactState.UNDERIVED,
51
+ deployed: { address: ism.deployed.address },
52
+ },
53
+ defaultHook: {
54
+ artifactState: ArtifactState.UNDERIVED,
55
+ deployed: { address: ALEO_NULL_ADDRESS },
56
+ },
57
+ requiredHook: {
58
+ artifactState: ArtifactState.UNDERIVED,
59
+ deployed: { address: ALEO_NULL_ADDRESS },
60
+ },
61
+ },
62
+ });
63
+ mailboxAddress = deployedMailbox.deployed.address;
64
+ const { programId } = fromAleoAddress(mailboxAddress);
65
+ const suffix = getProgramSuffix(programId);
66
+ const hookManagerProgramId = await aleoSigner.getHookManager(suffix);
67
+ hookArtifactManager = new AleoHookArtifactManager(aleoClient, mailboxAddress);
68
+ artifactManager = new AleoWarpArtifactManager(aleoClient, {
69
+ ismManagerAddress: ismManagerProgramId,
70
+ hookManagerAddress: hookManagerProgramId,
71
+ });
72
+ // Deploy token_registry for collateral tests
73
+ const aleoAccount = new Account({
74
+ privateKey: TEST_ALEO_PRIVATE_KEY,
75
+ });
76
+ const keyProvider = new AleoKeyProvider();
77
+ keyProvider.useCache(true);
78
+ const networkRecordProvider = new NetworkRecordProvider(aleoAccount, new AleoNetworkClient(TEST_ALEO_CHAIN_METADATA.rpcUrl));
79
+ const programManager = new ProgramManager(TEST_ALEO_CHAIN_METADATA.rpcUrl, keyProvider, networkRecordProvider);
80
+ programManager.setAccount(aleoAccount);
81
+ try {
82
+ const tx = await programManager.buildDevnodeDeploymentTransaction({
83
+ program: token_registry,
84
+ priorityFee: 0,
85
+ privateFee: false,
86
+ });
87
+ const txId = await programManager.networkClient.submitTransaction(tx);
88
+ await aleoClient.waitForTransactionConfirmation(txId);
89
+ }
90
+ catch (e) {
91
+ rootLogger.warn('Token registry deployment skipped:', e.message);
92
+ }
93
+ // Register test token
94
+ const registeredToken = await aleoClient.getProgramMappingValue('token_registry.aleo', 'registered_tokens', COLLATERAL_TOKEN_DENOM);
95
+ if (!registeredToken) {
96
+ await aleoSigner.sendAndConfirmTransaction({
97
+ programName: 'token_registry.aleo',
98
+ functionName: 'register_token',
99
+ priorityFee: 0,
100
+ privateFee: false,
101
+ inputs: [
102
+ COLLATERAL_TOKEN_DENOM,
103
+ `${stringToU128(COLLATERAL_TOKEN_NAME).toString()}u128`,
104
+ `${stringToU128(COLLATERAL_TOKEN_SYMBOL).toString()}u128`,
105
+ `${COLLATERAL_TOKEN_DECIMALS}u8`,
106
+ `100000000u128`,
107
+ `false`,
108
+ TEST_ALEO_BURN_ADDRESS,
109
+ ],
110
+ });
111
+ }
112
+ });
113
+ after(() => {
114
+ if (!isNullish(savedWarpSuffix)) {
115
+ process.env['ALEO_WARP_SUFFIX'] = savedWarpSuffix;
116
+ }
117
+ });
118
+ warpArtifactTestSuite(() => ({
119
+ aleoSigner,
120
+ providerSdkSigner: aleoSigner,
121
+ artifactManager,
122
+ ismArtifactManager,
123
+ hookArtifactManager,
124
+ mailboxAddress,
125
+ }), {
126
+ type: AltVM.TokenType.collateral,
127
+ name: 'collateral',
128
+ getConfig: () => ({
129
+ type: AltVM.TokenType.collateral,
130
+ owner: aleoSigner.getSignerAddress(),
131
+ mailbox: mailboxAddress,
132
+ token: COLLATERAL_TOKEN_DENOM,
133
+ remoteRouters: {},
134
+ destinationGas: {},
135
+ }),
136
+ expectedFields: {
137
+ token: COLLATERAL_TOKEN_DENOM,
138
+ name: COLLATERAL_TOKEN_NAME,
139
+ symbol: COLLATERAL_TOKEN_SYMBOL,
140
+ decimals: COLLATERAL_TOKEN_DECIMALS,
141
+ },
142
+ });
143
+ });
144
+ //# sourceMappingURL=7b_warp_collateral_artifacts.e2e-test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"7b_warp_collateral_artifacts.e2e-test.js","sourceRoot":"","sources":["../../src/tests/7b_warp_collateral_artifacts.e2e-test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=7c_warp_synthetic_artifacts.e2e-test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"7c_warp_synthetic_artifacts.e2e-test.d.ts","sourceRoot":"","sources":["../../src/tests/7c_warp_synthetic_artifacts.e2e-test.ts"],"names":[],"mappings":""}