@hyperlane-xyz/tron-sdk 21.0.0

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 (83) hide show
  1. package/LICENSE.md +195 -0
  2. package/README.md +47 -0
  3. package/dist/abi/DomainRoutingIsm.json +240 -0
  4. package/dist/abi/ERC20.json +293 -0
  5. package/dist/abi/ERC20Test.json +365 -0
  6. package/dist/abi/HypERC20.json +920 -0
  7. package/dist/abi/HypERC20Collateral.json +1556 -0
  8. package/dist/abi/HypNative.json +1561 -0
  9. package/dist/abi/IERC20.json +190 -0
  10. package/dist/abi/IInterchainSecurityModule.json +44 -0
  11. package/dist/abi/IPostDispatchHook.json +81 -0
  12. package/dist/abi/InterchainGasPaymaster.json +518 -0
  13. package/dist/abi/Mailbox.json +686 -0
  14. package/dist/abi/MerkleTreeHook.json +375 -0
  15. package/dist/abi/NoopIsm.json +57 -0
  16. package/dist/abi/PausableHook.json +199 -0
  17. package/dist/abi/ProxyAdmin.json +156 -0
  18. package/dist/abi/StaticMerkleRootMultisigIsm.json +100 -0
  19. package/dist/abi/StaticMessageIdMultisigIsm.json +100 -0
  20. package/dist/abi/StorageGasOracle.json +205 -0
  21. package/dist/abi/TransparentUpgradeableProxy.json +81 -0
  22. package/dist/abi/ValidatorAnnounce.json +299 -0
  23. package/dist/clients/protocol.d.ts +17 -0
  24. package/dist/clients/protocol.d.ts.map +1 -0
  25. package/dist/clients/protocol.js +40 -0
  26. package/dist/clients/protocol.js.map +1 -0
  27. package/dist/clients/provider.d.ts +67 -0
  28. package/dist/clients/provider.d.ts.map +1 -0
  29. package/dist/clients/provider.js +558 -0
  30. package/dist/clients/provider.js.map +1 -0
  31. package/dist/clients/signer.d.ts +46 -0
  32. package/dist/clients/signer.d.ts.map +1 -0
  33. package/dist/clients/signer.js +561 -0
  34. package/dist/clients/signer.js.map +1 -0
  35. package/dist/hook/hook-query.d.ts +41 -0
  36. package/dist/hook/hook-query.d.ts.map +1 -0
  37. package/dist/hook/hook-query.js +79 -0
  38. package/dist/hook/hook-query.js.map +1 -0
  39. package/dist/hook/hook-tx.d.ts +39 -0
  40. package/dist/hook/hook-tx.d.ts.map +1 -0
  41. package/dist/hook/hook-tx.js +95 -0
  42. package/dist/hook/hook-tx.js.map +1 -0
  43. package/dist/index.d.ts +5 -0
  44. package/dist/index.d.ts.map +1 -0
  45. package/dist/index.js +4 -0
  46. package/dist/index.js.map +1 -0
  47. package/dist/ism/ism-query.d.ts +70 -0
  48. package/dist/ism/ism-query.d.ts.map +1 -0
  49. package/dist/ism/ism-query.js +137 -0
  50. package/dist/ism/ism-query.js.map +1 -0
  51. package/dist/ism/ism-tx.d.ts +67 -0
  52. package/dist/ism/ism-tx.d.ts.map +1 -0
  53. package/dist/ism/ism-tx.js +110 -0
  54. package/dist/ism/ism-tx.js.map +1 -0
  55. package/dist/tests/1_interchain_security.e2e-test.d.ts +2 -0
  56. package/dist/tests/1_interchain_security.e2e-test.d.ts.map +1 -0
  57. package/dist/tests/1_interchain_security.e2e-test.js +172 -0
  58. package/dist/tests/1_interchain_security.e2e-test.js.map +1 -0
  59. package/dist/tests/2_core.e2e-test.d.ts +2 -0
  60. package/dist/tests/2_core.e2e-test.d.ts.map +1 -0
  61. package/dist/tests/2_core.e2e-test.js +117 -0
  62. package/dist/tests/2_core.e2e-test.js.map +1 -0
  63. package/dist/tests/3_post_dispatch.e2e-test.d.ts +2 -0
  64. package/dist/tests/3_post_dispatch.e2e-test.d.ts.map +1 -0
  65. package/dist/tests/3_post_dispatch.e2e-test.js +116 -0
  66. package/dist/tests/3_post_dispatch.e2e-test.js.map +1 -0
  67. package/dist/tests/4_warp.e2e-test.d.ts +2 -0
  68. package/dist/tests/4_warp.e2e-test.d.ts.map +1 -0
  69. package/dist/tests/4_warp.e2e-test.js +304 -0
  70. package/dist/tests/4_warp.e2e-test.js.map +1 -0
  71. package/dist/tests/index.e2e-test.d.ts +5 -0
  72. package/dist/tests/index.e2e-test.d.ts.map +1 -0
  73. package/dist/tests/index.e2e-test.js +6 -0
  74. package/dist/tests/index.e2e-test.js.map +1 -0
  75. package/dist/utils/index.d.ts +24 -0
  76. package/dist/utils/index.d.ts.map +1 -0
  77. package/dist/utils/index.js +71 -0
  78. package/dist/utils/index.js.map +1 -0
  79. package/dist/utils/types.d.ts +94 -0
  80. package/dist/utils/types.d.ts.map +1 -0
  81. package/dist/utils/types.js +13 -0
  82. package/dist/utils/types.js.map +1 -0
  83. package/package.json +63 -0
