@recoillink/cosmos-sdk 0.0.0-stage → 45.0.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 +26 -0
- package/dist/clients/protocol.d.ts.map +1 -0
- package/dist/clients/protocol.js +72 -0
- package/dist/clients/protocol.js.map +1 -0
- package/dist/clients/provider.d.ts +34 -0
- package/dist/clients/provider.d.ts.map +1 -0
- package/dist/clients/provider.js +220 -0
- package/dist/clients/provider.js.map +1 -0
- package/dist/clients/signer.d.ts +25 -0
- package/dist/clients/signer.d.ts.map +1 -0
- package/dist/clients/signer.js +92 -0
- package/dist/clients/signer.js.map +1 -0
- package/dist/clients/stargate.d.ts +15 -0
- package/dist/clients/stargate.d.ts.map +1 -0
- package/dist/clients/stargate.js +81 -0
- package/dist/clients/stargate.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 +31 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +37 -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 +146 -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 +137 -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/runtime.d.ts +5 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +4 -0
- package/dist/runtime.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 +34 -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 +11 -0
- package/dist/testing/utils.d.ts.map +1 -0
- package/dist/testing/utils.js +21 -0
- package/dist/testing/utils.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 +554 -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 +350 -0
- package/dist/tests/hooks.e2e-test.js.map +1 -0
- package/dist/tests/ism.e2e-test.d.ts +2 -0
- package/dist/tests/ism.e2e-test.d.ts.map +1 -0
- package/dist/tests/ism.e2e-test.js +249 -0
- package/dist/tests/ism.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 +356 -0
- package/dist/tests/mailbox.e2e-test.js.map +1 -0
- package/dist/tests/warp-deploy-gas.unit-test.d.ts +2 -0
- package/dist/tests/warp-deploy-gas.unit-test.d.ts.map +1 -0
- package/dist/tests/warp-deploy-gas.unit-test.js +44 -0
- package/dist/tests/warp-deploy-gas.unit-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 +103 -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 +73 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/clients/provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type AccountData, type EncodeObject, type OfflineSigner } from '@cosmjs/proto-signing';
|
|
2
|
+
import { type DeliverTxResponse, SigningStargateClient, type StdFee } from '@cosmjs/stargate';
|
|
3
|
+
import { type CometClient } from '@cosmjs/tendermint-rpc';
|
|
4
|
+
import { type AltVM } from '@recoillink/provider-sdk';
|
|
5
|
+
import type { ChainMetadataForAltVM } from '@recoillink/provider-sdk/chain';
|
|
6
|
+
import { CosmosNativeProvider } from './provider.js';
|
|
7
|
+
type TxOptions = {
|
|
8
|
+
fee: StdFee | 'auto' | number;
|
|
9
|
+
memo?: string;
|
|
10
|
+
};
|
|
11
|
+
export declare class CosmosNativeSigner extends CosmosNativeProvider implements AltVM.ISigner<EncodeObject, DeliverTxResponse> {
|
|
12
|
+
private readonly signer;
|
|
13
|
+
private readonly account;
|
|
14
|
+
private readonly options;
|
|
15
|
+
static connectWithSigner(metadata: ChainMetadataForAltVM, privateKey: string | OfflineSigner): Promise<CosmosNativeSigner>;
|
|
16
|
+
protected constructor(cometClient: CometClient, signer: SigningStargateClient, account: AccountData, rpcUrls: [string, ...string[]], chainMetadata: ChainMetadataForAltVM, options: TxOptions);
|
|
17
|
+
getSignerAddress(): string;
|
|
18
|
+
disconnect(): void;
|
|
19
|
+
supportsTransactionBatching(): boolean;
|
|
20
|
+
transactionToPrintableJson(transaction: EncodeObject): Promise<object>;
|
|
21
|
+
sendAndConfirmTransaction(transaction: EncodeObject): Promise<DeliverTxResponse>;
|
|
22
|
+
sendAndConfirmBatchTransactions(transactions: EncodeObject[]): Promise<DeliverTxResponse>;
|
|
23
|
+
}
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=signer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../../src/clients/signer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,WAAW,EAGhB,KAAK,YAAY,EACjB,KAAK,aAAa,EACnB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAEL,KAAK,iBAAiB,EAEtB,qBAAqB,EACrB,KAAK,MAAM,EAEZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,KAAK,WAAW,EAAgB,MAAM,wBAAwB,CAAC;AAExE,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAK5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErD,KAAK,SAAS,GAAG;IACf,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,qBAAa,kBACX,SAAQ,oBACR,YAAW,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,iBAAiB,CAAC;IAEzD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwB;IAC/C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAc;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAY;IAEpC,OAAa,iBAAiB,CAC5B,QAAQ,EAAE,qBAAqB,EAC/B,UAAU,EAAE,MAAM,GAAG,aAAa,GACjC,OAAO,CAAC,kBAAkB,CAAC,CAqF7B;IAED,SAAS,aACP,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,qBAAqB,EAC7B,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,EAC9B,aAAa,EAAE,qBAAqB,EACpC,OAAO,EAAE,SAAS,EAMnB;IAED,gBAAgB,IAAI,MAAM,CAEzB;IAEQ,UAAU,IAAI,IAAI,CAG1B;IAED,2BAA2B,IAAI,OAAO,CAErC;IAEK,0BAA0B,CAAC,WAAW,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAE3E;IAEK,yBAAyB,CAC7B,WAAW,EAAE,YAAY,GACxB,OAAO,CAAC,iBAAiB,CAAC,CAU5B;IAEK,+BAA+B,CACnC,YAAY,EAAE,YAAY,EAAE,GAC3B,OAAO,CAAC,iBAAiB,CAAC,CAU5B;CACF"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { DirectSecp256k1HdWallet, DirectSecp256k1Wallet, } from '@cosmjs/proto-signing';
|
|
2
|
+
import { AminoTypes, GasPrice, SigningStargateClient, assertIsDeliverTxSuccess, } from '@cosmjs/stargate';
|
|
3
|
+
import { connectComet } from '@cosmjs/tendermint-rpc';
|
|
4
|
+
import { assert, isUrl, strip0x } from '@recoillink/utils';
|
|
5
|
+
import { COSMOS_MODULE_MESSAGE_REGISTRY as R } from '../registry.js';
|
|
6
|
+
import { CosmosNativeProvider } from './provider.js';
|
|
7
|
+
export class CosmosNativeSigner extends CosmosNativeProvider {
|
|
8
|
+
signer;
|
|
9
|
+
account;
|
|
10
|
+
options;
|
|
11
|
+
static async connectWithSigner(metadata, privateKey) {
|
|
12
|
+
const rpcUrls = (metadata.rpcUrls ?? []).map((rpc) => rpc.http);
|
|
13
|
+
const [rpcUrl, ...otherRpcUrls] = rpcUrls;
|
|
14
|
+
assert(rpcUrl, `${CosmosNativeSigner.name} got no rpcUrls`);
|
|
15
|
+
assert(rpcUrls.every((rpc) => isUrl(rpc)), `invalid rpc urls: ${rpcUrls.join(', ')}`);
|
|
16
|
+
assert(metadata.gasPrice, `gasPrice not defined in chain metadata`);
|
|
17
|
+
let wallet;
|
|
18
|
+
if (typeof privateKey === 'string') {
|
|
19
|
+
assert(metadata.bech32Prefix, `bech32Prefix not defined in chain metadata`);
|
|
20
|
+
const isPrivateKey = new RegExp(/(^|\b)(0x)?[0-9a-fA-F]{64}(\b|$)/).test(privateKey);
|
|
21
|
+
if (isPrivateKey) {
|
|
22
|
+
wallet = await DirectSecp256k1Wallet.fromKey(new Uint8Array(Buffer.from(strip0x(privateKey), 'hex')), metadata.bech32Prefix);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
wallet = await DirectSecp256k1HdWallet.fromMnemonic(privateKey, {
|
|
26
|
+
prefix: metadata.bech32Prefix,
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
wallet = privateKey;
|
|
32
|
+
}
|
|
33
|
+
// register all the custom amino tx types
|
|
34
|
+
const aminoTypes = Object.values(R)
|
|
35
|
+
.filter((r) => !!r.amino?.type) // filter out tx responses which have no amino type
|
|
36
|
+
.reduce((types, { proto, amino }) => ({
|
|
37
|
+
...types,
|
|
38
|
+
[proto.type]: {
|
|
39
|
+
aminoType: amino?.type,
|
|
40
|
+
toAmino: amino?.converter?.toJSON ?? proto.converter.toJSON,
|
|
41
|
+
fromAmino: amino?.converter?.fromJSON ?? proto.converter.fromJSON,
|
|
42
|
+
},
|
|
43
|
+
}), {});
|
|
44
|
+
const signer = await SigningStargateClient.connectWithSigner(rpcUrl, wallet, {
|
|
45
|
+
aminoTypes: new AminoTypes({
|
|
46
|
+
...aminoTypes,
|
|
47
|
+
}),
|
|
48
|
+
gasPrice: GasPrice.fromString(`${metadata.gasPrice.amount}${metadata.gasPrice.denom}`),
|
|
49
|
+
});
|
|
50
|
+
// register all the custom tx types
|
|
51
|
+
Object.values(R).forEach(({ proto }) => {
|
|
52
|
+
signer.registry.register(proto.type, proto.converter);
|
|
53
|
+
});
|
|
54
|
+
const cometClient = await connectComet(rpcUrl);
|
|
55
|
+
const [account] = await wallet.getAccounts();
|
|
56
|
+
assert(account, 'Expected to retrieve at least one account');
|
|
57
|
+
return new CosmosNativeSigner(cometClient, signer, account, [rpcUrl, ...otherRpcUrls], metadata, {
|
|
58
|
+
fee: 2,
|
|
59
|
+
memo: '',
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
constructor(cometClient, signer, account, rpcUrls, chainMetadata, options) {
|
|
63
|
+
super(cometClient, rpcUrls, chainMetadata);
|
|
64
|
+
this.signer = signer;
|
|
65
|
+
this.account = account;
|
|
66
|
+
this.options = options;
|
|
67
|
+
}
|
|
68
|
+
getSignerAddress() {
|
|
69
|
+
return this.account.address;
|
|
70
|
+
}
|
|
71
|
+
disconnect() {
|
|
72
|
+
super.disconnect();
|
|
73
|
+
this.signer.disconnect();
|
|
74
|
+
}
|
|
75
|
+
supportsTransactionBatching() {
|
|
76
|
+
return true;
|
|
77
|
+
}
|
|
78
|
+
async transactionToPrintableJson(transaction) {
|
|
79
|
+
return transaction;
|
|
80
|
+
}
|
|
81
|
+
async sendAndConfirmTransaction(transaction) {
|
|
82
|
+
const receipt = await this.signer.signAndBroadcast(this.account.address, [transaction], this.options.fee, this.options.memo);
|
|
83
|
+
assertIsDeliverTxSuccess(receipt);
|
|
84
|
+
return receipt;
|
|
85
|
+
}
|
|
86
|
+
async sendAndConfirmBatchTransactions(transactions) {
|
|
87
|
+
const receipt = await this.signer.signAndBroadcast(this.account.address, transactions, this.options.fee, this.options.memo);
|
|
88
|
+
assertIsDeliverTxSuccess(receipt);
|
|
89
|
+
return receipt;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=signer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signer.js","sourceRoot":"","sources":["../../src/clients/signer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { StargateClient } from '@cosmjs/stargate';
|
|
2
|
+
export declare function shouldCacheStargateClient(url: string): boolean;
|
|
3
|
+
export declare function disconnectStargateClient(client: Promise<StargateClient>): void;
|
|
4
|
+
export declare class StargateClientCache {
|
|
5
|
+
private readonly maxSize;
|
|
6
|
+
private readonly clients;
|
|
7
|
+
private readonly entries;
|
|
8
|
+
constructor(maxSize: number);
|
|
9
|
+
get(url: string): Promise<StargateClient>;
|
|
10
|
+
evict(url: string, client?: Promise<StargateClient>): void;
|
|
11
|
+
release(client: Promise<StargateClient>): void;
|
|
12
|
+
clear(): void;
|
|
13
|
+
private disconnectIfIdle;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=stargate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stargate.d.ts","sourceRoot":"","sources":["../../src/clients/stargate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAIlD,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,GAC9B,IAAI,CAMN;AAQD,qBAAa,mBAAmB;IAOlB,OAAO,CAAC,QAAQ,CAAC,OAAO;IANpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+C;IACvE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAGpB;IAEJ,YAA6B,OAAO,EAAE,MAAM,EAAI;IAEhD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CA8BxC;IAED,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI,CAOzD;IAED,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI,CAM7C;IAED,KAAK,IAAI,IAAI,CAMZ;IAED,OAAO,CAAC,gBAAgB;CAMzB"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { StargateClient } from '@cosmjs/stargate';
|
|
2
|
+
import { rootLogger } from '@recoillink/utils';
|
|
3
|
+
export function shouldCacheStargateClient(url) {
|
|
4
|
+
return !url.startsWith('ws://') && !url.startsWith('wss://');
|
|
5
|
+
}
|
|
6
|
+
export function disconnectStargateClient(client) {
|
|
7
|
+
void client
|
|
8
|
+
.then((stargateClient) => stargateClient.disconnect())
|
|
9
|
+
.catch((error) => {
|
|
10
|
+
rootLogger.debug({ error }, 'Failed to disconnect Stargate client');
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
export class StargateClientCache {
|
|
14
|
+
maxSize;
|
|
15
|
+
clients = new Map();
|
|
16
|
+
entries = new Map();
|
|
17
|
+
constructor(maxSize) {
|
|
18
|
+
this.maxSize = maxSize;
|
|
19
|
+
}
|
|
20
|
+
get(url) {
|
|
21
|
+
if (!shouldCacheStargateClient(url))
|
|
22
|
+
return StargateClient.connect(url);
|
|
23
|
+
let entry = this.clients.get(url);
|
|
24
|
+
if (!entry) {
|
|
25
|
+
let pendingEntry;
|
|
26
|
+
const client = StargateClient.connect(url).catch((error) => {
|
|
27
|
+
const entry = pendingEntry;
|
|
28
|
+
entry.evicted = true;
|
|
29
|
+
if (this.clients.get(url) === entry) {
|
|
30
|
+
this.clients.delete(url);
|
|
31
|
+
}
|
|
32
|
+
this.disconnectIfIdle(entry);
|
|
33
|
+
throw error;
|
|
34
|
+
});
|
|
35
|
+
pendingEntry = { client, evicted: false, leases: 0 };
|
|
36
|
+
entry = pendingEntry;
|
|
37
|
+
this.entries.set(client, entry);
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
this.clients.delete(url);
|
|
41
|
+
}
|
|
42
|
+
entry.leases += 1;
|
|
43
|
+
this.clients.set(url, entry);
|
|
44
|
+
while (this.clients.size > this.maxSize) {
|
|
45
|
+
const oldestUrl = this.clients.keys().next().value;
|
|
46
|
+
if (!oldestUrl)
|
|
47
|
+
break;
|
|
48
|
+
this.evict(oldestUrl);
|
|
49
|
+
}
|
|
50
|
+
return entry.client;
|
|
51
|
+
}
|
|
52
|
+
evict(url, client) {
|
|
53
|
+
const entry = this.clients.get(url);
|
|
54
|
+
if (!entry || (client && entry.client !== client))
|
|
55
|
+
return;
|
|
56
|
+
this.clients.delete(url);
|
|
57
|
+
entry.evicted = true;
|
|
58
|
+
this.disconnectIfIdle(entry);
|
|
59
|
+
}
|
|
60
|
+
release(client) {
|
|
61
|
+
const entry = this.entries.get(client);
|
|
62
|
+
if (!entry)
|
|
63
|
+
return;
|
|
64
|
+
entry.leases -= 1;
|
|
65
|
+
this.disconnectIfIdle(entry);
|
|
66
|
+
}
|
|
67
|
+
clear() {
|
|
68
|
+
for (const entry of this.clients.values()) {
|
|
69
|
+
entry.evicted = true;
|
|
70
|
+
this.disconnectIfIdle(entry);
|
|
71
|
+
}
|
|
72
|
+
this.clients.clear();
|
|
73
|
+
}
|
|
74
|
+
disconnectIfIdle(entry) {
|
|
75
|
+
if (!entry.evicted || entry.leases > 0)
|
|
76
|
+
return;
|
|
77
|
+
this.entries.delete(entry.client);
|
|
78
|
+
disconnectStargateClient(entry.client);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=stargate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stargate.js","sourceRoot":"","sources":["../../src/clients/stargate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { type ArtifactReader, type ArtifactWriter } from '@recoillink/provider-sdk/artifact';
|
|
2
|
+
import { type DeployedHookAddress, type DeployedHookArtifact, type HookType, type IRawHookArtifactManager, type RawHookArtifactConfigs } from '@recoillink/provider-sdk/hook';
|
|
3
|
+
import { type CosmosNativeSigner } from '../clients/signer.js';
|
|
4
|
+
/**
|
|
5
|
+
* Cosmos Hook Artifact Manager implementing IRawHookArtifactManager.
|
|
6
|
+
*
|
|
7
|
+
* This manager:
|
|
8
|
+
* - Lazily initializes the query client on first use
|
|
9
|
+
* - Provides factory methods for creating readers and writers
|
|
10
|
+
* - Supports IGP and MerkleTree hook types
|
|
11
|
+
*
|
|
12
|
+
* Design: Uses lazy initialization to keep the constructor synchronous while
|
|
13
|
+
* deferring the async query client creation until actually needed.
|
|
14
|
+
*/
|
|
15
|
+
export declare class CosmosHookArtifactManager implements IRawHookArtifactManager {
|
|
16
|
+
private readonly config;
|
|
17
|
+
private readonly query;
|
|
18
|
+
constructor(config: {
|
|
19
|
+
rpcUrls: [string, ...string[]];
|
|
20
|
+
mailboxAddress?: string;
|
|
21
|
+
nativeTokenDenom: string;
|
|
22
|
+
});
|
|
23
|
+
/**
|
|
24
|
+
* Lazy initialization - creates query client on first use.
|
|
25
|
+
* Subsequent calls return the cached promise.
|
|
26
|
+
*/
|
|
27
|
+
private getQuery;
|
|
28
|
+
/**
|
|
29
|
+
* Creates a Cosmos query client with PostDispatch extension.
|
|
30
|
+
*/
|
|
31
|
+
private createQuery;
|
|
32
|
+
/**
|
|
33
|
+
* Read a hook of unknown type from the blockchain.
|
|
34
|
+
*
|
|
35
|
+
* @param address - Address of the hook to read
|
|
36
|
+
* @returns Deployed hook artifact with configuration
|
|
37
|
+
*/
|
|
38
|
+
readHook(address: string): Promise<DeployedHookArtifact>;
|
|
39
|
+
/**
|
|
40
|
+
* Factory method to create type-specific hook readers.
|
|
41
|
+
*
|
|
42
|
+
* @param type - Hook type to create reader for
|
|
43
|
+
* @returns Type-specific hook reader
|
|
44
|
+
*/
|
|
45
|
+
createReader<T extends HookType>(type: T): ArtifactReader<RawHookArtifactConfigs[T], DeployedHookAddress>;
|
|
46
|
+
/**
|
|
47
|
+
* Internal helper to create type-specific hook readers with query client.
|
|
48
|
+
*
|
|
49
|
+
* @param type - Hook type to create reader for
|
|
50
|
+
* @param query - Query client to use for reading
|
|
51
|
+
* @returns Type-specific hook reader
|
|
52
|
+
*/
|
|
53
|
+
private createReaderWithQuery;
|
|
54
|
+
/**
|
|
55
|
+
* Factory method to create type-specific hook writers.
|
|
56
|
+
*
|
|
57
|
+
* @param type - Hook type to create writer for
|
|
58
|
+
* @param signer - Signer to use for writing transactions
|
|
59
|
+
* @returns Type-specific hook writer
|
|
60
|
+
*/
|
|
61
|
+
createWriter<T extends HookType>(type: T, signer: CosmosNativeSigner): ArtifactWriter<RawHookArtifactConfigs[T], DeployedHookAddress>;
|
|
62
|
+
/**
|
|
63
|
+
* Internal helper to create type-specific hook writers with query client and signer.
|
|
64
|
+
*
|
|
65
|
+
* @param type - Hook type to create writer for
|
|
66
|
+
* @param query - Query client to use for reading
|
|
67
|
+
* @param signer - Signer to use for writing
|
|
68
|
+
* @returns Type-specific hook writer
|
|
69
|
+
*/
|
|
70
|
+
private createWriterWithQuery;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=hook-artifact-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hook-artifact-manager.d.ts","sourceRoot":"","sources":["../../src/hook/hook-artifact-manager.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,QAAQ,EACb,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAG5B,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAU/D;;;;;;;;;;GAUG;AACH,qBAAa,yBAA0B,YAAW,uBAAuB;IAIrE,OAAO,CAAC,QAAQ,CAAC,MAAM;IAHzB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA2C;IAEjE,YACmB,MAAM,EAAE;QACvB,OAAO,EAAE,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;QAE/B,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,gBAAgB,EAAE,MAAM,CAAC;KAC1B,EACC;IAEJ;;;OAGG;IACH,OAAO,CAAC,QAAQ;IAIhB;;OAEG;YACW,WAAW;IAKzB;;;;;OAKG;IACG,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAQ7D;IAED;;;;;OAKG;IACH,YAAY,CAAC,CAAC,SAAS,QAAQ,EAC7B,IAAI,EAAE,CAAC,GACN,cAAc,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAShE;IAED;;;;;;OAMG;IACH,OAAO,CAAC,qBAAqB;IAsB7B;;;;;;OAMG;IACH,YAAY,CAAC,CAAC,SAAS,QAAQ,EAC7B,IAAI,EAAE,CAAC,EACP,MAAM,EAAE,kBAAkB,GACzB,cAAc,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAmBhE;IAED;;;;;;;OAOG;IACH,OAAO,CAAC,qBAAqB;CAqC9B"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { QueryClient } from '@cosmjs/stargate';
|
|
2
|
+
import { connectComet } from '@cosmjs/tendermint-rpc';
|
|
3
|
+
import { AltVM } from '@recoillink/provider-sdk';
|
|
4
|
+
import { altVmHookTypeToProviderHookType, throwUnsupportedHookType, } from '@recoillink/provider-sdk/hook';
|
|
5
|
+
import { LazyAsync, assert } from '@recoillink/utils';
|
|
6
|
+
import { setupPostDispatchExtension } from '../hyperlane/post_dispatch/query.js';
|
|
7
|
+
import { getHookType } from './hook-query.js';
|
|
8
|
+
import { CosmosIgpHookReader, CosmosIgpHookWriter } from './igp-hook.js';
|
|
9
|
+
import { CosmosMerkleTreeHookReader, CosmosMerkleTreeHookWriter, } from './merkle-tree-hook.js';
|
|
10
|
+
/**
|
|
11
|
+
* Cosmos Hook Artifact Manager implementing IRawHookArtifactManager.
|
|
12
|
+
*
|
|
13
|
+
* This manager:
|
|
14
|
+
* - Lazily initializes the query client on first use
|
|
15
|
+
* - Provides factory methods for creating readers and writers
|
|
16
|
+
* - Supports IGP and MerkleTree hook types
|
|
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 CosmosHookArtifactManager {
|
|
22
|
+
config;
|
|
23
|
+
query = new LazyAsync(() => this.createQuery());
|
|
24
|
+
constructor(config) {
|
|
25
|
+
this.config = config;
|
|
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 PostDispatch extension.
|
|
36
|
+
*/
|
|
37
|
+
async createQuery() {
|
|
38
|
+
const cometClient = await connectComet(this.config.rpcUrls[0]);
|
|
39
|
+
return QueryClient.withExtensions(cometClient, setupPostDispatchExtension);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Read a hook of unknown type from the blockchain.
|
|
43
|
+
*
|
|
44
|
+
* @param address - Address of the hook to read
|
|
45
|
+
* @returns Deployed hook artifact with configuration
|
|
46
|
+
*/
|
|
47
|
+
async readHook(address) {
|
|
48
|
+
const query = await this.getQuery();
|
|
49
|
+
const altVMType = await getHookType(query, address);
|
|
50
|
+
const reader = this.createReaderWithQuery(altVmHookTypeToProviderHookType(altVMType), query);
|
|
51
|
+
return reader.read(address);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Factory method to create type-specific hook readers.
|
|
55
|
+
*
|
|
56
|
+
* @param type - Hook type to create reader for
|
|
57
|
+
* @returns Type-specific hook reader
|
|
58
|
+
*/
|
|
59
|
+
createReader(type) {
|
|
60
|
+
// For synchronous createReader, we return a wrapper that will initialize lazily
|
|
61
|
+
return {
|
|
62
|
+
read: async (address) => {
|
|
63
|
+
const query = await this.getQuery();
|
|
64
|
+
const reader = this.createReaderWithQuery(type, query);
|
|
65
|
+
return reader.read(address);
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Internal helper to create type-specific hook readers with query client.
|
|
71
|
+
*
|
|
72
|
+
* @param type - Hook type to create reader for
|
|
73
|
+
* @param query - Query client to use for reading
|
|
74
|
+
* @returns Type-specific hook reader
|
|
75
|
+
*/
|
|
76
|
+
createReaderWithQuery(type, query) {
|
|
77
|
+
const readers = {
|
|
78
|
+
[AltVM.HookType.MERKLE_TREE]: () => new CosmosMerkleTreeHookReader(query),
|
|
79
|
+
[AltVM.HookType.INTERCHAIN_GAS_PAYMASTER]: () => new CosmosIgpHookReader(query),
|
|
80
|
+
};
|
|
81
|
+
const reader = readers[type];
|
|
82
|
+
if (!reader) {
|
|
83
|
+
return throwUnsupportedHookType(type, 'Cosmos');
|
|
84
|
+
}
|
|
85
|
+
return reader();
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Factory method to create type-specific hook writers.
|
|
89
|
+
*
|
|
90
|
+
* @param type - Hook type to create writer for
|
|
91
|
+
* @param signer - Signer to use for writing transactions
|
|
92
|
+
* @returns Type-specific hook writer
|
|
93
|
+
*/
|
|
94
|
+
createWriter(type, signer) {
|
|
95
|
+
// For synchronous createWriter, we return a wrapper that will initialize lazily
|
|
96
|
+
return {
|
|
97
|
+
read: async (address) => {
|
|
98
|
+
const query = await this.getQuery();
|
|
99
|
+
const writer = this.createWriterWithQuery(type, query, signer);
|
|
100
|
+
return writer.read(address);
|
|
101
|
+
},
|
|
102
|
+
create: async (artifact) => {
|
|
103
|
+
const query = await this.getQuery();
|
|
104
|
+
const writer = this.createWriterWithQuery(type, query, signer);
|
|
105
|
+
return writer.create(artifact);
|
|
106
|
+
},
|
|
107
|
+
update: async (artifact) => {
|
|
108
|
+
const query = await this.getQuery();
|
|
109
|
+
const writer = this.createWriterWithQuery(type, query, signer);
|
|
110
|
+
return writer.update(artifact);
|
|
111
|
+
},
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Internal helper to create type-specific hook writers with query client and signer.
|
|
116
|
+
*
|
|
117
|
+
* @param type - Hook type to create writer for
|
|
118
|
+
* @param query - Query client to use for reading
|
|
119
|
+
* @param signer - Signer to use for writing
|
|
120
|
+
* @returns Type-specific hook writer
|
|
121
|
+
*/
|
|
122
|
+
createWriterWithQuery(type, query, signer) {
|
|
123
|
+
const writers = {
|
|
124
|
+
[AltVM.HookType.MERKLE_TREE]: () => {
|
|
125
|
+
assert(this.config.mailboxAddress, `Mailbox needs to be defined to deploy a ${AltVM.HookType.MERKLE_TREE} hook`);
|
|
126
|
+
return new CosmosMerkleTreeHookWriter(query, signer, this.config.mailboxAddress);
|
|
127
|
+
},
|
|
128
|
+
[AltVM.HookType.INTERCHAIN_GAS_PAYMASTER]: () => {
|
|
129
|
+
return new CosmosIgpHookWriter(query, signer, this.config.nativeTokenDenom);
|
|
130
|
+
},
|
|
131
|
+
};
|
|
132
|
+
const writer = writers[type];
|
|
133
|
+
if (!writer) {
|
|
134
|
+
return throwUnsupportedHookType(type, 'Cosmos');
|
|
135
|
+
}
|
|
136
|
+
return writer();
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=hook-artifact-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hook-artifact-manager.js","sourceRoot":"","sources":["../../src/hook/hook-artifact-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { type QueryClient } from '@cosmjs/stargate';
|
|
2
|
+
import { AltVM } from '@recoillink/provider-sdk';
|
|
3
|
+
import { type PostDispatchExtension } from '../hyperlane/post_dispatch/query.js';
|
|
4
|
+
/**
|
|
5
|
+
* Type alias for query client with PostDispatch extension.
|
|
6
|
+
* Used throughout hook readers to ensure type safety.
|
|
7
|
+
*/
|
|
8
|
+
export type CosmosHookQueryClient = QueryClient & PostDispatchExtension;
|
|
9
|
+
export declare function getHookType(query: CosmosHookQueryClient, hookAddress: string): Promise<AltVM.HookType>;
|
|
10
|
+
/**
|
|
11
|
+
* Query IGP hook configuration from chain.
|
|
12
|
+
*
|
|
13
|
+
* @param query - Query client with PostDispatchExtension
|
|
14
|
+
* @param hookId - ID of the IGP hook to query
|
|
15
|
+
* @returns IGP hook configuration with address, owner, and destination gas configs
|
|
16
|
+
* @throws Error if IGP hook not found
|
|
17
|
+
*/
|
|
18
|
+
export declare function getIgpHookConfig(query: CosmosHookQueryClient, hookId: string): Promise<{
|
|
19
|
+
address: string;
|
|
20
|
+
owner: string;
|
|
21
|
+
destinationGasConfigs: {
|
|
22
|
+
[domainId: string]: {
|
|
23
|
+
gasOracle: {
|
|
24
|
+
tokenExchangeRate: string;
|
|
25
|
+
gasPrice: string;
|
|
26
|
+
};
|
|
27
|
+
gasOverhead: string;
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
}>;
|
|
31
|
+
/**
|
|
32
|
+
* Query MerkleTree hook configuration from chain.
|
|
33
|
+
*
|
|
34
|
+
* @param query - Query client with PostDispatchExtension
|
|
35
|
+
* @param hookId - ID of the MerkleTree hook to query
|
|
36
|
+
* @returns MerkleTree hook configuration with address
|
|
37
|
+
* @throws Error if MerkleTree hook not found
|
|
38
|
+
*/
|
|
39
|
+
export declare function getMerkleTreeHookConfig(query: CosmosHookQueryClient, hookId: string): Promise<{
|
|
40
|
+
address: string;
|
|
41
|
+
}>;
|
|
42
|
+
//# sourceMappingURL=hook-query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hook-query.d.ts","sourceRoot":"","sources":["../../src/hook/hook-query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAGjD,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAEjF;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAAG,WAAW,GAAG,qBAAqB,CAAC;AAsBxE,wBAAsB,WAAW,CAC/B,KAAK,EAAE,qBAAqB,EAC5B,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAgBzB;AAED;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,qBAAqB,EAC5B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IACT,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,qBAAqB,EAAE;QACrB,CAAC,QAAQ,EAAE,MAAM,GAAG;YAClB,SAAS,EAAE;gBACT,iBAAiB,EAAE,MAAM,CAAC;gBAC1B,QAAQ,EAAE,MAAM,CAAC;aAClB,CAAC;YACF,WAAW,EAAE,MAAM,CAAC;SACrB,CAAC;KACH,CAAC;CACH,CAAC,CA2CD;AAED;;;;;;;GAOG;AACH,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,qBAAqB,EAC5B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IACT,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC,CAeD"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { AltVM } from '@recoillink/provider-sdk';
|
|
2
|
+
import { assert } from '@recoillink/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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"}
|