@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,355 @@
|
|
|
1
|
+
import chai, { expect } from 'chai';
|
|
2
|
+
import chaiAsPromised from 'chai-as-promised';
|
|
3
|
+
import { AltVM } from '@humanode-hyperlane/provider-sdk';
|
|
4
|
+
import { ArtifactState, } from '@humanode-hyperlane/provider-sdk/artifact';
|
|
5
|
+
import { ZERO_ADDRESS_HEX_32, assert } from '@humanode-hyperlane/utils';
|
|
6
|
+
import { CosmosHookArtifactManager } from '../hook/hook-artifact-manager.js';
|
|
7
|
+
import { CosmosIsmArtifactManager } from '../ism/ism-artifact-manager.js';
|
|
8
|
+
import { CosmosMailboxArtifactManager } from '../mailbox/mailbox-artifact-manager.js';
|
|
9
|
+
import { COSMOS_MODULE_MESSAGE_REGISTRY as MessageRegistry } from '../registry.js';
|
|
10
|
+
import { createSigner } from '../testing/utils.js';
|
|
11
|
+
chai.use(chaiAsPromised);
|
|
12
|
+
describe('Cosmos Mailbox Artifact API (e2e)', function () {
|
|
13
|
+
this.timeout(100_000);
|
|
14
|
+
let signer;
|
|
15
|
+
let cosmosSigner;
|
|
16
|
+
let mailboxArtifactManager;
|
|
17
|
+
let ismArtifactManager;
|
|
18
|
+
let hookArtifactManager;
|
|
19
|
+
const domainId = 1234;
|
|
20
|
+
const denom = 'uhyp';
|
|
21
|
+
before(async () => {
|
|
22
|
+
signer = await createSigner('alice');
|
|
23
|
+
cosmosSigner = signer;
|
|
24
|
+
const [rpc, ...otherRpcUrls] = cosmosSigner.getRpcUrls();
|
|
25
|
+
assert(rpc, 'At least one rpc is required');
|
|
26
|
+
mailboxArtifactManager = new CosmosMailboxArtifactManager({
|
|
27
|
+
rpcUrls: [rpc, ...otherRpcUrls],
|
|
28
|
+
domainId,
|
|
29
|
+
});
|
|
30
|
+
ismArtifactManager = new CosmosIsmArtifactManager([rpc, ...otherRpcUrls]);
|
|
31
|
+
// Create temp mailbox for hook manager
|
|
32
|
+
const ismWriter = ismArtifactManager.createWriter(AltVM.IsmType.TEST_ISM, cosmosSigner);
|
|
33
|
+
const [tempIsm] = await ismWriter.create({
|
|
34
|
+
config: { type: AltVM.IsmType.TEST_ISM },
|
|
35
|
+
});
|
|
36
|
+
const tempMailboxWriter = mailboxArtifactManager.createWriter('mailbox', cosmosSigner);
|
|
37
|
+
const [tempMailbox] = await tempMailboxWriter.create({
|
|
38
|
+
config: {
|
|
39
|
+
owner: cosmosSigner.getSignerAddress(),
|
|
40
|
+
defaultIsm: tempIsm,
|
|
41
|
+
defaultHook: {
|
|
42
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
43
|
+
deployed: { address: ZERO_ADDRESS_HEX_32 },
|
|
44
|
+
},
|
|
45
|
+
requiredHook: {
|
|
46
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
47
|
+
deployed: { address: ZERO_ADDRESS_HEX_32 },
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
});
|
|
51
|
+
hookArtifactManager = new CosmosHookArtifactManager({
|
|
52
|
+
rpcUrls: [rpc, ...otherRpcUrls],
|
|
53
|
+
mailboxAddress: tempMailbox.deployed.address,
|
|
54
|
+
nativeTokenDenom: denom,
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
describe('Mailbox Creation', () => {
|
|
58
|
+
it('should create a mailbox with all hooks and ISM', async () => {
|
|
59
|
+
const ismWriter = ismArtifactManager.createWriter(AltVM.IsmType.TEST_ISM, cosmosSigner);
|
|
60
|
+
const [ism] = await ismWriter.create({
|
|
61
|
+
config: { type: AltVM.IsmType.TEST_ISM },
|
|
62
|
+
});
|
|
63
|
+
const merkleTreeHookWriter = hookArtifactManager.createWriter(AltVM.HookType.MERKLE_TREE, cosmosSigner);
|
|
64
|
+
const [defaultHook] = await merkleTreeHookWriter.create({
|
|
65
|
+
config: { type: AltVM.HookType.MERKLE_TREE },
|
|
66
|
+
});
|
|
67
|
+
const merkleTreeHookWriter2 = hookArtifactManager.createWriter(AltVM.HookType.MERKLE_TREE, cosmosSigner);
|
|
68
|
+
const [requiredHook] = await merkleTreeHookWriter2.create({
|
|
69
|
+
config: { type: AltVM.HookType.MERKLE_TREE },
|
|
70
|
+
});
|
|
71
|
+
const config = {
|
|
72
|
+
owner: cosmosSigner.getSignerAddress(),
|
|
73
|
+
defaultIsm: {
|
|
74
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
75
|
+
deployed: { address: ism.deployed.address },
|
|
76
|
+
},
|
|
77
|
+
defaultHook: {
|
|
78
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
79
|
+
deployed: { address: defaultHook.deployed.address },
|
|
80
|
+
},
|
|
81
|
+
requiredHook: {
|
|
82
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
83
|
+
deployed: { address: requiredHook.deployed.address },
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
const writer = mailboxArtifactManager.createWriter('mailbox', cosmosSigner);
|
|
87
|
+
const [result, receipts] = await writer.create({ config });
|
|
88
|
+
expect(result.artifactState).to.equal(ArtifactState.DEPLOYED);
|
|
89
|
+
expect(result.deployed.address).to.be.a('string').and.not.be.empty;
|
|
90
|
+
expect(result.deployed.domainId).to.equal(domainId);
|
|
91
|
+
expect(receipts).to.be.an('array').with.length.greaterThan(0);
|
|
92
|
+
receipts.forEach((receipt) => {
|
|
93
|
+
expect(receipt.code).to.equal(0);
|
|
94
|
+
});
|
|
95
|
+
const reader = mailboxArtifactManager.createReader('mailbox');
|
|
96
|
+
const readMailbox = await reader.read(result.deployed.address);
|
|
97
|
+
expect(readMailbox.config.owner).to.equal(cosmosSigner.getSignerAddress());
|
|
98
|
+
expect(readMailbox.config.defaultIsm.deployed.address).to.equal(ism.deployed.address);
|
|
99
|
+
expect(readMailbox.config.defaultHook.deployed.address).to.equal(defaultHook.deployed.address);
|
|
100
|
+
expect(readMailbox.config.requiredHook.deployed.address).to.equal(requiredHook.deployed.address);
|
|
101
|
+
});
|
|
102
|
+
it('should create a mailbox with minimal config (only ISM)', async () => {
|
|
103
|
+
const ismWriter = ismArtifactManager.createWriter(AltVM.IsmType.TEST_ISM, cosmosSigner);
|
|
104
|
+
const [ism] = await ismWriter.create({
|
|
105
|
+
config: { type: AltVM.IsmType.TEST_ISM },
|
|
106
|
+
});
|
|
107
|
+
const config = {
|
|
108
|
+
owner: cosmosSigner.getSignerAddress(),
|
|
109
|
+
defaultIsm: {
|
|
110
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
111
|
+
deployed: { address: ism.deployed.address },
|
|
112
|
+
},
|
|
113
|
+
defaultHook: {
|
|
114
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
115
|
+
deployed: { address: ZERO_ADDRESS_HEX_32 },
|
|
116
|
+
},
|
|
117
|
+
requiredHook: {
|
|
118
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
119
|
+
deployed: { address: ZERO_ADDRESS_HEX_32 },
|
|
120
|
+
},
|
|
121
|
+
};
|
|
122
|
+
const writer = mailboxArtifactManager.createWriter('mailbox', cosmosSigner);
|
|
123
|
+
const [result, receipts] = await writer.create({ config });
|
|
124
|
+
expect(result.artifactState).to.equal(ArtifactState.DEPLOYED);
|
|
125
|
+
expect(result.deployed.address).to.be.a('string').and.not.be.empty;
|
|
126
|
+
expect(receipts).to.be.an('array').with.length(1);
|
|
127
|
+
receipts.forEach((receipt) => {
|
|
128
|
+
expect(receipt.code).to.equal(0);
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
it('should NOT transfer ownership during creation', async () => {
|
|
132
|
+
const ismWriter = ismArtifactManager.createWriter(AltVM.IsmType.TEST_ISM, cosmosSigner);
|
|
133
|
+
const [ism] = await ismWriter.create({
|
|
134
|
+
config: { type: AltVM.IsmType.TEST_ISM },
|
|
135
|
+
});
|
|
136
|
+
const bobSigner = await createSigner('bob');
|
|
137
|
+
const bobAddress = bobSigner.getSignerAddress();
|
|
138
|
+
const aliceAddress = cosmosSigner.getSignerAddress();
|
|
139
|
+
const config = {
|
|
140
|
+
owner: bobAddress,
|
|
141
|
+
defaultIsm: {
|
|
142
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
143
|
+
deployed: { address: ism.deployed.address },
|
|
144
|
+
},
|
|
145
|
+
defaultHook: {
|
|
146
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
147
|
+
deployed: { address: ZERO_ADDRESS_HEX_32 },
|
|
148
|
+
},
|
|
149
|
+
requiredHook: {
|
|
150
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
151
|
+
deployed: { address: ZERO_ADDRESS_HEX_32 },
|
|
152
|
+
},
|
|
153
|
+
};
|
|
154
|
+
const writer = mailboxArtifactManager.createWriter('mailbox', cosmosSigner);
|
|
155
|
+
const [result, receipts] = await writer.create({ config });
|
|
156
|
+
expect(result.artifactState).to.equal(ArtifactState.DEPLOYED);
|
|
157
|
+
expect(receipts).to.be.an('array').with.length(1);
|
|
158
|
+
const reader = mailboxArtifactManager.createReader('mailbox');
|
|
159
|
+
const readMailbox = await reader.read(result.deployed.address);
|
|
160
|
+
expect(readMailbox.config.owner).to.equal(aliceAddress);
|
|
161
|
+
expect(readMailbox.config.owner).to.not.equal(bobAddress);
|
|
162
|
+
});
|
|
163
|
+
});
|
|
164
|
+
describe('Mailbox Reading', () => {
|
|
165
|
+
it('should read a deployed mailbox', async () => {
|
|
166
|
+
const ismWriter = ismArtifactManager.createWriter(AltVM.IsmType.TEST_ISM, cosmosSigner);
|
|
167
|
+
const [ism] = await ismWriter.create({
|
|
168
|
+
config: { type: AltVM.IsmType.TEST_ISM },
|
|
169
|
+
});
|
|
170
|
+
const config = {
|
|
171
|
+
owner: cosmosSigner.getSignerAddress(),
|
|
172
|
+
defaultIsm: {
|
|
173
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
174
|
+
deployed: { address: ism.deployed.address },
|
|
175
|
+
},
|
|
176
|
+
defaultHook: {
|
|
177
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
178
|
+
deployed: { address: ZERO_ADDRESS_HEX_32 },
|
|
179
|
+
},
|
|
180
|
+
requiredHook: {
|
|
181
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
182
|
+
deployed: { address: ZERO_ADDRESS_HEX_32 },
|
|
183
|
+
},
|
|
184
|
+
};
|
|
185
|
+
const writer = mailboxArtifactManager.createWriter('mailbox', cosmosSigner);
|
|
186
|
+
const [deployedMailbox] = await writer.create({ config });
|
|
187
|
+
const reader = mailboxArtifactManager.createReader('mailbox');
|
|
188
|
+
const readMailbox = await reader.read(deployedMailbox.deployed.address);
|
|
189
|
+
expect(readMailbox.artifactState).to.equal(ArtifactState.DEPLOYED);
|
|
190
|
+
expect(readMailbox.deployed.address).to.equal(deployedMailbox.deployed.address);
|
|
191
|
+
expect(readMailbox.deployed.domainId).to.equal(domainId);
|
|
192
|
+
expect(readMailbox.config.owner).to.equal(config.owner);
|
|
193
|
+
expect(readMailbox.config.defaultIsm.deployed.address).to.equal(ism.deployed.address);
|
|
194
|
+
});
|
|
195
|
+
it('should read mailbox via readMailbox method', async () => {
|
|
196
|
+
const ismWriter = ismArtifactManager.createWriter(AltVM.IsmType.TEST_ISM, cosmosSigner);
|
|
197
|
+
const [ism] = await ismWriter.create({
|
|
198
|
+
config: { type: AltVM.IsmType.TEST_ISM },
|
|
199
|
+
});
|
|
200
|
+
const config = {
|
|
201
|
+
owner: cosmosSigner.getSignerAddress(),
|
|
202
|
+
defaultIsm: {
|
|
203
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
204
|
+
deployed: { address: ism.deployed.address },
|
|
205
|
+
},
|
|
206
|
+
defaultHook: {
|
|
207
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
208
|
+
deployed: { address: ZERO_ADDRESS_HEX_32 },
|
|
209
|
+
},
|
|
210
|
+
requiredHook: {
|
|
211
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
212
|
+
deployed: { address: ZERO_ADDRESS_HEX_32 },
|
|
213
|
+
},
|
|
214
|
+
};
|
|
215
|
+
const writer = mailboxArtifactManager.createWriter('mailbox', cosmosSigner);
|
|
216
|
+
const [deployedMailbox] = await writer.create({ config });
|
|
217
|
+
const readMailbox = await mailboxArtifactManager.readMailbox(deployedMailbox.deployed.address);
|
|
218
|
+
expect(readMailbox.artifactState).to.equal(ArtifactState.DEPLOYED);
|
|
219
|
+
expect(readMailbox.deployed.address).to.equal(deployedMailbox.deployed.address);
|
|
220
|
+
expect(readMailbox.config.owner).to.equal(config.owner);
|
|
221
|
+
});
|
|
222
|
+
});
|
|
223
|
+
describe('Mailbox Updates', () => {
|
|
224
|
+
let deployedMailbox;
|
|
225
|
+
let writer;
|
|
226
|
+
beforeEach(async () => {
|
|
227
|
+
const ismWriter = ismArtifactManager.createWriter(AltVM.IsmType.TEST_ISM, cosmosSigner);
|
|
228
|
+
const [ism] = await ismWriter.create({
|
|
229
|
+
config: { type: AltVM.IsmType.TEST_ISM },
|
|
230
|
+
});
|
|
231
|
+
const hookWriter = hookArtifactManager.createWriter(AltVM.HookType.MERKLE_TREE, cosmosSigner);
|
|
232
|
+
const [hook] = await hookWriter.create({
|
|
233
|
+
config: { type: AltVM.HookType.MERKLE_TREE },
|
|
234
|
+
});
|
|
235
|
+
const config = {
|
|
236
|
+
owner: cosmosSigner.getSignerAddress(),
|
|
237
|
+
defaultIsm: {
|
|
238
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
239
|
+
deployed: { address: ism.deployed.address },
|
|
240
|
+
},
|
|
241
|
+
defaultHook: {
|
|
242
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
243
|
+
deployed: { address: hook.deployed.address },
|
|
244
|
+
},
|
|
245
|
+
requiredHook: {
|
|
246
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
247
|
+
deployed: { address: ZERO_ADDRESS_HEX_32 },
|
|
248
|
+
},
|
|
249
|
+
};
|
|
250
|
+
writer = mailboxArtifactManager.createWriter('mailbox', cosmosSigner);
|
|
251
|
+
[deployedMailbox] = await writer.create({ config });
|
|
252
|
+
});
|
|
253
|
+
function verifyFullConfig(readMailbox, expectedConfig) {
|
|
254
|
+
expect(readMailbox.config.owner).to.equal(expectedConfig.owner);
|
|
255
|
+
expect(readMailbox.config.defaultIsm.deployed.address).to.equal(expectedConfig.defaultIsm.deployed.address);
|
|
256
|
+
expect(readMailbox.config.defaultHook.deployed.address).to.equal(expectedConfig.defaultHook.deployed.address);
|
|
257
|
+
expect(readMailbox.config.requiredHook.deployed.address).to.equal(expectedConfig.requiredHook.deployed.address);
|
|
258
|
+
}
|
|
259
|
+
const updateTestCases = [
|
|
260
|
+
{
|
|
261
|
+
name: 'default ISM',
|
|
262
|
+
setupNewValue: async () => {
|
|
263
|
+
const ismWriter = ismArtifactManager.createWriter(AltVM.IsmType.TEST_ISM, cosmosSigner);
|
|
264
|
+
const [newIsm] = await ismWriter.create({
|
|
265
|
+
config: { type: AltVM.IsmType.TEST_ISM },
|
|
266
|
+
});
|
|
267
|
+
return newIsm.deployed.address;
|
|
268
|
+
},
|
|
269
|
+
updateConfig: (mailbox, newValue) => ({
|
|
270
|
+
...mailbox,
|
|
271
|
+
config: {
|
|
272
|
+
...mailbox.config,
|
|
273
|
+
defaultIsm: {
|
|
274
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
275
|
+
deployed: { address: newValue },
|
|
276
|
+
},
|
|
277
|
+
},
|
|
278
|
+
}),
|
|
279
|
+
},
|
|
280
|
+
{
|
|
281
|
+
name: 'default hook',
|
|
282
|
+
setupNewValue: async () => {
|
|
283
|
+
const hookWriter = hookArtifactManager.createWriter(AltVM.HookType.MERKLE_TREE, cosmosSigner);
|
|
284
|
+
const [newHook] = await hookWriter.create({
|
|
285
|
+
config: { type: AltVM.HookType.MERKLE_TREE },
|
|
286
|
+
});
|
|
287
|
+
return newHook.deployed.address;
|
|
288
|
+
},
|
|
289
|
+
updateConfig: (mailbox, newValue) => ({
|
|
290
|
+
...mailbox,
|
|
291
|
+
config: {
|
|
292
|
+
...mailbox.config,
|
|
293
|
+
defaultHook: {
|
|
294
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
295
|
+
deployed: { address: newValue },
|
|
296
|
+
},
|
|
297
|
+
},
|
|
298
|
+
}),
|
|
299
|
+
},
|
|
300
|
+
{
|
|
301
|
+
name: 'required hook',
|
|
302
|
+
setupNewValue: async () => {
|
|
303
|
+
const hookWriter = hookArtifactManager.createWriter(AltVM.HookType.MERKLE_TREE, cosmosSigner);
|
|
304
|
+
const [newHook] = await hookWriter.create({
|
|
305
|
+
config: { type: AltVM.HookType.MERKLE_TREE },
|
|
306
|
+
});
|
|
307
|
+
return newHook.deployed.address;
|
|
308
|
+
},
|
|
309
|
+
updateConfig: (mailbox, newValue) => ({
|
|
310
|
+
...mailbox,
|
|
311
|
+
config: {
|
|
312
|
+
...mailbox.config,
|
|
313
|
+
requiredHook: {
|
|
314
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
315
|
+
deployed: { address: newValue },
|
|
316
|
+
},
|
|
317
|
+
},
|
|
318
|
+
}),
|
|
319
|
+
},
|
|
320
|
+
{
|
|
321
|
+
name: 'owner',
|
|
322
|
+
setupNewValue: async () => {
|
|
323
|
+
const bobSigner = await createSigner('bob');
|
|
324
|
+
return bobSigner.getSignerAddress();
|
|
325
|
+
},
|
|
326
|
+
updateConfig: (mailbox, newValue) => ({
|
|
327
|
+
...mailbox,
|
|
328
|
+
config: {
|
|
329
|
+
...mailbox.config,
|
|
330
|
+
owner: newValue,
|
|
331
|
+
},
|
|
332
|
+
}),
|
|
333
|
+
},
|
|
334
|
+
];
|
|
335
|
+
updateTestCases.forEach(({ name, setupNewValue, updateConfig }) => {
|
|
336
|
+
it(`should update ${name}`, async () => {
|
|
337
|
+
const newValue = await setupNewValue();
|
|
338
|
+
const updatedArtifact = updateConfig(deployedMailbox, newValue);
|
|
339
|
+
const txs = await writer.update(updatedArtifact);
|
|
340
|
+
expect(txs).to.be.an('array').with.length(1);
|
|
341
|
+
expect(txs[0].typeUrl).to.equal(MessageRegistry.MsgSetMailbox.proto.type);
|
|
342
|
+
const receipt = await signer.sendAndConfirmTransaction(txs[0]);
|
|
343
|
+
expect(receipt.code).to.equal(0);
|
|
344
|
+
const reader = mailboxArtifactManager.createReader('mailbox');
|
|
345
|
+
const readMailbox = await reader.read(deployedMailbox.deployed.address);
|
|
346
|
+
verifyFullConfig(readMailbox, updatedArtifact.config);
|
|
347
|
+
});
|
|
348
|
+
});
|
|
349
|
+
it('should return no transactions when no updates needed', async () => {
|
|
350
|
+
const txs = await writer.update(deployedMailbox);
|
|
351
|
+
expect(txs).to.be.an('array').with.length(0);
|
|
352
|
+
});
|
|
353
|
+
});
|
|
354
|
+
});
|
|
355
|
+
//# sourceMappingURL=mailbox.e2e-test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mailbox.e2e-test.js","sourceRoot":"","sources":["../../src/tests/mailbox.e2e-test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type DeliverTxResponse } from '@cosmjs/stargate';
|
|
2
|
+
import { COSMOS_MODULE_MESSAGE_REGISTRY as MessageRegistry } from '../registry.js';
|
|
3
|
+
type ProtoConverter = (typeof MessageRegistry)[keyof typeof MessageRegistry]['proto']['converter'];
|
|
4
|
+
/**
|
|
5
|
+
* Looks up the protobuf converter for a given message type URL.
|
|
6
|
+
*
|
|
7
|
+
* @param typeUrl - The message type URL (e.g., "/hyperlane.core.v1.MsgCreateMailbox")
|
|
8
|
+
* @returns The protobuf converter that can encode/decode messages of this type
|
|
9
|
+
* @throws Error if no converter is found for the given type URL
|
|
10
|
+
*/
|
|
11
|
+
export declare function getProtoConverter(typeUrl: string): ProtoConverter;
|
|
12
|
+
/**
|
|
13
|
+
* Extracts the newly created contract address from a transaction receipt.
|
|
14
|
+
* Used for ISM, Hook, and other component creation transactions that return an ID.
|
|
15
|
+
*
|
|
16
|
+
* @param receipt - The transaction receipt from a component creation transaction
|
|
17
|
+
* @returns The address/ID of the newly created contract
|
|
18
|
+
* @throws Error if the receipt is missing a message response or the ID field
|
|
19
|
+
*/
|
|
20
|
+
export declare function getNewContractAddress(receipt: DeliverTxResponse): string;
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/utils/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAI1D,OAAO,EAAE,8BAA8B,IAAI,eAAe,EAAE,MAAM,gBAAgB,CAAC;AASnF,KAAK,cAAc,GACjB,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,OAAO,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC;AAE/E;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAKjE;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAYxE"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { assert } from '@humanode-hyperlane/utils';
|
|
2
|
+
import { COSMOS_MODULE_MESSAGE_REGISTRY as MessageRegistry } from '../registry.js';
|
|
3
|
+
const protoConverterByUrlType = Object.fromEntries(Object.values(MessageRegistry).map(({ proto }) => [
|
|
4
|
+
proto.type,
|
|
5
|
+
proto.converter,
|
|
6
|
+
]));
|
|
7
|
+
/**
|
|
8
|
+
* Looks up the protobuf converter for a given message type URL.
|
|
9
|
+
*
|
|
10
|
+
* @param typeUrl - The message type URL (e.g., "/hyperlane.core.v1.MsgCreateMailbox")
|
|
11
|
+
* @returns The protobuf converter that can encode/decode messages of this type
|
|
12
|
+
* @throws Error if no converter is found for the given type URL
|
|
13
|
+
*/
|
|
14
|
+
export function getProtoConverter(typeUrl) {
|
|
15
|
+
const maybeConverter = protoConverterByUrlType[typeUrl];
|
|
16
|
+
assert(maybeConverter, `found no proto converter for type ${typeUrl}`);
|
|
17
|
+
return maybeConverter;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Extracts the newly created contract address from a transaction receipt.
|
|
21
|
+
* Used for ISM, Hook, and other component creation transactions that return an ID.
|
|
22
|
+
*
|
|
23
|
+
* @param receipt - The transaction receipt from a component creation transaction
|
|
24
|
+
* @returns The address/ID of the newly created contract
|
|
25
|
+
* @throws Error if the receipt is missing a message response or the ID field
|
|
26
|
+
*/
|
|
27
|
+
export function getNewContractAddress(receipt) {
|
|
28
|
+
const [msg] = receipt.msgResponses;
|
|
29
|
+
assert(msg, 'Expected at least one response in the transaction receipt');
|
|
30
|
+
const proto = getProtoConverter(msg.typeUrl);
|
|
31
|
+
const decodedInput = proto.decode(msg.value);
|
|
32
|
+
assert(decodedInput.id, 'Expected the id field to be defined on contract creation tx');
|
|
33
|
+
return decodedInput.id;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/utils/base.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAEnD,OAAO,EAAE,8BAA8B,IAAI,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEnF,MAAM,uBAAuB,GAAG,MAAM,CAAC,WAAW,CAChD,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAChD,KAAK,CAAC,IAAI;IACV,KAAK,CAAC,SAAS;CAChB,CAAC,CACH,CAAC;AAKF;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC/C,MAAM,cAAc,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACxD,MAAM,CAAC,cAAc,EAAE,qCAAqC,OAAO,EAAE,CAAC,CAAC;IAEvE,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAA0B;IAC9D,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;IACnC,MAAM,CAAC,GAAG,EAAE,2DAA2D,CAAC,CAAC;IAEzE,MAAM,KAAK,GAAG,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,YAAY,GAAQ,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAElD,MAAM,CACJ,YAAY,CAAC,EAAE,EACf,6DAA6D,CAC9D,CAAC;IACF,OAAO,YAAY,CAAC,EAAE,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { type EncodeObject } from '@cosmjs/proto-signing';
|
|
2
|
+
import { type AltVM } from '@humanode-hyperlane/provider-sdk';
|
|
3
|
+
import { type Annotated } from '@humanode-hyperlane/utils';
|
|
4
|
+
/**
|
|
5
|
+
* Cosmos transaction with optional annotation field.
|
|
6
|
+
* This type satisfies the AnnotatedTx interface required by the generic artifact API.
|
|
7
|
+
*/
|
|
8
|
+
export type AnnotatedEncodeObject = Annotated<EncodeObject>;
|
|
9
|
+
/**
|
|
10
|
+
* Base warp token configuration shared by all token types.
|
|
11
|
+
* Note: Cosmos doesn't store name/symbol/decimals on-chain, so these are provided
|
|
12
|
+
* as empty/zero values for consistency with other chains.
|
|
13
|
+
*/
|
|
14
|
+
export interface BaseCosmosWarpTokenConfig {
|
|
15
|
+
address: string;
|
|
16
|
+
owner: string;
|
|
17
|
+
mailbox: string;
|
|
18
|
+
interchainSecurityModule?: string;
|
|
19
|
+
hookAddress?: string;
|
|
20
|
+
remoteRouters: Record<number, {
|
|
21
|
+
address: string;
|
|
22
|
+
}>;
|
|
23
|
+
destinationGas: Record<number, string>;
|
|
24
|
+
name: string;
|
|
25
|
+
symbol: string;
|
|
26
|
+
decimals: number;
|
|
27
|
+
}
|
|
28
|
+
export interface CosmosCollateralWarpTokenConfig extends BaseCosmosWarpTokenConfig {
|
|
29
|
+
type: AltVM.TokenType.collateral;
|
|
30
|
+
token: string;
|
|
31
|
+
}
|
|
32
|
+
export interface CosmosSyntheticWarpTokenConfig extends BaseCosmosWarpTokenConfig {
|
|
33
|
+
type: AltVM.TokenType.synthetic;
|
|
34
|
+
}
|
|
35
|
+
export type CosmosWarpTokenConfig = CosmosCollateralWarpTokenConfig | CosmosSyntheticWarpTokenConfig;
|
|
36
|
+
export interface CosmosMailboxConfig {
|
|
37
|
+
address: string;
|
|
38
|
+
owner: string;
|
|
39
|
+
localDomain: number;
|
|
40
|
+
defaultIsm: string;
|
|
41
|
+
defaultHook: string;
|
|
42
|
+
requiredHook: string;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/utils/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAC9D,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAE3D;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC;AAE5D;;;;GAIG;AACH,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnD,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,+BAAgC,SAAQ,yBAAyB;IAChF,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,8BAA+B,SAAQ,yBAAyB;IAC/E,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC;CACjC;AAED,MAAM,MAAM,qBAAqB,GAC7B,+BAA+B,GAC/B,8BAA8B,CAAC;AAKnC,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/utils/types.ts"],"names":[],"mappings":""}
|
|
@@ -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 RawCollateralWarpArtifactConfig } 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 CosmosCollateralTokenReader implements ArtifactReader<RawCollateralWarpArtifactConfig, DeployedWarpAddress> {
|
|
8
|
+
protected readonly query: CosmosWarpQueryClient;
|
|
9
|
+
constructor(query: CosmosWarpQueryClient);
|
|
10
|
+
read(address: string): Promise<ArtifactDeployed<RawCollateralWarpArtifactConfig, DeployedWarpAddress>>;
|
|
11
|
+
}
|
|
12
|
+
export declare class CosmosCollateralTokenWriter extends CosmosCollateralTokenReader implements ArtifactWriter<RawCollateralWarpArtifactConfig, DeployedWarpAddress> {
|
|
13
|
+
private readonly signer;
|
|
14
|
+
constructor(query: CosmosWarpQueryClient, signer: CosmosNativeSigner);
|
|
15
|
+
create(artifact: ArtifactNew<RawCollateralWarpArtifactConfig>): Promise<[
|
|
16
|
+
ArtifactDeployed<RawCollateralWarpArtifactConfig, DeployedWarpAddress>,
|
|
17
|
+
DeliverTxResponse[]
|
|
18
|
+
]>;
|
|
19
|
+
update(artifact: ArtifactDeployed<RawCollateralWarpArtifactConfig, DeployedWarpAddress>): Promise<AnnotatedEncodeObject[]>;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=collateral-token.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collateral-token.d.ts","sourceRoot":"","sources":["../../src/warp/collateral-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,+BAA+B,EAErC,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;AAazB,qBAAa,2BAA4B,YAAW,cAAc,CAChE,+BAA+B,EAC/B,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,+BAA+B,EAAE,mBAAmB,CAAC,CACvE;CAuCF;AAED,qBAAa,2BACX,SAAQ,2BACR,YACE,cAAc,CAAC,+BAA+B,EAAE,mBAAmB,CAAC;IAIpE,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADvB,KAAK,EAAE,qBAAqB,EACX,MAAM,EAAE,kBAAkB;IAKvC,MAAM,CACV,QAAQ,EAAE,WAAW,CAAC,+BAA+B,CAAC,GACrD,OAAO,CACR;QACE,gBAAgB,CAAC,+BAA+B,EAAE,mBAAmB,CAAC;QACtE,iBAAiB,EAAE;KACpB,CACF;IAiFK,MAAM,CACV,QAAQ,EAAE,gBAAgB,CACxB,+BAA+B,EAC/B,mBAAmB,CACpB,GACA,OAAO,CAAC,qBAAqB,EAAE,CAAC;CAYpC"}
|
|
@@ -0,0 +1,119 @@
|
|
|
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 { getCollateralWarpTokenConfig, } from './warp-query.js';
|
|
7
|
+
import { getCreateCollateralTokenTx, getEnrollRemoteRouterTx, getSetTokenIsmTx, getWarpTokenUpdateTxs, } from './warp-tx.js';
|
|
8
|
+
function withErrorContext(context, error) {
|
|
9
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
10
|
+
return new Error(`${context}: ${message}`);
|
|
11
|
+
}
|
|
12
|
+
export class CosmosCollateralTokenReader {
|
|
13
|
+
query;
|
|
14
|
+
constructor(query) {
|
|
15
|
+
this.query = query;
|
|
16
|
+
}
|
|
17
|
+
async read(address) {
|
|
18
|
+
const tokenConfig = await getCollateralWarpTokenConfig(this.query, address).catch((error) => {
|
|
19
|
+
throw withErrorContext(`Failed to read collateral warp token config for ${address}`, error);
|
|
20
|
+
});
|
|
21
|
+
const config = {
|
|
22
|
+
type: AltVM.TokenType.collateral,
|
|
23
|
+
owner: tokenConfig.owner,
|
|
24
|
+
mailbox: tokenConfig.mailbox,
|
|
25
|
+
interchainSecurityModule: tokenConfig.interchainSecurityModule
|
|
26
|
+
? {
|
|
27
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
28
|
+
deployed: {
|
|
29
|
+
address: tokenConfig.interchainSecurityModule,
|
|
30
|
+
},
|
|
31
|
+
}
|
|
32
|
+
: undefined,
|
|
33
|
+
remoteRouters: tokenConfig.remoteRouters,
|
|
34
|
+
destinationGas: tokenConfig.destinationGas,
|
|
35
|
+
token: tokenConfig.token,
|
|
36
|
+
name: tokenConfig.name,
|
|
37
|
+
symbol: tokenConfig.symbol,
|
|
38
|
+
decimals: tokenConfig.decimals,
|
|
39
|
+
};
|
|
40
|
+
return {
|
|
41
|
+
artifactState: ArtifactState.DEPLOYED,
|
|
42
|
+
config,
|
|
43
|
+
deployed: {
|
|
44
|
+
address,
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
export class CosmosCollateralTokenWriter extends CosmosCollateralTokenReader {
|
|
50
|
+
signer;
|
|
51
|
+
constructor(query, signer) {
|
|
52
|
+
super(query);
|
|
53
|
+
this.signer = signer;
|
|
54
|
+
}
|
|
55
|
+
async create(artifact) {
|
|
56
|
+
const { config } = artifact;
|
|
57
|
+
const allReceipts = [];
|
|
58
|
+
const signerAddress = this.signer.getSignerAddress();
|
|
59
|
+
// Create collateral token
|
|
60
|
+
const createTx = getCreateCollateralTokenTx(signerAddress, {
|
|
61
|
+
mailboxAddress: config.mailbox,
|
|
62
|
+
collateralDenom: config.token,
|
|
63
|
+
});
|
|
64
|
+
const createReceipt = await this.signer
|
|
65
|
+
.sendAndConfirmTransaction(createTx)
|
|
66
|
+
.catch((error) => {
|
|
67
|
+
throw withErrorContext(`Failed to create collateral warp token (mailbox=${config.mailbox}, token=${config.token}, signer=${signerAddress})`, error);
|
|
68
|
+
});
|
|
69
|
+
allReceipts.push(createReceipt);
|
|
70
|
+
// Get the deployed token address from the receipt
|
|
71
|
+
const tokenAddress = getNewContractAddress(createReceipt);
|
|
72
|
+
// Set ISM if provided
|
|
73
|
+
if (config.interchainSecurityModule?.deployed.address) {
|
|
74
|
+
const setIsmTx = getSetTokenIsmTx(signerAddress, {
|
|
75
|
+
tokenAddress,
|
|
76
|
+
ismAddress: config.interchainSecurityModule.deployed.address,
|
|
77
|
+
});
|
|
78
|
+
const ismReceipt = await this.signer
|
|
79
|
+
.sendAndConfirmTransaction(setIsmTx)
|
|
80
|
+
.catch((error) => {
|
|
81
|
+
throw withErrorContext(`Failed to set ISM for collateral warp token ${tokenAddress} (ism=${config.interchainSecurityModule?.deployed.address}, signer=${signerAddress})`, error);
|
|
82
|
+
});
|
|
83
|
+
allReceipts.push(ismReceipt);
|
|
84
|
+
}
|
|
85
|
+
// Enroll remote routers
|
|
86
|
+
const { toEnroll } = computeRemoteRoutersUpdates({ destinationGas: {}, remoteRouters: {} }, config, eqAddressCosmos);
|
|
87
|
+
for (const { domainId, gas, routerAddress } of toEnroll) {
|
|
88
|
+
const enrollTx = getEnrollRemoteRouterTx(signerAddress, {
|
|
89
|
+
tokenAddress,
|
|
90
|
+
remoteDomainId: domainId,
|
|
91
|
+
remoteRouterAddress: routerAddress,
|
|
92
|
+
gas,
|
|
93
|
+
});
|
|
94
|
+
const enrollReceipt = await this.signer
|
|
95
|
+
.sendAndConfirmTransaction(enrollTx)
|
|
96
|
+
.catch((error) => {
|
|
97
|
+
throw withErrorContext(`Failed to enroll remote router for collateral warp token ${tokenAddress} (domain=${domainId}, router=${routerAddress}, signer=${signerAddress})`, error);
|
|
98
|
+
});
|
|
99
|
+
allReceipts.push(enrollReceipt);
|
|
100
|
+
}
|
|
101
|
+
const deployedArtifact = {
|
|
102
|
+
artifactState: ArtifactState.DEPLOYED,
|
|
103
|
+
config: artifact.config,
|
|
104
|
+
deployed: {
|
|
105
|
+
address: tokenAddress,
|
|
106
|
+
},
|
|
107
|
+
};
|
|
108
|
+
return [deployedArtifact, allReceipts];
|
|
109
|
+
}
|
|
110
|
+
async update(artifact) {
|
|
111
|
+
// Read current state from chain
|
|
112
|
+
const currentArtifact = await this.read(artifact.deployed.address);
|
|
113
|
+
// Generate update transactions
|
|
114
|
+
return getWarpTokenUpdateTxs(artifact, currentArtifact,
|
|
115
|
+
// The current owner is the only one that can execute the update transactions
|
|
116
|
+
currentArtifact.config.owner);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=collateral-token.js.map
|