@humanode-hyperlane/radix-sdk 0.0.0-stage → 30.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 (200) hide show
  1. package/LICENSE.md +193 -0
  2. package/README.md +42 -2
  3. package/dist/clients/protocol.d.ts +29 -0
  4. package/dist/clients/protocol.d.ts.map +1 -0
  5. package/dist/clients/protocol.js +95 -0
  6. package/dist/clients/protocol.js.map +1 -0
  7. package/dist/clients/provider.d.ts +100 -0
  8. package/dist/clients/provider.d.ts.map +1 -0
  9. package/dist/clients/provider.js +481 -0
  10. package/dist/clients/provider.js.map +1 -0
  11. package/dist/clients/signer.d.ts +66 -0
  12. package/dist/clients/signer.d.ts.map +1 -0
  13. package/dist/clients/signer.js +368 -0
  14. package/dist/clients/signer.js.map +1 -0
  15. package/dist/hook/hook-artifact-manager.d.ts +17 -0
  16. package/dist/hook/hook-artifact-manager.d.ts.map +1 -0
  17. package/dist/hook/hook-artifact-manager.js +60 -0
  18. package/dist/hook/hook-artifact-manager.js.map +1 -0
  19. package/dist/hook/hook-query.d.ts +22 -0
  20. package/dist/hook/hook-query.d.ts.map +1 -0
  21. package/dist/hook/hook-query.js +79 -0
  22. package/dist/hook/hook-query.js.map +1 -0
  23. package/dist/hook/hook-tx.d.ts +21 -0
  24. package/dist/hook/hook-tx.d.ts.map +1 -0
  25. package/dist/hook/hook-tx.js +26 -0
  26. package/dist/hook/hook-tx.js.map +1 -0
  27. package/dist/hook/igp-hook.d.ts +24 -0
  28. package/dist/hook/igp-hook.d.ts.map +1 -0
  29. package/dist/hook/igp-hook.js +148 -0
  30. package/dist/hook/igp-hook.js.map +1 -0
  31. package/dist/hook/merkle-tree-hook.d.ts +24 -0
  32. package/dist/hook/merkle-tree-hook.d.ts.map +1 -0
  33. package/dist/hook/merkle-tree-hook.js +51 -0
  34. package/dist/hook/merkle-tree-hook.js.map +1 -0
  35. package/dist/index.d.ts +13 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +12 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/ism/ism-artifact-manager.d.ts +14 -0
  40. package/dist/ism/ism-artifact-manager.d.ts.map +1 -0
  41. package/dist/ism/ism-artifact-manager.js +67 -0
  42. package/dist/ism/ism-artifact-manager.js.map +1 -0
  43. package/dist/ism/ism-query.d.ts +23 -0
  44. package/dist/ism/ism-query.d.ts.map +1 -0
  45. package/dist/ism/ism-query.js +84 -0
  46. package/dist/ism/ism-query.js.map +1 -0
  47. package/dist/ism/ism-tx.d.ts +31 -0
  48. package/dist/ism/ism-tx.d.ts.map +1 -0
  49. package/dist/ism/ism-tx.js +43 -0
  50. package/dist/ism/ism-tx.js.map +1 -0
  51. package/dist/ism/multisig-ism.d.ts +38 -0
  52. package/dist/ism/multisig-ism.d.ts.map +1 -0
  53. package/dist/ism/multisig-ism.js +107 -0
  54. package/dist/ism/multisig-ism.js.map +1 -0
  55. package/dist/ism/routing-ism.d.ts +23 -0
  56. package/dist/ism/routing-ism.d.ts.map +1 -0
  57. package/dist/ism/routing-ism.js +129 -0
  58. package/dist/ism/routing-ism.js.map +1 -0
  59. package/dist/ism/test-ism.d.ts +23 -0
  60. package/dist/ism/test-ism.d.ts.map +1 -0
  61. package/dist/ism/test-ism.js +49 -0
  62. package/dist/ism/test-ism.js.map +1 -0
  63. package/dist/mailbox/mailbox-artifact-manager.d.ts +15 -0
  64. package/dist/mailbox/mailbox-artifact-manager.d.ts.map +1 -0
  65. package/dist/mailbox/mailbox-artifact-manager.js +29 -0
  66. package/dist/mailbox/mailbox-artifact-manager.js.map +1 -0
  67. package/dist/mailbox/mailbox-query.d.ts +12 -0
  68. package/dist/mailbox/mailbox-query.d.ts.map +1 -0
  69. package/dist/mailbox/mailbox-query.js +72 -0
  70. package/dist/mailbox/mailbox-query.js.map +1 -0
  71. package/dist/mailbox/mailbox-query.test.d.ts +2 -0
  72. package/dist/mailbox/mailbox-query.test.d.ts.map +1 -0
  73. package/dist/mailbox/mailbox-query.test.js +65 -0
  74. package/dist/mailbox/mailbox-query.test.js.map +1 -0
  75. package/dist/mailbox/mailbox-tx.d.ts +21 -0
  76. package/dist/mailbox/mailbox-tx.d.ts.map +1 -0
  77. package/dist/mailbox/mailbox-tx.js +27 -0
  78. package/dist/mailbox/mailbox-tx.js.map +1 -0
  79. package/dist/mailbox/mailbox.d.ts +24 -0
  80. package/dist/mailbox/mailbox.d.ts.map +1 -0
  81. package/dist/mailbox/mailbox.js +171 -0
  82. package/dist/mailbox/mailbox.js.map +1 -0
  83. package/dist/testing/constants.d.ts +61 -0
  84. package/dist/testing/constants.d.ts.map +1 -0
  85. package/dist/testing/constants.js +65 -0
  86. package/dist/testing/constants.js.map +1 -0
  87. package/dist/testing/index.d.ts +8 -0
  88. package/dist/testing/index.d.ts.map +1 -0
  89. package/dist/testing/index.js +11 -0
  90. package/dist/testing/index.js.map +1 -0
  91. package/dist/testing/node.d.ts +13 -0
  92. package/dist/testing/node.d.ts.map +1 -0
  93. package/dist/testing/node.js +42 -0
  94. package/dist/testing/node.js.map +1 -0
  95. package/dist/testing/setup.d.ts +20 -0
  96. package/dist/testing/setup.d.ts.map +1 -0
  97. package/dist/testing/setup.js +61 -0
  98. package/dist/testing/setup.js.map +1 -0
  99. package/dist/tests/e2e-test.setup.d.ts +3 -0
  100. package/dist/tests/e2e-test.setup.d.ts.map +1 -0
  101. package/dist/tests/e2e-test.setup.js +32 -0
  102. package/dist/tests/e2e-test.setup.js.map +1 -0
  103. package/dist/tests/hook.e2e-test.d.ts +2 -0
  104. package/dist/tests/hook.e2e-test.d.ts.map +1 -0
  105. package/dist/tests/hook.e2e-test.js +369 -0
  106. package/dist/tests/hook.e2e-test.js.map +1 -0
  107. package/dist/tests/ism.e2e-test.d.ts +2 -0
  108. package/dist/tests/ism.e2e-test.d.ts.map +1 -0
  109. package/dist/tests/ism.e2e-test.js +250 -0
  110. package/dist/tests/ism.e2e-test.js.map +1 -0
  111. package/dist/tests/mailbox.e2e-test.d.ts +2 -0
  112. package/dist/tests/mailbox.e2e-test.d.ts.map +1 -0
  113. package/dist/tests/mailbox.e2e-test.js +254 -0
  114. package/dist/tests/mailbox.e2e-test.js.map +1 -0
  115. package/dist/tests/validator-announce.e2e-test.d.ts +2 -0
  116. package/dist/tests/validator-announce.e2e-test.d.ts.map +1 -0
  117. package/dist/tests/validator-announce.e2e-test.js +116 -0
  118. package/dist/tests/validator-announce.e2e-test.js.map +1 -0
  119. package/dist/tests/warp.e2e-test.d.ts +2 -0
  120. package/dist/tests/warp.e2e-test.d.ts.map +1 -0
  121. package/dist/tests/warp.e2e-test.js +602 -0
  122. package/dist/tests/warp.e2e-test.js.map +1 -0
  123. package/dist/utils/base-query.d.ts +188 -0
  124. package/dist/utils/base-query.d.ts.map +1 -0
  125. package/dist/utils/base-query.js +207 -0
  126. package/dist/utils/base-query.js.map +1 -0
  127. package/dist/utils/base.d.ts +67 -0
  128. package/dist/utils/base.d.ts.map +1 -0
  129. package/dist/utils/base.js +353 -0
  130. package/dist/utils/base.js.map +1 -0
  131. package/dist/utils/constants.d.ts +20 -0
  132. package/dist/utils/constants.d.ts.map +1 -0
  133. package/dist/utils/constants.js +20 -0
  134. package/dist/utils/constants.js.map +1 -0
  135. package/dist/utils/signer.d.ts +17 -0
  136. package/dist/utils/signer.d.ts.map +1 -0
  137. package/dist/utils/signer.js +60 -0
  138. package/dist/utils/signer.js.map +1 -0
  139. package/dist/utils/types.d.ts +139 -0
  140. package/dist/utils/types.d.ts.map +1 -0
  141. package/dist/utils/types.js +39 -0
  142. package/dist/utils/types.js.map +1 -0
  143. package/dist/utils/utils.d.ts +8 -0
  144. package/dist/utils/utils.d.ts.map +1 -0
  145. package/dist/utils/utils.js +47 -0
  146. package/dist/utils/utils.js.map +1 -0
  147. package/dist/utils/utils.test.d.ts +2 -0
  148. package/dist/utils/utils.test.d.ts.map +1 -0
  149. package/dist/utils/utils.test.js +27 -0
  150. package/dist/utils/utils.test.js.map +1 -0
  151. package/dist/validator-announce/validator-announce-artifact-manager.d.ts +14 -0
  152. package/dist/validator-announce/validator-announce-artifact-manager.d.ts.map +1 -0
  153. package/dist/validator-announce/validator-announce-artifact-manager.js +21 -0
  154. package/dist/validator-announce/validator-announce-artifact-manager.js.map +1 -0
  155. package/dist/validator-announce/validator-announce-query.d.ts +6 -0
  156. package/dist/validator-announce/validator-announce-query.d.ts.map +1 -0
  157. package/dist/validator-announce/validator-announce-query.js +10 -0
  158. package/dist/validator-announce/validator-announce-query.js.map +1 -0
  159. package/dist/validator-announce/validator-announce-tx.d.ts +4 -0
  160. package/dist/validator-announce/validator-announce-tx.d.ts.map +1 -0
  161. package/dist/validator-announce/validator-announce-tx.js +6 -0
  162. package/dist/validator-announce/validator-announce-tx.js.map +1 -0
  163. package/dist/validator-announce/validator-announce.d.ts +23 -0
  164. package/dist/validator-announce/validator-announce.d.ts.map +1 -0
  165. package/dist/validator-announce/validator-announce.js +52 -0
  166. package/dist/validator-announce/validator-announce.js.map +1 -0
  167. package/dist/warp/collateral-token.d.ts +23 -0
  168. package/dist/warp/collateral-token.d.ts.map +1 -0
  169. package/dist/warp/collateral-token.js +130 -0
  170. package/dist/warp/collateral-token.js.map +1 -0
  171. package/dist/warp/populate.d.ts +71 -0
  172. package/dist/warp/populate.d.ts.map +1 -0
  173. package/dist/warp/populate.js +110 -0
  174. package/dist/warp/populate.js.map +1 -0
  175. package/dist/warp/query.d.ts +44 -0
  176. package/dist/warp/query.d.ts.map +1 -0
  177. package/dist/warp/query.js +154 -0
  178. package/dist/warp/query.js.map +1 -0
  179. package/dist/warp/synthetic-token.d.ts +23 -0
  180. package/dist/warp/synthetic-token.d.ts.map +1 -0
  181. package/dist/warp/synthetic-token.js +131 -0
  182. package/dist/warp/synthetic-token.js.map +1 -0
  183. package/dist/warp/tx.d.ts +54 -0
  184. package/dist/warp/tx.d.ts.map +1 -0
  185. package/dist/warp/tx.js +85 -0
  186. package/dist/warp/tx.js.map +1 -0
  187. package/dist/warp/warp-artifact-manager.d.ts +15 -0
  188. package/dist/warp/warp-artifact-manager.d.ts.map +1 -0
  189. package/dist/warp/warp-artifact-manager.js +49 -0
  190. package/dist/warp/warp-artifact-manager.js.map +1 -0
  191. package/dist/warp/warp-query.d.ts +9 -0
  192. package/dist/warp/warp-query.d.ts.map +1 -0
  193. package/dist/warp/warp-query.js +130 -0
  194. package/dist/warp/warp-query.js.map +1 -0
  195. package/dist/warp/warp-tx.d.ts +48 -0
  196. package/dist/warp/warp-tx.d.ts.map +1 -0
  197. package/dist/warp/warp-tx.js +125 -0
  198. package/dist/warp/warp-tx.js.map +1 -0
  199. package/docker-compose.yml +139 -0
  200. package/package.json +64 -3
