@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,95 @@
|
|
|
1
|
+
import { AltVM } from '@humanode-hyperlane/provider-sdk';
|
|
2
|
+
import { assert } from '@humanode-hyperlane/utils';
|
|
3
|
+
const HOOK_READ_METHODS = [
|
|
4
|
+
'Igp',
|
|
5
|
+
'MerkleTreeHook',
|
|
6
|
+
];
|
|
7
|
+
function hookReadMethodToHookType(hook) {
|
|
8
|
+
switch (hook) {
|
|
9
|
+
case 'Igp':
|
|
10
|
+
return AltVM.HookType.INTERCHAIN_GAS_PAYMASTER;
|
|
11
|
+
case 'MerkleTreeHook':
|
|
12
|
+
return AltVM.HookType.MERKLE_TREE;
|
|
13
|
+
default: {
|
|
14
|
+
const unknownHook = hook;
|
|
15
|
+
throw new Error(`Unknown Cosmos Hook type: ${unknownHook}`);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export async function getHookType(query, hookAddress) {
|
|
20
|
+
for (const method of HOOK_READ_METHODS) {
|
|
21
|
+
try {
|
|
22
|
+
await query.postDispatch[method]({
|
|
23
|
+
id: hookAddress,
|
|
24
|
+
});
|
|
25
|
+
return hookReadMethodToHookType(method);
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
// We need to brute force the hook type detection going
|
|
29
|
+
// over all possible supported hook derivation functions
|
|
30
|
+
// so we need to ignore the errors here
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
throw new Error(`Provided address ${hookAddress} is not a Cosmos hook`);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Query IGP hook configuration from chain.
|
|
37
|
+
*
|
|
38
|
+
* @param query - Query client with PostDispatchExtension
|
|
39
|
+
* @param hookId - ID of the IGP hook to query
|
|
40
|
+
* @returns IGP hook configuration with address, owner, and destination gas configs
|
|
41
|
+
* @throws Error if IGP hook not found
|
|
42
|
+
*/
|
|
43
|
+
export async function getIgpHookConfig(query, hookId) {
|
|
44
|
+
try {
|
|
45
|
+
// Query the IGP hook itself
|
|
46
|
+
const { igp } = await query.postDispatch.Igp({ id: hookId });
|
|
47
|
+
assert(igp, `No IGP hook found at id ${hookId}`);
|
|
48
|
+
// Query the destination gas configs
|
|
49
|
+
const { destination_gas_configs } = await query.postDispatch.DestinationGasConfigs({
|
|
50
|
+
id: igp.id,
|
|
51
|
+
});
|
|
52
|
+
// Map the gas configs to the expected format
|
|
53
|
+
const configs = {};
|
|
54
|
+
for (const config of destination_gas_configs) {
|
|
55
|
+
configs[config.remote_domain] = {
|
|
56
|
+
gasOracle: {
|
|
57
|
+
tokenExchangeRate: config.gas_oracle?.token_exchange_rate ?? '0',
|
|
58
|
+
gasPrice: config.gas_oracle?.gas_price ?? '0',
|
|
59
|
+
},
|
|
60
|
+
gasOverhead: config.gas_overhead,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
return {
|
|
64
|
+
address: igp.id,
|
|
65
|
+
owner: igp.owner,
|
|
66
|
+
destinationGasConfigs: configs,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
throw new Error(`Failed to query IGP hook config at ${hookId}: ${error.message}`);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Query MerkleTree hook configuration from chain.
|
|
75
|
+
*
|
|
76
|
+
* @param query - Query client with PostDispatchExtension
|
|
77
|
+
* @param hookId - ID of the MerkleTree hook to query
|
|
78
|
+
* @returns MerkleTree hook configuration with address
|
|
79
|
+
* @throws Error if MerkleTree hook not found
|
|
80
|
+
*/
|
|
81
|
+
export async function getMerkleTreeHookConfig(query, hookId) {
|
|
82
|
+
try {
|
|
83
|
+
const { merkle_tree_hook } = await query.postDispatch.MerkleTreeHook({
|
|
84
|
+
id: hookId,
|
|
85
|
+
});
|
|
86
|
+
assert(merkle_tree_hook, `No MerkleTree hook found at id ${hookId}`);
|
|
87
|
+
return {
|
|
88
|
+
address: merkle_tree_hook.id,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
throw new Error(`Failed to query MerkleTree hook config at ${hookId}: ${error.message}`);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=hook-query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hook-query.js","sourceRoot":"","sources":["../../src/hook/hook-query.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { type MsgCreateIgpEncodeObject, type MsgCreateMerkleTreeHookEncodeObject, type MsgSetDestinationGasConfigEncodeObject, type MsgSetIgpOwnerEncodeObject } from '../hyperlane/post_dispatch/messages.js';
|
|
2
|
+
/**
|
|
3
|
+
* Build transaction to create a MerkleTree hook.
|
|
4
|
+
*
|
|
5
|
+
* @param fromAddress - Address of the transaction sender
|
|
6
|
+
* @param mailboxAddress - Address of the mailbox this hook will be attached to
|
|
7
|
+
* @returns EncodeObject for MsgCreateMerkleTreeHook transaction
|
|
8
|
+
*/
|
|
9
|
+
export declare function getCreateMerkleTreeHookTx(fromAddress: string, mailboxAddress: string): MsgCreateMerkleTreeHookEncodeObject;
|
|
10
|
+
/**
|
|
11
|
+
* Build transaction to create an IGP (Interchain Gas Paymaster) hook.
|
|
12
|
+
*
|
|
13
|
+
* @param fromAddress - Address of the transaction sender
|
|
14
|
+
* @param denom - Native token denomination for gas payments
|
|
15
|
+
* @returns EncodeObject for MsgCreateIgp transaction
|
|
16
|
+
*/
|
|
17
|
+
export declare function getCreateIgpTx(fromAddress: string, denom: string): MsgCreateIgpEncodeObject;
|
|
18
|
+
/**
|
|
19
|
+
* Build transaction to set the owner of an IGP hook.
|
|
20
|
+
*
|
|
21
|
+
* @param fromAddress - Address of the transaction sender (must be current owner)
|
|
22
|
+
* @param config - Configuration with IGP address and new owner
|
|
23
|
+
* @returns EncodeObject for MsgSetIgpOwner transaction
|
|
24
|
+
*/
|
|
25
|
+
export declare function getSetIgpOwnerTx(fromAddress: string, config: {
|
|
26
|
+
igpAddress: string;
|
|
27
|
+
newOwner: string;
|
|
28
|
+
}): MsgSetIgpOwnerEncodeObject;
|
|
29
|
+
/**
|
|
30
|
+
* Build transaction to set destination gas configuration for an IGP hook.
|
|
31
|
+
*
|
|
32
|
+
* @param fromAddress - Address of the transaction sender (must be owner)
|
|
33
|
+
* @param config - Configuration with IGP address and destination gas config
|
|
34
|
+
* @returns EncodeObject for MsgSetDestinationGasConfig transaction
|
|
35
|
+
*/
|
|
36
|
+
export declare function getSetIgpDestinationGasConfigTx(fromAddress: string, config: {
|
|
37
|
+
igpAddress: string;
|
|
38
|
+
destinationGasConfig: {
|
|
39
|
+
remoteDomainId: number;
|
|
40
|
+
gasOracle: {
|
|
41
|
+
tokenExchangeRate: string;
|
|
42
|
+
gasPrice: string;
|
|
43
|
+
};
|
|
44
|
+
gasOverhead: string;
|
|
45
|
+
};
|
|
46
|
+
}): MsgSetDestinationGasConfigEncodeObject;
|
|
47
|
+
//# sourceMappingURL=hook-tx.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hook-tx.d.ts","sourceRoot":"","sources":["../../src/hook/hook-tx.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,wBAAwB,EAC7B,KAAK,mCAAmC,EACxC,KAAK,sCAAsC,EAC3C,KAAK,0BAA0B,EAChC,MAAM,wCAAwC,CAAC;AAGhD;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,GACrB,mCAAmC,CAQrC;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,GACZ,wBAAwB,CAQ1B;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE;IACN,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB,GACA,0BAA0B,CAU5B;AAED;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAC7C,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE;IACN,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB,EAAE;QACpB,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,EAAE;YACT,iBAAiB,EAAE,MAAM,CAAC;YAC1B,QAAQ,EAAE,MAAM,CAAC;SAClB,CAAC;QACF,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH,GACA,sCAAsC,CAiBxC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { COSMOS_MODULE_MESSAGE_REGISTRY as MessageRegistry } from '../registry.js';
|
|
2
|
+
/**
|
|
3
|
+
* Build transaction to create a MerkleTree hook.
|
|
4
|
+
*
|
|
5
|
+
* @param fromAddress - Address of the transaction sender
|
|
6
|
+
* @param mailboxAddress - Address of the mailbox this hook will be attached to
|
|
7
|
+
* @returns EncodeObject for MsgCreateMerkleTreeHook transaction
|
|
8
|
+
*/
|
|
9
|
+
export function getCreateMerkleTreeHookTx(fromAddress, mailboxAddress) {
|
|
10
|
+
return {
|
|
11
|
+
typeUrl: MessageRegistry.MsgCreateMerkleTreeHook.proto.type,
|
|
12
|
+
value: MessageRegistry.MsgCreateMerkleTreeHook.proto.converter.create({
|
|
13
|
+
owner: fromAddress,
|
|
14
|
+
mailbox_id: mailboxAddress,
|
|
15
|
+
}),
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Build transaction to create an IGP (Interchain Gas Paymaster) hook.
|
|
20
|
+
*
|
|
21
|
+
* @param fromAddress - Address of the transaction sender
|
|
22
|
+
* @param denom - Native token denomination for gas payments
|
|
23
|
+
* @returns EncodeObject for MsgCreateIgp transaction
|
|
24
|
+
*/
|
|
25
|
+
export function getCreateIgpTx(fromAddress, denom) {
|
|
26
|
+
return {
|
|
27
|
+
typeUrl: MessageRegistry.MsgCreateIgp.proto.type,
|
|
28
|
+
value: MessageRegistry.MsgCreateIgp.proto.converter.create({
|
|
29
|
+
owner: fromAddress,
|
|
30
|
+
denom,
|
|
31
|
+
}),
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Build transaction to set the owner of an IGP hook.
|
|
36
|
+
*
|
|
37
|
+
* @param fromAddress - Address of the transaction sender (must be current owner)
|
|
38
|
+
* @param config - Configuration with IGP address and new owner
|
|
39
|
+
* @returns EncodeObject for MsgSetIgpOwner transaction
|
|
40
|
+
*/
|
|
41
|
+
export function getSetIgpOwnerTx(fromAddress, config) {
|
|
42
|
+
return {
|
|
43
|
+
typeUrl: MessageRegistry.MsgSetIgpOwner.proto.type,
|
|
44
|
+
value: MessageRegistry.MsgSetIgpOwner.proto.converter.create({
|
|
45
|
+
owner: fromAddress,
|
|
46
|
+
igp_id: config.igpAddress,
|
|
47
|
+
new_owner: config.newOwner,
|
|
48
|
+
renounce_ownership: !config.newOwner,
|
|
49
|
+
}),
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Build transaction to set destination gas configuration for an IGP hook.
|
|
54
|
+
*
|
|
55
|
+
* @param fromAddress - Address of the transaction sender (must be owner)
|
|
56
|
+
* @param config - Configuration with IGP address and destination gas config
|
|
57
|
+
* @returns EncodeObject for MsgSetDestinationGasConfig transaction
|
|
58
|
+
*/
|
|
59
|
+
export function getSetIgpDestinationGasConfigTx(fromAddress, config) {
|
|
60
|
+
return {
|
|
61
|
+
typeUrl: MessageRegistry.MsgSetDestinationGasConfig.proto.type,
|
|
62
|
+
value: MessageRegistry.MsgSetDestinationGasConfig.proto.converter.create({
|
|
63
|
+
owner: fromAddress,
|
|
64
|
+
igp_id: config.igpAddress,
|
|
65
|
+
destination_gas_config: {
|
|
66
|
+
remote_domain: config.destinationGasConfig.remoteDomainId,
|
|
67
|
+
gas_overhead: config.destinationGasConfig.gasOverhead,
|
|
68
|
+
gas_oracle: {
|
|
69
|
+
token_exchange_rate: config.destinationGasConfig.gasOracle.tokenExchangeRate,
|
|
70
|
+
gas_price: config.destinationGasConfig.gasOracle.gasPrice,
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
}),
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=hook-tx.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hook-tx.js","sourceRoot":"","sources":["../../src/hook/hook-tx.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,8BAA8B,IAAI,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEnF;;;;;;GAMG;AACH,MAAM,UAAU,yBAAyB,CACvC,WAAmB,EACnB,cAAsB;IAEtB,OAAO;QACL,OAAO,EAAE,eAAe,CAAC,uBAAuB,CAAC,KAAK,CAAC,IAAI;QAC3D,KAAK,EAAE,eAAe,CAAC,uBAAuB,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;YACpE,KAAK,EAAE,WAAW;YAClB,UAAU,EAAE,cAAc;SAC3B,CAAC;KACH,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAC5B,WAAmB,EACnB,KAAa;IAEb,OAAO;QACL,OAAO,EAAE,eAAe,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI;QAChD,KAAK,EAAE,eAAe,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;YACzD,KAAK,EAAE,WAAW;YAClB,KAAK;SACN,CAAC;KACH,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAC9B,WAAmB,EACnB,MAGC;IAED,OAAO;QACL,OAAO,EAAE,eAAe,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI;QAClD,KAAK,EAAE,eAAe,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;YAC3D,KAAK,EAAE,WAAW;YAClB,MAAM,EAAE,MAAM,CAAC,UAAU;YACzB,SAAS,EAAE,MAAM,CAAC,QAAQ;YAC1B,kBAAkB,EAAE,CAAC,MAAM,CAAC,QAAQ;SACrC,CAAC;KACH,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,+BAA+B,CAC7C,WAAmB,EACnB,MAUC;IAED,OAAO;QACL,OAAO,EAAE,eAAe,CAAC,0BAA0B,CAAC,KAAK,CAAC,IAAI;QAC9D,KAAK,EAAE,eAAe,CAAC,0BAA0B,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;YACvE,KAAK,EAAE,WAAW;YAClB,MAAM,EAAE,MAAM,CAAC,UAAU;YACzB,sBAAsB,EAAE;gBACtB,aAAa,EAAE,MAAM,CAAC,oBAAoB,CAAC,cAAc;gBACzD,YAAY,EAAE,MAAM,CAAC,oBAAoB,CAAC,WAAW;gBACrD,UAAU,EAAE;oBACV,mBAAmB,EACjB,MAAM,CAAC,oBAAoB,CAAC,SAAS,CAAC,iBAAiB;oBACzD,SAAS,EAAE,MAAM,CAAC,oBAAoB,CAAC,SAAS,CAAC,QAAQ;iBAC1D;aACF;SACF,CAAC;KACH,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
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 DeployedHookAddress, type IgpHookConfig } from '@humanode-hyperlane/provider-sdk/hook';
|
|
4
|
+
import { type CosmosNativeSigner } from '../clients/signer.js';
|
|
5
|
+
import { type AnnotatedEncodeObject } from '../utils/types.js';
|
|
6
|
+
import { type CosmosHookQueryClient } from './hook-query.js';
|
|
7
|
+
/**
|
|
8
|
+
* Reader for Cosmos IGP (Interchain Gas Paymaster) Hook.
|
|
9
|
+
* Reads deployed IGP hook configuration from the chain.
|
|
10
|
+
*/
|
|
11
|
+
export declare class CosmosIgpHookReader implements ArtifactReader<IgpHookConfig, DeployedHookAddress> {
|
|
12
|
+
protected readonly query: CosmosHookQueryClient;
|
|
13
|
+
constructor(query: CosmosHookQueryClient);
|
|
14
|
+
read(address: string): Promise<ArtifactDeployed<IgpHookConfig, DeployedHookAddress>>;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Writer for Cosmos IGP (Interchain Gas Paymaster) Hook.
|
|
18
|
+
* Handles deployment and updates of IGP hooks.
|
|
19
|
+
*/
|
|
20
|
+
export declare class CosmosIgpHookWriter extends CosmosIgpHookReader implements ArtifactWriter<IgpHookConfig, DeployedHookAddress> {
|
|
21
|
+
private readonly signer;
|
|
22
|
+
private readonly denom;
|
|
23
|
+
constructor(query: CosmosHookQueryClient, signer: CosmosNativeSigner, denom: string);
|
|
24
|
+
create(artifact: ArtifactNew<IgpHookConfig>): Promise<[
|
|
25
|
+
ArtifactDeployed<IgpHookConfig, DeployedHookAddress>,
|
|
26
|
+
DeliverTxResponse[]
|
|
27
|
+
]>;
|
|
28
|
+
update(artifact: ArtifactDeployed<IgpHookConfig, DeployedHookAddress>): Promise<AnnotatedEncodeObject[]>;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=igp-hook.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"igp-hook.d.ts","sourceRoot":"","sources":["../../src/hook/igp-hook.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,aAAa,EACnB,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,EAAE,KAAK,qBAAqB,EAAoB,MAAM,iBAAiB,CAAC;AAO/E;;;GAGG;AACH,qBAAa,mBAAoB,YAAW,cAAc,CACxD,aAAa,EACb,mBAAmB,CACpB;IACa,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,qBAAqB;gBAA5B,KAAK,EAAE,qBAAqB;IAErD,IAAI,CACR,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC;CAwCjE;AAED;;;GAGG;AACH,qBAAa,mBACX,SAAQ,mBACR,YAAW,cAAc,CAAC,aAAa,EAAE,mBAAmB,CAAC;IAI3D,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAFtB,KAAK,EAAE,qBAAqB,EACX,MAAM,EAAE,kBAAkB,EAC1B,KAAK,EAAE,MAAM;IAK1B,MAAM,CACV,QAAQ,EAAE,WAAW,CAAC,aAAa,CAAC,GACnC,OAAO,CACR;QAAC,gBAAgB,CAAC,aAAa,EAAE,mBAAmB,CAAC;QAAE,iBAAiB,EAAE;KAAC,CAC5E;IA6DK,MAAM,CACV,QAAQ,EAAE,gBAAgB,CAAC,aAAa,EAAE,mBAAmB,CAAC,GAC7D,OAAO,CAAC,qBAAqB,EAAE,CAAC;CA4DpC"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import { AltVM } from '@humanode-hyperlane/provider-sdk';
|
|
2
|
+
import { ArtifactState, } from '@humanode-hyperlane/provider-sdk/artifact';
|
|
3
|
+
import { eqAddressCosmos } from '@humanode-hyperlane/utils';
|
|
4
|
+
import { getNewContractAddress } from '../utils/base.js';
|
|
5
|
+
import { getIgpHookConfig } from './hook-query.js';
|
|
6
|
+
import { getCreateIgpTx, getSetIgpDestinationGasConfigTx, getSetIgpOwnerTx, } from './hook-tx.js';
|
|
7
|
+
/**
|
|
8
|
+
* Reader for Cosmos IGP (Interchain Gas Paymaster) Hook.
|
|
9
|
+
* Reads deployed IGP hook configuration from the chain.
|
|
10
|
+
*/
|
|
11
|
+
export class CosmosIgpHookReader {
|
|
12
|
+
query;
|
|
13
|
+
constructor(query) {
|
|
14
|
+
this.query = query;
|
|
15
|
+
}
|
|
16
|
+
async read(address) {
|
|
17
|
+
const hookConfig = await getIgpHookConfig(this.query, address);
|
|
18
|
+
// Map Cosmos IGP config to provider-sdk IgpHookConfig format
|
|
19
|
+
const overhead = {};
|
|
20
|
+
const oracleConfig = {};
|
|
21
|
+
for (const [domainId, gasConfig] of Object.entries(hookConfig.destinationGasConfigs)) {
|
|
22
|
+
overhead[domainId] = parseInt(gasConfig.gasOverhead);
|
|
23
|
+
oracleConfig[domainId] = {
|
|
24
|
+
gasPrice: gasConfig.gasOracle.gasPrice,
|
|
25
|
+
tokenExchangeRate: gasConfig.gasOracle.tokenExchangeRate,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
return {
|
|
29
|
+
artifactState: ArtifactState.DEPLOYED,
|
|
30
|
+
config: {
|
|
31
|
+
type: AltVM.HookType.INTERCHAIN_GAS_PAYMASTER,
|
|
32
|
+
owner: hookConfig.owner,
|
|
33
|
+
// Cosmos IGP doesn't have beneficiary and oracleKey in the same way as EVM
|
|
34
|
+
// Setting them to owner as a placeholder
|
|
35
|
+
beneficiary: hookConfig.owner,
|
|
36
|
+
oracleKey: hookConfig.owner,
|
|
37
|
+
overhead,
|
|
38
|
+
oracleConfig,
|
|
39
|
+
},
|
|
40
|
+
deployed: {
|
|
41
|
+
address: hookConfig.address,
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Writer for Cosmos IGP (Interchain Gas Paymaster) Hook.
|
|
48
|
+
* Handles deployment and updates of IGP hooks.
|
|
49
|
+
*/
|
|
50
|
+
export class CosmosIgpHookWriter extends CosmosIgpHookReader {
|
|
51
|
+
signer;
|
|
52
|
+
denom;
|
|
53
|
+
constructor(query, signer, denom) {
|
|
54
|
+
super(query);
|
|
55
|
+
this.signer = signer;
|
|
56
|
+
this.denom = denom;
|
|
57
|
+
}
|
|
58
|
+
async create(artifact) {
|
|
59
|
+
const { config } = artifact;
|
|
60
|
+
const receipts = [];
|
|
61
|
+
// Create the IGP hook
|
|
62
|
+
const createTx = getCreateIgpTx(this.signer.getSignerAddress(), this.denom);
|
|
63
|
+
const createReceipt = await this.signer.sendAndConfirmTransaction(createTx);
|
|
64
|
+
const address = getNewContractAddress(createReceipt);
|
|
65
|
+
receipts.push(createReceipt);
|
|
66
|
+
// Set destination gas configs for each domain
|
|
67
|
+
for (const [domainId, gasConfig] of Object.entries(config.oracleConfig)) {
|
|
68
|
+
const parsedDomainId = parseInt(domainId);
|
|
69
|
+
const setConfigTx = getSetIgpDestinationGasConfigTx(this.signer.getSignerAddress(), {
|
|
70
|
+
igpAddress: address,
|
|
71
|
+
destinationGasConfig: {
|
|
72
|
+
remoteDomainId: parsedDomainId,
|
|
73
|
+
gasOracle: {
|
|
74
|
+
tokenExchangeRate: gasConfig.tokenExchangeRate,
|
|
75
|
+
gasPrice: gasConfig.gasPrice,
|
|
76
|
+
},
|
|
77
|
+
gasOverhead: config.overhead[parsedDomainId]?.toString() || '0',
|
|
78
|
+
},
|
|
79
|
+
});
|
|
80
|
+
const configReceipt = await this.signer.sendAndConfirmTransaction(setConfigTx);
|
|
81
|
+
receipts.push(configReceipt);
|
|
82
|
+
}
|
|
83
|
+
// Transfer ownership if needed (deployer is initial owner)
|
|
84
|
+
const deployerAddress = this.signer.getSignerAddress();
|
|
85
|
+
if (!eqAddressCosmos(artifact.config.owner, deployerAddress)) {
|
|
86
|
+
const ownerTx = getSetIgpOwnerTx(deployerAddress, {
|
|
87
|
+
igpAddress: address,
|
|
88
|
+
newOwner: artifact.config.owner,
|
|
89
|
+
});
|
|
90
|
+
const ownerReceipt = await this.signer.sendAndConfirmTransaction(ownerTx);
|
|
91
|
+
receipts.push(ownerReceipt);
|
|
92
|
+
}
|
|
93
|
+
const deployedArtifact = {
|
|
94
|
+
artifactState: ArtifactState.DEPLOYED,
|
|
95
|
+
config: artifact.config,
|
|
96
|
+
deployed: {
|
|
97
|
+
address,
|
|
98
|
+
},
|
|
99
|
+
};
|
|
100
|
+
return [deployedArtifact, receipts];
|
|
101
|
+
}
|
|
102
|
+
async update(artifact) {
|
|
103
|
+
const { config, deployed } = artifact;
|
|
104
|
+
const updateTxs = [];
|
|
105
|
+
// Read current state
|
|
106
|
+
const currentState = await this.read(deployed.address);
|
|
107
|
+
// This is the address that has to execute the update transactions
|
|
108
|
+
const currentOwnerAddress = currentState.config.owner;
|
|
109
|
+
// Update destination gas configs
|
|
110
|
+
for (const [domainId, gasConfig] of Object.entries(config.oracleConfig)) {
|
|
111
|
+
const parsedDomainId = parseInt(domainId);
|
|
112
|
+
const currentGasConfig = currentState.config.oracleConfig[parsedDomainId];
|
|
113
|
+
const needsUpdate = !currentGasConfig ||
|
|
114
|
+
currentGasConfig.tokenExchangeRate !== gasConfig.tokenExchangeRate ||
|
|
115
|
+
currentGasConfig.gasPrice !== gasConfig.gasPrice ||
|
|
116
|
+
currentState.config.overhead[parsedDomainId] !==
|
|
117
|
+
config.overhead[parsedDomainId];
|
|
118
|
+
if (needsUpdate) {
|
|
119
|
+
const setConfigTx = getSetIgpDestinationGasConfigTx(currentOwnerAddress, {
|
|
120
|
+
igpAddress: deployed.address,
|
|
121
|
+
destinationGasConfig: {
|
|
122
|
+
remoteDomainId: parsedDomainId,
|
|
123
|
+
gasOracle: {
|
|
124
|
+
tokenExchangeRate: gasConfig.tokenExchangeRate,
|
|
125
|
+
gasPrice: gasConfig.gasPrice,
|
|
126
|
+
},
|
|
127
|
+
gasOverhead: config.overhead[parsedDomainId]?.toString() || '0',
|
|
128
|
+
},
|
|
129
|
+
});
|
|
130
|
+
updateTxs.push({
|
|
131
|
+
annotation: `Setting destination gas config for domain ${domainId}`,
|
|
132
|
+
...setConfigTx,
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
// Check if owner needs to be updated
|
|
137
|
+
if (!eqAddressCosmos(currentState.config.owner, config.owner)) {
|
|
138
|
+
const setOwnerTx = getSetIgpOwnerTx(currentOwnerAddress, {
|
|
139
|
+
igpAddress: deployed.address,
|
|
140
|
+
newOwner: config.owner,
|
|
141
|
+
});
|
|
142
|
+
updateTxs.push({
|
|
143
|
+
annotation: `Setting IGP hook owner to ${artifact.config.owner}`,
|
|
144
|
+
...setOwnerTx,
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
return updateTxs;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=igp-hook.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"igp-hook.js","sourceRoot":"","sources":["../../src/hook/igp-hook.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
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 DeployedHookAddress, type MerkleTreeHookConfig } from '@humanode-hyperlane/provider-sdk/hook';
|
|
4
|
+
import { type CosmosNativeSigner } from '../clients/signer.js';
|
|
5
|
+
import { type AnnotatedEncodeObject } from '../utils/types.js';
|
|
6
|
+
import { type CosmosHookQueryClient } from './hook-query.js';
|
|
7
|
+
/**
|
|
8
|
+
* Reader for Cosmos MerkleTree Hook.
|
|
9
|
+
* Reads deployed MerkleTree hook configuration from the chain.
|
|
10
|
+
* MerkleTree hooks are immutable once deployed.
|
|
11
|
+
*/
|
|
12
|
+
export declare class CosmosMerkleTreeHookReader implements ArtifactReader<MerkleTreeHookConfig, DeployedHookAddress> {
|
|
13
|
+
private readonly query;
|
|
14
|
+
constructor(query: CosmosHookQueryClient);
|
|
15
|
+
read(address: string): Promise<ArtifactDeployed<MerkleTreeHookConfig, DeployedHookAddress>>;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Writer for Cosmos MerkleTree Hook.
|
|
19
|
+
* Handles deployment of MerkleTree hooks.
|
|
20
|
+
* MerkleTree hooks are immutable, so no update operations are needed.
|
|
21
|
+
*/
|
|
22
|
+
export declare class CosmosMerkleTreeHookWriter extends CosmosMerkleTreeHookReader implements ArtifactWriter<MerkleTreeHookConfig, DeployedHookAddress> {
|
|
23
|
+
private readonly signer;
|
|
24
|
+
private readonly mailboxAddress;
|
|
25
|
+
constructor(query: CosmosHookQueryClient, signer: CosmosNativeSigner, mailboxAddress: string);
|
|
26
|
+
create(artifact: ArtifactNew<MerkleTreeHookConfig>): Promise<[
|
|
27
|
+
ArtifactDeployed<MerkleTreeHookConfig, DeployedHookAddress>,
|
|
28
|
+
DeliverTxResponse[]
|
|
29
|
+
]>;
|
|
30
|
+
update(_artifact: ArtifactDeployed<MerkleTreeHookConfig, DeployedHookAddress>): Promise<AnnotatedEncodeObject[]>;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=merkle-tree-hook.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merkle-tree-hook.d.ts","sourceRoot":"","sources":["../../src/hook/merkle-tree-hook.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,oBAAoB,EAC1B,MAAM,uCAAuC,CAAC;AAE/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;AAGzB;;;;GAIG;AACH,qBAAa,0BAA2B,YAAW,cAAc,CAC/D,oBAAoB,EACpB,mBAAmB,CACpB;IACa,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,qBAAqB;IAEnD,IAAI,CACR,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,mBAAmB,CAAC,CAAC;CAaxE;AAED;;;;GAIG;AACH,qBAAa,0BACX,SAAQ,0BACR,YAAW,cAAc,CAAC,oBAAoB,EAAE,mBAAmB,CAAC;IAIlE,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,cAAc;gBAF/B,KAAK,EAAE,qBAAqB,EACX,MAAM,EAAE,kBAAkB,EAC1B,cAAc,EAAE,MAAM;IAKnC,MAAM,CACV,QAAQ,EAAE,WAAW,CAAC,oBAAoB,CAAC,GAC1C,OAAO,CACR;QACE,gBAAgB,CAAC,oBAAoB,EAAE,mBAAmB,CAAC;QAC3D,iBAAiB,EAAE;KACpB,CACF;IAuBK,MAAM,CACV,SAAS,EAAE,gBAAgB,CAAC,oBAAoB,EAAE,mBAAmB,CAAC,GACrE,OAAO,CAAC,qBAAqB,EAAE,CAAC;CAIpC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { AltVM } from '@humanode-hyperlane/provider-sdk';
|
|
2
|
+
import { ArtifactState, } from '@humanode-hyperlane/provider-sdk/artifact';
|
|
3
|
+
import { getNewContractAddress } from '../utils/base.js';
|
|
4
|
+
import { getMerkleTreeHookConfig, } from './hook-query.js';
|
|
5
|
+
import { getCreateMerkleTreeHookTx } from './hook-tx.js';
|
|
6
|
+
/**
|
|
7
|
+
* Reader for Cosmos MerkleTree Hook.
|
|
8
|
+
* Reads deployed MerkleTree hook configuration from the chain.
|
|
9
|
+
* MerkleTree hooks are immutable once deployed.
|
|
10
|
+
*/
|
|
11
|
+
export class CosmosMerkleTreeHookReader {
|
|
12
|
+
query;
|
|
13
|
+
constructor(query) {
|
|
14
|
+
this.query = query;
|
|
15
|
+
}
|
|
16
|
+
async read(address) {
|
|
17
|
+
const hookConfig = await getMerkleTreeHookConfig(this.query, address);
|
|
18
|
+
return {
|
|
19
|
+
artifactState: ArtifactState.DEPLOYED,
|
|
20
|
+
config: {
|
|
21
|
+
type: AltVM.HookType.MERKLE_TREE,
|
|
22
|
+
},
|
|
23
|
+
deployed: {
|
|
24
|
+
address: hookConfig.address,
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Writer for Cosmos MerkleTree Hook.
|
|
31
|
+
* Handles deployment of MerkleTree hooks.
|
|
32
|
+
* MerkleTree hooks are immutable, so no update operations are needed.
|
|
33
|
+
*/
|
|
34
|
+
export class CosmosMerkleTreeHookWriter extends CosmosMerkleTreeHookReader {
|
|
35
|
+
signer;
|
|
36
|
+
mailboxAddress;
|
|
37
|
+
constructor(query, signer, mailboxAddress) {
|
|
38
|
+
super(query);
|
|
39
|
+
this.signer = signer;
|
|
40
|
+
this.mailboxAddress = mailboxAddress;
|
|
41
|
+
}
|
|
42
|
+
async create(artifact) {
|
|
43
|
+
const createTx = getCreateMerkleTreeHookTx(this.signer.getSignerAddress(), this.mailboxAddress);
|
|
44
|
+
const receipt = await this.signer.sendAndConfirmTransaction(createTx);
|
|
45
|
+
const address = getNewContractAddress(receipt);
|
|
46
|
+
const deployedArtifact = {
|
|
47
|
+
artifactState: ArtifactState.DEPLOYED,
|
|
48
|
+
config: artifact.config,
|
|
49
|
+
deployed: {
|
|
50
|
+
address,
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
return [deployedArtifact, [receipt]];
|
|
54
|
+
}
|
|
55
|
+
async update(_artifact) {
|
|
56
|
+
// MerkleTreeHook has no mutable state
|
|
57
|
+
return [];
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=merkle-tree-hook.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merkle-tree-hook.js","sourceRoot":"","sources":["../../src/hook/merkle-tree-hook.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AACzD,OAAO,EAIL,aAAa,GAEd,MAAM,2CAA2C,CAAC;AAOnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAGzD,OAAO,EAEL,uBAAuB,GACxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAEzD;;;;GAIG;AACH,MAAM,OAAO,0BAA0B;IAIR;IAA7B,YAA6B,KAA4B;QAA5B,UAAK,GAAL,KAAK,CAAuB;IAAG,CAAC;IAE7D,KAAK,CAAC,IAAI,CACR,OAAe;QAEf,MAAM,UAAU,GAAG,MAAM,uBAAuB,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAEtE,OAAO;YACL,aAAa,EAAE,aAAa,CAAC,QAAQ;YACrC,MAAM,EAAE;gBACN,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,WAAW;aACjC;YACD,QAAQ,EAAE;gBACR,OAAO,EAAE,UAAU,CAAC,OAAO;aAC5B;SACF,CAAC;IACJ,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,0BACX,SAAQ,0BAA0B;IAKf;IACA;IAHnB,YACE,KAA4B,EACX,MAA0B,EAC1B,cAAsB;QAEvC,KAAK,CAAC,KAAK,CAAC,CAAC;QAHI,WAAM,GAAN,MAAM,CAAoB;QAC1B,mBAAc,GAAd,cAAc,CAAQ;IAGzC,CAAC;IAED,KAAK,CAAC,MAAM,CACV,QAA2C;QAO3C,MAAM,QAAQ,GAAG,yBAAyB,CACxC,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,EAC9B,IAAI,CAAC,cAAc,CACpB,CAAC;QAEF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;QACtE,MAAM,OAAO,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAE/C,MAAM,gBAAgB,GAGlB;YACF,aAAa,EAAE,aAAa,CAAC,QAAQ;YACrC,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,QAAQ,EAAE;gBACR,OAAO;aACR;SACF,CAAC;QAEF,OAAO,CAAC,gBAAgB,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,MAAM,CACV,SAAsE;QAEtE,sCAAsC;QACtC,OAAO,EAAE,CAAC;IACZ,CAAC;CACF"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type EncodeObject } from '@cosmjs/proto-signing';
|
|
2
|
+
import { type coreTx } from '@humanode-hyperlane/cosmos-types';
|
|
3
|
+
import { type COSMOS_MODULE_MESSAGE_REGISTRY as R } from '../../registry.js';
|
|
4
|
+
export interface MsgCreateMailboxEncodeObject extends EncodeObject {
|
|
5
|
+
readonly typeUrl: typeof R.MsgCreateMailbox.proto.type;
|
|
6
|
+
readonly value: Partial<coreTx.MsgCreateMailbox>;
|
|
7
|
+
}
|
|
8
|
+
export interface MsgSetMailboxEncodeObject extends EncodeObject {
|
|
9
|
+
readonly typeUrl: typeof R.MsgSetMailbox.proto.type;
|
|
10
|
+
readonly value: Partial<coreTx.MsgSetMailbox>;
|
|
11
|
+
}
|
|
12
|
+
export interface MsgProcessMessageEncodeObject extends EncodeObject {
|
|
13
|
+
readonly typeUrl: typeof R.MsgProcessMessage.proto.type;
|
|
14
|
+
readonly value: Partial<coreTx.MsgProcessMessage>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=messages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../src/hyperlane/core/messages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAE/D,OAAO,EAAE,KAAK,8BAA8B,IAAI,CAAC,EAAE,MAAM,mBAAmB,CAAC;AAE7E,MAAM,WAAW,4BAA6B,SAAQ,YAAY;IAChE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC;IACvD,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;CAClD;AAED,MAAM,WAAW,yBAA0B,SAAQ,YAAY;IAC7D,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC;IACpD,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;CAC/C;AAED,MAAM,WAAW,6BAA8B,SAAQ,YAAY;IACjE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC;IACxD,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;CACnD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../src/hyperlane/core/messages.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type QueryClient } from '@cosmjs/stargate';
|
|
2
|
+
import { coreQuery } from '@humanode-hyperlane/cosmos-types';
|
|
3
|
+
export interface CoreExtension {
|
|
4
|
+
readonly core: {
|
|
5
|
+
/** Mailboxes ... */
|
|
6
|
+
readonly Mailboxes: (req: coreQuery.QueryMailboxesRequest) => Promise<coreQuery.QueryMailboxesResponse>;
|
|
7
|
+
/** Mailbox ... */
|
|
8
|
+
readonly Mailbox: (req: coreQuery.QueryMailboxRequest) => Promise<coreQuery.QueryMailboxResponse>;
|
|
9
|
+
/** Delivered ... */
|
|
10
|
+
readonly Delivered: (req: coreQuery.QueryDeliveredRequest) => Promise<coreQuery.QueryDeliveredResponse>;
|
|
11
|
+
/** RecipientIsm ... */
|
|
12
|
+
readonly RecipientIsm: (req: coreQuery.QueryRecipientIsmRequest) => Promise<coreQuery.QueryRecipientIsmResponse>;
|
|
13
|
+
/** VerifyDryRun ... */
|
|
14
|
+
readonly VerifyDryRun: (req: coreQuery.QueryVerifyDryRunRequest) => Promise<coreQuery.QueryVerifyDryRunResponse>;
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
export declare function setupCoreExtension(base: QueryClient): CoreExtension;
|
|
18
|
+
//# sourceMappingURL=query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../src/hyperlane/core/query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAA2B,MAAM,kBAAkB,CAAC;AAE7E,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAE7D,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE;QACb,oBAAoB;QACpB,QAAQ,CAAC,SAAS,EAAE,CAClB,GAAG,EAAE,SAAS,CAAC,qBAAqB,KACjC,OAAO,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;QAC/C,kBAAkB;QAClB,QAAQ,CAAC,OAAO,EAAE,CAChB,GAAG,EAAE,SAAS,CAAC,mBAAmB,KAC/B,OAAO,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;QAC7C,oBAAoB;QACpB,QAAQ,CAAC,SAAS,EAAE,CAClB,GAAG,EAAE,SAAS,CAAC,qBAAqB,KACjC,OAAO,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;QAC/C,uBAAuB;QACvB,QAAQ,CAAC,YAAY,EAAE,CACrB,GAAG,EAAE,SAAS,CAAC,wBAAwB,KACpC,OAAO,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;QAClD,uBAAuB;QACvB,QAAQ,CAAC,YAAY,EAAE,CACrB,GAAG,EAAE,SAAS,CAAC,wBAAwB,KACpC,OAAO,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;KACnD,CAAC;CACH;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,WAAW,GAAG,aAAa,CAoBnE"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { createProtobufRpcClient } from '@cosmjs/stargate';
|
|
2
|
+
import { coreQuery } from '@humanode-hyperlane/cosmos-types';
|
|
3
|
+
export function setupCoreExtension(base) {
|
|
4
|
+
const rpc = createProtobufRpcClient(base);
|
|
5
|
+
// Use this service to get easy typed access to query methods
|
|
6
|
+
// This cannot be used for proof verification
|
|
7
|
+
const queryService = new coreQuery.QueryClientImpl(rpc);
|
|
8
|
+
return {
|
|
9
|
+
core: {
|
|
10
|
+
Mailboxes: (req) => queryService.Mailboxes(req),
|
|
11
|
+
Mailbox: (req) => queryService.Mailbox(req),
|
|
12
|
+
Delivered: (req) => queryService.Delivered(req),
|
|
13
|
+
RecipientIsm: (req) => queryService.RecipientIsm(req),
|
|
14
|
+
VerifyDryRun: (req) => queryService.VerifyDryRun(req),
|
|
15
|
+
},
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../../src/hyperlane/core/query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAE7E,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AA2B7D,MAAM,UAAU,kBAAkB,CAAC,IAAiB;IAClD,MAAM,GAAG,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAC1C,6DAA6D;IAC7D,6CAA6C;IAE7C,MAAM,YAAY,GAAG,IAAI,SAAS,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IACxD,OAAO;QACL,IAAI,EAAE;YACJ,SAAS,EAAE,CAAC,GAAoC,EAAE,EAAE,CAClD,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC;YAC7B,OAAO,EAAE,CAAC,GAAkC,EAAE,EAAE,CAC9C,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC;YAC3B,SAAS,EAAE,CAAC,GAAoC,EAAE,EAAE,CAClD,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC;YAC7B,YAAY,EAAE,CAAC,GAAuC,EAAE,EAAE,CACxD,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC;YAChC,YAAY,EAAE,CAAC,GAAuC,EAAE,EAAE,CACxD,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC;SACjC;KACF,CAAC;AACJ,CAAC"}
|