@hyperlane-xyz/radix-sdk 27.0.0 → 28.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/dist/clients/protocol.d.ts +9 -0
- package/dist/clients/protocol.d.ts.map +1 -1
- package/dist/clients/protocol.js +35 -52
- package/dist/clients/protocol.js.map +1 -1
- package/dist/clients/provider.d.ts.map +1 -1
- package/dist/clients/provider.js +8 -2
- package/dist/clients/provider.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/mailbox/mailbox-artifact-manager.d.ts +15 -0
- package/dist/mailbox/mailbox-artifact-manager.d.ts.map +1 -0
- package/dist/mailbox/mailbox-artifact-manager.js +23 -0
- package/dist/mailbox/mailbox-artifact-manager.js.map +1 -0
- package/dist/mailbox/mailbox-query.d.ts +3 -3
- package/dist/mailbox/mailbox-query.d.ts.map +1 -1
- package/dist/mailbox/mailbox-query.js +4 -4
- package/dist/mailbox/mailbox-query.js.map +1 -1
- package/dist/mailbox/mailbox.d.ts +24 -0
- package/dist/mailbox/mailbox.d.ts.map +1 -0
- package/dist/mailbox/mailbox.js +171 -0
- package/dist/mailbox/mailbox.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 +254 -0
- package/dist/tests/mailbox.e2e-test.js.map +1 -0
- package/dist/tests/validator-announce.e2e-test.d.ts +2 -0
- package/dist/tests/validator-announce.e2e-test.d.ts.map +1 -0
- package/dist/tests/validator-announce.e2e-test.js +116 -0
- package/dist/tests/validator-announce.e2e-test.js.map +1 -0
- package/dist/utils/base-query.d.ts +12 -0
- package/dist/utils/base-query.d.ts.map +1 -1
- package/dist/utils/base-query.js +14 -0
- package/dist/utils/base-query.js.map +1 -1
- package/dist/validator-announce/validator-announce-artifact-manager.d.ts +14 -0
- package/dist/validator-announce/validator-announce-artifact-manager.d.ts.map +1 -0
- package/dist/validator-announce/validator-announce-artifact-manager.js +21 -0
- package/dist/validator-announce/validator-announce-artifact-manager.js.map +1 -0
- package/dist/validator-announce/validator-announce-query.d.ts +6 -0
- package/dist/validator-announce/validator-announce-query.d.ts.map +1 -0
- package/dist/validator-announce/validator-announce-query.js +10 -0
- package/dist/validator-announce/validator-announce-query.js.map +1 -0
- package/dist/validator-announce/validator-announce.d.ts +23 -0
- package/dist/validator-announce/validator-announce.d.ts.map +1 -0
- package/dist/validator-announce/validator-announce.js +52 -0
- package/dist/validator-announce/validator-announce.js.map +1 -0
- package/package.json +7 -7
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import { ArtifactState, } from '@hyperlane-xyz/provider-sdk/artifact';
|
|
2
|
+
import { ZERO_ADDRESS_HEX_32, eqAddressRadix, eqOptionalAddress, isEmptyAddress, } from '@hyperlane-xyz/utils';
|
|
3
|
+
import { getMailboxConfig } from './mailbox-query.js';
|
|
4
|
+
import { getCreateMailboxTx, getSetMailboxDefaultHookTx, getSetMailboxDefaultIsmTx, getSetMailboxOwnerTx, getSetMailboxRequiredHookTx, } from './mailbox-tx.js';
|
|
5
|
+
export class RadixMailboxReader {
|
|
6
|
+
gateway;
|
|
7
|
+
constructor(gateway) {
|
|
8
|
+
this.gateway = gateway;
|
|
9
|
+
}
|
|
10
|
+
async read(address) {
|
|
11
|
+
const mailboxConfig = await getMailboxConfig(this.gateway, address);
|
|
12
|
+
return {
|
|
13
|
+
artifactState: ArtifactState.DEPLOYED,
|
|
14
|
+
config: {
|
|
15
|
+
owner: mailboxConfig.owner,
|
|
16
|
+
defaultIsm: {
|
|
17
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
18
|
+
deployed: {
|
|
19
|
+
address: mailboxConfig.defaultIsm || ZERO_ADDRESS_HEX_32,
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
defaultHook: {
|
|
23
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
24
|
+
deployed: {
|
|
25
|
+
address: mailboxConfig.defaultHook || ZERO_ADDRESS_HEX_32,
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
requiredHook: {
|
|
29
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
30
|
+
deployed: {
|
|
31
|
+
address: mailboxConfig.requiredHook || ZERO_ADDRESS_HEX_32,
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
deployed: {
|
|
36
|
+
address: mailboxConfig.address,
|
|
37
|
+
domainId: mailboxConfig.localDomain,
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
export class RadixMailboxWriter extends RadixMailboxReader {
|
|
43
|
+
signer;
|
|
44
|
+
base;
|
|
45
|
+
domainId;
|
|
46
|
+
constructor(gateway, signer, base, domainId) {
|
|
47
|
+
super(gateway);
|
|
48
|
+
this.signer = signer;
|
|
49
|
+
this.base = base;
|
|
50
|
+
this.domainId = domainId;
|
|
51
|
+
}
|
|
52
|
+
async create(artifact) {
|
|
53
|
+
const { config } = artifact;
|
|
54
|
+
const allReceipts = [];
|
|
55
|
+
// Extract addresses from artifact references
|
|
56
|
+
const defaultIsmAddress = config.defaultIsm.deployed.address;
|
|
57
|
+
const defaultHookAddress = config.defaultHook.deployed.address;
|
|
58
|
+
const requiredHookAddress = config.requiredHook.deployed.address;
|
|
59
|
+
const createTx = await getCreateMailboxTx(this.base, this.signer.getAddress(), this.domainId);
|
|
60
|
+
const createReceipt = await this.signer.signAndBroadcast(createTx);
|
|
61
|
+
const address = await this.base.getNewComponent(createReceipt);
|
|
62
|
+
allReceipts.push(createReceipt);
|
|
63
|
+
// Set default ISM (only if address is set)
|
|
64
|
+
if (!isEmptyAddress(defaultIsmAddress)) {
|
|
65
|
+
const setIsmTx = await getSetMailboxDefaultIsmTx(this.base, this.signer.getAddress(), {
|
|
66
|
+
mailboxAddress: address,
|
|
67
|
+
ismAddress: defaultIsmAddress,
|
|
68
|
+
});
|
|
69
|
+
const ismReceipt = await this.signer.signAndBroadcast(setIsmTx);
|
|
70
|
+
allReceipts.push(ismReceipt);
|
|
71
|
+
}
|
|
72
|
+
// Set default hook (only if address is set)
|
|
73
|
+
if (!isEmptyAddress(defaultHookAddress)) {
|
|
74
|
+
const setDefaultHookTx = await getSetMailboxDefaultHookTx(this.base, this.signer.getAddress(), {
|
|
75
|
+
mailboxAddress: address,
|
|
76
|
+
hookAddress: defaultHookAddress,
|
|
77
|
+
});
|
|
78
|
+
const defaultHookReceipt = await this.signer.signAndBroadcast(setDefaultHookTx);
|
|
79
|
+
allReceipts.push(defaultHookReceipt);
|
|
80
|
+
}
|
|
81
|
+
// Set required hook (only if address is set)
|
|
82
|
+
if (!isEmptyAddress(requiredHookAddress)) {
|
|
83
|
+
const setRequiredHookTx = await getSetMailboxRequiredHookTx(this.base, this.signer.getAddress(), {
|
|
84
|
+
mailboxAddress: address,
|
|
85
|
+
hookAddress: requiredHookAddress,
|
|
86
|
+
});
|
|
87
|
+
const requiredHookReceipt = await this.signer.signAndBroadcast(setRequiredHookTx);
|
|
88
|
+
allReceipts.push(requiredHookReceipt);
|
|
89
|
+
}
|
|
90
|
+
// Note: Ownership is NOT transferred during creation. The deployer retains
|
|
91
|
+
// ownership to allow setting ISM and hooks after initial deployment, which
|
|
92
|
+
// require owner permissions. Use update() to transfer ownership to the
|
|
93
|
+
// intended owner once all configuration is complete.
|
|
94
|
+
const deployedArtifact = {
|
|
95
|
+
artifactState: ArtifactState.DEPLOYED,
|
|
96
|
+
config: {
|
|
97
|
+
...artifact.config,
|
|
98
|
+
owner: this.signer.getAddress(),
|
|
99
|
+
},
|
|
100
|
+
deployed: {
|
|
101
|
+
address,
|
|
102
|
+
domainId: this.domainId,
|
|
103
|
+
},
|
|
104
|
+
};
|
|
105
|
+
return [deployedArtifact, allReceipts];
|
|
106
|
+
}
|
|
107
|
+
async update(artifact) {
|
|
108
|
+
const { config, deployed } = artifact;
|
|
109
|
+
const updateTxs = [];
|
|
110
|
+
// Read current state
|
|
111
|
+
const currentState = await this.read(deployed.address);
|
|
112
|
+
// Extract addresses from artifact references
|
|
113
|
+
const expectedDefaultIsmAddress = config.defaultIsm.deployed.address;
|
|
114
|
+
const expectedDefaultHookAddress = config.defaultHook.deployed.address;
|
|
115
|
+
const expectedRequiredHookAddress = config.requiredHook.deployed.address;
|
|
116
|
+
// Extract addresses from current state
|
|
117
|
+
const currentDefaultIsmAddress = currentState.config.defaultIsm.deployed.address;
|
|
118
|
+
const currentDefaultHookAddress = currentState.config.defaultHook.deployed.address;
|
|
119
|
+
const currentRequiredHookAddress = currentState.config.requiredHook.deployed.address;
|
|
120
|
+
// Update default ISM if changed
|
|
121
|
+
if (!eqOptionalAddress(currentDefaultIsmAddress, expectedDefaultIsmAddress, eqAddressRadix)) {
|
|
122
|
+
const setIsmTx = await getSetMailboxDefaultIsmTx(this.base, this.signer.getAddress(), {
|
|
123
|
+
mailboxAddress: deployed.address,
|
|
124
|
+
ismAddress: expectedDefaultIsmAddress,
|
|
125
|
+
});
|
|
126
|
+
updateTxs.push({
|
|
127
|
+
annotation: `Update mailbox default ISM to ${expectedDefaultIsmAddress}`,
|
|
128
|
+
networkId: this.base.getNetworkId(),
|
|
129
|
+
manifest: setIsmTx,
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
// Update default hook if changed
|
|
133
|
+
if (!eqOptionalAddress(currentDefaultHookAddress, expectedDefaultHookAddress, eqAddressRadix)) {
|
|
134
|
+
const setDefaultHookTx = await getSetMailboxDefaultHookTx(this.base, this.signer.getAddress(), {
|
|
135
|
+
mailboxAddress: deployed.address,
|
|
136
|
+
hookAddress: expectedDefaultHookAddress,
|
|
137
|
+
});
|
|
138
|
+
updateTxs.push({
|
|
139
|
+
annotation: `Update mailbox default hook to ${expectedDefaultHookAddress}`,
|
|
140
|
+
networkId: this.base.getNetworkId(),
|
|
141
|
+
manifest: setDefaultHookTx,
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
// Update required hook if changed
|
|
145
|
+
if (!eqOptionalAddress(currentRequiredHookAddress, expectedRequiredHookAddress, eqAddressRadix)) {
|
|
146
|
+
const setRequiredHookTx = await getSetMailboxRequiredHookTx(this.base, this.signer.getAddress(), {
|
|
147
|
+
mailboxAddress: deployed.address,
|
|
148
|
+
hookAddress: expectedRequiredHookAddress,
|
|
149
|
+
});
|
|
150
|
+
updateTxs.push({
|
|
151
|
+
annotation: `Update mailbox required hook to ${expectedRequiredHookAddress}`,
|
|
152
|
+
networkId: this.base.getNetworkId(),
|
|
153
|
+
manifest: setRequiredHookTx,
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
// Update owner if changed (do this last to avoid permission issues)
|
|
157
|
+
if (!eqAddressRadix(currentState.config.owner, config.owner)) {
|
|
158
|
+
const setOwnerTx = await getSetMailboxOwnerTx(this.base, this.gateway, this.signer.getAddress(), {
|
|
159
|
+
mailboxAddress: deployed.address,
|
|
160
|
+
newOwner: config.owner,
|
|
161
|
+
});
|
|
162
|
+
updateTxs.push({
|
|
163
|
+
annotation: `Transfer mailbox ownership to ${config.owner}`,
|
|
164
|
+
networkId: this.base.getNetworkId(),
|
|
165
|
+
manifest: setOwnerTx,
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
return updateTxs;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=mailbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mailbox.js","sourceRoot":"","sources":["../../src/mailbox/mailbox.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mailbox.e2e-test.d.ts","sourceRoot":"","sources":["../../src/tests/mailbox.e2e-test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
import { expect } from 'chai';
|
|
2
|
+
import { ArtifactState } from '@hyperlane-xyz/provider-sdk/artifact';
|
|
3
|
+
import { ZERO_ADDRESS_HEX_32, assert } from '@hyperlane-xyz/utils';
|
|
4
|
+
import { RadixSigner } from '../clients/signer.js';
|
|
5
|
+
import { RadixMailboxArtifactManager } from '../mailbox/mailbox-artifact-manager.js';
|
|
6
|
+
import { DEFAULT_E2E_TEST_TIMEOUT, TEST_RADIX_BURN_ADDRESS, TEST_RADIX_DEPLOYER_ADDRESS, TEST_RADIX_PRIVATE_KEY, } from '../testing/constants.js';
|
|
7
|
+
import { DEPLOYED_TEST_CHAIN_METADATA } from './e2e-test.setup.js';
|
|
8
|
+
describe('Radix Mailbox (e2e)', function () {
|
|
9
|
+
this.timeout(DEFAULT_E2E_TEST_TIMEOUT);
|
|
10
|
+
let radixSigner;
|
|
11
|
+
let artifactManager;
|
|
12
|
+
// Test domain ID for mailbox
|
|
13
|
+
const TEST_DOMAIN_ID = 999999;
|
|
14
|
+
// We'll create test ISM and Hook addresses (can be burn address for testing)
|
|
15
|
+
const TEST_ISM_ADDRESS = TEST_RADIX_BURN_ADDRESS;
|
|
16
|
+
const TEST_HOOK_ADDRESS = TEST_RADIX_BURN_ADDRESS;
|
|
17
|
+
before(async () => {
|
|
18
|
+
const rpcUrls = DEPLOYED_TEST_CHAIN_METADATA.rpcUrls?.map((url) => url.http) ?? [];
|
|
19
|
+
assert(rpcUrls.length > 0, 'Expected at least 1 rpc url for the tests');
|
|
20
|
+
radixSigner = (await RadixSigner.connectWithSigner(rpcUrls, TEST_RADIX_PRIVATE_KEY, {
|
|
21
|
+
metadata: {
|
|
22
|
+
chainId: DEPLOYED_TEST_CHAIN_METADATA.chainId,
|
|
23
|
+
gatewayUrls: DEPLOYED_TEST_CHAIN_METADATA.gatewayUrls,
|
|
24
|
+
packageAddress: DEPLOYED_TEST_CHAIN_METADATA.packageAddress,
|
|
25
|
+
},
|
|
26
|
+
}));
|
|
27
|
+
const gateway = radixSigner.gateway;
|
|
28
|
+
const base = radixSigner.base;
|
|
29
|
+
artifactManager = new RadixMailboxArtifactManager(gateway, base, TEST_DOMAIN_ID);
|
|
30
|
+
});
|
|
31
|
+
describe('Mailbox Artifact Operations', () => {
|
|
32
|
+
it('should create a mailbox with ISM and hooks', async () => {
|
|
33
|
+
const config = {
|
|
34
|
+
owner: TEST_RADIX_DEPLOYER_ADDRESS,
|
|
35
|
+
defaultIsm: {
|
|
36
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
37
|
+
deployed: { address: TEST_ISM_ADDRESS },
|
|
38
|
+
},
|
|
39
|
+
defaultHook: {
|
|
40
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
41
|
+
deployed: { address: TEST_HOOK_ADDRESS },
|
|
42
|
+
},
|
|
43
|
+
requiredHook: {
|
|
44
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
45
|
+
deployed: { address: TEST_HOOK_ADDRESS },
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
const writer = artifactManager.createWriter('mailbox', radixSigner);
|
|
49
|
+
const [result, receipts] = await writer.create({ config });
|
|
50
|
+
expect(result.artifactState).to.equal(ArtifactState.DEPLOYED);
|
|
51
|
+
expect(result.config.owner).to.equal(TEST_RADIX_DEPLOYER_ADDRESS);
|
|
52
|
+
expect(result.deployed.address).to.be.a('string').and.not.be.empty;
|
|
53
|
+
expect(result.deployed.domainId).to.equal(TEST_DOMAIN_ID);
|
|
54
|
+
expect(receipts).to.be.an('array').with.length.greaterThan(0);
|
|
55
|
+
// Verify all setters were called (create + 3 setters + optional owner transfer)
|
|
56
|
+
// Should be at least 4 receipts (create + setIsm + setDefaultHook + setRequiredHook)
|
|
57
|
+
expect(receipts.length).to.be.greaterThanOrEqual(4);
|
|
58
|
+
});
|
|
59
|
+
it('should skip optional mailbox setters when zero addresses are provided', async () => {
|
|
60
|
+
const zeroAddressConfig = {
|
|
61
|
+
owner: TEST_RADIX_DEPLOYER_ADDRESS,
|
|
62
|
+
defaultIsm: {
|
|
63
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
64
|
+
deployed: { address: ZERO_ADDRESS_HEX_32 },
|
|
65
|
+
},
|
|
66
|
+
defaultHook: {
|
|
67
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
68
|
+
deployed: { address: ZERO_ADDRESS_HEX_32 },
|
|
69
|
+
},
|
|
70
|
+
requiredHook: {
|
|
71
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
72
|
+
deployed: { address: ZERO_ADDRESS_HEX_32 },
|
|
73
|
+
},
|
|
74
|
+
};
|
|
75
|
+
const writer = artifactManager.createWriter('mailbox', radixSigner);
|
|
76
|
+
const [deployedMailbox, receipts] = await writer.create({
|
|
77
|
+
config: zeroAddressConfig,
|
|
78
|
+
});
|
|
79
|
+
expect(receipts).to.be.an('array').with.length(1);
|
|
80
|
+
const reader = artifactManager.createReader('mailbox');
|
|
81
|
+
const readMailbox = await reader.read(deployedMailbox.deployed.address);
|
|
82
|
+
expect(readMailbox.config.defaultIsm.deployed.address).to.equal(ZERO_ADDRESS_HEX_32);
|
|
83
|
+
expect(readMailbox.config.defaultHook.deployed.address).to.equal(ZERO_ADDRESS_HEX_32);
|
|
84
|
+
expect(readMailbox.config.requiredHook.deployed.address).to.equal(ZERO_ADDRESS_HEX_32);
|
|
85
|
+
});
|
|
86
|
+
it('should read a mailbox configuration from chain', async () => {
|
|
87
|
+
const config = {
|
|
88
|
+
owner: TEST_RADIX_DEPLOYER_ADDRESS,
|
|
89
|
+
defaultIsm: {
|
|
90
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
91
|
+
deployed: { address: TEST_ISM_ADDRESS },
|
|
92
|
+
},
|
|
93
|
+
defaultHook: {
|
|
94
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
95
|
+
deployed: { address: TEST_HOOK_ADDRESS },
|
|
96
|
+
},
|
|
97
|
+
requiredHook: {
|
|
98
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
99
|
+
deployed: { address: TEST_HOOK_ADDRESS },
|
|
100
|
+
},
|
|
101
|
+
};
|
|
102
|
+
const writer = artifactManager.createWriter('mailbox', radixSigner);
|
|
103
|
+
const [deployedMailbox] = await writer.create({ config });
|
|
104
|
+
const reader = artifactManager.createReader('mailbox');
|
|
105
|
+
const readMailbox = await reader.read(deployedMailbox.deployed.address);
|
|
106
|
+
expect(readMailbox.artifactState).to.equal(ArtifactState.DEPLOYED);
|
|
107
|
+
expect(readMailbox.config.owner).to.equal(TEST_RADIX_DEPLOYER_ADDRESS);
|
|
108
|
+
expect(readMailbox.deployed.address).to.equal(deployedMailbox.deployed.address);
|
|
109
|
+
expect(readMailbox.deployed.domainId).to.equal(TEST_DOMAIN_ID);
|
|
110
|
+
// Verify ISM and hooks are set correctly
|
|
111
|
+
expect(readMailbox.config.defaultIsm.deployed.address).to.equal(TEST_ISM_ADDRESS);
|
|
112
|
+
expect(readMailbox.config.defaultHook.deployed.address).to.equal(TEST_HOOK_ADDRESS);
|
|
113
|
+
expect(readMailbox.config.requiredHook.deployed.address).to.equal(TEST_HOOK_ADDRESS);
|
|
114
|
+
});
|
|
115
|
+
it('should update mailbox when ISM changes', async () => {
|
|
116
|
+
// Create initial mailbox
|
|
117
|
+
const initialConfig = {
|
|
118
|
+
owner: TEST_RADIX_DEPLOYER_ADDRESS,
|
|
119
|
+
defaultIsm: {
|
|
120
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
121
|
+
deployed: { address: TEST_ISM_ADDRESS },
|
|
122
|
+
},
|
|
123
|
+
defaultHook: {
|
|
124
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
125
|
+
deployed: { address: TEST_HOOK_ADDRESS },
|
|
126
|
+
},
|
|
127
|
+
requiredHook: {
|
|
128
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
129
|
+
deployed: { address: TEST_HOOK_ADDRESS },
|
|
130
|
+
},
|
|
131
|
+
};
|
|
132
|
+
const writer = artifactManager.createWriter('mailbox', radixSigner);
|
|
133
|
+
const [deployedMailbox] = await writer.create({ config: initialConfig });
|
|
134
|
+
// Update with new ISM address (use deployer address as different address)
|
|
135
|
+
const newIsmAddress = TEST_RADIX_DEPLOYER_ADDRESS;
|
|
136
|
+
const updatedConfig = {
|
|
137
|
+
owner: TEST_RADIX_DEPLOYER_ADDRESS,
|
|
138
|
+
defaultIsm: {
|
|
139
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
140
|
+
deployed: { address: newIsmAddress },
|
|
141
|
+
},
|
|
142
|
+
defaultHook: {
|
|
143
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
144
|
+
deployed: { address: TEST_HOOK_ADDRESS },
|
|
145
|
+
},
|
|
146
|
+
requiredHook: {
|
|
147
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
148
|
+
deployed: { address: TEST_HOOK_ADDRESS },
|
|
149
|
+
},
|
|
150
|
+
};
|
|
151
|
+
const updateTxs = await writer.update({
|
|
152
|
+
artifactState: ArtifactState.DEPLOYED,
|
|
153
|
+
config: updatedConfig,
|
|
154
|
+
deployed: deployedMailbox.deployed,
|
|
155
|
+
});
|
|
156
|
+
// Should have 1 transaction to update the ISM
|
|
157
|
+
expect(updateTxs).to.be.an('array').with.length(1);
|
|
158
|
+
expect(updateTxs[0].annotation).to.include('default ISM');
|
|
159
|
+
});
|
|
160
|
+
it('should update mailbox when owner changes', async () => {
|
|
161
|
+
// Create initial mailbox
|
|
162
|
+
const initialConfig = {
|
|
163
|
+
owner: TEST_RADIX_DEPLOYER_ADDRESS,
|
|
164
|
+
defaultIsm: {
|
|
165
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
166
|
+
deployed: { address: TEST_ISM_ADDRESS },
|
|
167
|
+
},
|
|
168
|
+
defaultHook: {
|
|
169
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
170
|
+
deployed: { address: TEST_HOOK_ADDRESS },
|
|
171
|
+
},
|
|
172
|
+
requiredHook: {
|
|
173
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
174
|
+
deployed: { address: TEST_HOOK_ADDRESS },
|
|
175
|
+
},
|
|
176
|
+
};
|
|
177
|
+
const writer = artifactManager.createWriter('mailbox', radixSigner);
|
|
178
|
+
const [deployedMailbox] = await writer.create({ config: initialConfig });
|
|
179
|
+
// Update with new owner
|
|
180
|
+
const newOwner = TEST_RADIX_BURN_ADDRESS;
|
|
181
|
+
const updatedConfig = {
|
|
182
|
+
owner: newOwner,
|
|
183
|
+
defaultIsm: {
|
|
184
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
185
|
+
deployed: { address: TEST_ISM_ADDRESS },
|
|
186
|
+
},
|
|
187
|
+
defaultHook: {
|
|
188
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
189
|
+
deployed: { address: TEST_HOOK_ADDRESS },
|
|
190
|
+
},
|
|
191
|
+
requiredHook: {
|
|
192
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
193
|
+
deployed: { address: TEST_HOOK_ADDRESS },
|
|
194
|
+
},
|
|
195
|
+
};
|
|
196
|
+
const updateTxs = await writer.update({
|
|
197
|
+
artifactState: ArtifactState.DEPLOYED,
|
|
198
|
+
config: updatedConfig,
|
|
199
|
+
deployed: deployedMailbox.deployed,
|
|
200
|
+
});
|
|
201
|
+
// Should have 1 transaction to transfer ownership
|
|
202
|
+
expect(updateTxs).to.be.an('array').with.length(1);
|
|
203
|
+
expect(updateTxs[0].annotation).to.include('ownership');
|
|
204
|
+
});
|
|
205
|
+
it('should return no transactions when mailbox state matches desired state', async () => {
|
|
206
|
+
// Create mailbox
|
|
207
|
+
const config = {
|
|
208
|
+
owner: TEST_RADIX_DEPLOYER_ADDRESS,
|
|
209
|
+
defaultIsm: {
|
|
210
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
211
|
+
deployed: { address: TEST_ISM_ADDRESS },
|
|
212
|
+
},
|
|
213
|
+
defaultHook: {
|
|
214
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
215
|
+
deployed: { address: TEST_HOOK_ADDRESS },
|
|
216
|
+
},
|
|
217
|
+
requiredHook: {
|
|
218
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
219
|
+
deployed: { address: TEST_HOOK_ADDRESS },
|
|
220
|
+
},
|
|
221
|
+
};
|
|
222
|
+
const writer = artifactManager.createWriter('mailbox', radixSigner);
|
|
223
|
+
const [deployedMailbox] = await writer.create({ config });
|
|
224
|
+
// Update with same config
|
|
225
|
+
const updateTxs = await writer.update(deployedMailbox);
|
|
226
|
+
// Should have no update transactions since nothing changed
|
|
227
|
+
expect(updateTxs).to.be.an('array').with.length(0);
|
|
228
|
+
});
|
|
229
|
+
it('should use readMailbox convenience method', async () => {
|
|
230
|
+
const config = {
|
|
231
|
+
owner: TEST_RADIX_DEPLOYER_ADDRESS,
|
|
232
|
+
defaultIsm: {
|
|
233
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
234
|
+
deployed: { address: TEST_ISM_ADDRESS },
|
|
235
|
+
},
|
|
236
|
+
defaultHook: {
|
|
237
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
238
|
+
deployed: { address: TEST_HOOK_ADDRESS },
|
|
239
|
+
},
|
|
240
|
+
requiredHook: {
|
|
241
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
242
|
+
deployed: { address: TEST_HOOK_ADDRESS },
|
|
243
|
+
},
|
|
244
|
+
};
|
|
245
|
+
const writer = artifactManager.createWriter('mailbox', radixSigner);
|
|
246
|
+
const [deployedMailbox] = await writer.create({ config });
|
|
247
|
+
// Use the convenience method
|
|
248
|
+
const readMailbox = await artifactManager.readMailbox(deployedMailbox.deployed.address);
|
|
249
|
+
expect(readMailbox.artifactState).to.equal(ArtifactState.DEPLOYED);
|
|
250
|
+
expect(readMailbox.deployed.address).to.equal(deployedMailbox.deployed.address);
|
|
251
|
+
});
|
|
252
|
+
});
|
|
253
|
+
});
|
|
254
|
+
//# sourceMappingURL=mailbox.e2e-test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mailbox.e2e-test.js","sourceRoot":"","sources":["../../src/tests/mailbox.e2e-test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validator-announce.e2e-test.d.ts","sourceRoot":"","sources":["../../src/tests/validator-announce.e2e-test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { expect } from 'chai';
|
|
2
|
+
import { ArtifactState } from '@hyperlane-xyz/provider-sdk/artifact';
|
|
3
|
+
import { assert } from '@hyperlane-xyz/utils';
|
|
4
|
+
import { RadixSigner } from '../clients/signer.js';
|
|
5
|
+
import { RadixMailboxArtifactManager } from '../mailbox/mailbox-artifact-manager.js';
|
|
6
|
+
import { DEFAULT_E2E_TEST_TIMEOUT, TEST_RADIX_BURN_ADDRESS, TEST_RADIX_DEPLOYER_ADDRESS, TEST_RADIX_PRIVATE_KEY, } from '../testing/constants.js';
|
|
7
|
+
import { RadixValidatorAnnounceArtifactManager } from '../validator-announce/validator-announce-artifact-manager.js';
|
|
8
|
+
import { DEPLOYED_TEST_CHAIN_METADATA } from './e2e-test.setup.js';
|
|
9
|
+
describe('Radix ValidatorAnnounce (e2e)', function () {
|
|
10
|
+
this.timeout(DEFAULT_E2E_TEST_TIMEOUT);
|
|
11
|
+
let radixSigner;
|
|
12
|
+
let artifactManager;
|
|
13
|
+
let mailboxArtifactManager;
|
|
14
|
+
// Will be set after creating a test mailbox
|
|
15
|
+
let testMailboxAddress;
|
|
16
|
+
const TEST_DOMAIN_ID = 999998;
|
|
17
|
+
before(async () => {
|
|
18
|
+
const rpcUrls = DEPLOYED_TEST_CHAIN_METADATA.rpcUrls?.map((url) => url.http) ?? [];
|
|
19
|
+
assert(rpcUrls.length > 0, 'Expected at least 1 rpc url for the tests');
|
|
20
|
+
radixSigner = (await RadixSigner.connectWithSigner(rpcUrls, TEST_RADIX_PRIVATE_KEY, {
|
|
21
|
+
metadata: {
|
|
22
|
+
chainId: DEPLOYED_TEST_CHAIN_METADATA.chainId,
|
|
23
|
+
gatewayUrls: DEPLOYED_TEST_CHAIN_METADATA.gatewayUrls,
|
|
24
|
+
packageAddress: DEPLOYED_TEST_CHAIN_METADATA.packageAddress,
|
|
25
|
+
},
|
|
26
|
+
}));
|
|
27
|
+
const gateway = radixSigner.gateway;
|
|
28
|
+
const base = radixSigner.base;
|
|
29
|
+
artifactManager = new RadixValidatorAnnounceArtifactManager(gateway, base);
|
|
30
|
+
mailboxArtifactManager = new RadixMailboxArtifactManager(gateway, base, TEST_DOMAIN_ID);
|
|
31
|
+
// Create a test mailbox for validator announce to reference
|
|
32
|
+
const mailboxConfig = {
|
|
33
|
+
owner: TEST_RADIX_DEPLOYER_ADDRESS,
|
|
34
|
+
defaultIsm: {
|
|
35
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
36
|
+
deployed: { address: TEST_RADIX_BURN_ADDRESS },
|
|
37
|
+
},
|
|
38
|
+
defaultHook: {
|
|
39
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
40
|
+
deployed: { address: TEST_RADIX_BURN_ADDRESS },
|
|
41
|
+
},
|
|
42
|
+
requiredHook: {
|
|
43
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
44
|
+
deployed: { address: TEST_RADIX_BURN_ADDRESS },
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
const mailboxWriter = mailboxArtifactManager.createWriter('mailbox', radixSigner);
|
|
48
|
+
const [deployedMailbox] = await mailboxWriter.create({
|
|
49
|
+
config: mailboxConfig,
|
|
50
|
+
});
|
|
51
|
+
testMailboxAddress = deployedMailbox.deployed.address;
|
|
52
|
+
});
|
|
53
|
+
describe('ValidatorAnnounce Artifact Operations', () => {
|
|
54
|
+
it('should create a validator announce contract', async () => {
|
|
55
|
+
const config = {
|
|
56
|
+
mailboxAddress: testMailboxAddress,
|
|
57
|
+
};
|
|
58
|
+
const writer = artifactManager.createWriter('validatorAnnounce', radixSigner);
|
|
59
|
+
const [result, receipts] = await writer.create({ config });
|
|
60
|
+
expect(result.artifactState).to.equal(ArtifactState.DEPLOYED);
|
|
61
|
+
expect(result.config.mailboxAddress).to.equal(testMailboxAddress);
|
|
62
|
+
expect(result.deployed.address).to.be.a('string').and.not.be.empty;
|
|
63
|
+
expect(receipts).to.be.an('array').with.length(1);
|
|
64
|
+
});
|
|
65
|
+
it('should read a validator announce configuration from chain', async () => {
|
|
66
|
+
const config = {
|
|
67
|
+
mailboxAddress: testMailboxAddress,
|
|
68
|
+
};
|
|
69
|
+
const writer = artifactManager.createWriter('validatorAnnounce', radixSigner);
|
|
70
|
+
const [deployedValidatorAnnounce] = await writer.create({ config });
|
|
71
|
+
const reader = artifactManager.createReader('validatorAnnounce');
|
|
72
|
+
const readValidatorAnnounce = await reader.read(deployedValidatorAnnounce.deployed.address);
|
|
73
|
+
expect(readValidatorAnnounce.artifactState).to.equal(ArtifactState.DEPLOYED);
|
|
74
|
+
expect(readValidatorAnnounce.config.mailboxAddress).to.equal(testMailboxAddress);
|
|
75
|
+
expect(readValidatorAnnounce.deployed.address).to.equal(deployedValidatorAnnounce.deployed.address);
|
|
76
|
+
});
|
|
77
|
+
it('should return no transactions when calling update (immutable)', async () => {
|
|
78
|
+
const config = {
|
|
79
|
+
mailboxAddress: testMailboxAddress,
|
|
80
|
+
};
|
|
81
|
+
const writer = artifactManager.createWriter('validatorAnnounce', radixSigner);
|
|
82
|
+
const [deployedValidatorAnnounce] = await writer.create({ config });
|
|
83
|
+
// ValidatorAnnounce is immutable - update should return empty array
|
|
84
|
+
const txs = await writer.update(deployedValidatorAnnounce);
|
|
85
|
+
expect(txs).to.be.an('array').with.length(0);
|
|
86
|
+
});
|
|
87
|
+
it('should use readValidatorAnnounce convenience method', async () => {
|
|
88
|
+
const config = {
|
|
89
|
+
mailboxAddress: testMailboxAddress,
|
|
90
|
+
};
|
|
91
|
+
const writer = artifactManager.createWriter('validatorAnnounce', radixSigner);
|
|
92
|
+
const [deployedValidatorAnnounce] = await writer.create({ config });
|
|
93
|
+
// Use the convenience method
|
|
94
|
+
const readValidatorAnnounce = await artifactManager.readValidatorAnnounce(deployedValidatorAnnounce.deployed.address);
|
|
95
|
+
expect(readValidatorAnnounce.artifactState).to.equal(ArtifactState.DEPLOYED);
|
|
96
|
+
expect(readValidatorAnnounce.config.mailboxAddress).to.equal(testMailboxAddress);
|
|
97
|
+
expect(readValidatorAnnounce.deployed.address).to.equal(deployedValidatorAnnounce.deployed.address);
|
|
98
|
+
});
|
|
99
|
+
it('should create validator announce with same mailbox address', async () => {
|
|
100
|
+
const config1 = {
|
|
101
|
+
mailboxAddress: testMailboxAddress,
|
|
102
|
+
};
|
|
103
|
+
const config2 = {
|
|
104
|
+
mailboxAddress: testMailboxAddress,
|
|
105
|
+
};
|
|
106
|
+
const writer = artifactManager.createWriter('validatorAnnounce', radixSigner);
|
|
107
|
+
const [result1] = await writer.create({ config: config1 });
|
|
108
|
+
const [result2] = await writer.create({ config: config2 });
|
|
109
|
+
// Different validator announce instances should have different addresses
|
|
110
|
+
expect(result1.deployed.address).to.not.equal(result2.deployed.address);
|
|
111
|
+
// But both should have the same mailbox address
|
|
112
|
+
expect(result1.config.mailboxAddress).to.equal(result2.config.mailboxAddress);
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
//# sourceMappingURL=validator-announce.e2e-test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validator-announce.e2e-test.js","sourceRoot":"","sources":["../../src/tests/validator-announce.e2e-test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAE9B,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAGrE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,2BAA2B,EAAE,MAAM,wCAAwC,CAAC;AACrF,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,2BAA2B,EAC3B,sBAAsB,GACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,qCAAqC,EAAE,MAAM,8DAA8D,CAAC;AAErH,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AAEnE,QAAQ,CAAC,+BAA+B,EAAE;IACxC,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;IAEvC,IAAI,WAAwB,CAAC;IAC7B,IAAI,eAAsD,CAAC;IAC3D,IAAI,sBAAmD,CAAC;IAExD,4CAA4C;IAC5C,IAAI,kBAA0B,CAAC;IAE/B,MAAM,cAAc,GAAG,MAAM,CAAC;IAE9B,MAAM,CAAC,KAAK,IAAI,EAAE;QAChB,MAAM,OAAO,GACX,4BAA4B,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACrE,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,2CAA2C,CAAC,CAAC;QAExE,WAAW,GAAG,CAAC,MAAM,WAAW,CAAC,iBAAiB,CAChD,OAAO,EACP,sBAAsB,EACtB;YACE,QAAQ,EAAE;gBACR,OAAO,EAAE,4BAA4B,CAAC,OAAO;gBAC7C,WAAW,EAAE,4BAA4B,CAAC,WAAW;gBACrD,cAAc,EAAE,4BAA4B,CAAC,cAAc;aAC5D;SACF,CACF,CAAgB,CAAC;QAElB,MAAM,OAAO,GAAI,WAAmB,CAAC,OAAO,CAAC;QAC7C,MAAM,IAAI,GAAI,WAAmB,CAAC,IAAI,CAAC;QACvC,eAAe,GAAG,IAAI,qCAAqC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC3E,sBAAsB,GAAG,IAAI,2BAA2B,CACtD,OAAO,EACP,IAAI,EACJ,cAAc,CACf,CAAC;QAEF,4DAA4D;QAC5D,MAAM,aAAa,GAAmB;YACpC,KAAK,EAAE,2BAA2B;YAClC,UAAU,EAAE;gBACV,aAAa,EAAE,aAAa,CAAC,SAAS;gBACtC,QAAQ,EAAE,EAAE,OAAO,EAAE,uBAAuB,EAAE;aAC/C;YACD,WAAW,EAAE;gBACX,aAAa,EAAE,aAAa,CAAC,SAAS;gBACtC,QAAQ,EAAE,EAAE,OAAO,EAAE,uBAAuB,EAAE;aAC/C;YACD,YAAY,EAAE;gBACZ,aAAa,EAAE,aAAa,CAAC,SAAS;gBACtC,QAAQ,EAAE,EAAE,OAAO,EAAE,uBAAuB,EAAE;aAC/C;SACF,CAAC;QAEF,MAAM,aAAa,GAAG,sBAAsB,CAAC,YAAY,CACvD,SAAS,EACT,WAAW,CACZ,CAAC;QACF,MAAM,CAAC,eAAe,CAAC,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC;YACnD,MAAM,EAAE,aAAa;SACtB,CAAC,CAAC;QACH,kBAAkB,GAAG,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,uCAAuC,EAAE,GAAG,EAAE;QACrD,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YAC3D,MAAM,MAAM,GAA+B;gBACzC,cAAc,EAAE,kBAAkB;aACnC,CAAC;YAEF,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,CACzC,mBAAmB,EACnB,WAAW,CACZ,CAAC;YACF,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;YAE3D,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC9D,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;YAClE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC;YACnE,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;YACzE,MAAM,MAAM,GAA+B;gBACzC,cAAc,EAAE,kBAAkB;aACnC,CAAC;YAEF,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,CACzC,mBAAmB,EACnB,WAAW,CACZ,CAAC;YACF,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;YAEpE,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;YACjE,MAAM,qBAAqB,GAAG,MAAM,MAAM,CAAC,IAAI,CAC7C,yBAAyB,CAAC,QAAQ,CAAC,OAAO,CAC3C,CAAC;YAEF,MAAM,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,KAAK,CAClD,aAAa,CAAC,QAAQ,CACvB,CAAC;YACF,MAAM,CAAC,qBAAqB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,KAAK,CAC1D,kBAAkB,CACnB,CAAC;YACF,MAAM,CAAC,qBAAqB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CACrD,yBAAyB,CAAC,QAAQ,CAAC,OAAO,CAC3C,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;YAC7E,MAAM,MAAM,GAA+B;gBACzC,cAAc,EAAE,kBAAkB;aACnC,CAAC;YAEF,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,CACzC,mBAAmB,EACnB,WAAW,CACZ,CAAC;YACF,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;YAEpE,oEAAoE;YACpE,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;YAC3D,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;YACnE,MAAM,MAAM,GAA+B;gBACzC,cAAc,EAAE,kBAAkB;aACnC,CAAC;YAEF,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,CACzC,mBAAmB,EACnB,WAAW,CACZ,CAAC;YACF,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;YAEpE,6BAA6B;YAC7B,MAAM,qBAAqB,GAAG,MAAM,eAAe,CAAC,qBAAqB,CACvE,yBAAyB,CAAC,QAAQ,CAAC,OAAO,CAC3C,CAAC;YAEF,MAAM,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,KAAK,CAClD,aAAa,CAAC,QAAQ,CACvB,CAAC;YACF,MAAM,CAAC,qBAAqB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,KAAK,CAC1D,kBAAkB,CACnB,CAAC;YACF,MAAM,CAAC,qBAAqB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CACrD,yBAAyB,CAAC,QAAQ,CAAC,OAAO,CAC3C,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;YAC1E,MAAM,OAAO,GAA+B;gBAC1C,cAAc,EAAE,kBAAkB;aACnC,CAAC;YAEF,MAAM,OAAO,GAA+B;gBAC1C,cAAc,EAAE,kBAAkB;aACnC,CAAC;YAEF,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,CACzC,mBAAmB,EACnB,WAAW,CACZ,CAAC;YAEF,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;YAC3D,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;YAE3D,yEAAyE;YACzE,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAExE,gDAAgD;YAChD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,KAAK,CAC5C,OAAO,CAAC,MAAM,CAAC,cAAc,CAC9B,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -137,6 +137,18 @@ export declare function tryGetFieldHexValueFromEntityState<T>(fieldName: string,
|
|
|
137
137
|
*/
|
|
138
138
|
export declare function getFieldHexValueFromEntityState(fieldName: string, entityAddress: string, entityState: EntityDetails['state']): string;
|
|
139
139
|
export declare function getFieldHexValueFromEntityState<T>(fieldName: string, entityAddress: string, entityState: EntityDetails['state'], formatter: (value: string) => T): T;
|
|
140
|
+
/**
|
|
141
|
+
* Extracts an optional field value from a Radix component's entity state.
|
|
142
|
+
*
|
|
143
|
+
* Similar to getFieldValueFromEntityState, but returns undefined instead of throwing
|
|
144
|
+
* if the field is not found or if it's an Option::None variant.
|
|
145
|
+
*
|
|
146
|
+
* @param fieldName - The name of the field to extract
|
|
147
|
+
* @param entityState - The component state containing the fields
|
|
148
|
+
* @returns The field value as a string, or undefined if not found/None
|
|
149
|
+
*/
|
|
150
|
+
export declare function getOptionalFieldValueFromEntityState(fieldName: string, entityState: EntityDetails['state']): string | undefined;
|
|
151
|
+
export declare function getOptionalFieldValueFromEntityState<T>(fieldName: string, entityState: EntityDetails['state'], formatter: (value: string) => T): T | undefined;
|
|
140
152
|
/**
|
|
141
153
|
* Extracts field elements (array values) from a Radix component's entity state.
|
|
142
154
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-query.d.ts","sourceRoot":"","sources":["../../src/utils/base-query.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"base-query.d.ts","sourceRoot":"","sources":["../../src/utils/base-query.ts"],"names":[],"mappings":"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"}
|