@humanode-hyperlane/starknet-sdk 0.0.0-stage → 27.2.3-humanode.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 (179) hide show
  1. package/LICENSE.md +193 -0
  2. package/dist/clients/protocol.d.ts +24 -0
  3. package/dist/clients/protocol.d.ts.map +1 -0
  4. package/dist/clients/protocol.js +55 -0
  5. package/dist/clients/protocol.js.map +1 -0
  6. package/dist/clients/protocol.test.d.ts +2 -0
  7. package/dist/clients/protocol.test.d.ts.map +1 -0
  8. package/dist/clients/protocol.test.js +36 -0
  9. package/dist/clients/protocol.test.js.map +1 -0
  10. package/dist/clients/provider.d.ts +93 -0
  11. package/dist/clients/provider.d.ts.map +1 -0
  12. package/dist/clients/provider.js +746 -0
  13. package/dist/clients/provider.js.map +1 -0
  14. package/dist/clients/provider.test.d.ts +2 -0
  15. package/dist/clients/provider.test.d.ts.map +1 -0
  16. package/dist/clients/provider.test.js +493 -0
  17. package/dist/clients/provider.test.js.map +1 -0
  18. package/dist/clients/signer.d.ts +56 -0
  19. package/dist/clients/signer.d.ts.map +1 -0
  20. package/dist/clients/signer.js +486 -0
  21. package/dist/clients/signer.js.map +1 -0
  22. package/dist/clients/signer.test.d.ts +2 -0
  23. package/dist/clients/signer.test.d.ts.map +1 -0
  24. package/dist/clients/signer.test.js +245 -0
  25. package/dist/clients/signer.test.js.map +1 -0
  26. package/dist/contracts.d.ts +43 -0
  27. package/dist/contracts.d.ts.map +1 -0
  28. package/dist/contracts.js +310 -0
  29. package/dist/contracts.js.map +1 -0
  30. package/dist/contracts.test.d.ts +2 -0
  31. package/dist/contracts.test.d.ts.map +1 -0
  32. package/dist/contracts.test.js +56 -0
  33. package/dist/contracts.test.js.map +1 -0
  34. package/dist/hook/hook-artifact-manager.d.ts +18 -0
  35. package/dist/hook/hook-artifact-manager.d.ts.map +1 -0
  36. package/dist/hook/hook-artifact-manager.js +70 -0
  37. package/dist/hook/hook-artifact-manager.js.map +1 -0
  38. package/dist/hook/hook-artifact-manager.test.d.ts +2 -0
  39. package/dist/hook/hook-artifact-manager.test.d.ts.map +1 -0
  40. package/dist/hook/hook-artifact-manager.test.js +166 -0
  41. package/dist/hook/hook-artifact-manager.test.js.map +1 -0
  42. package/dist/hook/interchain-gas-paymaster-hook-artifact-manager.d.ts +5 -0
  43. package/dist/hook/interchain-gas-paymaster-hook-artifact-manager.d.ts.map +1 -0
  44. package/dist/hook/interchain-gas-paymaster-hook-artifact-manager.js +23 -0
  45. package/dist/hook/interchain-gas-paymaster-hook-artifact-manager.js.map +1 -0
  46. package/dist/hook/merkle-tree-hook-artifact-manager.d.ts +18 -0
  47. package/dist/hook/merkle-tree-hook-artifact-manager.d.ts.map +1 -0
  48. package/dist/hook/merkle-tree-hook-artifact-manager.js +43 -0
  49. package/dist/hook/merkle-tree-hook-artifact-manager.js.map +1 -0
  50. package/dist/hook/protocol-fee-hook-artifact-manager.d.ts +22 -0
  51. package/dist/hook/protocol-fee-hook-artifact-manager.d.ts.map +1 -0
  52. package/dist/hook/protocol-fee-hook-artifact-manager.js +169 -0
  53. package/dist/hook/protocol-fee-hook-artifact-manager.js.map +1 -0
  54. package/dist/hook/unknown-hook-artifact-manager.d.ts +14 -0
  55. package/dist/hook/unknown-hook-artifact-manager.d.ts.map +1 -0
  56. package/dist/hook/unknown-hook-artifact-manager.js +20 -0
  57. package/dist/hook/unknown-hook-artifact-manager.js.map +1 -0
  58. package/dist/index.d.ts +9 -0
  59. package/dist/index.d.ts.map +1 -0
  60. package/dist/index.js +9 -0
  61. package/dist/index.js.map +1 -0
  62. package/dist/ism/domain-routing-ism-artifact-manager.d.ts +20 -0
  63. package/dist/ism/domain-routing-ism-artifact-manager.d.ts.map +1 -0
  64. package/dist/ism/domain-routing-ism-artifact-manager.js +136 -0
  65. package/dist/ism/domain-routing-ism-artifact-manager.js.map +1 -0
  66. package/dist/ism/ism-artifact-manager.d.ts +14 -0
  67. package/dist/ism/ism-artifact-manager.d.ts.map +1 -0
  68. package/dist/ism/ism-artifact-manager.js +51 -0
  69. package/dist/ism/ism-artifact-manager.js.map +1 -0
  70. package/dist/ism/ism-artifact-manager.test.d.ts +2 -0
  71. package/dist/ism/ism-artifact-manager.test.d.ts.map +1 -0
  72. package/dist/ism/ism-artifact-manager.test.js +86 -0
  73. package/dist/ism/ism-artifact-manager.test.js.map +1 -0
  74. package/dist/ism/merkle-root-multisig-ism-artifact-manager.d.ts +20 -0
  75. package/dist/ism/merkle-root-multisig-ism-artifact-manager.d.ts.map +1 -0
  76. package/dist/ism/merkle-root-multisig-ism-artifact-manager.js +52 -0
  77. package/dist/ism/merkle-root-multisig-ism-artifact-manager.js.map +1 -0
  78. package/dist/ism/message-id-multisig-ism-artifact-manager.d.ts +20 -0
  79. package/dist/ism/message-id-multisig-ism-artifact-manager.d.ts.map +1 -0
  80. package/dist/ism/message-id-multisig-ism-artifact-manager.js +52 -0
  81. package/dist/ism/message-id-multisig-ism-artifact-manager.js.map +1 -0
  82. package/dist/ism/test-ism-artifact-manager.d.ts +20 -0
  83. package/dist/ism/test-ism-artifact-manager.d.ts.map +1 -0
  84. package/dist/ism/test-ism-artifact-manager.js +44 -0
  85. package/dist/ism/test-ism-artifact-manager.js.map +1 -0
  86. package/dist/mailbox/mailbox-artifact-manager.d.ts +15 -0
  87. package/dist/mailbox/mailbox-artifact-manager.d.ts.map +1 -0
  88. package/dist/mailbox/mailbox-artifact-manager.js +194 -0
  89. package/dist/mailbox/mailbox-artifact-manager.js.map +1 -0
  90. package/dist/mailbox/mailbox-artifact-manager.test.d.ts +2 -0
  91. package/dist/mailbox/mailbox-artifact-manager.test.d.ts.map +1 -0
  92. package/dist/mailbox/mailbox-artifact-manager.test.js +100 -0
  93. package/dist/mailbox/mailbox-artifact-manager.test.js.map +1 -0
  94. package/dist/testing/constants.d.ts +8 -0
  95. package/dist/testing/constants.d.ts.map +1 -0
  96. package/dist/testing/constants.js +27 -0
  97. package/dist/testing/constants.js.map +1 -0
  98. package/dist/testing/index.d.ts +4 -0
  99. package/dist/testing/index.d.ts.map +1 -0
  100. package/dist/testing/index.js +4 -0
  101. package/dist/testing/index.js.map +1 -0
  102. package/dist/testing/node.d.ts +4 -0
  103. package/dist/testing/node.d.ts.map +1 -0
  104. package/dist/testing/node.js +77 -0
  105. package/dist/testing/node.js.map +1 -0
  106. package/dist/testing/utils.d.ts +6 -0
  107. package/dist/testing/utils.d.ts.map +1 -0
  108. package/dist/testing/utils.js +20 -0
  109. package/dist/testing/utils.js.map +1 -0
  110. package/dist/tests/e2e-test.setup.d.ts +2 -0
  111. package/dist/tests/e2e-test.setup.d.ts.map +1 -0
  112. package/dist/tests/e2e-test.setup.js +24 -0
  113. package/dist/tests/e2e-test.setup.js.map +1 -0
  114. package/dist/tests/hook.e2e-test.d.ts +2 -0
  115. package/dist/tests/hook.e2e-test.d.ts.map +1 -0
  116. package/dist/tests/hook.e2e-test.js +78 -0
  117. package/dist/tests/hook.e2e-test.js.map +1 -0
  118. package/dist/tests/ism.e2e-test.d.ts +2 -0
  119. package/dist/tests/ism.e2e-test.d.ts.map +1 -0
  120. package/dist/tests/ism.e2e-test.js +116 -0
  121. package/dist/tests/ism.e2e-test.js.map +1 -0
  122. package/dist/tests/mailbox.e2e-test.d.ts +2 -0
  123. package/dist/tests/mailbox.e2e-test.d.ts.map +1 -0
  124. package/dist/tests/mailbox.e2e-test.js +112 -0
  125. package/dist/tests/mailbox.e2e-test.js.map +1 -0
  126. package/dist/tests/read-warp-token.e2e-test.d.ts +2 -0
  127. package/dist/tests/read-warp-token.e2e-test.d.ts.map +1 -0
  128. package/dist/tests/read-warp-token.e2e-test.js +67 -0
  129. package/dist/tests/read-warp-token.e2e-test.js.map +1 -0
  130. package/dist/tests/validator_announce.e2e-test.d.ts +2 -0
  131. package/dist/tests/validator_announce.e2e-test.d.ts.map +1 -0
  132. package/dist/tests/validator_announce.e2e-test.js +70 -0
  133. package/dist/tests/validator_announce.e2e-test.js.map +1 -0
  134. package/dist/tests/warp_core.e2e-test.d.ts +2 -0
  135. package/dist/tests/warp_core.e2e-test.d.ts.map +1 -0
  136. package/dist/tests/warp_core.e2e-test.js +109 -0
  137. package/dist/tests/warp_core.e2e-test.js.map +1 -0
  138. package/dist/tests/warp_transfer.e2e-test.d.ts +2 -0
  139. package/dist/tests/warp_transfer.e2e-test.d.ts.map +1 -0
  140. package/dist/tests/warp_transfer.e2e-test.js +95 -0
  141. package/dist/tests/warp_transfer.e2e-test.js.map +1 -0
  142. package/dist/types.d.ts +26 -0
  143. package/dist/types.d.ts.map +1 -0
  144. package/dist/types.js +2 -0
  145. package/dist/types.js.map +1 -0
  146. package/dist/validator-announce/validator-announce-artifact-manager.d.ts +14 -0
  147. package/dist/validator-announce/validator-announce-artifact-manager.d.ts.map +1 -0
  148. package/dist/validator-announce/validator-announce-artifact-manager.js +127 -0
  149. package/dist/validator-announce/validator-announce-artifact-manager.js.map +1 -0
  150. package/dist/validator-announce/validator-announce-artifact-manager.test.d.ts +2 -0
  151. package/dist/validator-announce/validator-announce-artifact-manager.test.d.ts.map +1 -0
  152. package/dist/validator-announce/validator-announce-artifact-manager.test.js +66 -0
  153. package/dist/validator-announce/validator-announce-artifact-manager.test.js.map +1 -0
  154. package/dist/warp/collateral-token-artifact-manager.d.ts +14 -0
  155. package/dist/warp/collateral-token-artifact-manager.d.ts.map +1 -0
  156. package/dist/warp/collateral-token-artifact-manager.js +43 -0
  157. package/dist/warp/collateral-token-artifact-manager.js.map +1 -0
  158. package/dist/warp/native-token-artifact-manager.d.ts +13 -0
  159. package/dist/warp/native-token-artifact-manager.d.ts.map +1 -0
  160. package/dist/warp/native-token-artifact-manager.js +28 -0
  161. package/dist/warp/native-token-artifact-manager.js.map +1 -0
  162. package/dist/warp/synthetic-token-artifact-manager.d.ts +15 -0
  163. package/dist/warp/synthetic-token-artifact-manager.d.ts.map +1 -0
  164. package/dist/warp/synthetic-token-artifact-manager.js +49 -0
  165. package/dist/warp/synthetic-token-artifact-manager.js.map +1 -0
  166. package/dist/warp/token-artifact-manager.d.ts +43 -0
  167. package/dist/warp/token-artifact-manager.d.ts.map +1 -0
  168. package/dist/warp/token-artifact-manager.js +241 -0
  169. package/dist/warp/token-artifact-manager.js.map +1 -0
  170. package/dist/warp/warp-artifact-manager.d.ts +14 -0
  171. package/dist/warp/warp-artifact-manager.d.ts.map +1 -0
  172. package/dist/warp/warp-artifact-manager.js +54 -0
  173. package/dist/warp/warp-artifact-manager.js.map +1 -0
  174. package/dist/warp/warp-artifact-manager.test.d.ts +2 -0
  175. package/dist/warp/warp-artifact-manager.test.d.ts.map +1 -0
  176. package/dist/warp/warp-artifact-manager.test.js +128 -0
  177. package/dist/warp/warp-artifact-manager.test.js.map +1 -0
  178. package/package.json +53 -3
  179. package/README.md +0 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collateral-token-artifact-manager.d.ts","sourceRoot":"","sources":["../../src/warp/collateral-token-artifact-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,2CAA2C,CAAC;AAC7E,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,uCAAuC,CAAC;AAK/C,OAAO,EACL,KAAK,4BAA4B,EACjC,KAAK,wBAAwB,EAC7B,2BAA2B,EAC3B,2BAA2B,EAC5B,MAAM,6BAA6B,CAAC;AAErC,qBAAa,6BAA8B,SAAQ,2BAA2B,CAC5E,YAAY,EACZ,sBAAsB,CAAC,YAAY,CAAC,CACrC;IACC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAG,YAAY,CAAU;IAErD,SAAS,CAAC,QAAQ,CAChB,KAAK,EAAE,wBAAwB,EAC/B,aAAa,EAAE,4BAA4B,GAC1C,sBAAsB,CAAC,YAAY,CAAC;CAUxC;AAED,qBAAa,6BAA8B,SAAQ,2BAA2B,CAC5E,YAAY,EACZ,sBAAsB,CAAC,YAAY,CAAC,CACrC;IACC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAG,YAAY,CAAU;IAErD,SAAS,CAAC,QAAQ,CAChB,KAAK,EAAE,wBAAwB,EAC/B,aAAa,EAAE,4BAA4B,GAC1C,sBAAsB,CAAC,YAAY,CAAC;cAWvB,WAAW,CACzB,QAAQ,EAAE,WAAW,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC;cAU1C,oBAAoB,CACrC,OAAO,EAAE,sBAAsB,CAAC,YAAY,CAAC,EAC7C,QAAQ,EAAE,sBAAsB,CAAC,YAAY,CAAC,GAC7C,IAAI;CAOR"}