@@ -0,0 +1,110 @@
1
+ import DomainRoutingIsmAbi from '../abi/DomainRoutingIsm.json' with { type: 'json' };
2
+ import NoopIsmAbi from '../abi/NoopIsm.json' with { type: 'json' };
3
+ import StaticMerkleRootMultisigIsmAbi from '../abi/StaticMerkleRootMultisigIsm.json' with { type: 'json' };
4
+ import StaticMessageIdMultisigIsmAbi from '../abi/StaticMessageIdMultisigIsm.json' with { type: 'json' };
5
+ import { buildMetaProxyBytecode, createDeploymentTransaction, createRawBytecodeDeploymentTransaction, } from '../utils/index.js';
6
+ export async function getCreateTestIsmTx(tronweb, fromAddress) {
7
+ return createDeploymentTransaction(tronweb, NoopIsmAbi, fromAddress, []);
8
+ }
9
+ /**
10
+ * Deploys StaticMessageIdMultisigIsm implementation contract (deploy once, reuse)
11
+ * @param tronweb - TronWeb instance
12
+ * @param fromAddress - Deployer address
13
+ * @returns Transaction to deploy implementation
14
+ */
15
+ export async function getCreateMessageIdMultisigIsmImplementationTx(tronweb, fromAddress) {
16
+ return createDeploymentTransaction(tronweb, StaticMessageIdMultisigIsmAbi, fromAddress, []);
17
+ }
18
+ /**
19
+ * Deploys StaticMerkleRootMultisigIsm implementation contract (deploy once, reuse)
20
+ * @param tronweb - TronWeb instance
21
+ * @param fromAddress - Deployer address
22
+ * @returns Transaction to deploy implementation
23
+ */
24
+ export async function getCreateMerkleRootMultisigIsmImplementationTx(tronweb, fromAddress) {
25
+ return createDeploymentTransaction(tronweb, StaticMerkleRootMultisigIsmAbi, fromAddress, []);
26
+ }
27
+ /**
28
+ * Creates transaction to deploy MessageIdMultisigIsm using MetaProxy pattern
29
+ * This embeds config in bytecode rather than constructor, enabling deterministic addresses
30
+ * @param tronweb - TronWeb instance
31
+ * @param fromAddress - Deployer address
32
+ * @param implementationAddress - Address of deployed StaticMessageIdMultisigIsm implementation
33
+ * @param config - Validators and threshold configuration
34
+ * @returns Transaction to deploy MetaProxy ISM
35
+ */
36
+ export async function getCreateMessageIdMultisigIsmWithMetaProxyTx(tronweb, fromAddress, implementationAddress, config) {
37
+ // ABI encode the metadata: (address[], uint8)
38
+ const metadata = tronweb.utils.abi.encodeParams(['address[]', 'uint8'], [config.validators, config.threshold]);
39
+ // Build MetaProxy bytecode with embedded metadata
40
+ const metaProxyBytecode = buildMetaProxyBytecode(tronweb.address.toHex(implementationAddress), metadata);
41
+ return createRawBytecodeDeploymentTransaction(tronweb, metaProxyBytecode, fromAddress, 'StaticMessageIdMultisigIsm');
42
+ }
43
+ /**
44
+ * Creates transaction to deploy MerkleRootMultisigIsm using MetaProxy pattern
45
+ * This embeds config in bytecode rather than constructor, enabling deterministic addresses
46
+ * @param tronweb - TronWeb instance
47
+ * @param fromAddress - Deployer address
48
+ * @param implementationAddress - Address of deployed StaticMerkleRootMultisigIsm implementation
49
+ * @param config - Validators and threshold configuration
50
+ * @returns Transaction to deploy MetaProxy ISM
51
+ */
52
+ export async function getCreateMerkleRootMultisigIsmWithMetaProxyTx(tronweb, fromAddress, implementationAddress, config) {
53
+ // ABI encode the metadata: (address[], uint8)
54
+ const metadata = tronweb.utils.abi.encodeParams(['address[]', 'uint8'], [config.validators, config.threshold]);
55
+ // Build MetaProxy bytecode with embedded metadata
56
+ const metaProxyBytecode = buildMetaProxyBytecode(tronweb.address.toHex(implementationAddress), metadata);
57
+ return createRawBytecodeDeploymentTransaction(tronweb, metaProxyBytecode, fromAddress, 'StaticMerkleRootMultisigIsm');
58
+ }
59
+ export async function getCreateRoutingIsmTx(tronweb, fromAddress) {
60
+ return createDeploymentTransaction(tronweb, DomainRoutingIsmAbi, fromAddress, []);
61
+ }
62
+ export async function getInitRoutingIsmTx(tronweb, ownerAddress, config) {
63
+ const { transaction } = await tronweb.transactionBuilder.triggerSmartContract(config.ismAddress, 'initialize(address,uint32[],address[])', {}, [
64
+ {
65
+ type: 'address',
66
+ value: ownerAddress,
67
+ },
68
+ {
69
+ type: 'uint32[]',
70
+ value: config.routes.map((r) => r.domainId),
71
+ },
72
+ {
73
+ type: 'address[]',
74
+ value: config.routes.map((r) => r.ismAddress),
75
+ },
76
+ ], tronweb.address.toHex(ownerAddress));
77
+ return transaction;
78
+ }
79
+ export async function getSetRoutingIsmRouteTx(tronweb, ownerAddress, config) {
80
+ const { transaction } = await tronweb.transactionBuilder.triggerSmartContract(config.ismAddress, 'set(uint32,address)', {}, [
81
+ {
82
+ type: 'uint32',
83
+ value: config.domainIsm.domainId,
84
+ },
85
+ {
86
+ type: 'address',
87
+ value: config.domainIsm.ismAddress,
88
+ },
89
+ ], tronweb.address.toHex(ownerAddress));
90
+ return transaction;
91
+ }
92
+ export async function getRemoveRoutingIsmRouteTx(tronweb, ownerAddress, config) {
93
+ const { transaction } = await tronweb.transactionBuilder.triggerSmartContract(config.ismAddress, 'remove(uint32)', {}, [
94
+ {
95
+ type: 'uint32',
96
+ value: config.domainId,
97
+ },
98
+ ], tronweb.address.toHex(ownerAddress));
99
+ return transaction;
100
+ }
101
+ export async function getSetRoutingIsmOwnerTx(tronweb, ownerAddress, config) {
102
+ const { transaction } = await tronweb.transactionBuilder.triggerSmartContract(config.ismAddress, 'transferOwnership(address)', {}, [
103
+ {
104
+ type: 'address',
105
+ value: config.newOwner,
106
+ },
107
+ ], tronweb.address.toHex(ownerAddress));
108
+ return transaction;
109
+ }
110
+ //# sourceMappingURL=ism-tx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ism-tx.js","sourceRoot":"","sources":["../../src/ism/ism-tx.ts"],"names":[],"mappings":"AAEA,OAAO,mBAAmB,MAAM,8BAA8B,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACrF,OAAO,UAAU,MAAM,qBAAqB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACnE,OAAO,8BAA8B,MAAM,yCAAyC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC3G,OAAO,6BAA6B,MAAM,wCAAwC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACzG,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC3B,sCAAsC,GACvC,MAAM,mBAAmB,CAAC;AAG3B,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAA0B,EAC1B,WAAmB;IAEnB,OAAO,2BAA2B,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;AAC3E,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,6CAA6C,CACjE,OAA0B,EAC1B,WAAmB;IAEnB,OAAO,2BAA2B,CAChC,OAAO,EACP,6BAA6B,EAC7B,WAAW,EACX,EAAE,CACH,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,8CAA8C,CAClE,OAA0B,EAC1B,WAAmB;IAEnB,OAAO,2BAA2B,CAChC,OAAO,EACP,8BAA8B,EAC9B,WAAW,EACX,EAAE,CACH,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,4CAA4C,CAChE,OAA0B,EAC1B,WAAmB,EACnB,qBAA6B,EAC7B,MAAmD;IAEnD,8CAA8C;IAC9C,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAC7C,CAAC,WAAW,EAAE,OAAO,CAAC,EACtB,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,CACtC,CAAC;IAEF,kDAAkD;IAClD,MAAM,iBAAiB,GAAG,sBAAsB,CAC9C,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,EAC5C,QAAQ,CACT,CAAC;IAEF,OAAO,sCAAsC,CAC3C,OAAO,EACP,iBAAiB,EACjB,WAAW,EACX,4BAA4B,CAC7B,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,6CAA6C,CACjE,OAA0B,EAC1B,WAAmB,EACnB,qBAA6B,EAC7B,MAAmD;IAEnD,8CAA8C;IAC9C,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAC7C,CAAC,WAAW,EAAE,OAAO,CAAC,EACtB,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,CACtC,CAAC;IAEF,kDAAkD;IAClD,MAAM,iBAAiB,GAAG,sBAAsB,CAC9C,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,EAC5C,QAAQ,CACT,CAAC;IAEF,OAAO,sCAAsC,CAC3C,OAAO,EACP,iBAAiB,EACjB,WAAW,EACX,6BAA6B,CAC9B,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,OAA0B,EAC1B,WAAmB;IAEnB,OAAO,2BAA2B,CAChC,OAAO,EACP,mBAAmB,EACnB,WAAW,EACX,EAAE,CACH,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAA0B,EAC1B,YAAoB,EACpB,MAGC;IAED,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,OAAO,CAAC,kBAAkB,CAAC,oBAAoB,CAC3E,MAAM,CAAC,UAAU,EACjB,wCAAwC,EACxC,EAAE,EACF;QACE;YACE,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,YAAY;SACpB;QACD;YACE,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;SAC5C;QACD;YACE,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;SAC9C;KACF,EACD,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CACpC,CAAC;IAEF,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,OAA0B,EAC1B,YAAoB,EACpB,MAGC;IAED,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,OAAO,CAAC,kBAAkB,CAAC,oBAAoB,CAC3E,MAAM,CAAC,UAAU,EACjB,qBAAqB,EACrB,EAAE,EACF;QACE;YACE,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ;SACjC;QACD;YACE,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,UAAU;SACnC;KACF,EACD,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CACpC,CAAC;IAEF,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,OAA0B,EAC1B,YAAoB,EACpB,MAAgD;IAEhD,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,OAAO,CAAC,kBAAkB,CAAC,oBAAoB,CAC3E,MAAM,CAAC,UAAU,EACjB,gBAAgB,EAChB,EAAE,EACF;QACE;YACE,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,MAAM,CAAC,QAAQ;SACvB;KACF,EACD,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CACpC,CAAC;IAEF,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,OAA0B,EAC1B,YAAoB,EACpB,MAAgD;IAEhD,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,OAAO,CAAC,kBAAkB,CAAC,oBAAoB,CAC3E,MAAM,CAAC,UAAU,EACjB,4BAA4B,EAC5B,EAAE,EACF;QACE;YACE,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,MAAM,CAAC,QAAQ;SACvB;KACF,EACD,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CACpC,CAAC;IAEF,OAAO,WAAW,CAAC;AACrB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=1_interchain_security.e2e-test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1_interchain_security.e2e-test.d.ts","sourceRoot":"","sources":["../../src/tests/1_interchain_security.e2e-test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,172 @@
1
+ import chai from 'chai';
2
+ import chaiAsPromised from 'chai-as-promised';
3
+ import { step } from 'mocha-steps';
4
+ import { TronWeb } from 'tronweb';
5
+ import { TronSigner } from '../clients/signer.js';
6
+ chai.use(chaiAsPromised);
7
+ const { expect } = chai;
8
+ describe('1. tron sdk interchain security e2e tests', async function () {
9
+ this.timeout(100_000);
10
+ const localnetRpc = 'http://127.0.0.1:9090';
11
+ let signer;
12
+ let noop_ism;
13
+ let routing_ism;
14
+ before(async () => {
15
+ // test private key with funds
16
+ const privateKey = '0000000000000000000000000000000000000000000000000000000000000001';
17
+ signer = await TronSigner.connectWithSigner([localnetRpc], privateKey, {
18
+ metadata: {
19
+ chainId: '9',
20
+ },
21
+ });
22
+ });
23
+ step('create new NOOP ISM', async () => {
24
+ // ARRANGE
25
+ // ACT
26
+ const txResponse = await signer.createNoopIsm({});
27
+ // ASSERT
28
+ expect(txResponse.ismAddress).not.to.be.empty;
29
+ let ism = await signer.getNoopIsm({
30
+ ismAddress: txResponse.ismAddress,
31
+ });
32
+ expect(ism.address).to.equal(txResponse.ismAddress);
33
+ noop_ism = ism.address;
34
+ });
35
+ step('create new MessageIdMultisig ISM', async () => {
36
+ // ARRANGE
37
+ const threshold = 2;
38
+ const validators = [
39
+ '0x3c24f29fa75869a1c9d19d9d6589aae0b5227c3c',
40
+ '0xf719b4cc64d0e3a380e52c2720abab13835f6d9c',
41
+ '0x98a56ede1d6dd386216da8217d9ac1d2ee7c27c7',
42
+ ];
43
+ // note that the validators need to be sorted alphabetically
44
+ validators.sort();
45
+ // ACT
46
+ const txResponse = await signer.createMessageIdMultisigIsm({
47
+ validators,
48
+ threshold,
49
+ });
50
+ // ASSERT
51
+ expect(txResponse.ismAddress).to.be.not.empty;
52
+ let ism = await signer.getMessageIdMultisigIsm({
53
+ ismAddress: txResponse.ismAddress,
54
+ });
55
+ expect(ism.address).to.equal(txResponse.ismAddress);
56
+ expect(ism.threshold).to.equal(threshold);
57
+ expect(ism.validators).deep.equal(validators);
58
+ });
59
+ step('create new MerkleRootMultisig ISM', async () => {
60
+ // ARRANGE
61
+ const threshold = 2;
62
+ const validators = [
63
+ '0x3c24f29fa75869a1c9d19d9d6589aae0b5227c3c',
64
+ '0xf719b4cc64d0e3a380e52c2720abab13835f6d9c',
65
+ '0x98a56ede1d6dd386216da8217d9ac1d2ee7c27c7',
66
+ ];
67
+ // note that the validators need to be sorted alphabetically
68
+ validators.sort();
69
+ // ACT
70
+ const txResponse = await signer.createMerkleRootMultisigIsm({
71
+ validators,
72
+ threshold,
73
+ });
74
+ // ASSERT
75
+ expect(txResponse.ismAddress).to.be.not.empty;
76
+ let ism = await signer.getMerkleRootMultisigIsm({
77
+ ismAddress: txResponse.ismAddress,
78
+ });
79
+ expect(ism.address).to.equal(txResponse.ismAddress);
80
+ expect(ism.threshold).to.equal(threshold);
81
+ expect(ism.validators).deep.equal(validators);
82
+ });
83
+ step('create new Routing ISM', async () => {
84
+ // ARRANGE
85
+ const domainId = 1337;
86
+ const { ismAddress } = await signer.createNoopIsm({});
87
+ // ACT
88
+ const txResponse = await signer.createRoutingIsm({
89
+ routes: [
90
+ {
91
+ domainId,
92
+ ismAddress,
93
+ },
94
+ ],
95
+ });
96
+ // ASSERT
97
+ expect(txResponse.ismAddress).to.be.not.empty;
98
+ let ism = await signer.getRoutingIsm({
99
+ ismAddress: txResponse.ismAddress,
100
+ });
101
+ expect(ism.address).to.equal(txResponse.ismAddress);
102
+ expect(ism.owner).to.equal(signer.getSignerAddress());
103
+ expect(ism.routes).to.have.lengthOf(1);
104
+ expect(ism.routes[0]).to.deep.equal({
105
+ ismAddress,
106
+ domainId,
107
+ });
108
+ routing_ism = ism.address;
109
+ });
110
+ step('set Routing Ism domain', async () => {
111
+ // ARRANGE
112
+ // ACT
113
+ await signer.setRoutingIsmRoute({
114
+ ismAddress: routing_ism,
115
+ route: {
116
+ ismAddress: noop_ism,
117
+ domainId: 1234,
118
+ },
119
+ });
120
+ // ASSERT
121
+ let ism = await signer.getRoutingIsm({
122
+ ismAddress: routing_ism,
123
+ });
124
+ expect(ism.routes).to.have.lengthOf(2);
125
+ expect(ism.routes[1]).to.deep.equal({
126
+ ismAddress: noop_ism,
127
+ domainId: 1234,
128
+ });
129
+ });
130
+ step('remove Routing Ism domain', async () => {
131
+ // ARRANGE
132
+ let ism = await signer.getRoutingIsm({
133
+ ismAddress: routing_ism,
134
+ });
135
+ expect(ism.routes).to.have.lengthOf(2);
136
+ expect(ism.routes[1]).to.deep.equal({
137
+ ismAddress: noop_ism,
138
+ domainId: 1234,
139
+ });
140
+ // ACT
141
+ await signer.removeRoutingIsmRoute({
142
+ ismAddress: routing_ism,
143
+ domainId: 1234,
144
+ });
145
+ // ASSERT
146
+ ism = await signer.getRoutingIsm({
147
+ ismAddress: routing_ism,
148
+ });
149
+ expect(ism.routes).to.have.lengthOf(1);
150
+ });
151
+ step('update Routing Ism owner', async () => {
152
+ // ARRANGE
153
+ let ism = await signer.getRoutingIsm({
154
+ ismAddress: routing_ism,
155
+ });
156
+ expect(ism.owner).to.equal(signer.getSignerAddress());
157
+ const newOwner = new TronWeb({
158
+ fullHost: localnetRpc,
159
+ }).createRandom().address;
160
+ // ACT
161
+ await signer.setRoutingIsmOwner({
162
+ ismAddress: routing_ism,
163
+ newOwner,
164
+ });
165
+ // ASSERT
166
+ ism = await signer.getRoutingIsm({
167
+ ismAddress: routing_ism,
168
+ });
169
+ expect(ism.owner).to.equal(newOwner);
170
+ });
171
+ });
172
+ //# sourceMappingURL=1_interchain_security.e2e-test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1_interchain_security.e2e-test.js","sourceRoot":"","sources":["../../src/tests/1_interchain_security.e2e-test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=2_core.e2e-test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"2_core.e2e-test.d.ts","sourceRoot":"","sources":["../../src/tests/2_core.e2e-test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,117 @@
1
+ import { expect } from 'chai';
2
+ import { step } from 'mocha-steps';
3
+ import { TronWeb } from 'tronweb';
4
+ import { TronSigner } from '../clients/signer.js';
5
+ describe('2. tron sdk core e2e tests', async function () {
6
+ this.timeout(100_000);
7
+ const localnetRpc = 'http://127.0.0.1:9090';
8
+ let signer;
9
+ let proxyAdminAddress;
10
+ let mailboxAddress;
11
+ let ismAddress;
12
+ let hookAddress;
13
+ before(async () => {
14
+ // test private key with funds
15
+ const privateKey = '0000000000000000000000000000000000000000000000000000000000000001';
16
+ signer = await TronSigner.connectWithSigner([localnetRpc], privateKey, {
17
+ metadata: {
18
+ chainId: '9',
19
+ },
20
+ });
21
+ const proxyAdmin = await signer.createProxyAdmin({
22
+ owner: signer.getSignerAddress(),
23
+ });
24
+ proxyAdminAddress = proxyAdmin.proxyAdminAddress;
25
+ const noopIsm = await signer.createNoopIsm({});
26
+ ismAddress = noopIsm.ismAddress;
27
+ });
28
+ step('create new mailbox', async () => {
29
+ // ARRANGE
30
+ const domainId = 1234;
31
+ // ACT
32
+ const txResponse = await signer.createMailbox({
33
+ domainId: domainId,
34
+ defaultIsmAddress: ismAddress,
35
+ proxyAdminAddress,
36
+ });
37
+ // ASSERT
38
+ expect(txResponse.mailboxAddress).to.be.not.empty;
39
+ let mailbox = await signer.getMailbox({
40
+ mailboxAddress: txResponse.mailboxAddress,
41
+ });
42
+ expect(mailbox).not.to.be.undefined;
43
+ expect(mailbox.address).to.equal(txResponse.mailboxAddress);
44
+ expect(mailbox.owner).to.equal(signer.getSignerAddress());
45
+ expect(mailbox.localDomain).to.equal(domainId);
46
+ expect(mailbox.defaultIsm).to.be.empty;
47
+ expect(mailbox.defaultHook).to.be.empty;
48
+ expect(mailbox.requiredHook).to.be.empty;
49
+ mailboxAddress = mailbox.address;
50
+ });
51
+ step('set mailbox default ism', async () => {
52
+ // ARRANGE
53
+ let mailbox = await signer.getMailbox({ mailboxAddress });
54
+ expect(mailbox.defaultIsm).to.be.empty;
55
+ // ACT
56
+ await signer.setDefaultIsm({
57
+ mailboxAddress,
58
+ ismAddress,
59
+ });
60
+ // ASSERT
61
+ mailbox = await signer.getMailbox({ mailboxAddress });
62
+ expect(mailbox.defaultIsm).to.equal(ismAddress);
63
+ });
64
+ step('set mailbox default hook', async () => {
65
+ // ARRANGE
66
+ let mailbox = await signer.getMailbox({ mailboxAddress });
67
+ expect(mailbox.defaultHook).to.be.empty;
68
+ const merkleTreeHook = await signer.createMerkleTreeHook({
69
+ mailboxAddress: mailbox.address,
70
+ });
71
+ hookAddress = merkleTreeHook.hookAddress;
72
+ // ACT
73
+ await signer.setDefaultHook({
74
+ mailboxAddress,
75
+ hookAddress,
76
+ });
77
+ // ASSERT
78
+ mailbox = await signer.getMailbox({ mailboxAddress });
79
+ expect(mailbox.defaultHook).to.equal(hookAddress);
80
+ });
81
+ step('set mailbox required hook', async () => {
82
+ // ARRANGE
83
+ let mailbox = await signer.getMailbox({ mailboxAddress });
84
+ expect(mailbox.requiredHook).to.be.empty;
85
+ // ACT
86
+ await signer.setRequiredHook({
87
+ mailboxAddress,
88
+ hookAddress,
89
+ });
90
+ // ASSERT
91
+ mailbox = await signer.getMailbox({ mailboxAddress });
92
+ expect(mailbox.requiredHook).to.equal(hookAddress);
93
+ });
94
+ step('set mailbox owner', async () => {
95
+ // ARRANGE
96
+ let mailbox = await signer.getMailbox({ mailboxAddress });
97
+ expect(mailbox.owner).to.equal(signer.getSignerAddress());
98
+ const newOwner = new TronWeb({
99
+ fullHost: localnetRpc,
100
+ }).createRandom().address;
101
+ // ACT
102
+ await signer.setMailboxOwner({
103
+ mailboxAddress,
104
+ newOwner,
105
+ });
106
+ // ASSERT
107
+ mailbox = await signer.getMailbox({ mailboxAddress });
108
+ expect(mailbox.owner).to.equal(newOwner);
109
+ });
110
+ step('create validator announce', async () => {
111
+ // ARRANGE & ACT & ASSERT
112
+ await signer.createValidatorAnnounce({
113
+ mailboxAddress,
114
+ });
115
+ });
116
+ });
117
+ //# sourceMappingURL=2_core.e2e-test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"2_core.e2e-test.js","sourceRoot":"","sources":["../../src/tests/2_core.e2e-test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=3_post_dispatch.e2e-test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"3_post_dispatch.e2e-test.d.ts","sourceRoot":"","sources":["../../src/tests/3_post_dispatch.e2e-test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,116 @@
1
+ import { expect } from 'chai';
2
+ import { step } from 'mocha-steps';
3
+ import { TronWeb } from 'tronweb';
4
+ import { TronSigner } from '../clients/signer.js';
5
+ describe('3. tron sdk post dispatch e2e tests', async function () {
6
+ this.timeout(100_000);
7
+ const localnetRpc = 'http://127.0.0.1:9090';
8
+ let signer;
9
+ let proxyAdminAddress;
10
+ let mailboxAddress;
11
+ let igpAddress;
12
+ before(async () => {
13
+ // test private key with funds
14
+ const privateKey = '0000000000000000000000000000000000000000000000000000000000000001';
15
+ signer = await TronSigner.connectWithSigner([localnetRpc], privateKey, {
16
+ metadata: {
17
+ chainId: '9',
18
+ },
19
+ });
20
+ const proxyAdmin = await signer.createProxyAdmin({
21
+ owner: signer.getSignerAddress(),
22
+ });
23
+ proxyAdminAddress = proxyAdmin.proxyAdminAddress;
24
+ const domainId = 1234;
25
+ const mailbox = await signer.createMailbox({
26
+ domainId: domainId,
27
+ proxyAdminAddress,
28
+ });
29
+ mailboxAddress = mailbox.mailboxAddress;
30
+ });
31
+ step('create new Merkle Tree hook', async () => {
32
+ // ARRANGE
33
+ // ACT
34
+ const txResponse = await signer.createMerkleTreeHook({
35
+ mailboxAddress,
36
+ });
37
+ // ASSERT
38
+ expect(txResponse.hookAddress).to.be.not.empty;
39
+ let merkle_tree_hook = await signer.getMerkleTreeHook({
40
+ hookAddress: txResponse.hookAddress,
41
+ });
42
+ expect(merkle_tree_hook).not.to.be.undefined;
43
+ expect(merkle_tree_hook.address).to.equal(txResponse.hookAddress);
44
+ });
45
+ step('create new IGP hook', async () => {
46
+ // ARRANGE
47
+ // ACT
48
+ const txResponse = await signer.createInterchainGasPaymasterHook({
49
+ mailboxAddress,
50
+ denom: '',
51
+ });
52
+ // ASSERT
53
+ expect(txResponse.hookAddress).to.be.not.empty;
54
+ let igp = await signer.getInterchainGasPaymasterHook({
55
+ hookAddress: txResponse.hookAddress,
56
+ });
57
+ expect(igp).not.to.be.undefined;
58
+ expect(igp.address).to.equal(txResponse.hookAddress);
59
+ expect(igp.owner).to.equal(signer.getSignerAddress());
60
+ expect(igp.destinationGasConfigs).to.be.empty;
61
+ igpAddress = igp.address;
62
+ });
63
+ step('set destination gas config', async () => {
64
+ // ARRANGE
65
+ const remoteDomainId = 1234;
66
+ const gasOverhead = '200000';
67
+ const gasPrice = '1';
68
+ const tokenExchangeRate = '10000000000';
69
+ let igp = await signer.getInterchainGasPaymasterHook({
70
+ hookAddress: igpAddress,
71
+ });
72
+ expect(Object.keys(igp.destinationGasConfigs)).to.have.lengthOf(0);
73
+ // ACT
74
+ await signer.setDestinationGasConfig({
75
+ hookAddress: igpAddress,
76
+ destinationGasConfig: {
77
+ remoteDomainId: remoteDomainId,
78
+ gasOracle: {
79
+ tokenExchangeRate: tokenExchangeRate,
80
+ gasPrice: gasPrice,
81
+ },
82
+ gasOverhead: gasOverhead,
83
+ },
84
+ });
85
+ // ASSERT
86
+ igp = await signer.getInterchainGasPaymasterHook({
87
+ hookAddress: igpAddress,
88
+ });
89
+ expect(Object.keys(igp.destinationGasConfigs)).to.have.lengthOf(1);
90
+ const gasConfig = igp.destinationGasConfigs[remoteDomainId];
91
+ expect(gasConfig.gasOverhead).to.equal(gasOverhead);
92
+ expect(gasConfig.gasOracle?.gasPrice).to.equal(gasPrice);
93
+ expect(gasConfig.gasOracle?.tokenExchangeRate).to.equal(tokenExchangeRate);
94
+ });
95
+ step('set igp owner', async () => {
96
+ // ARRANGE
97
+ const newOwner = new TronWeb({
98
+ fullHost: localnetRpc,
99
+ }).createRandom().address;
100
+ let igp = await signer.getInterchainGasPaymasterHook({
101
+ hookAddress: igpAddress,
102
+ });
103
+ expect(igp.owner).to.equal(signer.getSignerAddress());
104
+ // ACT
105
+ await signer.setInterchainGasPaymasterHookOwner({
106
+ hookAddress: igpAddress,
107
+ newOwner: newOwner,
108
+ });
109
+ // ASSERT
110
+ igp = await signer.getInterchainGasPaymasterHook({
111
+ hookAddress: igpAddress,
112
+ });
113
+ expect(igp.owner).to.equal(newOwner);
114
+ });
115
+ });
116
+ //# sourceMappingURL=3_post_dispatch.e2e-test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"3_post_dispatch.e2e-test.js","sourceRoot":"","sources":["../../src/tests/3_post_dispatch.e2e-test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=4_warp.e2e-test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"4_warp.e2e-test.d.ts","sourceRoot":"","sources":["../../src/tests/4_warp.e2e-test.ts"],"names":[],"mappings":""}