@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,144 @@
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 { setupInterchainSecurityExtension } from '../hyperlane/interchain_security/query.js';
6
+ import { getIsmType } from './ism-query.js';
7
+ import { CosmosMerkleRootMultisigIsmReader, CosmosMerkleRootMultisigIsmWriter, CosmosMessageIdMultisigIsmReader, CosmosMessageIdMultisigIsmWriter, } from './multisig-ism.js';
8
+ import { CosmosRoutingIsmRawReader, CosmosRoutingIsmRawWriter, } from './routing-ism.js';
9
+ import { CosmosTestIsmReader, CosmosTestIsmWriter } from './test-ism.js';
10
+ /**
11
+ * Cosmos ISM Artifact Manager implementing IRawIsmArtifactManager.
12
+ *
13
+ * This manager:
14
+ * - Lazily initializes the query client on first use
15
+ * - Detects ISM types and delegates to specialized readers
16
+ * - Provides factory methods for creating readers and writers
17
+ *
18
+ * Design: Uses lazy initialization to keep the constructor synchronous while
19
+ * deferring the async query client creation until actually needed.
20
+ */
21
+ export class CosmosIsmArtifactManager {
22
+ rpcUrls;
23
+ query = new LazyAsync(() => this.createQuery());
24
+ constructor(rpcUrls) {
25
+ this.rpcUrls = rpcUrls;
26
+ }
27
+ /**
28
+ * Lazy initialization - creates query client on first use.
29
+ * Subsequent calls return the cached promise.
30
+ */
31
+ getQuery() {
32
+ return this.query.get();
33
+ }
34
+ /**
35
+ * Creates a Cosmos query client with ISM extension.
36
+ */
37
+ async createQuery() {
38
+ const cometClient = await connectComet(this.rpcUrls[0]);
39
+ return QueryClient.withExtensions(cometClient, setupInterchainSecurityExtension);
40
+ }
41
+ /**
42
+ * Read an ISM of unknown type from the blockchain.
43
+ *
44
+ * @param address - Address of the ISM to read
45
+ * @returns Deployed ISM artifact with configuration
46
+ */
47
+ async readIsm(address) {
48
+ const query = await this.getQuery();
49
+ const altVMType = await getIsmType(query, address);
50
+ // Type assertion needed because getIsmType returns IsmType (union),
51
+ // but createReaderWithQuery expects a specific type T extends IsmType.
52
+ // The reader will return the correct artifact type at runtime.
53
+ const reader = this.createReaderWithQuery(altVMType, query);
54
+ return reader.read(address);
55
+ }
56
+ /**
57
+ * Factory method to create type-specific ISM readers (public interface).
58
+ * Note: This method doesn't have access to query client yet, so it must be async.
59
+ *
60
+ * @param type - ISM type to create reader for
61
+ * @returns Type-specific ISM reader
62
+ */
63
+ createReader(type) {
64
+ // For synchronous createReader, we return a wrapper that will initialize lazily
65
+ return {
66
+ read: async (address) => {
67
+ const query = await this.getQuery();
68
+ const reader = this.createReaderWithQuery(type, query);
69
+ return reader.read(address);
70
+ },
71
+ };
72
+ }
73
+ /**
74
+ * Internal helper to create type-specific ISM readers with query client.
75
+ *
76
+ * @param type - ISM type to create reader for
77
+ * @param query - Query client to use for reading
78
+ * @returns Type-specific ISM reader
79
+ */
80
+ createReaderWithQuery(type, query) {
81
+ switch (type) {
82
+ case AltVM.IsmType.TEST_ISM:
83
+ return new CosmosTestIsmReader(query);
84
+ case AltVM.IsmType.MERKLE_ROOT_MULTISIG:
85
+ return new CosmosMerkleRootMultisigIsmReader(query);
86
+ case AltVM.IsmType.MESSAGE_ID_MULTISIG:
87
+ return new CosmosMessageIdMultisigIsmReader(query);
88
+ case AltVM.IsmType.ROUTING:
89
+ return new CosmosRoutingIsmRawReader(query);
90
+ default:
91
+ throw new Error(`Unsupported ISM type: ${type}`);
92
+ }
93
+ }
94
+ /**
95
+ * Factory method to create type-specific ISM writers.
96
+ *
97
+ * @param type - ISM type to create writer for
98
+ * @param signer - Signer to use for writing transactions
99
+ * @returns Type-specific ISM writer
100
+ */
101
+ createWriter(type, signer) {
102
+ // For synchronous createWriter, we return a wrapper that will initialize lazily
103
+ return {
104
+ read: async (address) => {
105
+ const query = await this.getQuery();
106
+ const writer = this.createWriterWithQuery(type, query, signer);
107
+ return writer.read(address);
108
+ },
109
+ create: async (artifact) => {
110
+ const query = await this.getQuery();
111
+ const writer = this.createWriterWithQuery(type, query, signer);
112
+ return writer.create(artifact);
113
+ },
114
+ update: async (artifact) => {
115
+ const query = await this.getQuery();
116
+ const writer = this.createWriterWithQuery(type, query, signer);
117
+ return writer.update(artifact);
118
+ },
119
+ };
120
+ }
121
+ /**
122
+ * Internal helper to create type-specific ISM writers with query client and signer.
123
+ *
124
+ * @param type - ISM type to create writer for
125
+ * @param query - Query client to use for reading
126
+ * @param signer - Signer to use for writing
127
+ * @returns Type-specific ISM writer
128
+ */
129
+ createWriterWithQuery(type, query, signer) {
130
+ switch (type) {
131
+ case AltVM.IsmType.TEST_ISM:
132
+ return new CosmosTestIsmWriter(query, signer);
133
+ case AltVM.IsmType.MERKLE_ROOT_MULTISIG:
134
+ return new CosmosMerkleRootMultisigIsmWriter(query, signer);
135
+ case AltVM.IsmType.MESSAGE_ID_MULTISIG:
136
+ return new CosmosMessageIdMultisigIsmWriter(query, signer);
137
+ case AltVM.IsmType.ROUTING:
138
+ return new CosmosRoutingIsmRawWriter(query, signer);
139
+ default:
140
+ throw new Error(`Unsupported ISM type: ${type}`);
141
+ }
142
+ }
143
+ }
144
+ //# sourceMappingURL=ism-artifact-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ism-artifact-manager.js","sourceRoot":"","sources":["../../src/ism/ism-artifact-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAYzD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAGtD,OAAO,EAAE,gCAAgC,EAAE,MAAM,2CAA2C,CAAC;AAE7F,OAAO,EAA6B,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EACL,iCAAiC,EACjC,iCAAiC,EACjC,gCAAgC,EAChC,gCAAgC,GACjC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEzE;;;;;;;;;;GAUG;AACH,MAAM,OAAO,wBAAwB;IAGN;IAFZ,KAAK,GAAG,IAAI,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IAEjE,YAA6B,OAAiB;QAAjB,YAAO,GAAP,OAAO,CAAU;IAAG,CAAC;IAElD;;;OAGG;IACK,QAAQ;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;IAC1B,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,WAAW;QACvB,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,OAAO,WAAW,CAAC,cAAc,CAC/B,WAAW,EACX,gCAAgC,CACjC,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,OAAO,CAAC,OAAe;QAC3B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACpC,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACnD,oEAAoE;QACpE,uEAAuE;QACvE,+DAA+D;QAC/D,MAAM,MAAM,GAAG,IAAI,CAAC,qBAAqB,CACvC,SAAwC,EACxC,KAAK,CACN,CAAC;QACF,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED;;;;;;OAMG;IACH,YAAY,CACV,IAAO;QAEP,gFAAgF;QAChF,OAAO;YACL,IAAI,EAAE,KAAK,EAAE,OAAe,EAAE,EAAE;gBAC9B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACpC,MAAM,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBACvD,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC9B,CAAC;SAC8D,CAAC;IACpE,CAAC;IAED;;;;;;OAMG;IACK,qBAAqB,CAC3B,IAAO,EACP,KAA2B;QAE3B,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,KAAK,CAAC,OAAO,CAAC,QAAQ;gBACzB,OAAO,IAAI,mBAAmB,CAAC,KAAK,CAGnC,CAAC;YACJ,KAAK,KAAK,CAAC,OAAO,CAAC,oBAAoB;gBACrC,OAAO,IAAI,iCAAiC,CAC1C,KAAK,CAIN,CAAC;YACJ,KAAK,KAAK,CAAC,OAAO,CAAC,mBAAmB;gBACpC,OAAO,IAAI,gCAAgC,CACzC,KAAK,CAIN,CAAC;YACJ,KAAK,KAAK,CAAC,OAAO,CAAC,OAAO;gBACxB,OAAO,IAAI,yBAAyB,CAClC,KAAK,CAIN,CAAC;YACJ;gBACE,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,YAAY,CACV,IAAO,EACP,MAA0B;QAE1B,gFAAgF;QAChF,OAAO;YACL,IAAI,EAAE,KAAK,EAAE,OAAe,EAAE,EAAE;gBAC9B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACpC,MAAM,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;gBAC/D,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC9B,CAAC;YACD,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;gBACzB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACpC,MAAM,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;gBAC/D,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACjC,CAAC;YACD,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;gBACzB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACpC,MAAM,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;gBAC/D,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACjC,CAAC;SACF,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IACK,qBAAqB,CAC3B,IAAO,EACP,KAA2B,EAC3B,MAA0B;QAE1B,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,KAAK,CAAC,OAAO,CAAC,QAAQ;gBACzB,OAAO,IAAI,mBAAmB,CAC5B,KAAK,EACL,MAAM,CAIP,CAAC;YACJ,KAAK,KAAK,CAAC,OAAO,CAAC,oBAAoB;gBACrC,OAAO,IAAI,iCAAiC,CAC1C,KAAK,EACL,MAAM,CAIP,CAAC;YACJ,KAAK,KAAK,CAAC,OAAO,CAAC,mBAAmB;gBACpC,OAAO,IAAI,gCAAgC,CACzC,KAAK,EACL,MAAM,CAIP,CAAC;YACJ,KAAK,KAAK,CAAC,OAAO,CAAC,OAAO;gBACxB,OAAO,IAAI,yBAAyB,CAClC,KAAK,EACL,MAAM,CAIP,CAAC;YACJ;gBACE,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,71 @@
1
+ import { type QueryClient } from '@cosmjs/stargate';
2
+ import { AltVM } from '@humanode-hyperlane/provider-sdk';
3
+ import { type InterchainSecurityExtension } from '../hyperlane/interchain_security/query.js';
4
+ /**
5
+ * Type alias for query client with ISM extension.
6
+ * Used throughout ISM readers to ensure type safety.
7
+ */
8
+ export type CosmosIsmQueryClient = QueryClient & InterchainSecurityExtension;
9
+ /**
10
+ * Query ISM type from address.
11
+ *
12
+ * @param query - Query client with InterchainSecurityExtension
13
+ * @param ismAddress - Address of the ISM to query
14
+ * @returns The AltVM ISM type
15
+ * @throws Error if ISM not found or unknown type
16
+ */
17
+ export declare function getIsmType(query: CosmosIsmQueryClient, ismAddress: string): Promise<AltVM.IsmType>;
18
+ /**
19
+ * Query NoopIsm configuration.
20
+ *
21
+ * @param query - Query client with InterchainSecurityExtension
22
+ * @param ismAddress - Address of the NoopIsm to query
23
+ * @returns NoopIsm configuration with address
24
+ * @throws Error if NoopIsm not found
25
+ */
26
+ export declare function getNoopIsmConfig(query: CosmosIsmQueryClient, ismAddress: string): Promise<{
27
+ address: string;
28
+ }>;
29
+ /**
30
+ * Query Message ID Multisig ISM configuration.
31
+ *
32
+ * @param query - Query client with InterchainSecurityExtension
33
+ * @param ismAddress - Address of the Message ID Multisig ISM to query
34
+ * @returns Message ID Multisig ISM configuration with address, validators, and threshold
35
+ * @throws Error if Message ID Multisig ISM not found
36
+ */
37
+ export declare function getMessageIdMultisigIsmConfig(query: CosmosIsmQueryClient, ismAddress: string): Promise<{
38
+ address: string;
39
+ validators: string[];
40
+ threshold: number;
41
+ }>;
42
+ /**
43
+ * Query Merkle Root Multisig ISM configuration.
44
+ *
45
+ * @param query - Query client with InterchainSecurityExtension
46
+ * @param ismAddress - Address of the Merkle Root Multisig ISM to query
47
+ * @returns Merkle Root Multisig ISM configuration with address, validators, and threshold
48
+ * @throws Error if Merkle Root Multisig ISM not found
49
+ */
50
+ export declare function getMerkleRootMultisigIsmConfig(query: CosmosIsmQueryClient, ismAddress: string): Promise<{
51
+ address: string;
52
+ validators: string[];
53
+ threshold: number;
54
+ }>;
55
+ /**
56
+ * Query routing ISM configuration.
57
+ *
58
+ * @param query - Query client with InterchainSecurityExtension
59
+ * @param ismAddress - Address of the routing ISM to query
60
+ * @returns Routing ISM configuration with address, owner, and routes
61
+ * @throws Error if routing ISM not found
62
+ */
63
+ export declare function getRoutingIsmConfig(query: CosmosIsmQueryClient, ismAddress: string): Promise<{
64
+ address: string;
65
+ owner: string;
66
+ routes: Array<{
67
+ domainId: number;
68
+ ismAddress: string;
69
+ }>;
70
+ }>;
71
+ //# sourceMappingURL=ism-query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ism-query.d.ts","sourceRoot":"","sources":["../../src/ism/ism-query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGpD,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAGzD,OAAO,EAEL,KAAK,2BAA2B,EACjC,MAAM,2CAA2C,CAAC;AAEnD;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG,WAAW,GAAG,2BAA2B,CAAC;AAE7E;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAC9B,KAAK,EAAE,oBAAoB,EAC3B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAyBxB;AAED;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,oBAAoB,EAC3B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAe9B;AAED;;;;;;;GAOG;AACH,wBAAsB,6BAA6B,CACjD,KAAK,EAAE,oBAAoB,EAC3B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC;IACT,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC,CAkBD;AAED;;;;;;;GAOG;AACH,wBAAsB,8BAA8B,CAClD,KAAK,EAAE,oBAAoB,EAC3B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC;IACT,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC,CAkBD;AAED;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,oBAAoB,EAC3B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC;IACT,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACzD,CAAC,CAqBD"}
@@ -0,0 +1,133 @@
1
+ import { AltVM } from '@humanode-hyperlane/provider-sdk';
2
+ import { assert } from '@humanode-hyperlane/utils';
3
+ import { IsmTypes as CosmosNativeIsmTypes, } from '../hyperlane/interchain_security/query.js';
4
+ /**
5
+ * Query ISM type from address.
6
+ *
7
+ * @param query - Query client with InterchainSecurityExtension
8
+ * @param ismAddress - Address of the ISM to query
9
+ * @returns The AltVM ISM type
10
+ * @throws Error if ISM not found or unknown type
11
+ */
12
+ export async function getIsmType(query, ismAddress) {
13
+ try {
14
+ const { ism } = await query.interchainSecurity.Ism({
15
+ id: ismAddress,
16
+ });
17
+ assert(ism, `No ISM found at address ${ismAddress}`);
18
+ // Map Cosmos ISM type URL to AltVM ISM type
19
+ switch (ism.type_url) {
20
+ case CosmosNativeIsmTypes.MerkleRootMultisigISM:
21
+ return AltVM.IsmType.MERKLE_ROOT_MULTISIG;
22
+ case CosmosNativeIsmTypes.MessageIdMultisigISM:
23
+ return AltVM.IsmType.MESSAGE_ID_MULTISIG;
24
+ case CosmosNativeIsmTypes.RoutingISM:
25
+ return AltVM.IsmType.ROUTING;
26
+ case CosmosNativeIsmTypes.NoopISM:
27
+ return AltVM.IsmType.TEST_ISM;
28
+ default:
29
+ throw new Error(`Unknown Cosmos ISM type: ${ism.type_url}`);
30
+ }
31
+ }
32
+ catch (error) {
33
+ throw new Error(`Failed to query ISM type at ${ismAddress}: ${error.message}`);
34
+ }
35
+ }
36
+ /**
37
+ * Query NoopIsm configuration.
38
+ *
39
+ * @param query - Query client with InterchainSecurityExtension
40
+ * @param ismAddress - Address of the NoopIsm to query
41
+ * @returns NoopIsm configuration with address
42
+ * @throws Error if NoopIsm not found
43
+ */
44
+ export async function getNoopIsmConfig(query, ismAddress) {
45
+ try {
46
+ const { ism } = await query.interchainSecurity.DecodedIsm({
47
+ id: ismAddress,
48
+ });
49
+ assert(ism, `No NoopIsm found at address ${ismAddress}`);
50
+ return {
51
+ address: ism.id,
52
+ };
53
+ }
54
+ catch (error) {
55
+ throw new Error(`Failed to query NoopIsm config at ${ismAddress}: ${error.message}`);
56
+ }
57
+ }
58
+ /**
59
+ * Query Message ID Multisig ISM configuration.
60
+ *
61
+ * @param query - Query client with InterchainSecurityExtension
62
+ * @param ismAddress - Address of the Message ID Multisig ISM to query
63
+ * @returns Message ID Multisig ISM configuration with address, validators, and threshold
64
+ * @throws Error if Message ID Multisig ISM not found
65
+ */
66
+ export async function getMessageIdMultisigIsmConfig(query, ismAddress) {
67
+ try {
68
+ const { ism } = await query.interchainSecurity.DecodedIsm({
69
+ id: ismAddress,
70
+ });
71
+ assert(ism, `No Message ID Multisig ISM found at address ${ismAddress}`);
72
+ return {
73
+ address: ism.id,
74
+ validators: ism.validators,
75
+ threshold: ism.threshold,
76
+ };
77
+ }
78
+ catch (error) {
79
+ throw new Error(`Failed to query Message ID Multisig ISM config at ${ismAddress}: ${error.message}`);
80
+ }
81
+ }
82
+ /**
83
+ * Query Merkle Root Multisig ISM configuration.
84
+ *
85
+ * @param query - Query client with InterchainSecurityExtension
86
+ * @param ismAddress - Address of the Merkle Root Multisig ISM to query
87
+ * @returns Merkle Root Multisig ISM configuration with address, validators, and threshold
88
+ * @throws Error if Merkle Root Multisig ISM not found
89
+ */
90
+ export async function getMerkleRootMultisigIsmConfig(query, ismAddress) {
91
+ try {
92
+ const { ism } = await query.interchainSecurity.DecodedIsm({
93
+ id: ismAddress,
94
+ });
95
+ assert(ism, `No Merkle Root Multisig ISM found at address ${ismAddress}`);
96
+ return {
97
+ address: ism.id,
98
+ validators: ism.validators,
99
+ threshold: ism.threshold,
100
+ };
101
+ }
102
+ catch (error) {
103
+ throw new Error(`Failed to query Merkle Root Multisig ISM config at ${ismAddress}: ${error.message}`);
104
+ }
105
+ }
106
+ /**
107
+ * Query routing ISM configuration.
108
+ *
109
+ * @param query - Query client with InterchainSecurityExtension
110
+ * @param ismAddress - Address of the routing ISM to query
111
+ * @returns Routing ISM configuration with address, owner, and routes
112
+ * @throws Error if routing ISM not found
113
+ */
114
+ export async function getRoutingIsmConfig(query, ismAddress) {
115
+ try {
116
+ const { ism } = await query.interchainSecurity.DecodedIsm({
117
+ id: ismAddress,
118
+ });
119
+ assert(ism, `No routing ISM found at address ${ismAddress}`);
120
+ return {
121
+ address: ism.id,
122
+ owner: ism.owner,
123
+ routes: ism.routes.map((r) => ({
124
+ domainId: r.domain,
125
+ ismAddress: r.ism,
126
+ })),
127
+ };
128
+ }
129
+ catch (error) {
130
+ throw new Error(`Failed to query routing ISM config at ${ismAddress}: ${error.message}`);
131
+ }
132
+ }
133
+ //# sourceMappingURL=ism-query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ism-query.js","sourceRoot":"","sources":["../../src/ism/ism-query.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAEnD,OAAO,EACL,QAAQ,IAAI,oBAAoB,GAEjC,MAAM,2CAA2C,CAAC;AAQnD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,KAA2B,EAC3B,UAAkB;IAElB,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC;YACjD,EAAE,EAAE,UAAU;SACf,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,EAAE,2BAA2B,UAAU,EAAE,CAAC,CAAC;QAErD,4CAA4C;QAC5C,QAAQ,GAAG,CAAC,QAAQ,EAAE,CAAC;YACrB,KAAK,oBAAoB,CAAC,qBAAqB;gBAC7C,OAAO,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC;YAC5C,KAAK,oBAAoB,CAAC,oBAAoB;gBAC5C,OAAO,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC;YAC3C,KAAK,oBAAoB,CAAC,UAAU;gBAClC,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;YAC/B,KAAK,oBAAoB,CAAC,OAAO;gBAC/B,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;YAChC;gBACE,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,+BAA+B,UAAU,KAAM,KAAe,CAAC,OAAO,EAAE,CACzE,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,KAA2B,EAC3B,UAAkB;IAElB,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,KAAK,CAAC,kBAAkB,CAAC,UAAU,CAAkB;YACzE,EAAE,EAAE,UAAU;SACf,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,EAAE,+BAA+B,UAAU,EAAE,CAAC,CAAC;QAEzD,OAAO;YACL,OAAO,EAAE,GAAG,CAAC,EAAE;SAChB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,qCAAqC,UAAU,KAAM,KAAe,CAAC,OAAO,EAAE,CAC/E,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,KAA2B,EAC3B,UAAkB;IAMlB,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,EAAE,GACX,MAAM,KAAK,CAAC,kBAAkB,CAAC,UAAU,CAA+B;YACtE,EAAE,EAAE,UAAU;SACf,CAAC,CAAC;QACL,MAAM,CAAC,GAAG,EAAE,+CAA+C,UAAU,EAAE,CAAC,CAAC;QAEzE,OAAO;YACL,OAAO,EAAE,GAAG,CAAC,EAAE;YACf,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,SAAS,EAAE,GAAG,CAAC,SAAS;SACzB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,qDAAqD,UAAU,KAAM,KAAe,CAAC,OAAO,EAAE,CAC/F,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,KAA2B,EAC3B,UAAkB;IAMlB,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,EAAE,GACX,MAAM,KAAK,CAAC,kBAAkB,CAAC,UAAU,CAAgC;YACvE,EAAE,EAAE,UAAU;SACf,CAAC,CAAC;QACL,MAAM,CAAC,GAAG,EAAE,gDAAgD,UAAU,EAAE,CAAC,CAAC;QAE1E,OAAO;YACL,OAAO,EAAE,GAAG,CAAC,EAAE;YACf,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,SAAS,EAAE,GAAG,CAAC,SAAS;SACzB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,sDAAsD,UAAU,KAAM,KAAe,CAAC,OAAO,EAAE,CAChG,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,KAA2B,EAC3B,UAAkB;IAMlB,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,EAAE,GACX,MAAM,KAAK,CAAC,kBAAkB,CAAC,UAAU,CAAqB;YAC5D,EAAE,EAAE,UAAU;SACf,CAAC,CAAC;QACL,MAAM,CAAC,GAAG,EAAE,mCAAmC,UAAU,EAAE,CAAC,CAAC;QAE7D,OAAO;YACL,OAAO,EAAE,GAAG,CAAC,EAAE;YACf,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC7B,QAAQ,EAAE,CAAC,CAAC,MAAM;gBAClB,UAAU,EAAE,CAAC,CAAC,GAAG;aAClB,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,yCAAyC,UAAU,KAAM,KAAe,CAAC,OAAO,EAAE,CACnF,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { type MsgCreateMerkleRootMultisigIsmEncodeObject, type MsgCreateMessageIdMultisigIsmEncodeObject, type MsgCreateNoopIsmEncodeObject, type MsgCreateRoutingIsmEncodeObject, type MsgRemoveRoutingIsmDomainEncodeObject, type MsgSetRoutingIsmDomainEncodeObject, type MsgUpdateRoutingIsmOwnerEncodeObject } from '../hyperlane/interchain_security/messages.js';
2
+ export declare function getCreateTestIsmTx(fromAddress: string): Promise<MsgCreateNoopIsmEncodeObject>;
3
+ export declare function getCreateMessageIdMultisigIsmTx(fromAddress: string, config: {
4
+ validators: string[];
5
+ threshold: number;
6
+ }): Promise<MsgCreateMessageIdMultisigIsmEncodeObject>;
7
+ export declare function getCreateMerkleRootMultisigIsmTx(fromAddress: string, config: {
8
+ validators: string[];
9
+ threshold: number;
10
+ }): Promise<MsgCreateMerkleRootMultisigIsmEncodeObject>;
11
+ export declare function getCreateRoutingIsmTx(fromAddress: string, routes: Array<{
12
+ domainId: number;
13
+ ismAddress: string;
14
+ }>): Promise<MsgCreateRoutingIsmEncodeObject>;
15
+ export declare function getSetRoutingIsmRouteTx(ownerAddress: string, config: {
16
+ ismAddress: string;
17
+ domainIsm: {
18
+ domainId: number;
19
+ ismAddress: string;
20
+ };
21
+ }): Promise<MsgSetRoutingIsmDomainEncodeObject>;
22
+ export declare function getRemoveRoutingIsmRouteTx(ownerAddress: string, config: {
23
+ ismAddress: string;
24
+ domainId: number;
25
+ }): Promise<MsgRemoveRoutingIsmDomainEncodeObject>;
26
+ export declare function getSetRoutingIsmOwnerTx(ownerAddress: string, config: {
27
+ ismAddress: string;
28
+ newOwner: string;
29
+ }): Promise<MsgUpdateRoutingIsmOwnerEncodeObject>;
30
+ //# sourceMappingURL=ism-tx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ism-tx.d.ts","sourceRoot":"","sources":["../../src/ism/ism-tx.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,0CAA0C,EAC/C,KAAK,yCAAyC,EAC9C,KAAK,4BAA4B,EACjC,KAAK,+BAA+B,EACpC,KAAK,qCAAqC,EAC1C,KAAK,kCAAkC,EACvC,KAAK,oCAAoC,EAC1C,MAAM,8CAA8C,CAAC;AAGtD,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,4BAA4B,CAAC,CAOvC;AAED,wBAAsB,+BAA+B,CACnD,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE;IAAE,UAAU,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAClD,OAAO,CAAC,yCAAyC,CAAC,CAWpD;AAED,wBAAsB,gCAAgC,CACpD,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE;IAAE,UAAU,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAClD,OAAO,CAAC,0CAA0C,CAAC,CAUrD;AAED,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,GACtD,OAAO,CAAC,+BAA+B,CAAC,CAW1C;AAED,wBAAsB,uBAAuB,CAC3C,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE;IACN,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;CACrD,GACA,OAAO,CAAC,kCAAkC,CAAC,CAY7C;AAED,wBAAsB,0BAA0B,CAC9C,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC/C,OAAO,CAAC,qCAAqC,CAAC,CAShD;AAED,wBAAsB,uBAAuB,CAC3C,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC/C,OAAO,CAAC,oCAAoC,CAAC,CAU/C"}
@@ -0,0 +1,76 @@
1
+ import { COSMOS_MODULE_MESSAGE_REGISTRY as MessageRegistry } from '../registry.js';
2
+ export async function getCreateTestIsmTx(fromAddress) {
3
+ return {
4
+ typeUrl: MessageRegistry.MsgCreateNoopIsm.proto.type,
5
+ value: MessageRegistry.MsgCreateNoopIsm.proto.converter.create({
6
+ creator: fromAddress,
7
+ }),
8
+ };
9
+ }
10
+ export async function getCreateMessageIdMultisigIsmTx(fromAddress, config) {
11
+ return {
12
+ typeUrl: MessageRegistry.MsgCreateMessageIdMultisigIsm.proto.type,
13
+ value: MessageRegistry.MsgCreateMessageIdMultisigIsm.proto.converter.create({
14
+ creator: fromAddress,
15
+ validators: config.validators,
16
+ threshold: config.threshold,
17
+ }),
18
+ };
19
+ }
20
+ export async function getCreateMerkleRootMultisigIsmTx(fromAddress, config) {
21
+ return {
22
+ typeUrl: MessageRegistry.MsgCreateMerkleRootMultisigIsm.proto.type,
23
+ value: MessageRegistry.MsgCreateMerkleRootMultisigIsm.proto.converter.create({
24
+ creator: fromAddress,
25
+ validators: config.validators,
26
+ threshold: config.threshold,
27
+ }),
28
+ };
29
+ }
30
+ export async function getCreateRoutingIsmTx(fromAddress, routes) {
31
+ return {
32
+ typeUrl: MessageRegistry.MsgCreateRoutingIsm.proto.type,
33
+ value: MessageRegistry.MsgCreateRoutingIsm.proto.converter.create({
34
+ creator: fromAddress,
35
+ routes: routes.map((r) => ({
36
+ domain: r.domainId,
37
+ ism: r.ismAddress,
38
+ })),
39
+ }),
40
+ };
41
+ }
42
+ export async function getSetRoutingIsmRouteTx(ownerAddress, config) {
43
+ return {
44
+ typeUrl: MessageRegistry.MsgSetRoutingIsmDomain.proto.type,
45
+ value: MessageRegistry.MsgSetRoutingIsmDomain.proto.converter.create({
46
+ owner: ownerAddress,
47
+ ism_id: config.ismAddress,
48
+ route: {
49
+ domain: config.domainIsm.domainId,
50
+ ism: config.domainIsm.ismAddress,
51
+ },
52
+ }),
53
+ };
54
+ }
55
+ export async function getRemoveRoutingIsmRouteTx(ownerAddress, config) {
56
+ return {
57
+ typeUrl: MessageRegistry.MsgRemoveRoutingIsmDomain.proto.type,
58
+ value: MessageRegistry.MsgRemoveRoutingIsmDomain.proto.converter.create({
59
+ owner: ownerAddress,
60
+ ism_id: config.ismAddress,
61
+ domain: config.domainId,
62
+ }),
63
+ };
64
+ }
65
+ export async function getSetRoutingIsmOwnerTx(ownerAddress, config) {
66
+ return {
67
+ typeUrl: MessageRegistry.MsgUpdateRoutingIsmOwner.proto.type,
68
+ value: MessageRegistry.MsgUpdateRoutingIsmOwner.proto.converter.create({
69
+ owner: ownerAddress,
70
+ ism_id: config.ismAddress,
71
+ new_owner: config.newOwner,
72
+ renounce_ownership: !config.newOwner,
73
+ }),
74
+ };
75
+ }
76
+ //# sourceMappingURL=ism-tx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ism-tx.js","sourceRoot":"","sources":["../../src/ism/ism-tx.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
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 DeployedIsmAddress, type MultisigIsmConfig } from '@humanode-hyperlane/provider-sdk/ism';
4
+ import { type CosmosNativeSigner } from '../clients/signer.js';
5
+ import { type AnnotatedEncodeObject } from '../utils/types.js';
6
+ import { type CosmosIsmQueryClient } from './ism-query.js';
7
+ /**
8
+ * Reader for Cosmos Message ID Multisig ISM.
9
+ * Uses message IDs for validator signature verification.
10
+ */
11
+ export declare class CosmosMessageIdMultisigIsmReader implements ArtifactReader<MultisigIsmConfig, DeployedIsmAddress> {
12
+ private readonly query;
13
+ constructor(query: CosmosIsmQueryClient);
14
+ read(address: string): Promise<ArtifactDeployed<MultisigIsmConfig, DeployedIsmAddress>>;
15
+ }
16
+ /**
17
+ * Writer for Cosmos Message ID Multisig ISM.
18
+ * Handles deployment of message ID multisig ISMs.
19
+ */
20
+ export declare class CosmosMessageIdMultisigIsmWriter extends CosmosMessageIdMultisigIsmReader implements ArtifactWriter<MultisigIsmConfig, DeployedIsmAddress> {
21
+ private readonly signer;
22
+ constructor(query: CosmosIsmQueryClient, signer: CosmosNativeSigner);
23
+ create(artifact: ArtifactNew<MultisigIsmConfig>): Promise<[
24
+ ArtifactDeployed<MultisigIsmConfig, DeployedIsmAddress>,
25
+ DeliverTxResponse[]
26
+ ]>;
27
+ update(_artifact: ArtifactDeployed<MultisigIsmConfig, DeployedIsmAddress>): Promise<AnnotatedEncodeObject[]>;
28
+ }
29
+ /**
30
+ * Reader for Cosmos Merkle Root Multisig ISM.
31
+ * Uses merkle root proofs for validator signature verification.
32
+ */
33
+ export declare class CosmosMerkleRootMultisigIsmReader implements ArtifactReader<MultisigIsmConfig, DeployedIsmAddress> {
34
+ private readonly query;
35
+ constructor(query: CosmosIsmQueryClient);
36
+ read(address: string): Promise<ArtifactDeployed<MultisigIsmConfig, DeployedIsmAddress>>;
37
+ }
38
+ /**
39
+ * Writer for Cosmos Merkle Root Multisig ISM.
40
+ * Handles deployment of merkle root multisig ISMs.
41
+ */
42
+ export declare class CosmosMerkleRootMultisigIsmWriter extends CosmosMerkleRootMultisigIsmReader implements ArtifactWriter<MultisigIsmConfig, DeployedIsmAddress> {
43
+ private readonly signer;
44
+ constructor(query: CosmosIsmQueryClient, signer: CosmosNativeSigner);
45
+ create(artifact: ArtifactNew<MultisigIsmConfig>): Promise<[
46
+ ArtifactDeployed<MultisigIsmConfig, DeployedIsmAddress>,
47
+ DeliverTxResponse[]
48
+ ]>;
49
+ update(_artifact: ArtifactDeployed<MultisigIsmConfig, DeployedIsmAddress>): Promise<AnnotatedEncodeObject[]>;
50
+ }
51
+ //# sourceMappingURL=multisig-ism.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multisig-ism.d.ts","sourceRoot":"","sources":["../../src/ism/multisig-ism.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,kBAAkB,EACvB,KAAK,iBAAiB,EACvB,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE/D,OAAO,EACL,KAAK,oBAAoB,EAG1B,MAAM,gBAAgB,CAAC;AAMxB;;;GAGG;AACH,qBAAa,gCAAiC,YAAW,cAAc,CACrE,iBAAiB,EACjB,kBAAkB,CACnB;IACa,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,oBAAoB;IAElD,IAAI,CACR,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,CAAC;CAepE;AAED;;;GAGG;AACH,qBAAa,gCACX,SAAQ,gCACR,YAAW,cAAc,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;IAI9D,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADvB,KAAK,EAAE,oBAAoB,EACV,MAAM,EAAE,kBAAkB;IAKvC,MAAM,CACV,QAAQ,EAAE,WAAW,CAAC,iBAAiB,CAAC,GACvC,OAAO,CACR;QACE,gBAAgB,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;QACvD,iBAAiB,EAAE;KACpB,CACF;IA4BK,MAAM,CACV,SAAS,EAAE,gBAAgB,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,GACjE,OAAO,CAAC,qBAAqB,EAAE,CAAC;CAKpC;AAED;;;GAGG;AACH,qBAAa,iCAAkC,YAAW,cAAc,CACtE,iBAAiB,EACjB,kBAAkB,CACnB;IACa,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,oBAAoB;IAElD,IAAI,CACR,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,CAAC;CAepE;AAED;;;GAGG;AACH,qBAAa,iCACX,SAAQ,iCACR,YAAW,cAAc,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;IAI9D,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADvB,KAAK,EAAE,oBAAoB,EACV,MAAM,EAAE,kBAAkB;IAKvC,MAAM,CACV,QAAQ,EAAE,WAAW,CAAC,iBAAiB,CAAC,GACvC,OAAO,CACR;QACE,gBAAgB,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;QACvD,iBAAiB,EAAE;KACpB,CACF;IA4BK,MAAM,CACV,SAAS,EAAE,gBAAgB,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,GACjE,OAAO,CAAC,qBAAqB,EAAE,CAAC;CAKpC"}
@@ -0,0 +1,120 @@
1
+ import { IsmType } from '@humanode-hyperlane/provider-sdk/altvm';
2
+ import { ArtifactState, } from '@humanode-hyperlane/provider-sdk/artifact';
3
+ import { getNewContractAddress } from '../utils/base.js';
4
+ import { getMerkleRootMultisigIsmConfig, getMessageIdMultisigIsmConfig, } from './ism-query.js';
5
+ import { getCreateMerkleRootMultisigIsmTx, getCreateMessageIdMultisigIsmTx, } from './ism-tx.js';
6
+ /**
7
+ * Reader for Cosmos Message ID Multisig ISM.
8
+ * Uses message IDs for validator signature verification.
9
+ */
10
+ export class CosmosMessageIdMultisigIsmReader {
11
+ query;
12
+ constructor(query) {
13
+ this.query = query;
14
+ }
15
+ async read(address) {
16
+ const ismConfig = await getMessageIdMultisigIsmConfig(this.query, address);
17
+ return {
18
+ artifactState: ArtifactState.DEPLOYED,
19
+ config: {
20
+ type: IsmType.MESSAGE_ID_MULTISIG,
21
+ validators: ismConfig.validators,
22
+ threshold: ismConfig.threshold,
23
+ },
24
+ deployed: {
25
+ address: ismConfig.address,
26
+ },
27
+ };
28
+ }
29
+ }
30
+ /**
31
+ * Writer for Cosmos Message ID Multisig ISM.
32
+ * Handles deployment of message ID multisig ISMs.
33
+ */
34
+ export class CosmosMessageIdMultisigIsmWriter extends CosmosMessageIdMultisigIsmReader {
35
+ signer;
36
+ constructor(query, signer) {
37
+ super(query);
38
+ this.signer = signer;
39
+ }
40
+ async create(artifact) {
41
+ const { config } = artifact;
42
+ const transaction = await getCreateMessageIdMultisigIsmTx(this.signer.getSignerAddress(), {
43
+ validators: config.validators,
44
+ threshold: config.threshold,
45
+ });
46
+ const receipt = await this.signer.sendAndConfirmTransaction(transaction);
47
+ const ismAddress = getNewContractAddress(receipt);
48
+ const deployedArtifact = {
49
+ artifactState: ArtifactState.DEPLOYED,
50
+ config: artifact.config,
51
+ deployed: {
52
+ address: ismAddress,
53
+ },
54
+ };
55
+ return [deployedArtifact, [receipt]];
56
+ }
57
+ async update(_artifact) {
58
+ // Multisig ISMs are immutable.
59
+ // To change configuration, a new ISM must be deployed
60
+ return [];
61
+ }
62
+ }
63
+ /**
64
+ * Reader for Cosmos Merkle Root Multisig ISM.
65
+ * Uses merkle root proofs for validator signature verification.
66
+ */
67
+ export class CosmosMerkleRootMultisigIsmReader {
68
+ query;
69
+ constructor(query) {
70
+ this.query = query;
71
+ }
72
+ async read(address) {
73
+ const ismConfig = await getMerkleRootMultisigIsmConfig(this.query, address);
74
+ return {
75
+ artifactState: ArtifactState.DEPLOYED,
76
+ config: {
77
+ type: IsmType.MERKLE_ROOT_MULTISIG,
78
+ validators: ismConfig.validators,
79
+ threshold: ismConfig.threshold,
80
+ },
81
+ deployed: {
82
+ address: ismConfig.address,
83
+ },
84
+ };
85
+ }
86
+ }
87
+ /**
88
+ * Writer for Cosmos Merkle Root Multisig ISM.
89
+ * Handles deployment of merkle root multisig ISMs.
90
+ */
91
+ export class CosmosMerkleRootMultisigIsmWriter extends CosmosMerkleRootMultisigIsmReader {
92
+ signer;
93
+ constructor(query, signer) {
94
+ super(query);
95
+ this.signer = signer;
96
+ }
97
+ async create(artifact) {
98
+ const { config } = artifact;
99
+ const transaction = await getCreateMerkleRootMultisigIsmTx(this.signer.getSignerAddress(), {
100
+ validators: config.validators,
101
+ threshold: config.threshold,
102
+ });
103
+ const receipt = await this.signer.sendAndConfirmTransaction(transaction);
104
+ const ismAddress = getNewContractAddress(receipt);
105
+ const deployedArtifact = {
106
+ artifactState: ArtifactState.DEPLOYED,
107
+ config: artifact.config,
108
+ deployed: {
109
+ address: ismAddress,
110
+ },
111
+ };
112
+ return [deployedArtifact, [receipt]];
113
+ }
114
+ async update(_artifact) {
115
+ // Multisig ISMs are immutable.
116
+ // To change configuration, a new ISM must be deployed
117
+ return [];
118
+ }
119
+ }
120
+ //# sourceMappingURL=multisig-ism.js.map