@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.
- package/LICENSE.md +193 -0
- package/README.md +82 -2
- package/dist/clients/protocol.d.ts +24 -0
- package/dist/clients/protocol.d.ts.map +1 -0
- package/dist/clients/protocol.js +70 -0
- package/dist/clients/protocol.js.map +1 -0
- package/dist/clients/provider.d.ts +70 -0
- package/dist/clients/provider.d.ts.map +1 -0
- package/dist/clients/provider.js +397 -0
- package/dist/clients/provider.js.map +1 -0
- package/dist/clients/signer.d.ts +55 -0
- package/dist/clients/signer.d.ts.map +1 -0
- package/dist/clients/signer.js +377 -0
- package/dist/clients/signer.js.map +1 -0
- package/dist/hook/hook-artifact-manager.d.ts +72 -0
- package/dist/hook/hook-artifact-manager.d.ts.map +1 -0
- package/dist/hook/hook-artifact-manager.js +139 -0
- package/dist/hook/hook-artifact-manager.js.map +1 -0
- package/dist/hook/hook-query.d.ts +42 -0
- package/dist/hook/hook-query.d.ts.map +1 -0
- package/dist/hook/hook-query.js +95 -0
- package/dist/hook/hook-query.js.map +1 -0
- package/dist/hook/hook-tx.d.ts +47 -0
- package/dist/hook/hook-tx.d.ts.map +1 -0
- package/dist/hook/hook-tx.js +76 -0
- package/dist/hook/hook-tx.js.map +1 -0
- package/dist/hook/igp-hook.d.ts +30 -0
- package/dist/hook/igp-hook.d.ts.map +1 -0
- package/dist/hook/igp-hook.js +150 -0
- package/dist/hook/igp-hook.js.map +1 -0
- package/dist/hook/merkle-tree-hook.d.ts +32 -0
- package/dist/hook/merkle-tree-hook.d.ts.map +1 -0
- package/dist/hook/merkle-tree-hook.js +60 -0
- package/dist/hook/merkle-tree-hook.js.map +1 -0
- package/dist/hyperlane/core/messages.d.ts +16 -0
- package/dist/hyperlane/core/messages.d.ts.map +1 -0
- package/dist/hyperlane/core/messages.js +2 -0
- package/dist/hyperlane/core/messages.js.map +1 -0
- package/dist/hyperlane/core/query.d.ts +18 -0
- package/dist/hyperlane/core/query.d.ts.map +1 -0
- package/dist/hyperlane/core/query.js +18 -0
- package/dist/hyperlane/core/query.js.map +1 -0
- package/dist/hyperlane/interchain_security/messages.d.ts +36 -0
- package/dist/hyperlane/interchain_security/messages.d.ts.map +1 -0
- package/dist/hyperlane/interchain_security/messages.js +2 -0
- package/dist/hyperlane/interchain_security/messages.js.map +1 -0
- package/dist/hyperlane/interchain_security/query.d.ts +36 -0
- package/dist/hyperlane/interchain_security/query.d.ts.map +1 -0
- package/dist/hyperlane/interchain_security/query.js +49 -0
- package/dist/hyperlane/interchain_security/query.js.map +1 -0
- package/dist/hyperlane/post_dispatch/messages.d.ts +32 -0
- package/dist/hyperlane/post_dispatch/messages.d.ts.map +1 -0
- package/dist/hyperlane/post_dispatch/messages.js +2 -0
- package/dist/hyperlane/post_dispatch/messages.js.map +1 -0
- package/dist/hyperlane/post_dispatch/query.d.ts +24 -0
- package/dist/hyperlane/post_dispatch/query.d.ts.map +1 -0
- package/dist/hyperlane/post_dispatch/query.js +21 -0
- package/dist/hyperlane/post_dispatch/query.js.map +1 -0
- package/dist/hyperlane/warp/messages.d.ts +28 -0
- package/dist/hyperlane/warp/messages.d.ts.map +1 -0
- package/dist/hyperlane/warp/messages.js +2 -0
- package/dist/hyperlane/warp/messages.js.map +1 -0
- package/dist/hyperlane/warp/query.d.ts +18 -0
- package/dist/hyperlane/warp/query.d.ts.map +1 -0
- package/dist/hyperlane/warp/query.js +16 -0
- package/dist/hyperlane/warp/query.js.map +1 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +36 -0
- package/dist/index.js.map +1 -0
- package/dist/ism/ism-artifact-manager.d.ts +69 -0
- package/dist/ism/ism-artifact-manager.d.ts.map +1 -0
- package/dist/ism/ism-artifact-manager.js +144 -0
- package/dist/ism/ism-artifact-manager.js.map +1 -0
- package/dist/ism/ism-query.d.ts +71 -0
- package/dist/ism/ism-query.d.ts.map +1 -0
- package/dist/ism/ism-query.js +133 -0
- package/dist/ism/ism-query.js.map +1 -0
- package/dist/ism/ism-tx.d.ts +30 -0
- package/dist/ism/ism-tx.d.ts.map +1 -0
- package/dist/ism/ism-tx.js +76 -0
- package/dist/ism/ism-tx.js.map +1 -0
- package/dist/ism/multisig-ism.d.ts +51 -0
- package/dist/ism/multisig-ism.d.ts.map +1 -0
- package/dist/ism/multisig-ism.js +120 -0
- package/dist/ism/multisig-ism.js.map +1 -0
- package/dist/ism/routing-ism.d.ts +30 -0
- package/dist/ism/routing-ism.d.ts.map +1 -0
- package/dist/ism/routing-ism.js +126 -0
- package/dist/ism/routing-ism.js.map +1 -0
- package/dist/ism/test-ism.d.ts +29 -0
- package/dist/ism/test-ism.d.ts.map +1 -0
- package/dist/ism/test-ism.js +56 -0
- package/dist/ism/test-ism.js.map +1 -0
- package/dist/mailbox/mailbox-artifact-manager.d.ts +48 -0
- package/dist/mailbox/mailbox-artifact-manager.d.ts.map +1 -0
- package/dist/mailbox/mailbox-artifact-manager.js +82 -0
- package/dist/mailbox/mailbox-artifact-manager.js.map +1 -0
- package/dist/mailbox/mailbox-query.d.ts +12 -0
- package/dist/mailbox/mailbox-query.d.ts.map +1 -0
- package/dist/mailbox/mailbox-query.js +29 -0
- package/dist/mailbox/mailbox-query.js.map +1 -0
- package/dist/mailbox/mailbox-tx.d.ts +37 -0
- package/dist/mailbox/mailbox-tx.d.ts.map +1 -0
- package/dist/mailbox/mailbox-tx.js +68 -0
- package/dist/mailbox/mailbox-tx.js.map +1 -0
- package/dist/mailbox/mailbox.d.ts +30 -0
- package/dist/mailbox/mailbox.d.ts.map +1 -0
- package/dist/mailbox/mailbox.js +168 -0
- package/dist/mailbox/mailbox.js.map +1 -0
- package/dist/registry.d.ts +21 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +373 -0
- package/dist/registry.js.map +1 -0
- package/dist/testing/constants.d.ts +10 -0
- package/dist/testing/constants.d.ts.map +1 -0
- package/dist/testing/constants.js +30 -0
- package/dist/testing/constants.js.map +1 -0
- package/dist/testing/index.d.ts +8 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +10 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/node.d.ts +4 -0
- package/dist/testing/node.d.ts.map +1 -0
- package/dist/testing/node.js +35 -0
- package/dist/testing/node.js.map +1 -0
- package/dist/testing/utils.d.ts +10 -0
- package/dist/testing/utils.d.ts.map +1 -0
- package/dist/testing/utils.js +29 -0
- package/dist/testing/utils.js.map +1 -0
- package/dist/tests/1_interchain_security.e2e-test.d.ts +2 -0
- package/dist/tests/1_interchain_security.e2e-test.d.ts.map +1 -0
- package/dist/tests/1_interchain_security.e2e-test.js +171 -0
- package/dist/tests/1_interchain_security.e2e-test.js.map +1 -0
- package/dist/tests/2_core.e2e-test.d.ts +2 -0
- package/dist/tests/2_core.e2e-test.d.ts.map +1 -0
- package/dist/tests/2_core.e2e-test.js +120 -0
- package/dist/tests/2_core.e2e-test.js.map +1 -0
- package/dist/tests/3_post_dispatch.e2e-test.d.ts +2 -0
- package/dist/tests/3_post_dispatch.e2e-test.d.ts.map +1 -0
- package/dist/tests/3_post_dispatch.e2e-test.js +130 -0
- package/dist/tests/3_post_dispatch.e2e-test.js.map +1 -0
- package/dist/tests/4_warp.e2e-test.d.ts +2 -0
- package/dist/tests/4_warp.e2e-test.d.ts.map +1 -0
- package/dist/tests/4_warp.e2e-test.js +284 -0
- package/dist/tests/4_warp.e2e-test.js.map +1 -0
- package/dist/tests/5_warp_artifact.e2e-test.d.ts +2 -0
- package/dist/tests/5_warp_artifact.e2e-test.d.ts.map +1 -0
- package/dist/tests/5_warp_artifact.e2e-test.js +520 -0
- package/dist/tests/5_warp_artifact.e2e-test.js.map +1 -0
- package/dist/tests/e2e-test.setup.d.ts +2 -0
- package/dist/tests/e2e-test.setup.d.ts.map +1 -0
- package/dist/tests/e2e-test.setup.js +13 -0
- package/dist/tests/e2e-test.setup.js.map +1 -0
- package/dist/tests/hooks.e2e-test.d.ts +2 -0
- package/dist/tests/hooks.e2e-test.d.ts.map +1 -0
- package/dist/tests/hooks.e2e-test.js +314 -0
- package/dist/tests/hooks.e2e-test.js.map +1 -0
- package/dist/tests/mailbox.e2e-test.d.ts +2 -0
- package/dist/tests/mailbox.e2e-test.d.ts.map +1 -0
- package/dist/tests/mailbox.e2e-test.js +355 -0
- package/dist/tests/mailbox.e2e-test.js.map +1 -0
- package/dist/utils/base.d.ts +22 -0
- package/dist/utils/base.d.ts.map +1 -0
- package/dist/utils/base.js +35 -0
- package/dist/utils/base.js.map +1 -0
- package/dist/utils/types.d.ts +44 -0
- package/dist/utils/types.d.ts.map +1 -0
- package/dist/utils/types.js +2 -0
- package/dist/utils/types.js.map +1 -0
- package/dist/warp/collateral-token.d.ts +21 -0
- package/dist/warp/collateral-token.d.ts.map +1 -0
- package/dist/warp/collateral-token.js +119 -0
- package/dist/warp/collateral-token.js.map +1 -0
- package/dist/warp/synthetic-token.d.ts +21 -0
- package/dist/warp/synthetic-token.d.ts.map +1 -0
- package/dist/warp/synthetic-token.js +98 -0
- package/dist/warp/synthetic-token.js.map +1 -0
- package/dist/warp/warp-artifact-manager.d.ts +17 -0
- package/dist/warp/warp-artifact-manager.d.ts.map +1 -0
- package/dist/warp/warp-artifact-manager.js +101 -0
- package/dist/warp/warp-artifact-manager.js.map +1 -0
- package/dist/warp/warp-query.d.ts +9 -0
- package/dist/warp/warp-query.d.ts.map +1 -0
- package/dist/warp/warp-query.js +105 -0
- package/dist/warp/warp-query.js.map +1 -0
- package/dist/warp/warp-tx.d.ts +31 -0
- package/dist/warp/warp-tx.d.ts.map +1 -0
- package/dist/warp/warp-tx.js +127 -0
- package/dist/warp/warp-tx.js.map +1 -0
- 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":"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"}
|
|
@@ -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":"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"}
|
|
@@ -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
|