@hyperlane-xyz/radix-sdk 18.0.0
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/README.md +43 -0
- package/dist/core/populate.d.ts +87 -0
- package/dist/core/populate.d.ts.map +1 -0
- package/dist/core/populate.js +94 -0
- package/dist/core/populate.js.map +1 -0
- package/dist/core/query.d.ts +62 -0
- package/dist/core/query.d.ts.map +1 -0
- package/dist/core/query.js +156 -0
- package/dist/core/query.js.map +1 -0
- package/dist/core/tx.d.ts +73 -0
- package/dist/core/tx.d.ts.map +1 -0
- package/dist/core/tx.js +148 -0
- package/dist/core/tx.js.map +1 -0
- package/dist/index.d.ts +43 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +83 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/base.d.ts +53 -0
- package/dist/utils/base.d.ts.map +1 -0
- package/dist/utils/base.js +250 -0
- package/dist/utils/base.js.map +1 -0
- package/dist/utils/signer.d.ts +16 -0
- package/dist/utils/signer.d.ts.map +1 -0
- package/dist/utils/signer.js +65 -0
- package/dist/utils/signer.js.map +1 -0
- package/dist/utils/types.d.ts +68 -0
- package/dist/utils/types.d.ts.map +1 -0
- package/dist/utils/types.js +11 -0
- package/dist/utils/types.js.map +1 -0
- package/dist/utils/utils.d.ts +6 -0
- package/dist/utils/utils.d.ts.map +1 -0
- package/dist/utils/utils.js +33 -0
- package/dist/utils/utils.js.map +1 -0
- package/dist/warp/populate.d.ts +60 -0
- package/dist/warp/populate.d.ts.map +1 -0
- package/dist/warp/populate.js +75 -0
- package/dist/warp/populate.js.map +1 -0
- package/dist/warp/query.d.ts +43 -0
- package/dist/warp/query.d.ts.map +1 -0
- package/dist/warp/query.js +155 -0
- package/dist/warp/query.js.map +1 -0
- package/dist/warp/tx.d.ts +54 -0
- package/dist/warp/tx.d.ts.map +1 -0
- package/dist/warp/tx.js +82 -0
- package/dist/warp/tx.js.map +1 -0
- package/package.json +55 -0
package/README.md
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Hyperlane Radix SDK
|
|
2
|
+
|
|
3
|
+
The Hyperlane Radix SDK is a fully typed TypeScript SDK for the [Radix Implementation](https://github.com/hyperlane-xyz/hyperlane-radix).
|
|
4
|
+
It can be used as a standalone SDK for frontend or in backend applications which want to connect to a Radix chain which has the Hyperlane blueprint installed.
|
|
5
|
+
|
|
6
|
+
## Install
|
|
7
|
+
|
|
8
|
+
```bash
|
|
9
|
+
# Install with NPM
|
|
10
|
+
npm install @hyperlane-xyz/radix-sdk
|
|
11
|
+
|
|
12
|
+
# Or with Yarn
|
|
13
|
+
yarn add @hyperlane-xyz/radix-sdk
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Usage
|
|
17
|
+
|
|
18
|
+
```ts
|
|
19
|
+
import { RadixSDK, RadixSigningSDK } from "@hyperlane-xyz/radix-sdk";
|
|
20
|
+
|
|
21
|
+
const signingSdk = await RadixSigningSDK.fromPrivateKey(
|
|
22
|
+
PRIV_KEY,
|
|
23
|
+
{
|
|
24
|
+
networkId: NetworkId.Stokenet,
|
|
25
|
+
},
|
|
26
|
+
);
|
|
27
|
+
|
|
28
|
+
const mailboxAddress = await signingSdk.tx.createMailbox({ domain_id: 75898670 });
|
|
29
|
+
|
|
30
|
+
const mailbox = await signingSdk.query.getMailbox({ mailbox: mailboxAddress });
|
|
31
|
+
...
|
|
32
|
+
|
|
33
|
+
// performing queries without signer
|
|
34
|
+
const sdk = new RadixSDK({
|
|
35
|
+
networkId: NetworkId.Stokenet,
|
|
36
|
+
})
|
|
37
|
+
|
|
38
|
+
const mailbox = await signingSdk.query.getMailbox({ mailbox: mailboxAddress });
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Setup
|
|
42
|
+
|
|
43
|
+
Node 18 or newer is required.
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { GatewayApiClient } from '@radixdlt/babylon-gateway-api-sdk';
|
|
2
|
+
import { RadixBase } from '../utils/base.js';
|
|
3
|
+
export declare class RadixCorePopulate {
|
|
4
|
+
protected gateway: GatewayApiClient;
|
|
5
|
+
protected base: RadixBase;
|
|
6
|
+
protected packageAddress: string;
|
|
7
|
+
constructor(gateway: GatewayApiClient, base: RadixBase, packageAddress: string);
|
|
8
|
+
createMailbox({ from_address, domain_id, }: {
|
|
9
|
+
from_address: string;
|
|
10
|
+
domain_id: number;
|
|
11
|
+
}): Promise<import("@radixdlt/radix-engine-toolkit").TransactionManifest>;
|
|
12
|
+
createMerkleTreeHook({ from_address, mailbox, }: {
|
|
13
|
+
from_address: string;
|
|
14
|
+
mailbox: string;
|
|
15
|
+
}): Promise<import("@radixdlt/radix-engine-toolkit").TransactionManifest>;
|
|
16
|
+
createMerkleRootMultisigIsm({ from_address, validators, threshold, }: {
|
|
17
|
+
from_address: string;
|
|
18
|
+
validators: string[];
|
|
19
|
+
threshold: number;
|
|
20
|
+
}): Promise<import("@radixdlt/radix-engine-toolkit").TransactionManifest>;
|
|
21
|
+
createMessageIdMultisigIsm({ from_address, validators, threshold, }: {
|
|
22
|
+
from_address: string;
|
|
23
|
+
validators: string[];
|
|
24
|
+
threshold: number;
|
|
25
|
+
}): Promise<import("@radixdlt/radix-engine-toolkit").TransactionManifest>;
|
|
26
|
+
createRoutingIsm({ from_address, routes, }: {
|
|
27
|
+
from_address: string;
|
|
28
|
+
routes: {
|
|
29
|
+
ism: string;
|
|
30
|
+
domain: number;
|
|
31
|
+
}[];
|
|
32
|
+
}): Promise<import("@radixdlt/radix-engine-toolkit").TransactionManifest>;
|
|
33
|
+
setRoutingIsmOwner({ from_address, ism, new_owner, }: {
|
|
34
|
+
from_address: string;
|
|
35
|
+
ism: string;
|
|
36
|
+
new_owner: string;
|
|
37
|
+
}): Promise<import("@radixdlt/radix-engine-toolkit").TransactionManifest>;
|
|
38
|
+
createNoopIsm({ from_address }: {
|
|
39
|
+
from_address: string;
|
|
40
|
+
}): Promise<import("@radixdlt/radix-engine-toolkit").TransactionManifest>;
|
|
41
|
+
createIgp({ from_address, denom, }: {
|
|
42
|
+
from_address: string;
|
|
43
|
+
denom: string;
|
|
44
|
+
}): Promise<import("@radixdlt/radix-engine-toolkit").TransactionManifest>;
|
|
45
|
+
setIgpOwner({ from_address, igp, new_owner, }: {
|
|
46
|
+
from_address: string;
|
|
47
|
+
igp: string;
|
|
48
|
+
new_owner: string;
|
|
49
|
+
}): Promise<import("@radixdlt/radix-engine-toolkit").TransactionManifest>;
|
|
50
|
+
setDestinationGasConfig({ from_address, igp, destination_gas_config, }: {
|
|
51
|
+
from_address: string;
|
|
52
|
+
igp: string;
|
|
53
|
+
destination_gas_config: {
|
|
54
|
+
remote_domain: string;
|
|
55
|
+
gas_oracle: {
|
|
56
|
+
token_exchange_rate: string;
|
|
57
|
+
gas_price: string;
|
|
58
|
+
};
|
|
59
|
+
gas_overhead: string;
|
|
60
|
+
};
|
|
61
|
+
}): Promise<import("@radixdlt/radix-engine-toolkit").TransactionManifest>;
|
|
62
|
+
setMailboxOwner({ from_address, mailbox, new_owner, }: {
|
|
63
|
+
from_address: string;
|
|
64
|
+
mailbox: string;
|
|
65
|
+
new_owner: string;
|
|
66
|
+
}): Promise<import("@radixdlt/radix-engine-toolkit").TransactionManifest>;
|
|
67
|
+
createValidatorAnnounce({ from_address, mailbox, }: {
|
|
68
|
+
from_address: string;
|
|
69
|
+
mailbox: string;
|
|
70
|
+
}): Promise<import("@radixdlt/radix-engine-toolkit").TransactionManifest>;
|
|
71
|
+
setRequiredHook({ from_address, mailbox, hook, }: {
|
|
72
|
+
from_address: string;
|
|
73
|
+
mailbox: string;
|
|
74
|
+
hook: string;
|
|
75
|
+
}): Promise<import("@radixdlt/radix-engine-toolkit").TransactionManifest>;
|
|
76
|
+
setDefaultHook({ from_address, mailbox, hook, }: {
|
|
77
|
+
from_address: string;
|
|
78
|
+
mailbox: string;
|
|
79
|
+
hook: string;
|
|
80
|
+
}): Promise<import("@radixdlt/radix-engine-toolkit").TransactionManifest>;
|
|
81
|
+
setDefaultIsm({ from_address, mailbox, ism, }: {
|
|
82
|
+
from_address: string;
|
|
83
|
+
mailbox: string;
|
|
84
|
+
ism: string;
|
|
85
|
+
}): Promise<import("@radixdlt/radix-engine-toolkit").TransactionManifest>;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=populate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"populate.d.ts","sourceRoot":"","sources":["../../src/core/populate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { ValueKind, address, array, tuple, u32, u64, u128, } from '@radixdlt/radix-engine-toolkit';
|
|
2
|
+
import { strip0x } from '@hyperlane-xyz/utils';
|
|
3
|
+
import { INSTRUCTIONS } from '../utils/types.js';
|
|
4
|
+
import { bytes } from '../utils/utils.js';
|
|
5
|
+
export class RadixCorePopulate {
|
|
6
|
+
gateway;
|
|
7
|
+
base;
|
|
8
|
+
packageAddress;
|
|
9
|
+
constructor(gateway, base, packageAddress) {
|
|
10
|
+
this.gateway = gateway;
|
|
11
|
+
this.base = base;
|
|
12
|
+
this.packageAddress = packageAddress;
|
|
13
|
+
}
|
|
14
|
+
createMailbox({ from_address, domain_id, }) {
|
|
15
|
+
return this.base.createCallFunctionManifest(from_address, this.packageAddress, 'Mailbox', INSTRUCTIONS.INSTANTIATE, [u32(domain_id)]);
|
|
16
|
+
}
|
|
17
|
+
createMerkleTreeHook({ from_address, mailbox, }) {
|
|
18
|
+
return this.base.createCallFunctionManifest(from_address, this.packageAddress, 'MerkleTreeHook', INSTRUCTIONS.INSTANTIATE, [address(mailbox)]);
|
|
19
|
+
}
|
|
20
|
+
createMerkleRootMultisigIsm({ from_address, validators, threshold, }) {
|
|
21
|
+
return this.base.createCallFunctionManifest(from_address, this.packageAddress, 'MerkleRootMultisigIsm', INSTRUCTIONS.INSTANTIATE, [
|
|
22
|
+
array(ValueKind.Array, ...validators.map((v) => bytes(strip0x(v)))),
|
|
23
|
+
u64(threshold),
|
|
24
|
+
]);
|
|
25
|
+
}
|
|
26
|
+
createMessageIdMultisigIsm({ from_address, validators, threshold, }) {
|
|
27
|
+
return this.base.createCallFunctionManifest(from_address, this.packageAddress, 'MessageIdMultisigIsm', INSTRUCTIONS.INSTANTIATE, [
|
|
28
|
+
array(ValueKind.Array, ...validators.map((v) => bytes(strip0x(v)))),
|
|
29
|
+
u64(threshold),
|
|
30
|
+
]);
|
|
31
|
+
}
|
|
32
|
+
createRoutingIsm({ from_address, routes, }) {
|
|
33
|
+
return this.base.createCallFunctionManifest(from_address, this.packageAddress, 'RoutingIsm', INSTRUCTIONS.INSTANTIATE, [
|
|
34
|
+
array(ValueKind.Tuple, ...routes.map((r) => tuple(u32(r.domain), address(r.ism)))),
|
|
35
|
+
]);
|
|
36
|
+
}
|
|
37
|
+
async setRoutingIsmOwner({ from_address, ism, new_owner, }) {
|
|
38
|
+
const details = await this.gateway.state.getEntityDetailsVaultAggregated(ism);
|
|
39
|
+
const resource = details.details.role_assignments.owner
|
|
40
|
+
.rule.access_rule.proof_rule.requirement.resource;
|
|
41
|
+
return this.base.transfer({
|
|
42
|
+
from_address,
|
|
43
|
+
to_address: new_owner,
|
|
44
|
+
resource_address: resource,
|
|
45
|
+
amount: '1',
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
createNoopIsm({ from_address }) {
|
|
49
|
+
return this.base.createCallFunctionManifest(from_address, this.packageAddress, 'NoopIsm', INSTRUCTIONS.INSTANTIATE, []);
|
|
50
|
+
}
|
|
51
|
+
createIgp({ from_address, denom, }) {
|
|
52
|
+
return this.base.createCallFunctionManifest(from_address, this.packageAddress, 'InterchainGasPaymaster', INSTRUCTIONS.INSTANTIATE, [address(denom)]);
|
|
53
|
+
}
|
|
54
|
+
async setIgpOwner({ from_address, igp, new_owner, }) {
|
|
55
|
+
const details = await this.gateway.state.getEntityDetailsVaultAggregated(igp);
|
|
56
|
+
const resource = details.details.role_assignments.owner
|
|
57
|
+
.rule.access_rule.proof_rule.requirement.resource;
|
|
58
|
+
return this.base.transfer({
|
|
59
|
+
from_address,
|
|
60
|
+
to_address: new_owner,
|
|
61
|
+
resource_address: resource,
|
|
62
|
+
amount: '1',
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
async setDestinationGasConfig({ from_address, igp, destination_gas_config, }) {
|
|
66
|
+
return this.base.createCallMethodManifestWithOwner(from_address, igp, 'set_destination_gas_configs', [
|
|
67
|
+
array(ValueKind.Tuple, tuple(u32(destination_gas_config.remote_domain), tuple(tuple(u128(destination_gas_config.gas_oracle.token_exchange_rate), u128(destination_gas_config.gas_oracle.gas_price)), u128(destination_gas_config.gas_overhead)))),
|
|
68
|
+
]);
|
|
69
|
+
}
|
|
70
|
+
async setMailboxOwner({ from_address, mailbox, new_owner, }) {
|
|
71
|
+
const details = await this.gateway.state.getEntityDetailsVaultAggregated(mailbox);
|
|
72
|
+
const resource = details.details.role_assignments.owner
|
|
73
|
+
.rule.access_rule.proof_rule.requirement.resource;
|
|
74
|
+
return this.base.transfer({
|
|
75
|
+
from_address,
|
|
76
|
+
to_address: new_owner,
|
|
77
|
+
resource_address: resource,
|
|
78
|
+
amount: '1',
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
createValidatorAnnounce({ from_address, mailbox, }) {
|
|
82
|
+
return this.base.createCallFunctionManifest(from_address, this.packageAddress, 'ValidatorAnnounce', INSTRUCTIONS.INSTANTIATE, [address(mailbox)]);
|
|
83
|
+
}
|
|
84
|
+
async setRequiredHook({ from_address, mailbox, hook, }) {
|
|
85
|
+
return this.base.createCallMethodManifestWithOwner(from_address, mailbox, 'set_required_hook', [address(hook)]);
|
|
86
|
+
}
|
|
87
|
+
async setDefaultHook({ from_address, mailbox, hook, }) {
|
|
88
|
+
return this.base.createCallMethodManifestWithOwner(from_address, mailbox, 'set_default_hook', [address(hook)]);
|
|
89
|
+
}
|
|
90
|
+
async setDefaultIsm({ from_address, mailbox, ism, }) {
|
|
91
|
+
return this.base.createCallMethodManifestWithOwner(from_address, mailbox, 'set_default_ism', [address(ism)]);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=populate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"populate.js","sourceRoot":"","sources":["../../src/core/populate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { GatewayApiClient } from '@radixdlt/babylon-gateway-api-sdk';
|
|
2
|
+
import { RadixBase } from '../utils/base.js';
|
|
3
|
+
import { Isms, MultisigIsms } from '../utils/types.js';
|
|
4
|
+
export declare class RadixCoreQuery {
|
|
5
|
+
protected networkId: number;
|
|
6
|
+
protected gateway: GatewayApiClient;
|
|
7
|
+
protected base: RadixBase;
|
|
8
|
+
constructor(networkId: number, gateway: GatewayApiClient, base: RadixBase);
|
|
9
|
+
getMailbox({ mailbox }: {
|
|
10
|
+
mailbox: string;
|
|
11
|
+
}): Promise<{
|
|
12
|
+
address: string;
|
|
13
|
+
owner: string;
|
|
14
|
+
local_domain: number;
|
|
15
|
+
nonce: number;
|
|
16
|
+
default_ism: string;
|
|
17
|
+
default_hook: string;
|
|
18
|
+
required_hook: string;
|
|
19
|
+
}>;
|
|
20
|
+
getIsmType({ ism }: {
|
|
21
|
+
ism: string;
|
|
22
|
+
}): Promise<Isms>;
|
|
23
|
+
getMultisigIsm({ ism }: {
|
|
24
|
+
ism: string;
|
|
25
|
+
}): Promise<{
|
|
26
|
+
address: string;
|
|
27
|
+
type: MultisigIsms;
|
|
28
|
+
threshold: number;
|
|
29
|
+
validators: string[];
|
|
30
|
+
}>;
|
|
31
|
+
getRoutingIsm({ ism }: {
|
|
32
|
+
ism: string;
|
|
33
|
+
}): Promise<{
|
|
34
|
+
address: string;
|
|
35
|
+
owner: string;
|
|
36
|
+
routes: {
|
|
37
|
+
domain: number;
|
|
38
|
+
ism: string;
|
|
39
|
+
}[];
|
|
40
|
+
}>;
|
|
41
|
+
getIgpHook({ hook }: {
|
|
42
|
+
hook: string;
|
|
43
|
+
}): Promise<{
|
|
44
|
+
address: string;
|
|
45
|
+
owner: string;
|
|
46
|
+
destination_gas_configs: {
|
|
47
|
+
[domain_id: string]: {
|
|
48
|
+
gas_oracle: {
|
|
49
|
+
token_exchange_rate: string;
|
|
50
|
+
gas_price: string;
|
|
51
|
+
};
|
|
52
|
+
gas_overhead: string;
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
}>;
|
|
56
|
+
getMerkleTreeHook({ hook }: {
|
|
57
|
+
hook: string;
|
|
58
|
+
}): Promise<{
|
|
59
|
+
address: string;
|
|
60
|
+
}>;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/core/query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAIrE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAGL,IAAI,EACJ,YAAY,EACb,MAAM,mBAAmB,CAAC;AAE3B,qBAAa,cAAc;IACzB,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,OAAO,EAAE,gBAAgB,CAAC;IACpC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC;gBAEd,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,SAAS;IAM5D,UAAU,CAAC,EAAE,OAAO,EAAE,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QACjE,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,YAAY,EAAE,MAAM,CAAC;QACrB,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IA2CW,UAAU,CAAC,EAAE,GAAG,EAAE,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAOnD,cAAc,CAAC,EAAE,GAAG,EAAE,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAC7D,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,YAAY,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,EAAE,CAAC;KACtB,CAAC;IAoBW,aAAa,CAAC,EAAE,GAAG,EAAE,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAC5D,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE;YACN,MAAM,EAAE,MAAM,CAAC;YACf,GAAG,EAAE,MAAM,CAAC;SACb,EAAE,CAAC;KACL,CAAC;IAsEW,UAAU,CAAC,EAAE,IAAI,EAAE,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAC3D,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,uBAAuB,EAAE;YACvB,CAAC,SAAS,EAAE,MAAM,GAAG;gBACnB,UAAU,EAAE;oBACV,mBAAmB,EAAE,MAAM,CAAC;oBAC5B,SAAS,EAAE,MAAM,CAAC;iBACnB,CAAC;gBACF,YAAY,EAAE,MAAM,CAAC;aACtB,CAAC;SACH,CAAC;KACH,CAAC;IA4FW,iBAAiB,CAAC,EAAE,IAAI,EAAE,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAClE,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CAaH"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import { assert, ensure0x } from '@hyperlane-xyz/utils';
|
|
2
|
+
export class RadixCoreQuery {
|
|
3
|
+
networkId;
|
|
4
|
+
gateway;
|
|
5
|
+
base;
|
|
6
|
+
constructor(networkId, gateway, base) {
|
|
7
|
+
this.networkId = networkId;
|
|
8
|
+
this.gateway = gateway;
|
|
9
|
+
this.base = base;
|
|
10
|
+
}
|
|
11
|
+
async getMailbox({ mailbox }) {
|
|
12
|
+
const details = await this.gateway.state.getEntityDetailsVaultAggregated(mailbox);
|
|
13
|
+
const fields = details.details.state.fields;
|
|
14
|
+
const ownerResource = details.details.role_assignments
|
|
15
|
+
.owner.rule.access_rule.proof_rule.requirement.resource;
|
|
16
|
+
const { items } = await this.gateway.extensions.getResourceHolders(ownerResource);
|
|
17
|
+
const resourceHolders = [
|
|
18
|
+
...new Set(items.map((item) => item.holder_address)),
|
|
19
|
+
];
|
|
20
|
+
assert(resourceHolders.length === 1, `expected token holders of resource ${ownerResource} to be one, found ${resourceHolders.length} holders instead`);
|
|
21
|
+
const result = {
|
|
22
|
+
address: mailbox,
|
|
23
|
+
owner: resourceHolders[0],
|
|
24
|
+
local_domain: parseInt(fields.find((f) => f.field_name === 'local_domain')?.value ?? '0'),
|
|
25
|
+
nonce: parseInt(fields.find((f) => f.field_name === 'nonce')?.value ?? '0'),
|
|
26
|
+
default_ism: fields.find((f) => f.field_name === 'default_ism')?.fields?.at(0)
|
|
27
|
+
?.value ?? '',
|
|
28
|
+
default_hook: fields.find((f) => f.field_name === 'default_hook')?.fields?.at(0)
|
|
29
|
+
?.value ?? '',
|
|
30
|
+
required_hook: fields.find((f) => f.field_name === 'required_hook')?.fields?.at(0)
|
|
31
|
+
?.value ?? '',
|
|
32
|
+
};
|
|
33
|
+
return result;
|
|
34
|
+
}
|
|
35
|
+
async getIsmType({ ism }) {
|
|
36
|
+
const details = await this.gateway.state.getEntityDetailsVaultAggregated(ism);
|
|
37
|
+
return details.details.blueprint_name;
|
|
38
|
+
}
|
|
39
|
+
async getMultisigIsm({ ism }) {
|
|
40
|
+
const details = await this.gateway.state.getEntityDetailsVaultAggregated(ism);
|
|
41
|
+
const fields = details.details.state.fields;
|
|
42
|
+
const result = {
|
|
43
|
+
address: ism,
|
|
44
|
+
type: details.details.blueprint_name,
|
|
45
|
+
validators: (fields.find((f) => f.field_name === 'validators')?.elements ?? []).map((v) => ensure0x(v.hex)),
|
|
46
|
+
threshold: parseInt(fields.find((f) => f.field_name === 'threshold')?.value ?? '0'),
|
|
47
|
+
};
|
|
48
|
+
return result;
|
|
49
|
+
}
|
|
50
|
+
async getRoutingIsm({ ism }) {
|
|
51
|
+
const details = await this.gateway.state.getEntityDetailsVaultAggregated(ism);
|
|
52
|
+
const ownerResource = details.details.role_assignments
|
|
53
|
+
.owner.rule.access_rule.proof_rule.requirement.resource;
|
|
54
|
+
const { items: holders } = await this.gateway.extensions.getResourceHolders(ownerResource);
|
|
55
|
+
const resourceHolders = [
|
|
56
|
+
...new Set(holders.map((item) => item.holder_address)),
|
|
57
|
+
];
|
|
58
|
+
assert(resourceHolders.length === 1, `expected token holders of resource ${ownerResource} to be one, found ${resourceHolders.length} holders instead`);
|
|
59
|
+
const type = details.details.blueprint_name;
|
|
60
|
+
assert(type === 'RoutingIsm', `ism is not a RoutingIsm, instead got ${type}`);
|
|
61
|
+
const fields = details.details.state.fields;
|
|
62
|
+
const routesKeyValueStore = fields.find((f) => f.field_name === 'routes')?.value ?? '';
|
|
63
|
+
assert(routesKeyValueStore, `found no routes on RoutingIsm ${ism}`);
|
|
64
|
+
const { items } = await this.gateway.state.innerClient.keyValueStoreKeys({
|
|
65
|
+
stateKeyValueStoreKeysRequest: {
|
|
66
|
+
key_value_store_address: routesKeyValueStore,
|
|
67
|
+
},
|
|
68
|
+
});
|
|
69
|
+
const routes = [];
|
|
70
|
+
for (const { key } of items) {
|
|
71
|
+
const { entries } = await this.gateway.state.innerClient.keyValueStoreData({
|
|
72
|
+
stateKeyValueStoreDataRequest: {
|
|
73
|
+
key_value_store_address: routesKeyValueStore,
|
|
74
|
+
keys: [
|
|
75
|
+
{
|
|
76
|
+
key_hex: key.raw_hex,
|
|
77
|
+
},
|
|
78
|
+
],
|
|
79
|
+
},
|
|
80
|
+
});
|
|
81
|
+
const domain = parseInt(key.programmatic_json?.value ?? '0');
|
|
82
|
+
const ism = entries[0].value.programmatic_json.value;
|
|
83
|
+
routes.push({
|
|
84
|
+
domain,
|
|
85
|
+
ism,
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
return {
|
|
89
|
+
address: ism,
|
|
90
|
+
owner: resourceHolders[0],
|
|
91
|
+
routes,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
async getIgpHook({ hook }) {
|
|
95
|
+
const details = await this.gateway.state.getEntityDetailsVaultAggregated(hook);
|
|
96
|
+
assert(details.details.blueprint_name ===
|
|
97
|
+
'InterchainGasPaymaster', `Expected contract at address ${hook} to be "InterchainGasPaymaster" but got ${details.details.blueprint_name}`);
|
|
98
|
+
const ownerResource = details.details.role_assignments
|
|
99
|
+
.owner.rule.access_rule.proof_rule.requirement.resource;
|
|
100
|
+
const { items: holders } = await this.gateway.extensions.getResourceHolders(ownerResource);
|
|
101
|
+
const resourceHolders = [
|
|
102
|
+
...new Set(holders.map((item) => item.holder_address)),
|
|
103
|
+
];
|
|
104
|
+
assert(resourceHolders.length === 1, `expected token holders of resource ${ownerResource} to be one, found ${resourceHolders.length} holders instead`);
|
|
105
|
+
const fields = details.details.state.fields;
|
|
106
|
+
const destinationGasConfigsKeyValueStore = fields.find((f) => f.field_name === 'destination_gas_configs')?.value ??
|
|
107
|
+
'';
|
|
108
|
+
assert(destinationGasConfigsKeyValueStore, `found no destination gas configs on hook ${hook}`);
|
|
109
|
+
const destination_gas_configs = {};
|
|
110
|
+
const { items } = await this.gateway.state.innerClient.keyValueStoreKeys({
|
|
111
|
+
stateKeyValueStoreKeysRequest: {
|
|
112
|
+
key_value_store_address: destinationGasConfigsKeyValueStore,
|
|
113
|
+
},
|
|
114
|
+
});
|
|
115
|
+
for (const { key } of items) {
|
|
116
|
+
const { entries } = await this.gateway.state.innerClient.keyValueStoreData({
|
|
117
|
+
stateKeyValueStoreDataRequest: {
|
|
118
|
+
key_value_store_address: destinationGasConfigsKeyValueStore,
|
|
119
|
+
keys: [
|
|
120
|
+
{
|
|
121
|
+
key_hex: key.raw_hex,
|
|
122
|
+
},
|
|
123
|
+
],
|
|
124
|
+
},
|
|
125
|
+
});
|
|
126
|
+
const remoteDomain = key.programmatic_json?.value ?? '0';
|
|
127
|
+
const gasConfigFields = entries[0].value.programmatic_json.fields;
|
|
128
|
+
const gasOracleFields = gasConfigFields?.find((r) => r.field_name === 'gas_oracle')?.fields ??
|
|
129
|
+
[];
|
|
130
|
+
Object.assign(destination_gas_configs, {
|
|
131
|
+
[remoteDomain]: {
|
|
132
|
+
gas_oracle: {
|
|
133
|
+
token_exchange_rate: gasOracleFields.find((r) => r.field_name === 'token_exchange_rate')?.value ?? '0',
|
|
134
|
+
gas_price: gasOracleFields.find((r) => r.field_name === 'gas_price')
|
|
135
|
+
?.value ?? '0',
|
|
136
|
+
},
|
|
137
|
+
gas_overhead: gasConfigFields?.find((r) => r.field_name === 'gas_overhead')
|
|
138
|
+
?.value ?? '0',
|
|
139
|
+
},
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
return {
|
|
143
|
+
address: hook,
|
|
144
|
+
owner: resourceHolders[0],
|
|
145
|
+
destination_gas_configs,
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
async getMerkleTreeHook({ hook }) {
|
|
149
|
+
const details = await this.gateway.state.getEntityDetailsVaultAggregated(hook);
|
|
150
|
+
assert(details.details.blueprint_name === 'MerkleTreeHook', `Expected contract at address ${hook} to be "MerkleTreeHook" but got ${details.details.blueprint_name}`);
|
|
151
|
+
return {
|
|
152
|
+
address: hook,
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/core/query.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { RadixBase } from '../utils/base.js';
|
|
2
|
+
import { RadixSigner } from '../utils/signer.js';
|
|
3
|
+
import { Account, MultisigIsmReq } from '../utils/types.js';
|
|
4
|
+
import { RadixCorePopulate } from './populate.js';
|
|
5
|
+
export declare class RadixCoreTx {
|
|
6
|
+
private account;
|
|
7
|
+
protected base: RadixBase;
|
|
8
|
+
protected populate: RadixCorePopulate;
|
|
9
|
+
protected signer: RadixSigner;
|
|
10
|
+
constructor(account: Account, base: RadixBase, signer: RadixSigner, populate: RadixCorePopulate);
|
|
11
|
+
transfer({ to_address, resource_address, amount, }: {
|
|
12
|
+
to_address: string;
|
|
13
|
+
resource_address: string;
|
|
14
|
+
amount: string;
|
|
15
|
+
}): Promise<void>;
|
|
16
|
+
createMailbox({ domain_id }: {
|
|
17
|
+
domain_id: number;
|
|
18
|
+
}): Promise<string>;
|
|
19
|
+
createMerkleTreeHook({ mailbox }: {
|
|
20
|
+
mailbox: string;
|
|
21
|
+
}): Promise<string>;
|
|
22
|
+
createMerkleRootMultisigIsm({ validators, threshold, }: MultisigIsmReq): Promise<string>;
|
|
23
|
+
createMessageIdMultisigIsm({ validators, threshold, }: MultisigIsmReq): Promise<string>;
|
|
24
|
+
createRoutingIsm({ routes, }: {
|
|
25
|
+
routes: {
|
|
26
|
+
ism: string;
|
|
27
|
+
domain: number;
|
|
28
|
+
}[];
|
|
29
|
+
}): Promise<string>;
|
|
30
|
+
setRoutingIsmOwner({ ism, new_owner, }: {
|
|
31
|
+
ism: string;
|
|
32
|
+
new_owner: string;
|
|
33
|
+
}): Promise<void>;
|
|
34
|
+
createNoopIsm(): Promise<string>;
|
|
35
|
+
createIgp({ denom }: {
|
|
36
|
+
denom: string;
|
|
37
|
+
}): Promise<string>;
|
|
38
|
+
setIgpOwner({ igp, new_owner, }: {
|
|
39
|
+
igp: string;
|
|
40
|
+
new_owner: string;
|
|
41
|
+
}): Promise<void>;
|
|
42
|
+
setDestinationGasConfig({ igp, destination_gas_config, }: {
|
|
43
|
+
igp: string;
|
|
44
|
+
destination_gas_config: {
|
|
45
|
+
remote_domain: string;
|
|
46
|
+
gas_oracle: {
|
|
47
|
+
token_exchange_rate: string;
|
|
48
|
+
gas_price: string;
|
|
49
|
+
};
|
|
50
|
+
gas_overhead: string;
|
|
51
|
+
};
|
|
52
|
+
}): Promise<void>;
|
|
53
|
+
setMailboxOwner({ mailbox, new_owner, }: {
|
|
54
|
+
mailbox: string;
|
|
55
|
+
new_owner: string;
|
|
56
|
+
}): Promise<void>;
|
|
57
|
+
createValidatorAnnounce({ mailbox }: {
|
|
58
|
+
mailbox: string;
|
|
59
|
+
}): Promise<string>;
|
|
60
|
+
setRequiredHook({ mailbox, hook, }: {
|
|
61
|
+
mailbox: string;
|
|
62
|
+
hook: string;
|
|
63
|
+
}): Promise<void>;
|
|
64
|
+
setDefaultHook({ mailbox, hook, }: {
|
|
65
|
+
mailbox: string;
|
|
66
|
+
hook: string;
|
|
67
|
+
}): Promise<void>;
|
|
68
|
+
setDefaultIsm({ mailbox, ism, }: {
|
|
69
|
+
mailbox: string;
|
|
70
|
+
ism: string;
|
|
71
|
+
}): Promise<void>;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=tx.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tx.d.ts","sourceRoot":"","sources":["../../src/core/tx.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAAU;IAEzB,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC;IAC1B,SAAS,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACtC,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC;gBAG5B,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,WAAW,EACnB,QAAQ,EAAE,iBAAiB;IAQhB,QAAQ,CAAC,EACpB,UAAU,EACV,gBAAgB,EAChB,MAAM,GACP,EAAE;QACD,UAAU,EAAE,MAAM,CAAC;QACnB,gBAAgB,EAAE,MAAM,CAAC;QACzB,MAAM,EAAE,MAAM,CAAC;KAChB;IAmBY,aAAa,CAAC,EAAE,SAAS,EAAE,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE;IAYlD,oBAAoB,CAAC,EAAE,OAAO,EAAE,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE;IAYrD,2BAA2B,CAAC,EACvC,UAAU,EACV,SAAS,GACV,EAAE,cAAc;IAeJ,0BAA0B,CAAC,EACtC,UAAU,EACV,SAAS,GACV,EAAE,cAAc;IAaJ,gBAAgB,CAAC,EAC5B,MAAM,GACP,EAAE;QACD,MAAM,EAAE;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;KAC3C;IAYY,kBAAkB,CAAC,EAC9B,GAAG,EACH,SAAS,GACV,EAAE;QACD,GAAG,EAAE,MAAM,CAAC;QACZ,SAAS,EAAE,MAAM,CAAC;KACnB;IAUY,aAAa;IAWb,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE;IAYtC,WAAW,CAAC,EACvB,GAAG,EACH,SAAS,GACV,EAAE;QACD,GAAG,EAAE,MAAM,CAAC;QACZ,SAAS,EAAE,MAAM,CAAC;KACnB;IAUY,uBAAuB,CAAC,EACnC,GAAG,EACH,sBAAsB,GACvB,EAAE;QACD,GAAG,EAAE,MAAM,CAAC;QACZ,sBAAsB,EAAE;YACtB,aAAa,EAAE,MAAM,CAAC;YACtB,UAAU,EAAE;gBACV,mBAAmB,EAAE,MAAM,CAAC;gBAC5B,SAAS,EAAE,MAAM,CAAC;aACnB,CAAC;YACF,YAAY,EAAE,MAAM,CAAC;SACtB,CAAC;KACH;IAUY,eAAe,CAAC,EAC3B,OAAO,EACP,SAAS,GACV,EAAE;QACD,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;KACnB;IAUY,uBAAuB,CAAC,EAAE,OAAO,EAAE,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE;IAYxD,eAAe,CAAC,EAC3B,OAAO,EACP,IAAI,GACL,EAAE;QACD,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;KACd;IAUY,cAAc,CAAC,EAC1B,OAAO,EACP,IAAI,GACL,EAAE;QACD,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;KACd;IAUY,aAAa,CAAC,EACzB,OAAO,EACP,GAAG,GACJ,EAAE;QACD,OAAO,EAAE,MAAM,CAAC;QAChB,GAAG,EAAE,MAAM,CAAC;KACb;CASF"}
|