@humanode-hyperlane/cosmos-sdk 0.0.0-stage → 30.0.0-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 (191) hide show
  1. package/LICENSE.md +193 -0
  2. package/README.md +82 -2
  3. package/dist/clients/protocol.d.ts +24 -0
  4. package/dist/clients/protocol.d.ts.map +1 -0
  5. package/dist/clients/protocol.js +70 -0
  6. package/dist/clients/protocol.js.map +1 -0
  7. package/dist/clients/provider.d.ts +70 -0
  8. package/dist/clients/provider.d.ts.map +1 -0
  9. package/dist/clients/provider.js +397 -0
  10. package/dist/clients/provider.js.map +1 -0
  11. package/dist/clients/signer.d.ts +55 -0
  12. package/dist/clients/signer.d.ts.map +1 -0
  13. package/dist/clients/signer.js +377 -0
  14. package/dist/clients/signer.js.map +1 -0
  15. package/dist/hook/hook-artifact-manager.d.ts +72 -0
  16. package/dist/hook/hook-artifact-manager.d.ts.map +1 -0
  17. package/dist/hook/hook-artifact-manager.js +139 -0
  18. package/dist/hook/hook-artifact-manager.js.map +1 -0
  19. package/dist/hook/hook-query.d.ts +42 -0
  20. package/dist/hook/hook-query.d.ts.map +1 -0
  21. package/dist/hook/hook-query.js +95 -0
  22. package/dist/hook/hook-query.js.map +1 -0
  23. package/dist/hook/hook-tx.d.ts +47 -0
  24. package/dist/hook/hook-tx.d.ts.map +1 -0
  25. package/dist/hook/hook-tx.js +76 -0
  26. package/dist/hook/hook-tx.js.map +1 -0
  27. package/dist/hook/igp-hook.d.ts +30 -0
  28. package/dist/hook/igp-hook.d.ts.map +1 -0
  29. package/dist/hook/igp-hook.js +150 -0
  30. package/dist/hook/igp-hook.js.map +1 -0
  31. package/dist/hook/merkle-tree-hook.d.ts +32 -0
  32. package/dist/hook/merkle-tree-hook.d.ts.map +1 -0
  33. package/dist/hook/merkle-tree-hook.js +60 -0
  34. package/dist/hook/merkle-tree-hook.js.map +1 -0
  35. package/dist/hyperlane/core/messages.d.ts +16 -0
  36. package/dist/hyperlane/core/messages.d.ts.map +1 -0
  37. package/dist/hyperlane/core/messages.js +2 -0
  38. package/dist/hyperlane/core/messages.js.map +1 -0
  39. package/dist/hyperlane/core/query.d.ts +18 -0
  40. package/dist/hyperlane/core/query.d.ts.map +1 -0
  41. package/dist/hyperlane/core/query.js +18 -0
  42. package/dist/hyperlane/core/query.js.map +1 -0
  43. package/dist/hyperlane/interchain_security/messages.d.ts +36 -0
  44. package/dist/hyperlane/interchain_security/messages.d.ts.map +1 -0
  45. package/dist/hyperlane/interchain_security/messages.js +2 -0
  46. package/dist/hyperlane/interchain_security/messages.js.map +1 -0
  47. package/dist/hyperlane/interchain_security/query.d.ts +36 -0
  48. package/dist/hyperlane/interchain_security/query.d.ts.map +1 -0
  49. package/dist/hyperlane/interchain_security/query.js +49 -0
  50. package/dist/hyperlane/interchain_security/query.js.map +1 -0
  51. package/dist/hyperlane/post_dispatch/messages.d.ts +32 -0
  52. package/dist/hyperlane/post_dispatch/messages.d.ts.map +1 -0
  53. package/dist/hyperlane/post_dispatch/messages.js +2 -0
  54. package/dist/hyperlane/post_dispatch/messages.js.map +1 -0
  55. package/dist/hyperlane/post_dispatch/query.d.ts +24 -0
  56. package/dist/hyperlane/post_dispatch/query.d.ts.map +1 -0
  57. package/dist/hyperlane/post_dispatch/query.js +21 -0
  58. package/dist/hyperlane/post_dispatch/query.js.map +1 -0
  59. package/dist/hyperlane/warp/messages.d.ts +28 -0
  60. package/dist/hyperlane/warp/messages.d.ts.map +1 -0
  61. package/dist/hyperlane/warp/messages.js +2 -0
  62. package/dist/hyperlane/warp/messages.js.map +1 -0
  63. package/dist/hyperlane/warp/query.d.ts +18 -0
  64. package/dist/hyperlane/warp/query.d.ts.map +1 -0
  65. package/dist/hyperlane/warp/query.js +16 -0
  66. package/dist/hyperlane/warp/query.js.map +1 -0
  67. package/dist/index.d.ts +30 -0
  68. package/dist/index.d.ts.map +1 -0
  69. package/dist/index.js +36 -0
  70. package/dist/index.js.map +1 -0
  71. package/dist/ism/ism-artifact-manager.d.ts +69 -0
  72. package/dist/ism/ism-artifact-manager.d.ts.map +1 -0
  73. package/dist/ism/ism-artifact-manager.js +144 -0
  74. package/dist/ism/ism-artifact-manager.js.map +1 -0
  75. package/dist/ism/ism-query.d.ts +71 -0
  76. package/dist/ism/ism-query.d.ts.map +1 -0
  77. package/dist/ism/ism-query.js +133 -0
  78. package/dist/ism/ism-query.js.map +1 -0
  79. package/dist/ism/ism-tx.d.ts +30 -0
  80. package/dist/ism/ism-tx.d.ts.map +1 -0
  81. package/dist/ism/ism-tx.js +76 -0
  82. package/dist/ism/ism-tx.js.map +1 -0
  83. package/dist/ism/multisig-ism.d.ts +51 -0
  84. package/dist/ism/multisig-ism.d.ts.map +1 -0
  85. package/dist/ism/multisig-ism.js +120 -0
  86. package/dist/ism/multisig-ism.js.map +1 -0
  87. package/dist/ism/routing-ism.d.ts +30 -0
  88. package/dist/ism/routing-ism.d.ts.map +1 -0
  89. package/dist/ism/routing-ism.js +126 -0
  90. package/dist/ism/routing-ism.js.map +1 -0
  91. package/dist/ism/test-ism.d.ts +29 -0
  92. package/dist/ism/test-ism.d.ts.map +1 -0
  93. package/dist/ism/test-ism.js +56 -0
  94. package/dist/ism/test-ism.js.map +1 -0
  95. package/dist/mailbox/mailbox-artifact-manager.d.ts +48 -0
  96. package/dist/mailbox/mailbox-artifact-manager.d.ts.map +1 -0
  97. package/dist/mailbox/mailbox-artifact-manager.js +82 -0
  98. package/dist/mailbox/mailbox-artifact-manager.js.map +1 -0
  99. package/dist/mailbox/mailbox-query.d.ts +12 -0
  100. package/dist/mailbox/mailbox-query.d.ts.map +1 -0
  101. package/dist/mailbox/mailbox-query.js +29 -0
  102. package/dist/mailbox/mailbox-query.js.map +1 -0
  103. package/dist/mailbox/mailbox-tx.d.ts +37 -0
  104. package/dist/mailbox/mailbox-tx.d.ts.map +1 -0
  105. package/dist/mailbox/mailbox-tx.js +68 -0
  106. package/dist/mailbox/mailbox-tx.js.map +1 -0
  107. package/dist/mailbox/mailbox.d.ts +30 -0
  108. package/dist/mailbox/mailbox.d.ts.map +1 -0
  109. package/dist/mailbox/mailbox.js +168 -0
  110. package/dist/mailbox/mailbox.js.map +1 -0
  111. package/dist/registry.d.ts +21 -0
  112. package/dist/registry.d.ts.map +1 -0
  113. package/dist/registry.js +373 -0
  114. package/dist/registry.js.map +1 -0
  115. package/dist/testing/constants.d.ts +10 -0
  116. package/dist/testing/constants.d.ts.map +1 -0
  117. package/dist/testing/constants.js +30 -0
  118. package/dist/testing/constants.js.map +1 -0
  119. package/dist/testing/index.d.ts +8 -0
  120. package/dist/testing/index.d.ts.map +1 -0
  121. package/dist/testing/index.js +10 -0
  122. package/dist/testing/index.js.map +1 -0
  123. package/dist/testing/node.d.ts +4 -0
  124. package/dist/testing/node.d.ts.map +1 -0
  125. package/dist/testing/node.js +35 -0
  126. package/dist/testing/node.js.map +1 -0
  127. package/dist/testing/utils.d.ts +10 -0
  128. package/dist/testing/utils.d.ts.map +1 -0
  129. package/dist/testing/utils.js +29 -0
  130. package/dist/testing/utils.js.map +1 -0
  131. package/dist/tests/1_interchain_security.e2e-test.d.ts +2 -0
  132. package/dist/tests/1_interchain_security.e2e-test.d.ts.map +1 -0
  133. package/dist/tests/1_interchain_security.e2e-test.js +171 -0
  134. package/dist/tests/1_interchain_security.e2e-test.js.map +1 -0
  135. package/dist/tests/2_core.e2e-test.d.ts +2 -0
  136. package/dist/tests/2_core.e2e-test.d.ts.map +1 -0
  137. package/dist/tests/2_core.e2e-test.js +120 -0
  138. package/dist/tests/2_core.e2e-test.js.map +1 -0
  139. package/dist/tests/3_post_dispatch.e2e-test.d.ts +2 -0
  140. package/dist/tests/3_post_dispatch.e2e-test.d.ts.map +1 -0
  141. package/dist/tests/3_post_dispatch.e2e-test.js +130 -0
  142. package/dist/tests/3_post_dispatch.e2e-test.js.map +1 -0
  143. package/dist/tests/4_warp.e2e-test.d.ts +2 -0
  144. package/dist/tests/4_warp.e2e-test.d.ts.map +1 -0
  145. package/dist/tests/4_warp.e2e-test.js +284 -0
  146. package/dist/tests/4_warp.e2e-test.js.map +1 -0
  147. package/dist/tests/5_warp_artifact.e2e-test.d.ts +2 -0
  148. package/dist/tests/5_warp_artifact.e2e-test.d.ts.map +1 -0
  149. package/dist/tests/5_warp_artifact.e2e-test.js +520 -0
  150. package/dist/tests/5_warp_artifact.e2e-test.js.map +1 -0
  151. package/dist/tests/e2e-test.setup.d.ts +2 -0
  152. package/dist/tests/e2e-test.setup.d.ts.map +1 -0
  153. package/dist/tests/e2e-test.setup.js +13 -0
  154. package/dist/tests/e2e-test.setup.js.map +1 -0
  155. package/dist/tests/hooks.e2e-test.d.ts +2 -0
  156. package/dist/tests/hooks.e2e-test.d.ts.map +1 -0
  157. package/dist/tests/hooks.e2e-test.js +314 -0
  158. package/dist/tests/hooks.e2e-test.js.map +1 -0
  159. package/dist/tests/mailbox.e2e-test.d.ts +2 -0
  160. package/dist/tests/mailbox.e2e-test.d.ts.map +1 -0
  161. package/dist/tests/mailbox.e2e-test.js +355 -0
  162. package/dist/tests/mailbox.e2e-test.js.map +1 -0
  163. package/dist/utils/base.d.ts +22 -0
  164. package/dist/utils/base.d.ts.map +1 -0
  165. package/dist/utils/base.js +35 -0
  166. package/dist/utils/base.js.map +1 -0
  167. package/dist/utils/types.d.ts +44 -0
  168. package/dist/utils/types.d.ts.map +1 -0
  169. package/dist/utils/types.js +2 -0
  170. package/dist/utils/types.js.map +1 -0
  171. package/dist/warp/collateral-token.d.ts +21 -0
  172. package/dist/warp/collateral-token.d.ts.map +1 -0
  173. package/dist/warp/collateral-token.js +119 -0
  174. package/dist/warp/collateral-token.js.map +1 -0
  175. package/dist/warp/synthetic-token.d.ts +21 -0
  176. package/dist/warp/synthetic-token.d.ts.map +1 -0
  177. package/dist/warp/synthetic-token.js +98 -0
  178. package/dist/warp/synthetic-token.js.map +1 -0
  179. package/dist/warp/warp-artifact-manager.d.ts +17 -0
  180. package/dist/warp/warp-artifact-manager.d.ts.map +1 -0
  181. package/dist/warp/warp-artifact-manager.js +101 -0
  182. package/dist/warp/warp-artifact-manager.js.map +1 -0
  183. package/dist/warp/warp-query.d.ts +9 -0
  184. package/dist/warp/warp-query.d.ts.map +1 -0
  185. package/dist/warp/warp-query.js +105 -0
  186. package/dist/warp/warp-query.js.map +1 -0
  187. package/dist/warp/warp-tx.d.ts +31 -0
  188. package/dist/warp/warp-tx.d.ts.map +1 -0
  189. package/dist/warp/warp-tx.js +127 -0
  190. package/dist/warp/warp-tx.js.map +1 -0
  191. package/package.json +61 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collateral-token.js","sourceRoot":"","sources":["../../src/warp/collateral-token.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { type DeliverTxResponse } from '@cosmjs/stargate';