@@ -0,0 +1,110 @@
1
+ import { address, decimal, enumeration, str, u8, u32, } from '@radixdlt/radix-engine-toolkit';
2
+ import { BigNumber } from 'bignumber.js';
3
+ import { assert, isNullish, isZeroishAddress, strip0x, } from '@humanode-hyperlane/utils';
4
+ import { INSTRUCTIONS } from '../utils/types.js';
5
+ import { bytes } from '../utils/utils.js';
6
+ export class RadixWarpPopulate {
7
+ gateway;
8
+ base;
9
+ query;
10
+ packageAddress;
11
+ constructor(gateway, base, query, packageAddress) {
12
+ this.gateway = gateway;
13
+ this.base = base;
14
+ this.query = query;
15
+ this.packageAddress = packageAddress;
16
+ }
17
+ createCollateralToken({ from_address, mailbox, origin_denom, }) {
18
+ return this.base.createCallFunctionManifest(from_address, this.packageAddress, 'HypToken', INSTRUCTIONS.INSTANTIATE, [enumeration(0, address(origin_denom)), address(mailbox)]);
19
+ }
20
+ createSyntheticToken({ from_address, mailbox, name, symbol, divisibility, }) {
21
+ return this.base.createCallFunctionManifest(from_address, this.packageAddress, 'HypToken', INSTRUCTIONS.INSTANTIATE, [
22
+ enumeration(1, str(name), str(symbol), str(''), u8(divisibility)),
23
+ address(mailbox),
24
+ ]);
25
+ }
26
+ async setTokenOwner({ from_address, token, new_owner, }) {
27
+ const details = await this.gateway.state.getEntityDetailsVaultAggregated(token);
28
+ const resource = details.details.role_assignments.owner
29
+ .rule.access_rule.proof_rule.requirement.resource;
30
+ return this.base.transfer({
31
+ from_address,
32
+ to_address: new_owner,
33
+ resource_address: resource,
34
+ amount: '1',
35
+ });
36
+ }
37
+ async setTokenIsm({ from_address, token, ism, }) {
38
+ const ismAddress = isNullish(ism) || isZeroishAddress(ism)
39
+ ? enumeration(0)
40
+ : enumeration(1, address(ism));
41
+ return this.base.createCallMethodManifestWithOwner(from_address, token, 'set_ism', [ismAddress]);
42
+ }
43
+ async enrollRemoteRouter({ from_address, token, receiver_domain, receiver_address, gas, }) {
44
+ return this.base.createCallMethodManifestWithOwner(from_address, token, 'enroll_remote_router', [u32(receiver_domain), bytes(strip0x(receiver_address)), decimal(gas)]);
45
+ }
46
+ async unenrollRemoteRouter({ from_address, token, receiver_domain, }) {
47
+ return this.base.createCallMethodManifestWithOwner(from_address, token, 'unroll_remote_router', [u32(receiver_domain)]);
48
+ }
49
+ async remoteTransfer({ from_address, token, destination_domain, recipient, amount, max_fee, }) {
50
+ const { denom, decimals } = await this.query.getToken({ token });
51
+ const tokenAmount = new BigNumber(amount)
52
+ .dividedBy(new BigNumber(10).pow(decimals))
53
+ .toFixed(decimals);
54
+ assert(denom, `no origin_denom found on token ${token}`);
55
+ return getTransferRemoteManifest({
56
+ from_address,
57
+ token,
58
+ destination_domain,
59
+ recipient,
60
+ tokenAmount,
61
+ max_fee,
62
+ origin_denom: denom,
63
+ });
64
+ }
65
+ }
66
+ export function getTransferRemoteManifest({ from_address, token, destination_domain, recipient, tokenAmount, max_fee, origin_denom, }) {
67
+ return `
68
+ CALL_METHOD
69
+ Address("${from_address}")
70
+ "withdraw"
71
+ Address("${origin_denom}")
72
+ Decimal("${tokenAmount}")
73
+ ;
74
+ CALL_METHOD
75
+ Address("${from_address}")
76
+ "withdraw"
77
+ Address("${max_fee.denom}")
78
+ Decimal("${max_fee.amount}")
79
+ ;
80
+ TAKE_FROM_WORKTOP
81
+ Address("${origin_denom}")
82
+ Decimal("${tokenAmount}")
83
+ Bucket("bucket1")
84
+ ;
85
+ TAKE_FROM_WORKTOP
86
+ Address("${max_fee.denom}")
87
+ Decimal("${max_fee.amount}")
88
+ Bucket("bucket2")
89
+ ;
90
+ CALL_METHOD
91
+ Address("${token}")
92
+ "transfer_remote"
93
+ ${destination_domain}u32
94
+ Bytes("${recipient}")
95
+ Bucket("bucket1")
96
+ Array<Bucket>(
97
+ Bucket("bucket2")
98
+ )
99
+ Enum<0u8>()
100
+ Enum<0u8>()
101
+ ;
102
+ CALL_METHOD
103
+ Address("${from_address}")
104
+ "try_deposit_batch_or_abort"
105
+ Expression("ENTIRE_WORKTOP")
106
+ Enum<0u8>()
107
+ ;
108
+ `;
109
+ }
110
+ //# sourceMappingURL=populate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"populate.js","sourceRoot":"","sources":["../../src/warp/populate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import { GatewayApiClient } from '@radixdlt/babylon-gateway-api-sdk';
2
+ import { RadixBase } from '../utils/base.js';
3
+ export declare class RadixWarpQuery {
4
+ protected networkId: number;
5
+ protected gateway: GatewayApiClient;
6
+ protected base: RadixBase;
7
+ constructor(networkId: number, gateway: GatewayApiClient, base: RadixBase);
8
+ getToken({ token }: {
9
+ token: string;
10
+ }): Promise<{
11
+ address: string;
12
+ owner: string;
13
+ tokenType: 'Collateral' | 'Synthetic';
14
+ mailboxAddress: string;
15
+ ismAddress: string;
16
+ hookAddress: string;
17
+ denom: string;
18
+ name: string;
19
+ symbol: string;
20
+ description: string;
21
+ decimals: number;
22
+ }>;
23
+ getRemoteRouters({ token }: {
24
+ token: string;
25
+ }): Promise<{
26
+ address: string;
27
+ remoteRouters: {
28
+ receiverDomainId: number;
29
+ receiverAddress: string;
30
+ gas: string;
31
+ }[];
32
+ }>;
33
+ getBridgedSupply({ token }: {
34
+ token: string;
35
+ }): Promise<bigint>;
36
+ quoteRemoteTransfer({ token, destination_domain, }: {
37
+ token: string;
38
+ destination_domain: number;
39
+ }): Promise<{
40
+ denom: string;
41
+ amount: bigint;
42
+ }>;
43
+ }
44
+ //# sourceMappingURL=query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/warp/query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAOrE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAO7C,qBAAa,cAAc;IACzB,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,OAAO,EAAE,gBAAgB,CAAC;IACpC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC;gBAEd,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,SAAS;IAM5D,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAC3D,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,YAAY,GAAG,WAAW,CAAC;QACtC,cAAc,EAAE,MAAM,CAAC;QACvB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IA4EW,gBAAgB,CAAC,EAAE,KAAK,EAAE,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QACnE,OAAO,EAAE,MAAM,CAAC;QAChB,aAAa,EAAE;YACb,gBAAgB,EAAE,MAAM,CAAC;YACzB,eAAe,EAAE,MAAM,CAAC;YACxB,GAAG,EAAE,MAAM,CAAC;SACb,EAAE,CAAC;KACL,CAAC;IA2DW,gBAAgB,CAAC,EAAE,KAAK,EAAE,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAoB/D,mBAAmB,CAAC,EAC/B,KAAK,EACL,kBAAkB,GACnB,EAAE;QACD,KAAK,EAAE,MAAM,CAAC;QACd,kBAAkB,EAAE,MAAM,CAAC;KAC5B,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CA+D/C"}
@@ -0,0 +1,154 @@
1
+ import { generateRandomNonce } from '@radixdlt/radix-engine-toolkit';
2
+ import { BigNumber } from 'bignumber.js';
3
+ import { assert } from '@humanode-hyperlane/utils';
4
+ import { getKeysFromKvStore } from '../utils/base-query.js';
5
+ import { EPOCH_VALIDITY_RANGE, READ_ACCOUNT_HEX_PUBLIC_KEY, } from '../utils/constants.js';
6
+ export class RadixWarpQuery {
7
+ networkId;
8
+ gateway;
9
+ base;
10
+ constructor(networkId, gateway, base) {
11
+ this.networkId = networkId;
12
+ this.gateway = gateway;
13
+ this.base = base;
14
+ }
15
+ async getToken({ token }) {
16
+ const details = await this.gateway.state.getEntityDetailsVaultAggregated(token);
17
+ assert(details.details.blueprint_name === 'HypToken', `Expected contract at address ${token} to be "HypToken" but got ${details.details.blueprint_name}`);
18
+ const ownerResource = details.details.role_assignments
19
+ .owner.rule.access_rule.proof_rule.requirement.resource;
20
+ const { items } = await this.gateway.extensions.getResourceHolders(ownerResource);
21
+ const resourceHolders = [
22
+ ...new Set(items.map((item) => item.holder_address)),
23
+ ];
24
+ assert(resourceHolders.length === 1, `expected token holders of resource ${ownerResource} to be one, found ${resourceHolders.length} holders instead`);
25
+ const fields = details.details.state.fields;
26
+ const token_type = fields.find((f) => f.field_name === 'token_type')?.variant_name ?? '';
27
+ assert(token_type === 'Collateral' || token_type === 'Synthetic', `unknown token type: ${token_type}`);
28
+ const ismFields = fields.find((f) => f.field_name === 'ism')?.fields ?? [];
29
+ const tokenTypeFields = fields.find((f) => f.field_name === 'token_type')?.fields ?? [];
30
+ let origin_denom;
31
+ let metadata = {
32
+ name: '',
33
+ symbol: '',
34
+ description: '',
35
+ decimals: 0,
36
+ };
37
+ if (token_type === 'Collateral') {
38
+ origin_denom =
39
+ tokenTypeFields.find((t) => t.type_name === 'ResourceAddress')?.value ??
40
+ '';
41
+ metadata = await this.base.getMetadata({ resource: origin_denom });
42
+ }
43
+ else if (token_type === 'Synthetic') {
44
+ origin_denom =
45
+ (fields.find((f) => f.field_name === 'resource_manager')?.fields ?? []).find((r) => r.type_name === 'ResourceAddress')?.value ?? '';
46
+ metadata = await this.base.getMetadata({ resource: origin_denom });
47
+ }
48
+ const result = {
49
+ address: token,
50
+ owner: resourceHolders[0],
51
+ tokenType: token_type,
52
+ mailboxAddress: fields.find((f) => f.field_name === 'mailbox')?.value ?? '',
53
+ ismAddress: ismFields[0]?.value ?? '',
54
+ hookAddress: '',
55
+ denom: origin_denom,
56
+ ...metadata,
57
+ };
58
+ return result;
59
+ }
60
+ async getRemoteRouters({ token }) {
61
+ const details = await this.gateway.state.getEntityDetailsVaultAggregated(token);
62
+ assert(details.details.blueprint_name === 'HypToken', `Expected contract at address ${token} to be "HypToken" but got ${details.details.blueprint_name}`);
63
+ const fields = details.details.state.fields;
64
+ const enrolledRoutersKeyValueStore = fields.find((f) => f.field_name === 'enrolled_routers')?.value ?? '';
65
+ assert(enrolledRoutersKeyValueStore, `found no enrolled routers on token ${token}`);
66
+ const remoteRouters = [];
67
+ const keys = await getKeysFromKvStore(this.gateway, enrolledRoutersKeyValueStore);
68
+ for (const key of keys) {
69
+ const { entries } = await this.gateway.state.innerClient.keyValueStoreData({
70
+ stateKeyValueStoreDataRequest: {
71
+ key_value_store_address: enrolledRoutersKeyValueStore,
72
+ keys: [
73
+ {
74
+ key_hex: key.raw_hex,
75
+ },
76
+ ],
77
+ },
78
+ });
79
+ const routerFields = entries[0].value.programmatic_json?.fields ?? [];
80
+ remoteRouters.push({
81
+ receiverDomainId: parseInt(routerFields.find((r) => r.field_name === 'domain')?.value ?? ''),
82
+ receiverAddress: routerFields.find((r) => r.field_name === 'recipient')?.hex ?? '',
83
+ gas: routerFields.find((r) => r.field_name === 'gas')?.value ?? '',
84
+ });
85
+ }
86
+ const result = {
87
+ address: token,
88
+ remoteRouters,
89
+ };
90
+ return result;
91
+ }
92
+ async getBridgedSupply({ token }) {
93
+ const { tokenType, denom } = await this.getToken({ token });
94
+ switch (tokenType) {
95
+ case 'Collateral': {
96
+ // if the token is collateral we get the token contract balance
97
+ // of the origin denom
98
+ return this.base.getBalance({ address: token, resource: denom });
99
+ }
100
+ case 'Synthetic': {
101
+ // if the token is synthetic we get the total supply of the synthetic
102
+ // resource
103
+ return this.base.getTotalSupply({ resource: denom });
104
+ }
105
+ default: {
106
+ throw new Error(`unknown token type: ${tokenType}`);
107
+ }
108
+ }
109
+ }
110
+ async quoteRemoteTransfer({ token, destination_domain, }) {
111
+ const constructionMetadata = await this.gateway.transaction.innerClient.transactionConstruction();
112
+ const response = await this.gateway.transaction.innerClient.transactionPreview({
113
+ transactionPreviewRequest: {
114
+ manifest: `
115
+ CALL_METHOD
116
+ Address("${token}")
117
+ "quote_remote_transfer"
118
+ ${destination_domain}u32
119
+ Bytes("0000000000000000000000000000000000000000000000000000000000000000")
120
+ Decimal("0")
121
+ ;
122
+ `,
123
+ nonce: generateRandomNonce(),
124
+ signer_public_keys: [
125
+ {
126
+ key_type: 'EddsaEd25519',
127
+ key_hex: READ_ACCOUNT_HEX_PUBLIC_KEY,
128
+ },
129
+ ],
130
+ flags: {
131
+ use_free_credit: true,
132
+ },
133
+ start_epoch_inclusive: constructionMetadata.ledger_state.epoch,
134
+ end_epoch_exclusive: constructionMetadata.ledger_state.epoch + EPOCH_VALIDITY_RANGE,
135
+ },
136
+ });
137
+ assert(!response.receipt.error_message, `${response.receipt.error_message}`);
138
+ const output = response.receipt.output;
139
+ assert(output.length, `found no output for quote_remote_transfer method`);
140
+ const programmaticJson = output[0].programmatic_json;
141
+ assert('entries' in programmaticJson, 'programmatic_json is not in the expected format');
142
+ const entries = programmaticJson.entries;
143
+ assert(entries.length > 0, `quote_remote_transfer returned no resources`);
144
+ assert(entries.length < 2, `quote_remote_transfer returned multiple resources`);
145
+ return {
146
+ denom: entries[0].key.value,
147
+ amount: BigInt(new BigNumber(entries[0].value.value)
148
+ .times(new BigNumber(10).pow(18))
149
+ .integerValue(BigNumber.ROUND_FLOOR)
150
+ .toFixed(0)),
151
+ };
152
+ }
153
+ }
154
+ //# sourceMappingURL=query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/warp/query.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { GatewayApiClient } from '@radixdlt/babylon-gateway-api-sdk';
2
+ import { ArtifactDeployed, ArtifactNew, ArtifactReader, ArtifactWriter } from '@humanode-hyperlane/provider-sdk/artifact';
3
+ import { TxReceipt } from '@humanode-hyperlane/provider-sdk/module';
4
+ import { DeployedWarpAddress, RawSyntheticWarpArtifactConfig } from '@humanode-hyperlane/provider-sdk/warp';
5
+ import { RadixBase } from '../utils/base.js';
6
+ import { RadixBaseSigner } from '../utils/signer.js';
7
+ import { AnnotatedRadixTransaction } from '../utils/types.js';
8
+ export declare class RadixSyntheticTokenReader implements ArtifactReader<RawSyntheticWarpArtifactConfig, DeployedWarpAddress> {
9
+ protected readonly gateway: GatewayApiClient;
10
+ protected readonly base: RadixBase;
11
+ constructor(gateway: GatewayApiClient, base: RadixBase);
12
+ read(address: string): Promise<ArtifactDeployed<RawSyntheticWarpArtifactConfig, DeployedWarpAddress>>;
13
+ }
14
+ export declare class RadixSyntheticTokenWriter extends RadixSyntheticTokenReader implements ArtifactWriter<RawSyntheticWarpArtifactConfig, DeployedWarpAddress> {
15
+ private readonly signer;
16
+ constructor(gateway: GatewayApiClient, signer: RadixBaseSigner, base: RadixBase);
17
+ create(artifact: ArtifactNew<RawSyntheticWarpArtifactConfig>): Promise<[
18
+ ArtifactDeployed<RawSyntheticWarpArtifactConfig, DeployedWarpAddress>,
19
+ TxReceipt[]
20
+ ]>;
21
+ update(artifact: ArtifactDeployed<RawSyntheticWarpArtifactConfig, DeployedWarpAddress>): Promise<AnnotatedRadixTransaction[]>;
22
+ }
23
+ //# sourceMappingURL=synthetic-token.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synthetic-token.d.ts","sourceRoot":"","sources":["../../src/warp/synthetic-token.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAGrE,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,cAAc,EAEd,cAAc,EACf,MAAM,2CAA2C,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EACL,mBAAmB,EACnB,8BAA8B,EAE/B,MAAM,uCAAuC,CAAC;AAG/C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAe9D,qBAAa,yBAA0B,YAAW,cAAc,CAC9D,8BAA8B,EAC9B,mBAAmB,CACpB;IAEG,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,gBAAgB;IAC5C,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS;gBADf,OAAO,EAAE,gBAAgB,EACzB,IAAI,EAAE,SAAS;IAG9B,IAAI,CACR,OAAO,EAAE,MAAM,GACd,OAAO,CACR,gBAAgB,CAAC,8BAA8B,EAAE,mBAAmB,CAAC,CACtE;CAwCF;AAED,qBAAa,yBACX,SAAQ,yBACR,YAAW,cAAc,CAAC,8BAA8B,EAAE,mBAAmB,CAAC;IAI5E,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADvB,OAAO,EAAE,gBAAgB,EACR,MAAM,EAAE,eAAe,EACxC,IAAI,EAAE,SAAS;IAKX,MAAM,CACV,QAAQ,EAAE,WAAW,CAAC,8BAA8B,CAAC,GACpD,OAAO,CACR;QACE,gBAAgB,CAAC,8BAA8B,EAAE,mBAAmB,CAAC;QACrE,SAAS,EAAE;KACZ,CACF;IAuHK,MAAM,CACV,QAAQ,EAAE,gBAAgB,CACxB,8BAA8B,EAC9B,mBAAmB,CACpB,GACA,OAAO,CAAC,yBAAyB,EAAE,CAAC;CAYxC"}
@@ -0,0 +1,131 @@
1
+ import { AltVM } from '@humanode-hyperlane/provider-sdk';
2
+ import { ArtifactState, } from '@humanode-hyperlane/provider-sdk/artifact';
3
+ import { computeRemoteRoutersUpdates, } from '@humanode-hyperlane/provider-sdk/warp';
4
+ import { eqAddressRadix } from '@humanode-hyperlane/utils';
5
+ import { getSyntheticWarpTokenConfig } from './warp-query.js';
6
+ import { getCreateSyntheticTokenTx, getEnrollRemoteRouterTx, getSetTokenIsmTx, getWarpTokenUpdateTxs, } from './warp-tx.js';
7
+ function withErrorContext(context, error) {
8
+ const message = error instanceof Error ? error.message : String(error);
9
+ return new Error(`${context}: ${message}`);
10
+ }
11
+ export class RadixSyntheticTokenReader {
12
+ gateway;
13
+ base;
14
+ constructor(gateway, base) {
15
+ this.gateway = gateway;
16
+ this.base = base;
17
+ }
18
+ async read(address) {
19
+ // Fetch token info
20
+ const token = await getSyntheticWarpTokenConfig(this.gateway, this.base, address).catch((error) => {
21
+ throw withErrorContext(`Failed to read synthetic warp token config (address=${address})`, error);
22
+ });
23
+ const config = {
24
+ type: AltVM.TokenType.synthetic,
25
+ owner: token.owner,
26
+ mailbox: token.mailbox,
27
+ interchainSecurityModule: token.interchainSecurityModule
28
+ ? {
29
+ artifactState: ArtifactState.UNDERIVED,
30
+ deployed: {
31
+ address: token.interchainSecurityModule,
32
+ },
33
+ }
34
+ : undefined,
35
+ remoteRouters: token.remoteRouters,
36
+ destinationGas: token.destinationGas,
37
+ name: token.name,
38
+ symbol: token.symbol,
39
+ decimals: token.decimals,
40
+ };
41
+ return {
42
+ artifactState: ArtifactState.DEPLOYED,
43
+ config,
44
+ deployed: {
45
+ address,
46
+ },
47
+ };
48
+ }
49
+ }
50
+ export class RadixSyntheticTokenWriter extends RadixSyntheticTokenReader {
51
+ signer;
52
+ constructor(gateway, signer, base) {
53
+ super(gateway, base);
54
+ this.signer = signer;
55
+ }
56
+ async create(artifact) {
57
+ const { config } = artifact;
58
+ const allReceipts = [];
59
+ // Create the synthetic token
60
+ const transactionManifest = await getCreateSyntheticTokenTx(this.base, this.signer.getAddress(), {
61
+ mailbox: config.mailbox,
62
+ name: config.name,
63
+ symbol: config.symbol,
64
+ divisibility: config.decimals,
65
+ }).catch((error) => {
66
+ throw withErrorContext(`Failed to build synthetic create transaction (signer=${this.signer.getAddress()}, mailbox=${config.mailbox}, name=${config.name}, symbol=${config.symbol})`, error);
67
+ });
68
+ const createReceipt = await this.signer
69
+ .signAndBroadcast(transactionManifest)
70
+ .catch((error) => {
71
+ throw withErrorContext(`Failed to create synthetic warp token (signer=${this.signer.getAddress()}, mailbox=${config.mailbox}, name=${config.name}, symbol=${config.symbol})`, error);
72
+ });
73
+ const address = await this.base
74
+ .getNewComponent(createReceipt)
75
+ .catch((error) => {
76
+ throw withErrorContext('Failed to resolve created synthetic token address from transaction receipt', error);
77
+ });
78
+ allReceipts.push(createReceipt);
79
+ // Set ISM if configured
80
+ if (config.interchainSecurityModule) {
81
+ const ismAddress = config.interchainSecurityModule.deployed.address;
82
+ const setIsmTx = await getSetTokenIsmTx(this.base, this.signer.getAddress(), {
83
+ tokenAddress: address,
84
+ ismAddress,
85
+ }).catch((error) => {
86
+ throw withErrorContext(`Failed to build set ISM transaction for synthetic warp token ${address}`, error);
87
+ });
88
+ const ismReceipt = await this.signer
89
+ .signAndBroadcast(setIsmTx)
90
+ .catch((error) => {
91
+ throw withErrorContext(`Failed to set ISM for synthetic warp token ${address}`, error);
92
+ });
93
+ allReceipts.push(ismReceipt);
94
+ }
95
+ const { toEnroll } = computeRemoteRoutersUpdates({ destinationGas: {}, remoteRouters: {} }, config, eqAddressRadix);
96
+ // Enroll remote routers
97
+ for (const { domainId, gas, routerAddress } of toEnroll) {
98
+ const enrollTx = await getEnrollRemoteRouterTx(this.base, this.signer.getAddress(), {
99
+ tokenAddress: address,
100
+ remoteDomainId: domainId,
101
+ remoteRouterAddress: routerAddress,
102
+ destinationGas: gas,
103
+ }).catch((error) => {
104
+ throw withErrorContext(`Failed to build enroll remote router transaction for synthetic warp token ${address} (domain=${domainId}, router=${routerAddress})`, error);
105
+ });
106
+ const enrollReceipt = await this.signer
107
+ .signAndBroadcast(enrollTx)
108
+ .catch((error) => {
109
+ throw withErrorContext(`Failed to enroll remote router for synthetic warp token ${address} (domain=${domainId}, router=${routerAddress})`, error);
110
+ });
111
+ allReceipts.push(enrollReceipt);
112
+ }
113
+ // We don't transfer ownership here because after deployment the token needs to be
114
+ // enrolled with the other tokens deployed and only the owner can perform that enrollment.
115
+ const deployedArtifact = {
116
+ artifactState: ArtifactState.DEPLOYED,
117
+ config: artifact.config,
118
+ deployed: {
119
+ address,
120
+ },
121
+ };
122
+ return [deployedArtifact, allReceipts];
123
+ }
124
+ async update(artifact) {
125
+ const currentArtifactState = await this.read(artifact.deployed.address);
126
+ return getWarpTokenUpdateTxs(artifact, currentArtifactState, this.base, this.gateway,
127
+ // The current owner is the only one that can execute the update transactions
128
+ currentArtifactState.config.owner);
129
+ }
130
+ }
131
+ //# sourceMappingURL=synthetic-token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synthetic-token.js","sourceRoot":"","sources":["../../src/warp/synthetic-token.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AACzD,OAAO,EAIL,aAAa,GAEd,MAAM,2CAA2C,CAAC;AAEnD,OAAO,EAGL,2BAA2B,GAC5B,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAM3D,OAAO,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,cAAc,CAAC;AAEtB,SAAS,gBAAgB,CAAC,OAAe,EAAE,KAAc;IACvD,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,OAAO,IAAI,KAAK,CAAC,GAAG,OAAO,KAAK,OAAO,EAAE,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,OAAO,yBAAyB;IAKf;IACA;IAFrB,YACqB,OAAyB,EACzB,IAAe;QADf,YAAO,GAAP,OAAO,CAAkB;QACzB,SAAI,GAAJ,IAAI,CAAW;IACjC,CAAC;IAEJ,KAAK,CAAC,IAAI,CACR,OAAe;QAIf,mBAAmB;QACnB,MAAM,KAAK,GAAG,MAAM,2BAA2B,CAC7C,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,IAAI,EACT,OAAO,CACR,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YACzB,MAAM,gBAAgB,CACpB,uDAAuD,OAAO,GAAG,EACjE,KAAK,CACN,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAmC;YAC7C,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS;YAC/B,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,wBAAwB,EAAE,KAAK,CAAC,wBAAwB;gBACtD,CAAC,CAAC;oBACE,aAAa,EAAE,aAAa,CAAC,SAAS;oBACtC,QAAQ,EAAE;wBACR,OAAO,EAAE,KAAK,CAAC,wBAAwB;qBACxC;iBACF;gBACH,CAAC,CAAC,SAAS;YACb,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,cAAc,EAAE,KAAK,CAAC,cAAc;YACpC,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;SACzB,CAAC;QAEF,OAAO;YACL,aAAa,EAAE,aAAa,CAAC,QAAQ;YACrC,MAAM;YACN,QAAQ,EAAE;gBACR,OAAO;aACR;SACF,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,yBACX,SAAQ,yBAAyB;IAKd;IAFnB,YACE,OAAyB,EACR,MAAuB,EACxC,IAAe;QAEf,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAHJ,WAAM,GAAN,MAAM,CAAiB;IAI1C,CAAC;IAED,KAAK,CAAC,MAAM,CACV,QAAqD;QAOrD,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;QAC5B,MAAM,WAAW,GAAgB,EAAE,CAAC;QAEpC,6BAA6B;QAC7B,MAAM,mBAAmB,GAAG,MAAM,yBAAyB,CACzD,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EACxB;YACE,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,YAAY,EAAE,MAAM,CAAC,QAAQ;SAC9B,CACF,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YACzB,MAAM,gBAAgB,CACpB,wDAAwD,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,aAAa,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,IAAI,YAAY,MAAM,CAAC,MAAM,GAAG,EAC5J,KAAK,CACN,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,MAAM;aACpC,gBAAgB,CAAC,mBAAmB,CAAC;aACrC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YACxB,MAAM,gBAAgB,CACpB,iDAAiD,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,aAAa,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,IAAI,YAAY,MAAM,CAAC,MAAM,GAAG,EACrJ,KAAK,CACN,CAAC;QACJ,CAAC,CAAC,CAAC;QACL,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI;aAC5B,eAAe,CAAC,aAAa,CAAC;aAC9B,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YACxB,MAAM,gBAAgB,CACpB,4EAA4E,EAC5E,KAAK,CACN,CAAC;QACJ,CAAC,CAAC,CAAC;QACL,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAEhC,wBAAwB;QACxB,IAAI,MAAM,CAAC,wBAAwB,EAAE,CAAC;YACpC,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,QAAQ,CAAC,OAAO,CAAC;YACpE,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CACrC,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EACxB;gBACE,YAAY,EAAE,OAAO;gBACrB,UAAU;aACX,CACF,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;gBACzB,MAAM,gBAAgB,CACpB,gEAAgE,OAAO,EAAE,EACzE,KAAK,CACN,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM;iBACjC,gBAAgB,CAAC,QAAQ,CAAC;iBAC1B,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;gBACxB,MAAM,gBAAgB,CACpB,8CAA8C,OAAO,EAAE,EACvD,KAAK,CACN,CAAC;YACJ,CAAC,CAAC,CAAC;YACL,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC/B,CAAC;QAED,MAAM,EAAE,QAAQ,EAAE,GAAG,2BAA2B,CAC9C,EAAE,cAAc,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,EACzC,MAAM,EACN,cAAc,CACf,CAAC;QAEF,wBAAwB;QACxB,KAAK,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,QAAQ,EAAE,CAAC;YACxD,MAAM,QAAQ,GAAG,MAAM,uBAAuB,CAC5C,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EACxB;gBACE,YAAY,EAAE,OAAO;gBACrB,cAAc,EAAE,QAAQ;gBACxB,mBAAmB,EAAE,aAAa;gBAClC,cAAc,EAAE,GAAG;aACpB,CACF,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;gBACzB,MAAM,gBAAgB,CACpB,6EAA6E,OAAO,YAAY,QAAQ,YAAY,aAAa,GAAG,EACpI,KAAK,CACN,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,MAAM;iBACpC,gBAAgB,CAAC,QAAQ,CAAC;iBAC1B,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;gBACxB,MAAM,gBAAgB,CACpB,2DAA2D,OAAO,YAAY,QAAQ,YAAY,aAAa,GAAG,EAClH,KAAK,CACN,CAAC;YACJ,CAAC,CAAC,CAAC;YACL,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAClC,CAAC;QAED,kFAAkF;QAClF,0FAA0F;QAE1F,MAAM,gBAAgB,GAGlB;YACF,aAAa,EAAE,aAAa,CAAC,QAAQ;YACrC,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,QAAQ,EAAE;gBACR,OAAO;aACR;SACF,CAAC;QAEF,OAAO,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,MAAM,CACV,QAGC;QAED,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAExE,OAAO,qBAAqB,CAC1B,QAAQ,EACR,oBAAoB,EACpB,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,OAAO;QACZ,6EAA6E;QAC7E,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAClC,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,54 @@
1
+ import { RadixBase } from '../utils/base.js';
2
+ import { RadixBaseSigner } from '../utils/signer.js';
3
+ import { Account } from '../utils/types.js';
4
+ import { RadixWarpPopulate } from './populate.js';
5
+ export declare class RadixWarpTx {
6
+ private account;
7
+ private networkId;
8
+ protected base: RadixBase;
9
+ protected populate: RadixWarpPopulate;
10
+ protected signer: RadixBaseSigner;
11
+ constructor(account: Account, networkId: number, base: RadixBase, signer: RadixBaseSigner, populate: RadixWarpPopulate);
12
+ createCollateralToken({ mailbox, origin_denom, }: {
13
+ mailbox: string;
14
+ origin_denom: string;
15
+ }): Promise<string>;
16
+ createSyntheticToken({ mailbox, name, symbol, divisibility, }: {
17
+ mailbox: string;
18
+ name: string;
19
+ symbol: string;
20
+ divisibility: number;
21
+ }): Promise<string>;
22
+ setTokenOwner({ token, new_owner, }: {
23
+ token: string;
24
+ new_owner: string;
25
+ }): Promise<void>;
26
+ setTokenIsm({ token, ism }: {
27
+ token: string;
28
+ ism?: string;
29
+ }): Promise<void>;
30
+ enrollRemoteRouter({ token, receiver_domain, receiver_address, gas, }: {
31
+ token: string;
32
+ receiver_domain: number;
33
+ receiver_address: string;
34
+ gas: string;
35
+ }): Promise<void>;
36
+ unenrollRemoteRouter({ token, receiver_domain, }: {
37
+ token: string;
38
+ receiver_domain: number;
39
+ }): Promise<void>;
40
+ remoteTransfer({ token, destination_domain, recipient, amount, custom_hook_id, gas_limit, custom_hook_metadata, max_fee, }: {
41
+ token: string;
42
+ destination_domain: number;
43
+ recipient: string;
44
+ amount: string;
45
+ custom_hook_id: string;
46
+ gas_limit: string;
47
+ custom_hook_metadata: string;
48
+ max_fee: {
49
+ denom: string;
50
+ amount: string;
51
+ };
52
+ }): Promise<void>;
53
+ }
54
+ //# sourceMappingURL=tx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tx.d.ts","sourceRoot":"","sources":["../../src/warp/tx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAG5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,SAAS,CAAS;IAE1B,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC;IAC1B,SAAS,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACtC,SAAS,CAAC,MAAM,EAAE,eAAe,CAAC;gBAGhC,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,iBAAiB;IAShB,qBAAqB,CAAC,EACjC,OAAO,EACP,YAAY,GACb,EAAE;QACD,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE,MAAM,CAAC;KACtB;IAYY,oBAAoB,CAAC,EAChC,OAAO,EACP,IAAI,EACJ,MAAM,EACN,YAAY,GACb,EAAE;QACD,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,MAAM,CAAC;KACtB;IAcY,aAAa,CAAC,EACzB,KAAK,EACL,SAAS,GACV,EAAE;QACD,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;KACnB;IAUY,WAAW,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE;IAU3D,kBAAkB,CAAC,EAC9B,KAAK,EACL,eAAe,EACf,gBAAgB,EAChB,GAAG,GACJ,EAAE;QACD,KAAK,EAAE,MAAM,CAAC;QACd,eAAe,EAAE,MAAM,CAAC;QACxB,gBAAgB,EAAE,MAAM,CAAC;QACzB,GAAG,EAAE,MAAM,CAAC;KACb;IAYY,oBAAoB,CAAC,EAChC,KAAK,EACL,eAAe,GAChB,EAAE;QACD,KAAK,EAAE,MAAM,CAAC;QACd,eAAe,EAAE,MAAM,CAAC;KACzB;IAUY,cAAc,CAAC,EAC1B,KAAK,EACL,kBAAkB,EAClB,SAAS,EACT,MAAM,EACN,cAAc,EACd,SAAS,EACT,oBAAoB,EACpB,OAAO,GACR,EAAE;QACD,KAAK,EAAE,MAAM,CAAC;QACd,kBAAkB,EAAE,MAAM,CAAC;QAC3B,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC;QAClB,oBAAoB,EAAE,MAAM,CAAC;QAC7B,OAAO,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;KAC5C;CAoBF"}
@@ -0,0 +1,85 @@
1
+ import { stringToTransactionManifest } from '../utils/utils.js';
2
+ export class RadixWarpTx {
3
+ account;
4
+ networkId;
5
+ base;
6
+ populate;
7
+ signer;
8
+ constructor(account, networkId, base, signer, populate) {
9
+ this.account = account;
10
+ this.networkId = networkId;
11
+ this.base = base;
12
+ this.signer = signer;
13
+ this.populate = populate;
14
+ }
15
+ async createCollateralToken({ mailbox, origin_denom, }) {
16
+ const transactionManifest = await this.populate.createCollateralToken({
17
+ from_address: this.account.address,
18
+ mailbox,
19
+ origin_denom,
20
+ });
21
+ const receipt = await this.signer.signAndBroadcast(transactionManifest);
22
+ return this.base.getNewComponent(receipt);
23
+ }
24
+ async createSyntheticToken({ mailbox, name, symbol, divisibility, }) {
25
+ const transactionManifest = await this.populate.createSyntheticToken({
26
+ from_address: this.account.address,
27
+ mailbox,
28
+ name,
29
+ symbol,
30
+ divisibility,
31
+ });
32
+ const receipt = await this.signer.signAndBroadcast(transactionManifest);
33
+ return this.base.getNewComponent(receipt);
34
+ }
35
+ async setTokenOwner({ token, new_owner, }) {
36
+ const transactionManifest = await this.populate.setTokenOwner({
37
+ from_address: this.account.address,
38
+ token,
39
+ new_owner,
40
+ });
41
+ await this.signer.signAndBroadcast(transactionManifest);
42
+ }
43
+ async setTokenIsm({ token, ism }) {
44
+ const transactionManifest = await this.populate.setTokenIsm({
45
+ from_address: this.account.address,
46
+ token,
47
+ ism,
48
+ });
49
+ await this.signer.signAndBroadcast(transactionManifest);
50
+ }
51
+ async enrollRemoteRouter({ token, receiver_domain, receiver_address, gas, }) {
52
+ const transactionManifest = await this.populate.enrollRemoteRouter({
53
+ from_address: this.account.address,
54
+ token,
55
+ receiver_domain,
56
+ receiver_address,
57
+ gas,
58
+ });
59
+ await this.signer.signAndBroadcast(transactionManifest);
60
+ }
61
+ async unenrollRemoteRouter({ token, receiver_domain, }) {
62
+ const transactionManifest = await this.populate.unenrollRemoteRouter({
63
+ from_address: this.account.address,
64
+ token,
65
+ receiver_domain,
66
+ });
67
+ await this.signer.signAndBroadcast(transactionManifest);
68
+ }
69
+ async remoteTransfer({ token, destination_domain, recipient, amount, custom_hook_id, gas_limit, custom_hook_metadata, max_fee, }) {
70
+ const stringManifest = await this.populate.remoteTransfer({
71
+ from_address: this.account.address,
72
+ token,
73
+ destination_domain,
74
+ recipient,
75
+ amount,
76
+ custom_hook_id,
77
+ gas_limit,
78
+ custom_hook_metadata,
79
+ max_fee,
80
+ });
81
+ const transactionManifest = await stringToTransactionManifest(stringManifest, this.networkId);
82
+ await this.signer.signAndBroadcast(transactionManifest);
83
+ }
84
+ }
85
+ //# sourceMappingURL=tx.js.map