@@ -0,0 +1,43 @@
1
+ import { TokenType, } from '@humanode-hyperlane/provider-sdk/warp';
2
+ import { assert, eqAddressStarknet } from '@humanode-hyperlane/utils';
3
+ import { normalizeStarknetAddressSafe } from '../contracts.js';
4
+ import { StarknetWarpTokenReaderBase, StarknetWarpTokenWriterBase, } from './token-artifact-manager.js';
5
+ export class StarknetCollateralTokenReader extends StarknetWarpTokenReaderBase {
6
+ tokenType = 'collateral';
7
+ toConfig(token, remoteRouters) {
8
+ return {
9
+ type: TokenType.collateral,
10
+ ...this.baseConfig(token, remoteRouters),
11
+ token: normalizeStarknetAddressSafe(token.denom),
12
+ name: token.name,
13
+ symbol: token.symbol,
14
+ decimals: token.decimals,
15
+ };
16
+ }
17
+ }
18
+ export class StarknetCollateralTokenWriter extends StarknetWarpTokenWriterBase {
19
+ tokenType = 'collateral';
20
+ toConfig(token, remoteRouters) {
21
+ return {
22
+ type: TokenType.collateral,
23
+ ...this.baseConfig(token, remoteRouters),
24
+ token: normalizeStarknetAddressSafe(token.denom),
25
+ name: token.name,
26
+ symbol: token.symbol,
27
+ decimals: token.decimals,
28
+ };
29
+ }
30
+ async createToken(artifact) {
31
+ const tx = await this.signer.getCreateCollateralTokenTransaction({
32
+ signer: this.signer.getSignerAddress(),
33
+ mailboxAddress: artifact.config.mailbox,
34
+ collateralDenom: artifact.config.token,
35
+ });
36
+ return this.signer.sendAndConfirmTransaction(tx);
37
+ }
38
+ validateUpdateConfig(current, expected) {
39
+ super.validateUpdateConfig(current, expected);
40
+ assert(eqAddressStarknet(current.token, expected.token), `Cannot change Starknet collateral token from ${current.token} to ${expected.token}`);
41
+ }
42
+ }
43
+ //# sourceMappingURL=collateral-token-artifact-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collateral-token-artifact-manager.js","sourceRoot":"","sources":["../../src/warp/collateral-token-artifact-manager.ts"],"names":[],"mappings":"AACA,OAAO,EACL,SAAS,GAEV,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEtE,OAAO,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAE/D,OAAO,EAGL,2BAA2B,EAC3B,2BAA2B,GAC5B,MAAM,6BAA6B,CAAC;AAErC,MAAM,OAAO,6BAA8B,SAAQ,2BAGlD;IACoB,SAAS,GAAG,YAAqB,CAAC;IAE3C,QAAQ,CAChB,KAA+B,EAC/B,aAA2C;QAE3C,OAAO;YACL,IAAI,EAAE,SAAS,CAAC,UAAU;YAC1B,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,aAAa,CAAC;YACxC,KAAK,EAAE,4BAA4B,CAAC,KAAK,CAAC,KAAK,CAAC;YAChD,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;SACzB,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,6BAA8B,SAAQ,2BAGlD;IACoB,SAAS,GAAG,YAAqB,CAAC;IAE3C,QAAQ,CAChB,KAA+B,EAC/B,aAA2C;QAE3C,OAAO;YACL,IAAI,EAAE,SAAS,CAAC,UAAU;YAC1B,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,aAAa,CAAC;YACxC,KAAK,EAAE,4BAA4B,CAAC,KAAK,CAAC,KAAK,CAAC;YAChD,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;SACzB,CAAC;IACJ,CAAC;IAES,KAAK,CAAC,WAAW,CACzB,QAA2D;QAE3D,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,mCAAmC,CAAC;YAC/D,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE;YACtC,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO;YACvC,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK;SACvC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,MAAM,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAC;IACnD,CAAC;IAEkB,oBAAoB,CACrC,OAA6C,EAC7C,QAA8C;QAE9C,KAAK,CAAC,oBAAoB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC9C,MAAM,CACJ,iBAAiB,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,EAChD,gDAAgD,OAAO,CAAC,KAAK,OAAO,QAAQ,CAAC,KAAK,EAAE,CACrF,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,13 @@
1
+ import { type ArtifactNew } from '@humanode-hyperlane/provider-sdk/artifact';
2
+ import { type RawWarpArtifactConfigs } from '@humanode-hyperlane/provider-sdk/warp';
3
+ import { type StarknetRemoteRoutersOnChain, type StarknetWarpTokenOnChain, StarknetWarpTokenReaderBase, StarknetWarpTokenWriterBase } from './token-artifact-manager.js';
4
+ export declare class StarknetNativeTokenReader extends StarknetWarpTokenReaderBase<'native', RawWarpArtifactConfigs['native']> {
5
+ protected readonly tokenType: "native";
6
+ protected toConfig(token: StarknetWarpTokenOnChain, remoteRouters: StarknetRemoteRoutersOnChain): RawWarpArtifactConfigs['native'];
7
+ }
8
+ export declare class StarknetNativeTokenWriter extends StarknetWarpTokenWriterBase<'native', RawWarpArtifactConfigs['native']> {
9
+ protected readonly tokenType: "native";
10
+ protected toConfig(token: StarknetWarpTokenOnChain, remoteRouters: StarknetRemoteRoutersOnChain): RawWarpArtifactConfigs['native'];
11
+ protected createToken(artifact: ArtifactNew<RawWarpArtifactConfigs['native']>): Promise<import("../types.js").StarknetTxReceipt>;
12
+ }
13
+ //# sourceMappingURL=native-token-artifact-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-token-artifact-manager.d.ts","sourceRoot":"","sources":["../../src/warp/native-token-artifact-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,2CAA2C,CAAC;AAC7E,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,uCAAuC,CAAC;AAE/C,OAAO,EACL,KAAK,4BAA4B,EACjC,KAAK,wBAAwB,EAC7B,2BAA2B,EAC3B,2BAA2B,EAC5B,MAAM,6BAA6B,CAAC;AAErC,qBAAa,yBAA0B,SAAQ,2BAA2B,CACxE,QAAQ,EACR,sBAAsB,CAAC,QAAQ,CAAC,CACjC;IACC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAG,QAAQ,CAAU;IAEjD,SAAS,CAAC,QAAQ,CAChB,KAAK,EAAE,wBAAwB,EAC/B,aAAa,EAAE,4BAA4B,GAC1C,sBAAsB,CAAC,QAAQ,CAAC;CAMpC;AAED,qBAAa,yBAA0B,SAAQ,2BAA2B,CACxE,QAAQ,EACR,sBAAsB,CAAC,QAAQ,CAAC,CACjC;IACC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAG,QAAQ,CAAU;IAEjD,SAAS,CAAC,QAAQ,CAChB,KAAK,EAAE,wBAAwB,EAC/B,aAAa,EAAE,4BAA4B,GAC1C,sBAAsB,CAAC,QAAQ,CAAC;cAOnB,WAAW,CACzB,QAAQ,EAAE,WAAW,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;CAQ1D"}
@@ -0,0 +1,28 @@
1
+ import { TokenType, } from '@humanode-hyperlane/provider-sdk/warp';
2
+ import { StarknetWarpTokenReaderBase, StarknetWarpTokenWriterBase, } from './token-artifact-manager.js';
3
+ export class StarknetNativeTokenReader extends StarknetWarpTokenReaderBase {
4
+ tokenType = 'native';
5
+ toConfig(token, remoteRouters) {
6
+ return {
7
+ type: TokenType.native,
8
+ ...this.baseConfig(token, remoteRouters),
9
+ };
10
+ }
11
+ }
12
+ export class StarknetNativeTokenWriter extends StarknetWarpTokenWriterBase {
13
+ tokenType = 'native';
14
+ toConfig(token, remoteRouters) {
15
+ return {
16
+ type: TokenType.native,
17
+ ...this.baseConfig(token, remoteRouters),
18
+ };
19
+ }
20
+ async createToken(artifact) {
21
+ const tx = await this.signer.getCreateNativeTokenTransaction({
22
+ signer: this.signer.getSignerAddress(),
23
+ mailboxAddress: artifact.config.mailbox,
24
+ });
25
+ return this.signer.sendAndConfirmTransaction(tx);
26
+ }
27
+ }
28
+ //# sourceMappingURL=native-token-artifact-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-token-artifact-manager.js","sourceRoot":"","sources":["../../src/warp/native-token-artifact-manager.ts"],"names":[],"mappings":"AACA,OAAO,EACL,SAAS,GAEV,MAAM,uCAAuC,CAAC;AAE/C,OAAO,EAGL,2BAA2B,EAC3B,2BAA2B,GAC5B,MAAM,6BAA6B,CAAC;AAErC,MAAM,OAAO,yBAA0B,SAAQ,2BAG9C;IACoB,SAAS,GAAG,QAAiB,CAAC;IAEvC,QAAQ,CAChB,KAA+B,EAC/B,aAA2C;QAE3C,OAAO;YACL,IAAI,EAAE,SAAS,CAAC,MAAM;YACtB,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,aAAa,CAAC;SACzC,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,yBAA0B,SAAQ,2BAG9C;IACoB,SAAS,GAAG,QAAiB,CAAC;IAEvC,QAAQ,CAChB,KAA+B,EAC/B,aAA2C;QAE3C,OAAO;YACL,IAAI,EAAE,SAAS,CAAC,MAAM;YACtB,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,aAAa,CAAC;SACzC,CAAC;IACJ,CAAC;IAES,KAAK,CAAC,WAAW,CACzB,QAAuD;QAEvD,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,+BAA+B,CAAC;YAC3D,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE;YACtC,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO;SACxC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,MAAM,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAC;IACnD,CAAC;CACF"}
@@ -0,0 +1,15 @@
1
+ import { type ArtifactNew } from '@humanode-hyperlane/provider-sdk/artifact';
2
+ import { type RawWarpArtifactConfigs } from '@humanode-hyperlane/provider-sdk/warp';
3
+ import { type StarknetRemoteRoutersOnChain, type StarknetWarpTokenOnChain, StarknetWarpTokenReaderBase, StarknetWarpTokenWriterBase } from './token-artifact-manager.js';
4
+ export declare class StarknetSyntheticTokenReader extends StarknetWarpTokenReaderBase<'synthetic', RawWarpArtifactConfigs['synthetic']> {
5
+ protected readonly tokenType: "synthetic";
6
+ protected toConfig(token: StarknetWarpTokenOnChain, remoteRouters: StarknetRemoteRoutersOnChain): RawWarpArtifactConfigs['synthetic'];
7
+ }
8
+ export declare class StarknetSyntheticTokenWriter extends StarknetWarpTokenWriterBase<'synthetic', RawWarpArtifactConfigs['synthetic']> {
9
+ protected readonly tokenType: "synthetic";
10
+ protected toConfig(token: StarknetWarpTokenOnChain, remoteRouters: StarknetRemoteRoutersOnChain): RawWarpArtifactConfigs['synthetic'];
11
+ protected validateCreateConfig(config: RawWarpArtifactConfigs['synthetic']): void;
12
+ protected validateUpdateConfig(current: RawWarpArtifactConfigs['synthetic'], expected: RawWarpArtifactConfigs['synthetic']): void;
13
+ protected createToken(artifact: ArtifactNew<RawWarpArtifactConfigs['synthetic']>): Promise<import("../types.js").StarknetTxReceipt>;
14
+ }
15
+ //# sourceMappingURL=synthetic-token-artifact-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synthetic-token-artifact-manager.d.ts","sourceRoot":"","sources":["../../src/warp/synthetic-token-artifact-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,2CAA2C,CAAC;AAC7E,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,uCAAuC,CAAC;AAG/C,OAAO,EACL,KAAK,4BAA4B,EACjC,KAAK,wBAAwB,EAC7B,2BAA2B,EAC3B,2BAA2B,EAC5B,MAAM,6BAA6B,CAAC;AAErC,qBAAa,4BAA6B,SAAQ,2BAA2B,CAC3E,WAAW,EACX,sBAAsB,CAAC,WAAW,CAAC,CACpC;IACC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAG,WAAW,CAAU;IAEpD,SAAS,CAAC,QAAQ,CAChB,KAAK,EAAE,wBAAwB,EAC/B,aAAa,EAAE,4BAA4B,GAC1C,sBAAsB,CAAC,WAAW,CAAC;CASvC;AAED,qBAAa,4BAA6B,SAAQ,2BAA2B,CAC3E,WAAW,EACX,sBAAsB,CAAC,WAAW,CAAC,CACpC;IACC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAG,WAAW,CAAU;IAEpD,SAAS,CAAC,QAAQ,CAChB,KAAK,EAAE,wBAAwB,EAC/B,aAAa,EAAE,4BAA4B,GAC1C,sBAAsB,CAAC,WAAW,CAAC;cAUnB,oBAAoB,CACrC,MAAM,EAAE,sBAAsB,CAAC,WAAW,CAAC,GAC1C,IAAI;cAQY,oBAAoB,CACrC,OAAO,EAAE,sBAAsB,CAAC,WAAW,CAAC,EAC5C,QAAQ,EAAE,sBAAsB,CAAC,WAAW,CAAC,GAC5C,IAAI;cAoBS,WAAW,CACzB,QAAQ,EAAE,WAAW,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC;CAW7D"}
@@ -0,0 +1,49 @@
1
+ import { TokenType, } from '@humanode-hyperlane/provider-sdk/warp';
2
+ import { assert } from '@humanode-hyperlane/utils';
3
+ import { StarknetWarpTokenReaderBase, StarknetWarpTokenWriterBase, } from './token-artifact-manager.js';
4
+ export class StarknetSyntheticTokenReader extends StarknetWarpTokenReaderBase {
5
+ tokenType = 'synthetic';
6
+ toConfig(token, remoteRouters) {
7
+ return {
8
+ type: TokenType.synthetic,
9
+ ...this.baseConfig(token, remoteRouters),
10
+ name: token.name,
11
+ symbol: token.symbol,
12
+ decimals: token.decimals,
13
+ };
14
+ }
15
+ }
16
+ export class StarknetSyntheticTokenWriter extends StarknetWarpTokenWriterBase {
17
+ tokenType = 'synthetic';
18
+ toConfig(token, remoteRouters) {
19
+ return {
20
+ type: TokenType.synthetic,
21
+ ...this.baseConfig(token, remoteRouters),
22
+ name: token.name,
23
+ symbol: token.symbol,
24
+ decimals: token.decimals,
25
+ };
26
+ }
27
+ validateCreateConfig(config) {
28
+ super.validateCreateConfig(config);
29
+ assert(!config.metadataUri, 'metadataUri is unsupported for Starknet synthetic warp tokens');
30
+ }
31
+ validateUpdateConfig(current, expected) {
32
+ super.validateUpdateConfig(current, expected);
33
+ assert(current.name === expected.name, `Cannot change Starknet synthetic token name from ${current.name} to ${expected.name}`);
34
+ assert(current.symbol === expected.symbol, `Cannot change Starknet synthetic token symbol from ${current.symbol} to ${expected.symbol}`);
35
+ assert(current.decimals === expected.decimals, `Cannot change Starknet synthetic token decimals from ${current.decimals} to ${expected.decimals}`);
36
+ assert(!expected.metadataUri, 'metadataUri is unsupported for Starknet synthetic warp tokens');
37
+ }
38
+ async createToken(artifact) {
39
+ const tx = await this.signer.getCreateSyntheticTokenTransaction({
40
+ signer: this.signer.getSignerAddress(),
41
+ mailboxAddress: artifact.config.mailbox,
42
+ name: artifact.config.name,
43
+ denom: artifact.config.symbol,
44
+ decimals: artifact.config.decimals,
45
+ });
46
+ return this.signer.sendAndConfirmTransaction(tx);
47
+ }
48
+ }
49
+ //# sourceMappingURL=synthetic-token-artifact-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synthetic-token-artifact-manager.js","sourceRoot":"","sources":["../../src/warp/synthetic-token-artifact-manager.ts"],"names":[],"mappings":"AACA,OAAO,EACL,SAAS,GAEV,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAEnD,OAAO,EAGL,2BAA2B,EAC3B,2BAA2B,GAC5B,MAAM,6BAA6B,CAAC;AAErC,MAAM,OAAO,4BAA6B,SAAQ,2BAGjD;IACoB,SAAS,GAAG,WAAoB,CAAC;IAE1C,QAAQ,CAChB,KAA+B,EAC/B,aAA2C;QAE3C,OAAO;YACL,IAAI,EAAE,SAAS,CAAC,SAAS;YACzB,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,aAAa,CAAC;YACxC,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;SACzB,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,4BAA6B,SAAQ,2BAGjD;IACoB,SAAS,GAAG,WAAoB,CAAC;IAE1C,QAAQ,CAChB,KAA+B,EAC/B,aAA2C;QAE3C,OAAO;YACL,IAAI,EAAE,SAAS,CAAC,SAAS;YACzB,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,aAAa,CAAC;YACxC,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;SACzB,CAAC;IACJ,CAAC;IAEkB,oBAAoB,CACrC,MAA2C;QAE3C,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;QACnC,MAAM,CACJ,CAAC,MAAM,CAAC,WAAW,EACnB,+DAA+D,CAChE,CAAC;IACJ,CAAC;IAEkB,oBAAoB,CACrC,OAA4C,EAC5C,QAA6C;QAE7C,KAAK,CAAC,oBAAoB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC9C,MAAM,CACJ,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,EAC9B,oDAAoD,OAAO,CAAC,IAAI,OAAO,QAAQ,CAAC,IAAI,EAAE,CACvF,CAAC;QACF,MAAM,CACJ,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,EAClC,sDAAsD,OAAO,CAAC,MAAM,OAAO,QAAQ,CAAC,MAAM,EAAE,CAC7F,CAAC;QACF,MAAM,CACJ,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,QAAQ,EACtC,wDAAwD,OAAO,CAAC,QAAQ,OAAO,QAAQ,CAAC,QAAQ,EAAE,CACnG,CAAC;QACF,MAAM,CACJ,CAAC,QAAQ,CAAC,WAAW,EACrB,+DAA+D,CAChE,CAAC;IACJ,CAAC;IAES,KAAK,CAAC,WAAW,CACzB,QAA0D;QAE1D,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,kCAAkC,CAAC;YAC9D,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE;YACtC,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO;YACvC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI;YAC1B,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM;YAC7B,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ;SACnC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,MAAM,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAC;IACnD,CAAC;CACF"}
@@ -0,0 +1,43 @@
1
+ import { type ArtifactDeployed, type ArtifactNew, type ArtifactReader, type ArtifactWriter } from '@humanode-hyperlane/provider-sdk/artifact';
2
+ import { type AnnotatedTx, type TxReceipt } from '@humanode-hyperlane/provider-sdk/module';
3
+ import { type DeployedWarpAddress, type RawWarpArtifactConfigs, type WarpType } from '@humanode-hyperlane/provider-sdk/warp';
4
+ import { StarknetProvider } from '../clients/provider.js';
5
+ import { StarknetSigner } from '../clients/signer.js';
6
+ import { type StarknetTxReceipt } from '../types.js';
7
+ export type StarknetWarpTokenOnChain = Awaited<ReturnType<StarknetProvider['getToken']>>;
8
+ export type StarknetRemoteRoutersOnChain = Awaited<ReturnType<StarknetProvider['getRemoteRouters']>>;
9
+ export declare function getStarknetWarpType(tokenType: string): WarpType;
10
+ export declare abstract class StarknetWarpTokenReaderBase<T extends WarpType, C extends RawWarpArtifactConfigs[T]> implements ArtifactReader<C, DeployedWarpAddress> {
11
+ protected readonly provider: StarknetProvider;
12
+ constructor(provider: StarknetProvider);
13
+ protected abstract readonly tokenType: T;
14
+ protected abstract toConfig(token: StarknetWarpTokenOnChain, remoteRouters: StarknetRemoteRoutersOnChain): C;
15
+ read(address: string): Promise<ArtifactDeployed<C, DeployedWarpAddress>>;
16
+ protected baseConfig(token: StarknetWarpTokenOnChain, remoteRouters: StarknetRemoteRoutersOnChain): {
17
+ owner: string;
18
+ mailbox: string;
19
+ interchainSecurityModule: import("@humanode-hyperlane/provider-sdk/artifact").ArtifactUnderived<{
20
+ address: string;
21
+ }> | undefined;
22
+ hook: import("@humanode-hyperlane/provider-sdk/artifact").ArtifactUnderived<{
23
+ address: string;
24
+ }> | undefined;
25
+ remoteRouters: Record<number, {
26
+ address: string;
27
+ }>;
28
+ destinationGas: Record<number, string>;
29
+ };
30
+ }
31
+ export declare abstract class StarknetWarpTokenWriterBase<T extends WarpType, C extends RawWarpArtifactConfigs[T]> extends StarknetWarpTokenReaderBase<T, C> implements ArtifactWriter<C, DeployedWarpAddress> {
32
+ protected readonly signer: StarknetSigner;
33
+ constructor(provider: StarknetProvider, signer: StarknetSigner);
34
+ protected abstract createToken(artifact: ArtifactNew<C>): Promise<StarknetTxReceipt>;
35
+ protected validateCreateConfig(config: C): void;
36
+ protected validateUpdateConfig(current: C, expected: C): void;
37
+ create(artifact: ArtifactNew<C>): Promise<[ArtifactDeployed<C, DeployedWarpAddress>, TxReceipt[]]>;
38
+ update(artifact: ArtifactDeployed<C, DeployedWarpAddress>): Promise<AnnotatedTx[]>;
39
+ private preserveUnsetHookAndIsm;
40
+ private assertNoOrphanDestinationGas;
41
+ private applyPostCreateConfig;
42
+ }
43
+ //# sourceMappingURL=token-artifact-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-artifact-manager.d.ts","sourceRoot":"","sources":["../../src/warp/token-artifact-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,cAAc,EAEnB,KAAK,cAAc,EAGpB,MAAM,2CAA2C,CAAC;AACnD,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,SAAS,EACf,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAGL,KAAK,mBAAmB,EAExB,KAAK,sBAAsB,EAC3B,KAAK,QAAQ,EACd,MAAM,uCAAuC,CAAC;AAQ/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAA4B,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAE/E,MAAM,MAAM,wBAAwB,GAAG,OAAO,CAC5C,UAAU,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CACzC,CAAC;AACF,MAAM,MAAM,4BAA4B,GAAG,OAAO,CAChD,UAAU,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,CACjD,CAAC;AAMF,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,CAM/D;AAED,8BAAsB,2BAA2B,CAC/C,CAAC,SAAS,QAAQ,EAClB,CAAC,SAAS,sBAAsB,CAAC,CAAC,CAAC,CACnC,YAAW,cAAc,CAAC,CAAC,EAAE,mBAAmB,CAAC;IACrC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,gBAAgB;gBAA1B,QAAQ,EAAE,gBAAgB;IAEzD,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;IAEzC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CACzB,KAAK,EAAE,wBAAwB,EAC/B,aAAa,EAAE,4BAA4B,GAC1C,CAAC;IAEE,IAAI,CACR,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,gBAAgB,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC;IAmBpD,SAAS,CAAC,UAAU,CAClB,KAAK,EAAE,wBAAwB,EAC/B,aAAa,EAAE,4BAA4B;;;;;;;;;;qBAEF,MAAM;;;;CA2BlD;AAED,8BAAsB,2BAA2B,CAC/C,CAAC,SAAS,QAAQ,EAClB,CAAC,SAAS,sBAAsB,CAAC,CAAC,CAAC,CAEnC,SAAQ,2BAA2B,CAAC,CAAC,EAAE,CAAC,CACxC,YAAW,cAAc,CAAC,CAAC,EAAE,mBAAmB,CAAC;IAI/C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc;gBADzC,QAAQ,EAAE,gBAAgB,EACP,MAAM,EAAE,cAAc;IAK3C,SAAS,CAAC,QAAQ,CAAC,WAAW,CAC5B,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,GACvB,OAAO,CAAC,iBAAiB,CAAC;IAE7B,SAAS,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI;IAI/C,SAAS,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI;IAQvD,MAAM,CACV,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,GACvB,OAAO,CAAC,CAAC,gBAAgB,CAAC,CAAC,EAAE,mBAAmB,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;IAgC7D,MAAM,CACV,QAAQ,EAAE,gBAAgB,CAAC,CAAC,EAAE,mBAAmB,CAAC,GACjD,OAAO,CAAC,WAAW,EAAE,CAAC;IAwHzB,OAAO,CAAC,uBAAuB;IA+B/B,OAAO,CAAC,4BAA4B;YAStB,qBAAqB;CA4EpC"}
@@ -0,0 +1,241 @@
1
+ import { ArtifactState, addressToUnderivedArtifact, artifactOnChainToAddress, } from '@humanode-hyperlane/provider-sdk/artifact';
2
+ import { TokenType, computeRemoteRoutersUpdates, } from '@humanode-hyperlane/provider-sdk/warp';
3
+ import { ZERO_ADDRESS_HEX_32, assert, eqAddressStarknet, isEmptyAddress, } from '@humanode-hyperlane/utils';
4
+ import { normalizeStarknetAddressSafe } from '../contracts.js';
5
+ function normalizeGas(gas) {
6
+ return BigInt(gas ?? '0').toString();
7
+ }
8
+ export function getStarknetWarpType(tokenType) {
9
+ if (tokenType === TokenType.native)
10
+ return 'native';
11
+ if (tokenType === TokenType.collateral)
12
+ return 'collateral';
13
+ if (tokenType === TokenType.synthetic)
14
+ return 'synthetic';
15
+ if (tokenType === TokenType.crossCollateral)
16
+ return 'crossCollateral';
17
+ throw new Error(`Unsupported Starknet warp token type: ${tokenType}`);
18
+ }
19
+ export class StarknetWarpTokenReaderBase {
20
+ provider;
21
+ constructor(provider) {
22
+ this.provider = provider;
23
+ }
24
+ async read(address) {
25
+ const token = await this.provider.getToken({ tokenAddress: address });
26
+ const remoteRouters = await this.provider.getRemoteRouters({
27
+ tokenAddress: address,
28
+ });
29
+ const actualType = getStarknetWarpType(token.tokenType);
30
+ assert(actualType === this.tokenType, `Expected Starknet warp token ${address} to be ${this.tokenType}, got ${actualType}`);
31
+ return {
32
+ artifactState: ArtifactState.DEPLOYED,
33
+ config: this.toConfig(token, remoteRouters),
34
+ deployed: { address: normalizeStarknetAddressSafe(token.address) },
35
+ };
36
+ }
37
+ baseConfig(token, remoteRouters) {
38
+ const routers = {};
39
+ const destinationGas = {};
40
+ for (const remoteRouter of remoteRouters.remoteRouters) {
41
+ routers[remoteRouter.receiverDomainId] = {
42
+ address: normalizeStarknetAddressSafe(remoteRouter.receiverAddress),
43
+ };
44
+ destinationGas[remoteRouter.receiverDomainId] = normalizeGas(remoteRouter.gas);
45
+ }
46
+ return {
47
+ owner: normalizeStarknetAddressSafe(token.owner),
48
+ mailbox: normalizeStarknetAddressSafe(token.mailboxAddress),
49
+ interchainSecurityModule: addressToUnderivedArtifact(token.ismAddress, normalizeStarknetAddressSafe),
50
+ hook: addressToUnderivedArtifact(token.hookAddress, normalizeStarknetAddressSafe),
51
+ remoteRouters: routers,
52
+ destinationGas,
53
+ };
54
+ }
55
+ }
56
+ export class StarknetWarpTokenWriterBase extends StarknetWarpTokenReaderBase {
57
+ signer;
58
+ constructor(provider, signer) {
59
+ super(provider);
60
+ this.signer = signer;
61
+ }
62
+ validateCreateConfig(config) {
63
+ assert(!config.scale, 'scale is unsupported for Starknet warp tokens');
64
+ }
65
+ validateUpdateConfig(current, expected) {
66
+ assert(!expected.scale, 'scale is unsupported for Starknet warp tokens');
67
+ assert(eqAddressStarknet(current.mailbox, expected.mailbox), `Cannot change Starknet warp token mailbox from ${current.mailbox} to ${expected.mailbox}`);
68
+ }
69
+ async create(artifact) {
70
+ this.validateCreateConfig(artifact.config);
71
+ this.assertNoOrphanDestinationGas(artifact.config);
72
+ const receipts = [];
73
+ const createReceipt = await this.createToken(artifact);
74
+ receipts.push(createReceipt);
75
+ assert(createReceipt.contractAddress, 'failed to deploy Starknet warp token');
76
+ const tokenAddress = createReceipt.contractAddress;
77
+ receipts.push(...(await this.applyPostCreateConfig(tokenAddress, artifact.config, {
78
+ owner: this.signer.getSignerAddress(),
79
+ interchainSecurityModule: undefined,
80
+ hook: undefined,
81
+ remoteRouters: {},
82
+ destinationGas: {},
83
+ })));
84
+ return [
85
+ {
86
+ artifactState: ArtifactState.DEPLOYED,
87
+ config: artifact.config,
88
+ deployed: { address: normalizeStarknetAddressSafe(tokenAddress) },
89
+ },
90
+ receipts,
91
+ ];
92
+ }
93
+ async update(artifact) {
94
+ const current = await this.read(artifact.deployed.address);
95
+ const expectedConfig = this.preserveUnsetHookAndIsm(current.config, artifact.config);
96
+ this.validateUpdateConfig(current.config, expectedConfig);
97
+ this.assertNoOrphanDestinationGas(expectedConfig);
98
+ const txs = [];
99
+ const tokenAddress = artifact.deployed.address;
100
+ let ownerTx;
101
+ const currentOwner = current.config.owner;
102
+ if (!eqAddressStarknet(currentOwner, expectedConfig.owner)) {
103
+ ownerTx = {
104
+ annotation: 'Setting warp token owner',
105
+ ...(await this.signer.getSetTokenOwnerTransaction({
106
+ signer: this.signer.getSignerAddress(),
107
+ tokenAddress,
108
+ newOwner: expectedConfig.owner,
109
+ })),
110
+ };
111
+ }
112
+ const currentIsm = artifactOnChainToAddress(current.config.interchainSecurityModule, normalizeStarknetAddressSafe);
113
+ const expectedIsm = artifactOnChainToAddress(expectedConfig.interchainSecurityModule, normalizeStarknetAddressSafe);
114
+ if (!eqAddressStarknet(currentIsm ?? ZERO_ADDRESS_HEX_32, expectedIsm ?? ZERO_ADDRESS_HEX_32)) {
115
+ txs.push({
116
+ annotation: 'Setting warp token ISM',
117
+ ...(await this.signer.getSetTokenIsmTransaction({
118
+ signer: this.signer.getSignerAddress(),
119
+ tokenAddress,
120
+ ismAddress: expectedIsm,
121
+ })),
122
+ });
123
+ }
124
+ const currentHook = artifactOnChainToAddress(current.config.hook, normalizeStarknetAddressSafe);
125
+ const expectedHook = artifactOnChainToAddress(expectedConfig.hook, normalizeStarknetAddressSafe);
126
+ if (!eqAddressStarknet(currentHook ?? ZERO_ADDRESS_HEX_32, expectedHook ?? ZERO_ADDRESS_HEX_32)) {
127
+ txs.push({
128
+ annotation: 'Setting warp token hook',
129
+ ...(await this.signer.getSetTokenHookTransaction({
130
+ signer: this.signer.getSignerAddress(),
131
+ tokenAddress,
132
+ hookAddress: expectedHook,
133
+ })),
134
+ });
135
+ }
136
+ const routerUpdates = computeRemoteRoutersUpdates({
137
+ remoteRouters: current.config.remoteRouters,
138
+ destinationGas: current.config.destinationGas,
139
+ }, {
140
+ remoteRouters: expectedConfig.remoteRouters,
141
+ destinationGas: expectedConfig.destinationGas,
142
+ }, eqAddressStarknet);
143
+ for (const domain of routerUpdates.toUnenroll.sort((a, b) => a - b)) {
144
+ txs.push({
145
+ annotation: `Unenrolling remote router for domain ${domain}`,
146
+ ...(await this.signer.getUnenrollRemoteRouterTransaction({
147
+ signer: this.signer.getSignerAddress(),
148
+ tokenAddress,
149
+ receiverDomainId: domain,
150
+ })),
151
+ });
152
+ }
153
+ for (const route of routerUpdates.toEnroll.sort((a, b) => a.domainId - b.domainId)) {
154
+ txs.push({
155
+ annotation: `Enrolling remote router for domain ${route.domainId}`,
156
+ ...(await this.signer.getEnrollRemoteRouterTransaction({
157
+ signer: this.signer.getSignerAddress(),
158
+ tokenAddress,
159
+ remoteRouter: {
160
+ receiverDomainId: route.domainId,
161
+ receiverAddress: route.routerAddress,
162
+ gas: normalizeGas(route.gas),
163
+ },
164
+ })),
165
+ });
166
+ }
167
+ if (ownerTx) {
168
+ txs.push(ownerTx);
169
+ }
170
+ return txs;
171
+ }
172
+ preserveUnsetHookAndIsm(current, expected) {
173
+ const expectedIsm = artifactOnChainToAddress(expected.interchainSecurityModule, normalizeStarknetAddressSafe);
174
+ const expectedHook = artifactOnChainToAddress(expected.hook, normalizeStarknetAddressSafe);
175
+ return {
176
+ ...expected,
177
+ interchainSecurityModule: isEmptyAddress(expectedIsm)
178
+ ? addressToUnderivedArtifact(artifactOnChainToAddress(current.interchainSecurityModule, normalizeStarknetAddressSafe))
179
+ : expected.interchainSecurityModule,
180
+ hook: isEmptyAddress(expectedHook)
181
+ ? addressToUnderivedArtifact(artifactOnChainToAddress(current.hook, normalizeStarknetAddressSafe))
182
+ : expected.hook,
183
+ };
184
+ }
185
+ assertNoOrphanDestinationGas(config) {
186
+ for (const domain of Object.keys(config.destinationGas)) {
187
+ assert(config.remoteRouters[Number(domain)], `destinationGas for domain ${domain} requires a matching remote router on Starknet`);
188
+ }
189
+ }
190
+ async applyPostCreateConfig(tokenAddress, expected, current) {
191
+ const receipts = [];
192
+ let ownerTx;
193
+ const expectedIsm = artifactOnChainToAddress(expected.interchainSecurityModule, normalizeStarknetAddressSafe);
194
+ if (expectedIsm) {
195
+ const tx = await this.signer.getSetTokenIsmTransaction({
196
+ signer: this.signer.getSignerAddress(),
197
+ tokenAddress,
198
+ ismAddress: expectedIsm,
199
+ });
200
+ receipts.push(await this.signer.sendAndConfirmTransaction(tx));
201
+ }
202
+ const expectedHook = artifactOnChainToAddress(expected.hook, normalizeStarknetAddressSafe);
203
+ if (expectedHook) {
204
+ const tx = await this.signer.getSetTokenHookTransaction({
205
+ signer: this.signer.getSignerAddress(),
206
+ tokenAddress,
207
+ hookAddress: expectedHook,
208
+ });
209
+ receipts.push(await this.signer.sendAndConfirmTransaction(tx));
210
+ }
211
+ for (const domain of Object.keys(expected.remoteRouters)
212
+ .map(Number)
213
+ .sort((a, b) => a - b)) {
214
+ const remoteRouter = expected.remoteRouters[domain];
215
+ assert(remoteRouter, `Missing remote router for Starknet domain ${domain}`);
216
+ const tx = await this.signer.getEnrollRemoteRouterTransaction({
217
+ signer: this.signer.getSignerAddress(),
218
+ tokenAddress,
219
+ remoteRouter: {
220
+ receiverDomainId: domain,
221
+ receiverAddress: remoteRouter.address,
222
+ gas: normalizeGas(expected.destinationGas[domain]),
223
+ },
224
+ });
225
+ receipts.push(await this.signer.sendAndConfirmTransaction(tx));
226
+ }
227
+ const currentOwner = current.owner;
228
+ if (!eqAddressStarknet(currentOwner, expected.owner)) {
229
+ ownerTx = await this.signer.getSetTokenOwnerTransaction({
230
+ signer: this.signer.getSignerAddress(),
231
+ tokenAddress,
232
+ newOwner: expected.owner,
233
+ });
234
+ }
235
+ if (ownerTx) {
236
+ receipts.push(await this.signer.sendAndConfirmTransaction(ownerTx));
237
+ }
238
+ return receipts;
239
+ }
240
+ }
241
+ //# sourceMappingURL=token-artifact-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-artifact-manager.js","sourceRoot":"","sources":["../../src/warp/token-artifact-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { type ChainMetadataForAltVM } from '@humanode-hyperlane/provider-sdk';
2
+ import { type ISigner } from '@humanode-hyperlane/provider-sdk/altvm';
3
+ import { type ArtifactReader, type ArtifactWriter } from '@humanode-hyperlane/provider-sdk/artifact';
4
+ import { type AnnotatedTx, type TxReceipt } from '@humanode-hyperlane/provider-sdk/module';
5
+ import { type DeployedRawWarpArtifact, type DeployedWarpAddress, type IRawWarpArtifactManager, type RawWarpArtifactConfigs, type WarpType } from '@humanode-hyperlane/provider-sdk/warp';
6
+ export declare class StarknetWarpArtifactManager implements IRawWarpArtifactManager {
7
+ private readonly provider;
8
+ constructor(chainMetadata: ChainMetadataForAltVM);
9
+ supportsHookUpdates(): boolean;
10
+ readWarpToken(address: string): Promise<DeployedRawWarpArtifact>;
11
+ createReader<T extends WarpType>(type: T): ArtifactReader<RawWarpArtifactConfigs[T], DeployedWarpAddress>;
12
+ createWriter<T extends WarpType>(type: T, signer: ISigner<AnnotatedTx, TxReceipt>): ArtifactWriter<RawWarpArtifactConfigs[T], DeployedWarpAddress>;
13
+ }
14
+ //# sourceMappingURL=warp-artifact-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"warp-artifact-manager.d.ts","sourceRoot":"","sources":["../../src/warp/warp-artifact-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAC9E,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,wCAAwC,CAAC;AACtE,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,2CAA2C,CAAC;AACnD,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,SAAS,EACf,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC3B,KAAK,QAAQ,EACd,MAAM,uCAAuC,CAAC;AAmB/C,qBAAa,2BAA4B,YAAW,uBAAuB;IACzE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmB;gBAEhC,aAAa,EAAE,qBAAqB;IAQhD,mBAAmB,IAAI,OAAO;IAIxB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAOtE,YAAY,CAAC,CAAC,SAAS,QAAQ,EAC7B,IAAI,EAAE,CAAC,GACN,cAAc,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC;IAqBjE,YAAY,CAAC,CAAC,SAAS,QAAQ,EAC7B,IAAI,EAAE,CAAC,EACP,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,GACtC,cAAc,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC;CAgClE"}
@@ -0,0 +1,54 @@
1
+ import { assert } from '@humanode-hyperlane/utils';
2
+ import { StarknetProvider } from '../clients/provider.js';
3
+ import { StarknetSigner } from '../clients/signer.js';
4
+ import { StarknetCollateralTokenReader, StarknetCollateralTokenWriter, } from './collateral-token-artifact-manager.js';
5
+ import { StarknetNativeTokenReader, StarknetNativeTokenWriter, } from './native-token-artifact-manager.js';
6
+ import { StarknetSyntheticTokenReader, StarknetSyntheticTokenWriter, } from './synthetic-token-artifact-manager.js';
7
+ import { getStarknetWarpType } from './token-artifact-manager.js';
8
+ export class StarknetWarpArtifactManager {
9
+ provider;
10
+ constructor(chainMetadata) {
11
+ this.provider = StarknetProvider.connect((chainMetadata.rpcUrls ?? []).map(({ http }) => http), chainMetadata.chainId, { metadata: chainMetadata });
12
+ }
13
+ supportsHookUpdates() {
14
+ return true;
15
+ }
16
+ async readWarpToken(address) {
17
+ const token = await this.provider.getToken({ tokenAddress: address });
18
+ return this.createReader(getStarknetWarpType(token.tokenType)).read(address);
19
+ }
20
+ createReader(type) {
21
+ const readers = {
22
+ native: new StarknetNativeTokenReader(this.provider),
23
+ collateral: new StarknetCollateralTokenReader(this.provider),
24
+ synthetic: new StarknetSyntheticTokenReader(this.provider),
25
+ crossCollateral: {
26
+ read: async () => {
27
+ throw new Error('Cross-collateral tokens are not supported on Starknet');
28
+ },
29
+ },
30
+ };
31
+ return readers[type];
32
+ }
33
+ createWriter(type, signer) {
34
+ assert(signer instanceof StarknetSigner, 'Expected StarknetSigner');
35
+ const writers = {
36
+ native: new StarknetNativeTokenWriter(this.provider, signer),
37
+ collateral: new StarknetCollateralTokenWriter(this.provider, signer),
38
+ synthetic: new StarknetSyntheticTokenWriter(this.provider, signer),
39
+ crossCollateral: {
40
+ read: async () => {
41
+ throw new Error('Cross-collateral tokens are not supported on Starknet');
42
+ },
43
+ create: async () => {
44
+ throw new Error('Cross-collateral tokens are not supported on Starknet');
45
+ },
46
+ update: async () => {
47
+ throw new Error('Cross-collateral tokens are not supported on Starknet');
48
+ },
49
+ },
50
+ };
51
+ return writers[type];
52
+ }
53
+ }
54
+ //# sourceMappingURL=warp-artifact-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"warp-artifact-manager.js","sourceRoot":"","sources":["../../src/warp/warp-artifact-manager.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAEnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EACL,6BAA6B,EAC7B,6BAA6B,GAC9B,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,GAC7B,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAElE,MAAM,OAAO,2BAA2B;IACrB,QAAQ,CAAmB;IAE5C,YAAY,aAAoC;QAC9C,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC,OAAO,CACtC,CAAC,aAAa,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,EACrD,aAAa,CAAC,OAAO,EACrB,EAAE,QAAQ,EAAE,aAAa,EAAE,CAC5B,CAAC;IACJ,CAAC;IAED,mBAAmB;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAAe;QACjC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,CAAC;QACtE,OAAO,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CACjE,OAAO,CACR,CAAC;IACJ,CAAC;IAED,YAAY,CACV,IAAO;QAEP,MAAM,OAAO,GAKT;YACF,MAAM,EAAE,IAAI,yBAAyB,CAAC,IAAI,CAAC,QAAQ,CAAC;YACpD,UAAU,EAAE,IAAI,6BAA6B,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC5D,SAAS,EAAE,IAAI,4BAA4B,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC1D,eAAe,EAAE;gBACf,IAAI,EAAE,KAAK,IAAI,EAAE;oBACf,MAAM,IAAI,KAAK,CACb,uDAAuD,CACxD,CAAC;gBACJ,CAAC;aACF;SACF,CAAC;QACF,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAED,YAAY,CACV,IAAO,EACP,MAAuC;QAEvC,MAAM,CAAC,MAAM,YAAY,cAAc,EAAE,yBAAyB,CAAC,CAAC;QAEpE,MAAM,OAAO,GAKT;YACF,MAAM,EAAE,IAAI,yBAAyB,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;YAC5D,UAAU,EAAE,IAAI,6BAA6B,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;YACpE,SAAS,EAAE,IAAI,4BAA4B,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;YAClE,eAAe,EAAE;gBACf,IAAI,EAAE,KAAK,IAAI,EAAE;oBACf,MAAM,IAAI,KAAK,CACb,uDAAuD,CACxD,CAAC;gBACJ,CAAC;gBACD,MAAM,EAAE,KAAK,IAAI,EAAE;oBACjB,MAAM,IAAI,KAAK,CACb,uDAAuD,CACxD,CAAC;gBACJ,CAAC;gBACD,MAAM,EAAE,KAAK,IAAI,EAAE;oBACjB,MAAM,IAAI,KAAK,CACb,uDAAuD,CACxD,CAAC;gBACJ,CAAC;aACF;SACF,CAAC;QACF,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=warp-artifact-manager.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"warp-artifact-manager.test.d.ts","sourceRoot":"","sources":["../../src/warp/warp-artifact-manager.test.ts"],"names":[],"mappings":""}