2
+ import { type ArtifactDeployed, type ArtifactNew, type ArtifactReader, type ArtifactWriter } from '@humanode-hyperlane/provider-sdk/artifact';
3
+ import { type DeployedWarpAddress, type RawSyntheticWarpArtifactConfig } from '@humanode-hyperlane/provider-sdk/warp';
4
+ import { type CosmosNativeSigner } from '../clients/signer.js';
5
+ import { type AnnotatedEncodeObject } from '../utils/types.js';
6
+ import { type CosmosWarpQueryClient } from './warp-query.js';
7
+ export declare class CosmosSyntheticTokenReader implements ArtifactReader<RawSyntheticWarpArtifactConfig, DeployedWarpAddress> {
8
+ protected readonly query: CosmosWarpQueryClient;
9
+ constructor(query: CosmosWarpQueryClient);
10
+ read(address: string): Promise<ArtifactDeployed<RawSyntheticWarpArtifactConfig, DeployedWarpAddress>>;
11
+ }
12
+ export declare class CosmosSyntheticTokenWriter extends CosmosSyntheticTokenReader implements ArtifactWriter<RawSyntheticWarpArtifactConfig, DeployedWarpAddress> {
13
+ private readonly signer;
14
+ constructor(query: CosmosWarpQueryClient, signer: CosmosNativeSigner);
15
+ create(artifact: ArtifactNew<RawSyntheticWarpArtifactConfig>): Promise<[
16
+ ArtifactDeployed<RawSyntheticWarpArtifactConfig, DeployedWarpAddress>,
17
+ DeliverTxResponse[]
18
+ ]>;
19
+ update(artifact: ArtifactDeployed<RawSyntheticWarpArtifactConfig, DeployedWarpAddress>): Promise<AnnotatedEncodeObject[]>;
20
+ }
21
+ //# 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,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAG1D,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,cAAc,EAEnB,KAAK,cAAc,EACpB,MAAM,2CAA2C,CAAC;AACnD,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,8BAA8B,EAEpC,MAAM,uCAAuC,CAAC;AAG/C,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE/D,OAAO,EACL,KAAK,qBAAqB,EAE3B,MAAM,iBAAiB,CAAC;AAQzB,qBAAa,0BAA2B,YAAW,cAAc,CAC/D,8BAA8B,EAC9B,mBAAmB,CACpB;IACa,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,qBAAqB;gBAA5B,KAAK,EAAE,qBAAqB;IAErD,IAAI,CACR,OAAO,EAAE,MAAM,GACd,OAAO,CACR,gBAAgB,CAAC,8BAA8B,EAAE,mBAAmB,CAAC,CACtE;CA8BF;AAED,qBAAa,0BACX,SAAQ,0BACR,YAAW,cAAc,CAAC,8BAA8B,EAAE,mBAAmB,CAAC;IAI5E,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADvB,KAAK,EAAE,qBAAqB,EACX,MAAM,EAAE,kBAAkB;IAKvC,MAAM,CACV,QAAQ,EAAE,WAAW,CAAC,8BAA8B,CAAC,GACpD,OAAO,CACR;QACE,gBAAgB,CAAC,8BAA8B,EAAE,mBAAmB,CAAC;QACrE,iBAAiB,EAAE;KACpB,CACF;IA2DK,MAAM,CACV,QAAQ,EAAE,gBAAgB,CACxB,8BAA8B,EAC9B,mBAAmB,CACpB,GACA,OAAO,CAAC,qBAAqB,EAAE,CAAC;CAYpC"}
@@ -0,0 +1,98 @@
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 { eqAddressCosmos } from '@humanode-hyperlane/utils';
5
+ import { getNewContractAddress } from '../utils/base.js';
6
+ import { getSyntheticWarpTokenConfig, } from './warp-query.js';
7
+ import { getCreateSyntheticTokenTx, getEnrollRemoteRouterTx, getSetTokenIsmTx, getWarpTokenUpdateTxs, } from './warp-tx.js';
8
+ export class CosmosSyntheticTokenReader {
9
+ query;
10
+ constructor(query) {
11
+ this.query = query;
12
+ }
13
+ async read(address) {
14
+ const tokenConfig = await getSyntheticWarpTokenConfig(this.query, address);
15
+ const config = {
16
+ type: AltVM.TokenType.synthetic,
17
+ owner: tokenConfig.owner,
18
+ mailbox: tokenConfig.mailbox,
19
+ interchainSecurityModule: tokenConfig.interchainSecurityModule
20
+ ? {
21
+ artifactState: ArtifactState.UNDERIVED,
22
+ deployed: {
23
+ address: tokenConfig.interchainSecurityModule,
24
+ },
25
+ }
26
+ : undefined,
27
+ remoteRouters: tokenConfig.remoteRouters,
28
+ destinationGas: tokenConfig.destinationGas,
29
+ name: tokenConfig.name,
30
+ symbol: tokenConfig.symbol,
31
+ decimals: tokenConfig.decimals,
32
+ };
33
+ return {
34
+ artifactState: ArtifactState.DEPLOYED,
35
+ config,
36
+ deployed: {
37
+ address,
38
+ },
39
+ };
40
+ }
41
+ }
42
+ export class CosmosSyntheticTokenWriter extends CosmosSyntheticTokenReader {
43
+ signer;
44
+ constructor(query, signer) {
45
+ super(query);
46
+ this.signer = signer;
47
+ }
48
+ async create(artifact) {
49
+ const { config } = artifact;
50
+ const allReceipts = [];
51
+ // Create synthetic token
52
+ const createTx = getCreateSyntheticTokenTx(this.signer.getSignerAddress(), {
53
+ mailboxAddress: config.mailbox,
54
+ });
55
+ const createReceipt = await this.signer.sendAndConfirmTransaction(createTx);
56
+ allReceipts.push(createReceipt);
57
+ // Get the deployed token address from the receipt
58
+ const tokenAddress = getNewContractAddress(createReceipt);
59
+ // Set ISM if provided
60
+ if (config.interchainSecurityModule?.deployed.address) {
61
+ const setIsmTx = getSetTokenIsmTx(this.signer.getSignerAddress(), {
62
+ tokenAddress,
63
+ ismAddress: config.interchainSecurityModule.deployed.address,
64
+ });
65
+ const ismReceipt = await this.signer.sendAndConfirmTransaction(setIsmTx);
66
+ allReceipts.push(ismReceipt);
67
+ }
68
+ // Enroll remote routers
69
+ const { toEnroll } = computeRemoteRoutersUpdates({ destinationGas: {}, remoteRouters: {} }, config, eqAddressCosmos);
70
+ for (const { domainId, gas, routerAddress } of toEnroll) {
71
+ const enrollTx = getEnrollRemoteRouterTx(this.signer.getSignerAddress(), {
72
+ tokenAddress,
73
+ remoteDomainId: domainId,
74
+ remoteRouterAddress: routerAddress,
75
+ gas,
76
+ });
77
+ const enrollReceipt = await this.signer.sendAndConfirmTransaction(enrollTx);
78
+ allReceipts.push(enrollReceipt);
79
+ }
80
+ const deployedArtifact = {
81
+ artifactState: ArtifactState.DEPLOYED,
82
+ config: artifact.config,
83
+ deployed: {
84
+ address: tokenAddress,
85
+ },
86
+ };
87
+ return [deployedArtifact, allReceipts];
88
+ }
89
+ async update(artifact) {
90
+ // Read current state from chain
91
+ const currentArtifact = await this.read(artifact.deployed.address);
92
+ // Generate update transactions
93
+ return getWarpTokenUpdateTxs(artifact, currentArtifact,
94
+ // The current owner is the only one that can execute the update transactions
95
+ currentArtifact.config.owner);
96
+ }
97
+ }
98
+ //# sourceMappingURL=synthetic-token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synthetic-token.js","sourceRoot":"","sources":["../../src/warp/synthetic-token.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { type ArtifactReader, type ArtifactWriter } from '@humanode-hyperlane/provider-sdk/artifact';
2
+ import { type DeployedRawWarpArtifact, type DeployedWarpAddress, type IRawWarpArtifactManager, type RawWarpArtifactConfigs, type WarpType } from '@humanode-hyperlane/provider-sdk/warp';
3
+ import { type CosmosNativeSigner } from '../clients/signer.js';
4
+ export declare class CosmosWarpArtifactManager implements IRawWarpArtifactManager {
5
+ private readonly rpcUrls;
6
+ private readonly query;
7
+ constructor(rpcUrls: string[]);
8
+ private getQuery;
9
+ private createQuery;
10
+ supportsHookUpdates(): boolean;
11
+ readWarpToken(address: string): Promise<DeployedRawWarpArtifact>;
12
+ createReader<T extends WarpType>(type: T): ArtifactReader<RawWarpArtifactConfigs[T], DeployedWarpAddress>;
13
+ private createReaderWithQuery;
14
+ createWriter<T extends WarpType>(type: T, signer: CosmosNativeSigner): ArtifactWriter<RawWarpArtifactConfigs[T], DeployedWarpAddress>;
15
+ private createWriterWithQuery;
16
+ }
17
+ //# 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":"AAIA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,2CAA2C,CAAC;AACnD,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC3B,KAAK,QAAQ,EACd,MAAM,uCAAuC,CAAC;AAG/C,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAc/D,qBAAa,yBAA0B,YAAW,uBAAuB;IAG3D,OAAO,CAAC,QAAQ,CAAC,OAAO;IAFpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA2C;gBAEpC,OAAO,EAAE,MAAM,EAAE;YAEhC,QAAQ;YAIR,WAAW;IAKzB,mBAAmB,IAAI,OAAO;IAIxB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAuBtE,YAAY,CAAC,CAAC,SAAS,QAAQ,EAC7B,IAAI,EAAE,CAAC,GACN,cAAc,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC;IAWjE,OAAO,CAAC,qBAAqB;IAuB7B,YAAY,CAAC,CAAC,SAAS,QAAQ,EAC7B,IAAI,EAAE,CAAC,EACP,MAAM,EAAE,kBAAkB,GACzB,cAAc,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC;IAqBjE,OAAO,CAAC,qBAAqB;CAuB9B"}
@@ -0,0 +1,101 @@
1
+ import { QueryClient } from '@cosmjs/stargate';
2
+ import { connectComet } from '@cosmjs/tendermint-rpc';
3
+ import { AltVM } from '@humanode-hyperlane/provider-sdk';
4
+ import { LazyAsync } from '@humanode-hyperlane/utils';
5
+ import { setupWarpExtension } from '../hyperlane/warp/query.js';
6
+ import { CosmosCollateralTokenReader, CosmosCollateralTokenWriter, } from './collateral-token.js';
7
+ import { CosmosSyntheticTokenReader, CosmosSyntheticTokenWriter, } from './synthetic-token.js';
8
+ import { getWarpTokenType } from './warp-query.js';
9
+ // Uses lazy initialization to keep constructor synchronous while deferring async query client creation
10
+ export class CosmosWarpArtifactManager {
11
+ rpcUrls;
12
+ query = new LazyAsync(() => this.createQuery());
13
+ constructor(rpcUrls) {
14
+ this.rpcUrls = rpcUrls;
15
+ }
16
+ async getQuery() {
17
+ return this.query.get();
18
+ }
19
+ async createQuery() {
20
+ const cometClient = await connectComet(this.rpcUrls[0]);
21
+ return QueryClient.withExtensions(cometClient, setupWarpExtension);
22
+ }
23
+ supportsHookUpdates() {
24
+ return false;
25
+ }
26
+ async readWarpToken(address) {
27
+ const query = await this.getQuery();
28
+ const altVMType = await getWarpTokenType(query, address);
29
+ // Convert AltVM.TokenType to WarpType
30
+ let warpType;
31
+ switch (altVMType) {
32
+ case AltVM.TokenType.collateral:
33
+ warpType = 'collateral';
34
+ break;
35
+ case AltVM.TokenType.synthetic:
36
+ warpType = 'synthetic';
37
+ break;
38
+ default:
39
+ throw new Error(`Token type ${altVMType} is not supported on Cosmos. Only collateral and synthetic tokens are supported.`);
40
+ }
41
+ const reader = this.createReaderWithQuery(warpType, query);
42
+ return reader.read(address);
43
+ }
44
+ createReader(type) {
45
+ // For synchronous createReader, we return a wrapper that will initialize lazily
46
+ return {
47
+ read: async (address) => {
48
+ const query = await this.getQuery();
49
+ const reader = this.createReaderWithQuery(type, query);
50
+ return reader.read(address);
51
+ },
52
+ };
53
+ }
54
+ createReaderWithQuery(type, query) {
55
+ const readers = {
56
+ collateral: () => new CosmosCollateralTokenReader(query),
57
+ synthetic: () => new CosmosSyntheticTokenReader(query),
58
+ native: () => {
59
+ throw new Error('Native tokens are not supported on Cosmos');
60
+ },
61
+ crossCollateral: () => {
62
+ throw new Error('Cross-collateral tokens are not supported on Cosmos');
63
+ },
64
+ };
65
+ return readers[type]();
66
+ }
67
+ createWriter(type, signer) {
68
+ // For synchronous createWriter, we return a wrapper that will initialize lazily
69
+ return {
70
+ read: async (address) => {
71
+ const query = await this.getQuery();
72
+ const writer = this.createWriterWithQuery(type, query, signer);
73
+ return writer.read(address);
74
+ },
75
+ create: async (artifact) => {
76
+ const query = await this.getQuery();
77
+ const writer = this.createWriterWithQuery(type, query, signer);
78
+ return writer.create(artifact);
79
+ },
80
+ update: async (artifact) => {
81
+ const query = await this.getQuery();
82
+ const writer = this.createWriterWithQuery(type, query, signer);
83
+ return writer.update(artifact);
84
+ },
85
+ };
86
+ }
87
+ createWriterWithQuery(type, query, signer) {
88
+ const writers = {
89
+ collateral: () => new CosmosCollateralTokenWriter(query, signer),
90
+ synthetic: () => new CosmosSyntheticTokenWriter(query, signer),
91
+ native: () => {
92
+ throw new Error('Native tokens are not supported on Cosmos');
93
+ },
94
+ crossCollateral: () => {
95
+ throw new Error('Cross-collateral tokens are not supported on Cosmos');
96
+ },
97
+ };
98
+ return writers[type]();
99
+ }
100
+ }
101
+ //# 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":"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"}
@@ -0,0 +1,9 @@
1
+ import { type QueryClient } from '@cosmjs/stargate';
2
+ import { AltVM } from '@humanode-hyperlane/provider-sdk';
3
+ import { type WarpExtension } from '../hyperlane/warp/query.js';
4
+ import { type CosmosCollateralWarpTokenConfig, type CosmosSyntheticWarpTokenConfig } from '../utils/types.js';
5
+ export type CosmosWarpQueryClient = QueryClient & WarpExtension;
6
+ export declare function getWarpTokenType(query: CosmosWarpQueryClient, tokenAddress: string): Promise<AltVM.TokenType>;
7
+ export declare function getCollateralWarpTokenConfig(query: CosmosWarpQueryClient, tokenAddress: string): Promise<CosmosCollateralWarpTokenConfig>;
8
+ export declare function getSyntheticWarpTokenConfig(query: CosmosWarpQueryClient, tokenAddress: string): Promise<CosmosSyntheticWarpTokenConfig>;
9
+ //# sourceMappingURL=warp-query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"warp-query.d.ts","sourceRoot":"","sources":["../../src/warp/warp-query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGpD,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAGzD,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EACL,KAAK,+BAA+B,EACpC,KAAK,8BAA8B,EACpC,MAAM,mBAAmB,CAAC;AAE3B,MAAM,MAAM,qBAAqB,GAAG,WAAW,GAAG,aAAa,CAAC;AAEhE,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,qBAAqB,EAC5B,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CA6B1B;AA0BD,wBAAsB,4BAA4B,CAChD,KAAK,EAAE,qBAAqB,EAC5B,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,+BAA+B,CAAC,CAwC1C;AAED,wBAAsB,2BAA2B,CAC/C,KAAK,EAAE,qBAAqB,EAC5B,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,8BAA8B,CAAC,CAuCzC"}
@@ -0,0 +1,105 @@
1
+ import { warpTypes } from '@humanode-hyperlane/cosmos-types';
2
+ import { AltVM } from '@humanode-hyperlane/provider-sdk';
3
+ import { assert, rootLogger } from '@humanode-hyperlane/utils';
4
+ export async function getWarpTokenType(query, tokenAddress) {
5
+ try {
6
+ const { token } = await query.warp.Token({
7
+ id: tokenAddress,
8
+ });
9
+ assert(token, `No token found at address ${tokenAddress}`);
10
+ // Map Cosmos token type to provider-sdk TokenType with exhaustiveness check
11
+ switch (token.token_type) {
12
+ case warpTypes.HypTokenType.HYP_TOKEN_TYPE_COLLATERAL:
13
+ return AltVM.TokenType.collateral;
14
+ case warpTypes.HypTokenType.HYP_TOKEN_TYPE_SYNTHETIC:
15
+ return AltVM.TokenType.synthetic;
16
+ case warpTypes.HypTokenType.HYP_TOKEN_TYPE_UNSPECIFIED:
17
+ throw new Error('Token type is unspecified');
18
+ case warpTypes.HypTokenType.UNRECOGNIZED:
19
+ throw new Error('Token type is unrecognized');
20
+ default: {
21
+ // Exhaustiveness check: if a new token type is added, this will cause a compile error
22
+ const _exhaustiveCheck = token.token_type;
23
+ throw new Error(`Unknown token type: ${_exhaustiveCheck}`);
24
+ }
25
+ }
26
+ }
27
+ catch (error) {
28
+ const message = error instanceof Error ? error.message : String(error);
29
+ throw new Error(`Failed to query token type at ${tokenAddress}: ${message}`);
30
+ }
31
+ }
32
+ async function getRemoteRoutersAndGas(query, tokenAddress) {
33
+ const { remote_routers } = await query.warp.RemoteRouters({
34
+ id: tokenAddress,
35
+ });
36
+ const remoteRouters = {};
37
+ const destinationGas = {};
38
+ for (const router of remote_routers) {
39
+ remoteRouters[router.receiver_domain] = {
40
+ address: router.receiver_contract,
41
+ };
42
+ destinationGas[router.receiver_domain] = router.gas;
43
+ }
44
+ return { remoteRouters, destinationGas };
45
+ }
46
+ export async function getCollateralWarpTokenConfig(query, tokenAddress) {
47
+ try {
48
+ const { token } = await query.warp.Token({
49
+ id: tokenAddress,
50
+ });
51
+ assert(token, `No token found at address ${tokenAddress}`);
52
+ assert(token.token_type === warpTypes.HypTokenType.HYP_TOKEN_TYPE_COLLATERAL, `Token at ${tokenAddress} is not a collateral token`);
53
+ const { remoteRouters, destinationGas } = await getRemoteRoutersAndGas(query, tokenAddress);
54
+ // Cosmos SDK tokens do not store token metadata on chain yet
55
+ rootLogger.warn(`Token metadata (name, symbol, decimals) is not stored on-chain for Cosmos collateral token at ${tokenAddress}. Falling back to placeholder values.`);
56
+ return {
57
+ type: AltVM.TokenType.collateral,
58
+ address: token.id,
59
+ owner: token.owner,
60
+ mailbox: token.origin_mailbox,
61
+ interchainSecurityModule: token.ism_id,
62
+ token: token.origin_denom,
63
+ // Cosmos SDK tokens do not store token metadata on chain yet
64
+ name: 'Unknown',
65
+ symbol: 'Unknown',
66
+ decimals: 0,
67
+ remoteRouters,
68
+ destinationGas,
69
+ };
70
+ }
71
+ catch (error) {
72
+ const message = error instanceof Error ? error.message : String(error);
73
+ throw new Error(`Failed to query collateral token config at ${tokenAddress}: ${message}`);
74
+ }
75
+ }
76
+ export async function getSyntheticWarpTokenConfig(query, tokenAddress) {
77
+ try {
78
+ const { token } = await query.warp.Token({
79
+ id: tokenAddress,
80
+ });
81
+ assert(token, `No token found at address ${tokenAddress}`);
82
+ assert(token.token_type === warpTypes.HypTokenType.HYP_TOKEN_TYPE_SYNTHETIC, `Token at ${tokenAddress} is not a synthetic token`);
83
+ const { remoteRouters, destinationGas } = await getRemoteRoutersAndGas(query, tokenAddress);
84
+ // Cosmos SDK tokens do not store token metadata on chain yet
85
+ rootLogger.warn(`Token metadata (name, symbol, decimals) is not stored on-chain for Cosmos synthetic token at ${tokenAddress}. Falling back to placeholder values.`);
86
+ return {
87
+ type: AltVM.TokenType.synthetic,
88
+ address: token.id,
89
+ owner: token.owner,
90
+ mailbox: token.origin_mailbox,
91
+ interchainSecurityModule: token.ism_id,
92
+ // Cosmos SDK tokens do not store token metadata on chain yet
93
+ name: 'Unknown',
94
+ symbol: 'Unknown',
95
+ decimals: 0,
96
+ remoteRouters,
97
+ destinationGas,
98
+ };
99
+ }
100
+ catch (error) {
101
+ const message = error instanceof Error ? error.message : String(error);
102
+ throw new Error(`Failed to query synthetic token config at ${tokenAddress}: ${message}`);
103
+ }
104
+ }
105
+ //# sourceMappingURL=warp-query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"warp-query.js","sourceRoot":"","sources":["../../src/warp/warp-query.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import { type ArtifactDeployed } from '@humanode-hyperlane/provider-sdk/artifact';
2
+ import { type DeployedWarpAddress, type RawWarpArtifactConfig } from '@humanode-hyperlane/provider-sdk/warp';
3
+ import { type MsgCreateCollateralTokenEncodeObject, type MsgCreateSyntheticTokenEncodeObject, type MsgEnrollRemoteRouterEncodeObject, type MsgSetTokenEncodeObject, type MsgUnrollRemoteRouterEncodeObject } from '../hyperlane/warp/messages.js';
4
+ import { type AnnotatedEncodeObject } from '../utils/types.js';
5
+ export declare function getCreateCollateralTokenTx(fromAddress: string, config: {
6
+ mailboxAddress: string;
7
+ collateralDenom: string;
8
+ }): MsgCreateCollateralTokenEncodeObject;
9
+ export declare function getCreateSyntheticTokenTx(fromAddress: string, config: {
10
+ mailboxAddress: string;
11
+ }): MsgCreateSyntheticTokenEncodeObject;
12
+ export declare function getSetTokenOwnerTx(fromAddress: string, config: {
13
+ tokenAddress: string;
14
+ newOwner?: string;
15
+ }): MsgSetTokenEncodeObject;
16
+ export declare function getSetTokenIsmTx(fromAddress: string, config: {
17
+ tokenAddress: string;
18
+ ismAddress?: string;
19
+ }): MsgSetTokenEncodeObject;
20
+ export declare function getEnrollRemoteRouterTx(fromAddress: string, config: {
21
+ tokenAddress: string;
22
+ remoteDomainId: number;
23
+ remoteRouterAddress: string;
24
+ gas: string;
25
+ }): MsgEnrollRemoteRouterEncodeObject;
26
+ export declare function getUnenrollRemoteRouterTx(fromAddress: string, config: {
27
+ tokenAddress: string;
28
+ remoteDomainId: number;
29
+ }): MsgUnrollRemoteRouterEncodeObject;
30
+ export declare function getWarpTokenUpdateTxs<TConfig extends RawWarpArtifactConfig>(expectedArtifactState: ArtifactDeployed<TConfig, DeployedWarpAddress>, currentArtifactState: ArtifactDeployed<TConfig, DeployedWarpAddress>, signerAddress: string): AnnotatedEncodeObject[];
31
+ //# sourceMappingURL=warp-tx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"warp-tx.d.ts","sourceRoot":"","sources":["../../src/warp/warp-tx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAE3B,MAAM,uCAAuC,CAAC;AAQ/C,OAAO,EACL,KAAK,oCAAoC,EACzC,KAAK,mCAAmC,EACxC,KAAK,iCAAiC,EACtC,KAAK,uBAAuB,EAC5B,KAAK,iCAAiC,EACvC,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE/D,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE;IACN,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;CACzB,GACA,oCAAoC,CAStC;AAED,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE;IACN,cAAc,EAAE,MAAM,CAAC;CACxB,GACA,mCAAmC,CAQrC;AAED,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE;IACN,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GACA,uBAAuB,CAUzB;AAGD,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE;IACN,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GACA,uBAAuB,CAczB;AAED,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE;IACN,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,GAAG,EAAE,MAAM,CAAC;CACb,GACA,iCAAiC,CAanC;AAED,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE;IACN,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;CACxB,GACA,iCAAiC,CASnC;AAED,wBAAgB,qBAAqB,CAAC,OAAO,SAAS,qBAAqB,EACzE,qBAAqB,EAAE,gBAAgB,CAAC,OAAO,EAAE,mBAAmB,CAAC,EACrE,oBAAoB,EAAE,gBAAgB,CAAC,OAAO,EAAE,mBAAmB,CAAC,EACpE,aAAa,EAAE,MAAM,GACpB,qBAAqB,EAAE,CA0EzB"}
@@ -0,0 +1,127 @@
1
+ import { computeRemoteRoutersUpdates, } from '@humanode-hyperlane/provider-sdk/warp';
2
+ import { assert, eqAddressCosmos, eqOptionalAddress, isZeroishAddress, } from '@humanode-hyperlane/utils';
3
+ import { COSMOS_MODULE_MESSAGE_REGISTRY as MessageRegistry } from '../registry.js';
4
+ export function getCreateCollateralTokenTx(fromAddress, config) {
5
+ return {
6
+ typeUrl: MessageRegistry.MsgCreateCollateralToken.proto.type,
7
+ value: MessageRegistry.MsgCreateCollateralToken.proto.converter.create({
8
+ owner: fromAddress,
9
+ origin_mailbox: config.mailboxAddress,
10
+ origin_denom: config.collateralDenom,
11
+ }),
12
+ };
13
+ }
14
+ export function getCreateSyntheticTokenTx(fromAddress, config) {
15
+ return {
16
+ typeUrl: MessageRegistry.MsgCreateSyntheticToken.proto.type,
17
+ value: MessageRegistry.MsgCreateSyntheticToken.proto.converter.create({
18
+ owner: fromAddress,
19
+ origin_mailbox: config.mailboxAddress,
20
+ }),
21
+ };
22
+ }
23
+ export function getSetTokenOwnerTx(fromAddress, config) {
24
+ return {
25
+ typeUrl: MessageRegistry.MsgSetToken.proto.type,
26
+ value: MessageRegistry.MsgSetToken.proto.converter.create({
27
+ owner: fromAddress,
28
+ token_id: config.tokenAddress,
29
+ new_owner: config.newOwner ?? '',
30
+ renounce_ownership: !config.newOwner,
31
+ }),
32
+ };
33
+ }
34
+ // Note: Cosmos does not support resetting ISM to default yet (validation will be removed when bug is fixed)
35
+ export function getSetTokenIsmTx(fromAddress, config) {
36
+ assert(config.ismAddress && !isZeroishAddress(config.ismAddress), 'Cosmos does not support resetting the ism to the default one yet');
37
+ return {
38
+ typeUrl: MessageRegistry.MsgSetToken.proto.type,
39
+ value: MessageRegistry.MsgSetToken.proto.converter.create({
40
+ owner: fromAddress,
41
+ token_id: config.tokenAddress,
42
+ ism_id: config.ismAddress ?? '',
43
+ }),
44
+ };
45
+ }
46
+ export function getEnrollRemoteRouterTx(fromAddress, config) {
47
+ return {
48
+ typeUrl: MessageRegistry.MsgEnrollRemoteRouter.proto.type,
49
+ value: MessageRegistry.MsgEnrollRemoteRouter.proto.converter.create({
50
+ owner: fromAddress,
51
+ token_id: config.tokenAddress,
52
+ remote_router: {
53
+ receiver_domain: config.remoteDomainId,
54
+ receiver_contract: config.remoteRouterAddress,
55
+ gas: config.gas,
56
+ },
57
+ }),
58
+ };
59
+ }
60
+ export function getUnenrollRemoteRouterTx(fromAddress, config) {
61
+ return {
62
+ typeUrl: MessageRegistry.MsgUnrollRemoteRouter.proto.type,
63
+ value: MessageRegistry.MsgUnrollRemoteRouter.proto.converter.create({
64
+ owner: fromAddress,
65
+ token_id: config.tokenAddress,
66
+ receiver_domain: config.remoteDomainId,
67
+ }),
68
+ };
69
+ }
70
+ export function getWarpTokenUpdateTxs(expectedArtifactState, currentArtifactState, signerAddress) {
71
+ const { config: expectedConfig, deployed } = expectedArtifactState;
72
+ const { config: currentConfig } = currentArtifactState;
73
+ const updateTxs = [];
74
+ // Update ISM if changed
75
+ const currentIsm = currentConfig.interchainSecurityModule?.deployed.address;
76
+ const newIsm = expectedConfig.interchainSecurityModule?.deployed.address;
77
+ if (!eqOptionalAddress(currentIsm, newIsm, eqAddressCosmos)) {
78
+ assert(newIsm && !isZeroishAddress(newIsm), 'Cosmos does not support resetting the ism to the default one yet');
79
+ const setIsmTx = getSetTokenIsmTx(signerAddress, {
80
+ tokenAddress: deployed.address,
81
+ ismAddress: newIsm,
82
+ });
83
+ updateTxs.push({
84
+ ...setIsmTx,
85
+ annotation: 'Updating token ISM',
86
+ });
87
+ }
88
+ // Compute router updates
89
+ const routerDiff = computeRemoteRoutersUpdates(currentConfig, expectedConfig, eqAddressCosmos);
90
+ // Unenroll removed routers
91
+ for (const domainId of routerDiff.toUnenroll) {
92
+ const unenrollTx = getUnenrollRemoteRouterTx(signerAddress, {
93
+ tokenAddress: deployed.address,
94
+ remoteDomainId: domainId,
95
+ });
96
+ updateTxs.push({
97
+ ...unenrollTx,
98
+ annotation: `Unenrolling router for domain ${domainId}`,
99
+ });
100
+ }
101
+ // Enroll or update routers
102
+ for (const { domainId, routerAddress, gas } of routerDiff.toEnroll) {
103
+ const enrollTx = getEnrollRemoteRouterTx(signerAddress, {
104
+ tokenAddress: deployed.address,
105
+ remoteDomainId: domainId,
106
+ remoteRouterAddress: routerAddress,
107
+ gas: gas,
108
+ });
109
+ updateTxs.push({
110
+ ...enrollTx,
111
+ annotation: `Enrolling/updating router for domain ${domainId}`,
112
+ });
113
+ }
114
+ // Update owner if changed (must be done last, after all other updates)
115
+ if (!eqAddressCosmos(currentConfig.owner, expectedConfig.owner)) {
116
+ const setOwnerTx = getSetTokenOwnerTx(signerAddress, {
117
+ tokenAddress: deployed.address,
118
+ newOwner: expectedConfig.owner,
119
+ });
120
+ updateTxs.push({
121
+ ...setOwnerTx,
122
+ annotation: 'Transferring token ownership',
123
+ });
124
+ }
125
+ return updateTxs;
126
+ }
127
+ //# sourceMappingURL=warp-tx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"warp-tx.js","sourceRoot":"","sources":["../../src/warp/warp-tx.ts"],"names":[],"mappings":"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"}