@hyperlane-xyz/deploy-sdk 3.0.1 → 3.1.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/AltVMCoreReader.d.ts +0 -2
- package/dist/AltVMCoreReader.d.ts.map +1 -1
- package/dist/AltVMCoreReader.js +5 -4
- package/dist/AltVMCoreReader.js.map +1 -1
- package/dist/core/core-artifact-reader.d.ts +49 -0
- package/dist/core/core-artifact-reader.d.ts.map +1 -0
- package/dist/core/core-artifact-reader.js +97 -0
- package/dist/core/core-artifact-reader.js.map +1 -0
- package/dist/hook/hook-reader.d.ts +5 -2
- package/dist/hook/hook-reader.d.ts.map +1 -1
- package/dist/hook/hook-reader.js +4 -3
- package/dist/hook/hook-reader.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/ism/generic-ism.d.ts.map +1 -1
- package/dist/ism/generic-ism.js +3 -40
- package/dist/ism/generic-ism.js.map +1 -1
- package/dist/warp/warp-reader.d.ts +0 -2
- package/dist/warp/warp-reader.d.ts.map +1 -1
- package/dist/warp/warp-reader.js +7 -5
- package/dist/warp/warp-reader.js.map +1 -1
- package/package.json +10 -10
|
@@ -3,14 +3,12 @@ import { ChainLookup, ChainMetadataForAltVM } from '@hyperlane-xyz/provider-sdk/
|
|
|
3
3
|
import { CoreModuleType, DerivedCoreConfig } from '@hyperlane-xyz/provider-sdk/core';
|
|
4
4
|
import { HypReader } from '@hyperlane-xyz/provider-sdk/module';
|
|
5
5
|
import { Address, Logger } from '@hyperlane-xyz/utils';
|
|
6
|
-
import { HookReader } from './hook/hook-reader.js';
|
|
7
6
|
export declare class AltVMCoreReader implements HypReader<CoreModuleType> {
|
|
8
7
|
protected readonly chainMetadata: ChainMetadataForAltVM;
|
|
9
8
|
protected readonly chainLookup: ChainLookup;
|
|
10
9
|
protected readonly provider: AltVM.IProvider;
|
|
11
10
|
protected readonly logger: Logger;
|
|
12
11
|
private readonly ismReader;
|
|
13
|
-
protected readonly hookReader: HookReader;
|
|
14
12
|
constructor(chainMetadata: ChainMetadataForAltVM, chainLookup: ChainLookup, provider: AltVM.IProvider);
|
|
15
13
|
read(address: string): Promise<DerivedCoreConfig>;
|
|
16
14
|
deriveCoreConfig(mailboxAddress: Address): Promise<DerivedCoreConfig>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AltVMCoreReader.d.ts","sourceRoot":"","sources":["../src/AltVMCoreReader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AACpD,OAAO,EACL,WAAW,EACX,qBAAqB,EACtB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,cAAc,EACd,iBAAiB,EAClB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,EAAc,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"AltVMCoreReader.d.ts","sourceRoot":"","sources":["../src/AltVMCoreReader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AACpD,OAAO,EACL,WAAW,EACX,qBAAqB,EACtB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,cAAc,EACd,iBAAiB,EAClB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,EAAc,MAAM,sBAAsB,CAAC;AAKnE,qBAAa,eAAgB,YAAW,SAAS,CAAC,cAAc,CAAC;IAO7D,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,qBAAqB;IACvD,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW;IAC3C,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS;IAR9C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAE9B;IACH,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;gBAGjB,aAAa,EAAE,qBAAqB,EACpC,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,KAAK,CAAC,SAAS;IAKxC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAIjD,gBAAgB,CAAC,cAAc,EAAE,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAgB5E"}
|
package/dist/AltVMCoreReader.js
CHANGED
|
@@ -9,12 +9,10 @@ export class AltVMCoreReader {
|
|
|
9
9
|
module: 'AltVMCoreReader',
|
|
10
10
|
});
|
|
11
11
|
ismReader;
|
|
12
|
-
hookReader;
|
|
13
12
|
constructor(chainMetadata, chainLookup, provider) {
|
|
14
13
|
this.chainMetadata = chainMetadata;
|
|
15
14
|
this.chainLookup = chainLookup;
|
|
16
15
|
this.provider = provider;
|
|
17
|
-
this.hookReader = createHookReader(this.chainMetadata, this.chainLookup);
|
|
18
16
|
this.ismReader = createIsmReader(this.chainMetadata, this.chainLookup);
|
|
19
17
|
}
|
|
20
18
|
async read(address) {
|
|
@@ -24,11 +22,14 @@ export class AltVMCoreReader {
|
|
|
24
22
|
const mailbox = await this.provider.getMailbox({
|
|
25
23
|
mailboxAddress: mailboxAddress,
|
|
26
24
|
});
|
|
25
|
+
const hookReader = createHookReader(this.chainMetadata, this.chainLookup, {
|
|
26
|
+
mailbox: mailboxAddress,
|
|
27
|
+
});
|
|
27
28
|
return {
|
|
28
29
|
owner: mailbox.owner,
|
|
29
30
|
defaultIsm: await this.ismReader.deriveIsmConfig(mailbox.defaultIsm),
|
|
30
|
-
defaultHook: await
|
|
31
|
-
requiredHook: await
|
|
31
|
+
defaultHook: await hookReader.deriveHookConfig(mailbox.defaultHook),
|
|
32
|
+
requiredHook: await hookReader.deriveHookConfig(mailbox.requiredHook),
|
|
32
33
|
};
|
|
33
34
|
}
|
|
34
35
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AltVMCoreReader.js","sourceRoot":"","sources":["../src/AltVMCoreReader.ts"],"names":[],"mappings":"AAUA,OAAO,EAAmB,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEnE,OAAO,
|
|
1
|
+
{"version":3,"file":"AltVMCoreReader.js","sourceRoot":"","sources":["../src/AltVMCoreReader.ts"],"names":[],"mappings":"AAUA,OAAO,EAAmB,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAa,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAElE,MAAM,OAAO,eAAe;IAOL;IACA;IACA;IARF,MAAM,GAAW,UAAU,CAAC,KAAK,CAAC;QACnD,MAAM,EAAE,iBAAiB;KAC1B,CAAC,CAAC;IACc,SAAS,CAAY;IAEtC,YACqB,aAAoC,EACpC,WAAwB,EACxB,QAAyB;QAFzB,kBAAa,GAAb,aAAa,CAAuB;QACpC,gBAAW,GAAX,WAAW,CAAa;QACxB,aAAQ,GAAR,QAAQ,CAAiB;QAE5C,IAAI,CAAC,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAe;QACxB,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,cAAuB;QAC5C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;YAC7C,cAAc,EAAE,cAAc;SAC/B,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,EAAE;YACxE,OAAO,EAAE,cAAc;SACxB,CAAC,CAAC;QAEH,OAAO;YACL,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,UAAU,EAAE,MAAM,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC;YACpE,WAAW,EAAE,MAAM,UAAU,CAAC,gBAAgB,CAAC,OAAO,CAAC,WAAW,CAAC;YACnE,YAAY,EAAE,MAAM,UAAU,CAAC,gBAAgB,CAAC,OAAO,CAAC,YAAY,CAAC;SACtE,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { ChainMetadataForAltVM } from '@hyperlane-xyz/provider-sdk';
|
|
2
|
+
import { ArtifactReader } from '@hyperlane-xyz/provider-sdk/artifact';
|
|
3
|
+
import { ChainLookup } from '@hyperlane-xyz/provider-sdk/chain';
|
|
4
|
+
import { DerivedCoreConfig } from '@hyperlane-xyz/provider-sdk/core';
|
|
5
|
+
import { DeployedMailboxAddress, DeployedMailboxArtifact, IRawMailboxArtifactManager, MailboxOnChain } from '@hyperlane-xyz/provider-sdk/mailbox';
|
|
6
|
+
import { Logger } from '@hyperlane-xyz/utils';
|
|
7
|
+
/**
|
|
8
|
+
* Core Artifact Reader - composite artifact reader that orchestrates mailbox, ISM, and hook readers.
|
|
9
|
+
*
|
|
10
|
+
* This implements the artifact API pattern at the "composite" level in deploy-sdk.
|
|
11
|
+
* It takes a mailbox address and returns a fully expanded MailboxOnChain artifact with
|
|
12
|
+
* all nested ISM and hook configurations read from the chain.
|
|
13
|
+
*
|
|
14
|
+
* Architecture:
|
|
15
|
+
* - Raw level: IRawMailboxArtifactManager (protocol-specific, in radix-sdk, cosmos-sdk, etc.)
|
|
16
|
+
* - Composite level: CoreArtifactReader (this class, in deploy-sdk)
|
|
17
|
+
*
|
|
18
|
+
* The raw mailbox reader returns UNDERIVED ISM/hook references (just addresses).
|
|
19
|
+
* This composite reader expands them into full DEPLOYED artifacts with complete configs.
|
|
20
|
+
*/
|
|
21
|
+
export declare class CoreArtifactReader implements ArtifactReader<MailboxOnChain, DeployedMailboxAddress> {
|
|
22
|
+
protected readonly mailboxArtifactManager: IRawMailboxArtifactManager;
|
|
23
|
+
protected readonly chainMetadata: ChainMetadataForAltVM;
|
|
24
|
+
protected readonly chainLookup: ChainLookup;
|
|
25
|
+
protected readonly logger: Logger;
|
|
26
|
+
private readonly ismReader;
|
|
27
|
+
constructor(mailboxArtifactManager: IRawMailboxArtifactManager, chainMetadata: ChainMetadataForAltVM, chainLookup: ChainLookup);
|
|
28
|
+
/**
|
|
29
|
+
* Read mailbox configuration and expand all nested ISM/hook configs.
|
|
30
|
+
*
|
|
31
|
+
* Takes a mailbox address, reads the raw mailbox config (which has UNDERIVED ISM/hook references),
|
|
32
|
+
* then recursively reads and expands all nested ISM and hook artifacts.
|
|
33
|
+
*
|
|
34
|
+
* @param mailboxAddress The deployed mailbox address
|
|
35
|
+
* @returns Fully expanded mailbox artifact with all nested configs in DEPLOYED state
|
|
36
|
+
*/
|
|
37
|
+
read(mailboxAddress: string): Promise<DeployedMailboxArtifact>;
|
|
38
|
+
/**
|
|
39
|
+
* Backward compatibility method: convert deployed mailbox artifact to DerivedCoreConfig.
|
|
40
|
+
*
|
|
41
|
+
* This allows CoreArtifactReader to be used as a drop-in replacement for AltVMCoreReader.
|
|
42
|
+
* Existing code expects the deriveCoreConfig() method returning DerivedCoreConfig format.
|
|
43
|
+
*
|
|
44
|
+
* @param mailboxAddress The deployed mailbox address
|
|
45
|
+
* @returns DerivedCoreConfig in the legacy format
|
|
46
|
+
*/
|
|
47
|
+
deriveCoreConfig(mailboxAddress: string): Promise<DerivedCoreConfig>;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=core-artifact-reader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core-artifact-reader.d.ts","sourceRoot":"","sources":["../../src/core/core-artifact-reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EACL,cAAc,EAEf,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAErE,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,0BAA0B,EAC1B,cAAc,EAEf,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,MAAM,EAA8B,MAAM,sBAAsB,CAAC;AAM1E;;;;;;;;;;;;;GAaG;AACH,qBAAa,kBAAmB,YAAW,cAAc,CACvD,cAAc,EACd,sBAAsB,CACvB;IAOG,SAAS,CAAC,QAAQ,CAAC,sBAAsB,EAAE,0BAA0B;IACrE,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,qBAAqB;IACvD,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW;IAR7C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAE9B;IACH,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;gBAGjB,sBAAsB,EAAE,0BAA0B,EAClD,aAAa,EAAE,qBAAqB,EACpC,WAAW,EAAE,WAAW;IAK7C;;;;;;;;OAQG;IACG,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC;IA0CpE;;;;;;;;OAQG;IACG,gBAAgB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAQ3E"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { ArtifactState, } from '@hyperlane-xyz/provider-sdk/artifact';
|
|
2
|
+
import { hookArtifactToDerivedConfig } from '@hyperlane-xyz/provider-sdk/hook';
|
|
3
|
+
import { mailboxArtifactToDerivedCoreConfig, } from '@hyperlane-xyz/provider-sdk/mailbox';
|
|
4
|
+
import { isEmptyAddress, rootLogger } from '@hyperlane-xyz/utils';
|
|
5
|
+
import { createHookReader } from '../hook/hook-reader.js';
|
|
6
|
+
import { createIsmReader } from '../ism/generic-ism.js';
|
|
7
|
+
import { ismArtifactToDerivedConfig } from '@hyperlane-xyz/provider-sdk/ism';
|
|
8
|
+
/**
|
|
9
|
+
* Core Artifact Reader - composite artifact reader that orchestrates mailbox, ISM, and hook readers.
|
|
10
|
+
*
|
|
11
|
+
* This implements the artifact API pattern at the "composite" level in deploy-sdk.
|
|
12
|
+
* It takes a mailbox address and returns a fully expanded MailboxOnChain artifact with
|
|
13
|
+
* all nested ISM and hook configurations read from the chain.
|
|
14
|
+
*
|
|
15
|
+
* Architecture:
|
|
16
|
+
* - Raw level: IRawMailboxArtifactManager (protocol-specific, in radix-sdk, cosmos-sdk, etc.)
|
|
17
|
+
* - Composite level: CoreArtifactReader (this class, in deploy-sdk)
|
|
18
|
+
*
|
|
19
|
+
* The raw mailbox reader returns UNDERIVED ISM/hook references (just addresses).
|
|
20
|
+
* This composite reader expands them into full DEPLOYED artifacts with complete configs.
|
|
21
|
+
*/
|
|
22
|
+
export class CoreArtifactReader {
|
|
23
|
+
mailboxArtifactManager;
|
|
24
|
+
chainMetadata;
|
|
25
|
+
chainLookup;
|
|
26
|
+
logger = rootLogger.child({
|
|
27
|
+
module: CoreArtifactReader.name,
|
|
28
|
+
});
|
|
29
|
+
ismReader;
|
|
30
|
+
constructor(mailboxArtifactManager, chainMetadata, chainLookup) {
|
|
31
|
+
this.mailboxArtifactManager = mailboxArtifactManager;
|
|
32
|
+
this.chainMetadata = chainMetadata;
|
|
33
|
+
this.chainLookup = chainLookup;
|
|
34
|
+
this.ismReader = createIsmReader(this.chainMetadata, this.chainLookup);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Read mailbox configuration and expand all nested ISM/hook configs.
|
|
38
|
+
*
|
|
39
|
+
* Takes a mailbox address, reads the raw mailbox config (which has UNDERIVED ISM/hook references),
|
|
40
|
+
* then recursively reads and expands all nested ISM and hook artifacts.
|
|
41
|
+
*
|
|
42
|
+
* @param mailboxAddress The deployed mailbox address
|
|
43
|
+
* @returns Fully expanded mailbox artifact with all nested configs in DEPLOYED state
|
|
44
|
+
*/
|
|
45
|
+
async read(mailboxAddress) {
|
|
46
|
+
// 1. Read raw mailbox config - returns UNDERIVED ISM/hook references (just addresses)
|
|
47
|
+
const rawMailbox = await this.mailboxArtifactManager.readMailbox(mailboxAddress);
|
|
48
|
+
// 2. Expand nested ISM and hooks using specialized readers
|
|
49
|
+
// Hook reader is created per-read with mailbox context (needed for SVM hook detection)
|
|
50
|
+
// Skip reading when address is empty (undefined, null, empty string, or zeroish)
|
|
51
|
+
const hookReader = createHookReader(this.chainMetadata, this.chainLookup, {
|
|
52
|
+
mailbox: mailboxAddress,
|
|
53
|
+
});
|
|
54
|
+
const defaultIsmAddr = rawMailbox.config.defaultIsm.deployed.address;
|
|
55
|
+
const defaultHookAddr = rawMailbox.config.defaultHook.deployed.address;
|
|
56
|
+
const requiredHookAddr = rawMailbox.config.requiredHook.deployed.address;
|
|
57
|
+
const [defaultIsmArtifact, defaultHookArtifact, requiredHookArtifact] = await Promise.all([
|
|
58
|
+
isEmptyAddress(defaultIsmAddr)
|
|
59
|
+
? rawMailbox.config.defaultIsm
|
|
60
|
+
: this.ismReader.read(defaultIsmAddr),
|
|
61
|
+
isEmptyAddress(defaultHookAddr)
|
|
62
|
+
? rawMailbox.config.defaultHook
|
|
63
|
+
: hookReader.read(defaultHookAddr),
|
|
64
|
+
isEmptyAddress(requiredHookAddr)
|
|
65
|
+
? rawMailbox.config.requiredHook
|
|
66
|
+
: hookReader.read(requiredHookAddr),
|
|
67
|
+
]);
|
|
68
|
+
// 3. Return fully expanded mailbox artifact
|
|
69
|
+
return {
|
|
70
|
+
artifactState: ArtifactState.DEPLOYED,
|
|
71
|
+
config: {
|
|
72
|
+
owner: rawMailbox.config.owner,
|
|
73
|
+
defaultIsm: defaultIsmArtifact,
|
|
74
|
+
defaultHook: defaultHookArtifact,
|
|
75
|
+
requiredHook: requiredHookArtifact,
|
|
76
|
+
},
|
|
77
|
+
deployed: rawMailbox.deployed,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Backward compatibility method: convert deployed mailbox artifact to DerivedCoreConfig.
|
|
82
|
+
*
|
|
83
|
+
* This allows CoreArtifactReader to be used as a drop-in replacement for AltVMCoreReader.
|
|
84
|
+
* Existing code expects the deriveCoreConfig() method returning DerivedCoreConfig format.
|
|
85
|
+
*
|
|
86
|
+
* @param mailboxAddress The deployed mailbox address
|
|
87
|
+
* @returns DerivedCoreConfig in the legacy format
|
|
88
|
+
*/
|
|
89
|
+
async deriveCoreConfig(mailboxAddress) {
|
|
90
|
+
const artifact = await this.read(mailboxAddress);
|
|
91
|
+
return mailboxArtifactToDerivedCoreConfig(artifact, this.chainLookup, {
|
|
92
|
+
ismArtifactToDerivedConfig,
|
|
93
|
+
hookArtifactToDerivedConfig,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=core-artifact-reader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core-artifact-reader.js","sourceRoot":"","sources":["../../src/core/core-artifact-reader.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,15 +10,18 @@ import { Logger } from '@hyperlane-xyz/utils';
|
|
|
10
10
|
*
|
|
11
11
|
* @param chainMetadata Chain metadata for the target chain (protocol type is extracted from metadata.protocol)
|
|
12
12
|
* @param chainLookup Chain lookup interface for resolving chain names and domain IDs
|
|
13
|
+
* @param context Optional deployment context (e.g. mailbox address needed by SVM for merkle tree hook detection)
|
|
13
14
|
* @returns A HookReader instance
|
|
14
15
|
*
|
|
15
16
|
* @example
|
|
16
17
|
* ```typescript
|
|
17
|
-
* const reader = createHookReader(chainMetadata, chainLookup);
|
|
18
|
+
* const reader = createHookReader(chainMetadata, chainLookup, { mailbox: mailboxAddress });
|
|
18
19
|
* const hookConfig = await reader.read(hookAddress);
|
|
19
20
|
* ```
|
|
20
21
|
*/
|
|
21
|
-
export declare function createHookReader(chainMetadata: ChainMetadataForAltVM, chainLookup: ChainLookup
|
|
22
|
+
export declare function createHookReader(chainMetadata: ChainMetadataForAltVM, chainLookup: ChainLookup, context?: {
|
|
23
|
+
mailbox?: string;
|
|
24
|
+
}): HookReader;
|
|
22
25
|
/**
|
|
23
26
|
* Generic Hook Reader that can read any hook type by detecting its type.
|
|
24
27
|
* Unlike ISMs, hooks don't have composite/nested types, so no recursive expansion needed.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook-reader.d.ts","sourceRoot":"","sources":["../../src/hook/hook-reader.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EAEtB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAChE,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,uBAAuB,EAExB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAc,MAAM,sBAAsB,CAAC;AAE1D
|
|
1
|
+
{"version":3,"file":"hook-reader.d.ts","sourceRoot":"","sources":["../../src/hook/hook-reader.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EAEtB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAChE,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,uBAAuB,EAExB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAc,MAAM,sBAAsB,CAAC;AAE1D;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAC9B,aAAa,EAAE,qBAAqB,EACpC,WAAW,EAAE,WAAW,EACxB,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7B,UAAU,CAMZ;AAED;;;GAGG;AACH,qBAAa,UAAW,YAAW,cAAc,CAC/C,kBAAkB,EAClB,mBAAmB,CACpB;IAMG,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,uBAAuB;IAC3D,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW;IAN7C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAE9B;gBAGkB,eAAe,EAAE,uBAAuB,EACxC,WAAW,EAAE,WAAW;IAGvC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAK1D;;;OAGG;IACG,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAIpE"}
|
package/dist/hook/hook-reader.js
CHANGED
|
@@ -8,17 +8,18 @@ import { rootLogger } from '@hyperlane-xyz/utils';
|
|
|
8
8
|
*
|
|
9
9
|
* @param chainMetadata Chain metadata for the target chain (protocol type is extracted from metadata.protocol)
|
|
10
10
|
* @param chainLookup Chain lookup interface for resolving chain names and domain IDs
|
|
11
|
+
* @param context Optional deployment context (e.g. mailbox address needed by SVM for merkle tree hook detection)
|
|
11
12
|
* @returns A HookReader instance
|
|
12
13
|
*
|
|
13
14
|
* @example
|
|
14
15
|
* ```typescript
|
|
15
|
-
* const reader = createHookReader(chainMetadata, chainLookup);
|
|
16
|
+
* const reader = createHookReader(chainMetadata, chainLookup, { mailbox: mailboxAddress });
|
|
16
17
|
* const hookConfig = await reader.read(hookAddress);
|
|
17
18
|
* ```
|
|
18
19
|
*/
|
|
19
|
-
export function createHookReader(chainMetadata, chainLookup) {
|
|
20
|
+
export function createHookReader(chainMetadata, chainLookup, context) {
|
|
20
21
|
const protocolProvider = getProtocolProvider(chainMetadata.protocol);
|
|
21
|
-
const artifactManager = protocolProvider.createHookArtifactManager(chainMetadata);
|
|
22
|
+
const artifactManager = protocolProvider.createHookArtifactManager(chainMetadata, context);
|
|
22
23
|
return new HookReader(artifactManager, chainLookup);
|
|
23
24
|
}
|
|
24
25
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook-reader.js","sourceRoot":"","sources":["../../src/hook/hook-reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EAML,2BAA2B,GAC5B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAU,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAE1D
|
|
1
|
+
{"version":3,"file":"hook-reader.js","sourceRoot":"","sources":["../../src/hook/hook-reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EAML,2BAA2B,GAC5B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAU,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,gBAAgB,CAC9B,aAAoC,EACpC,WAAwB,EACxB,OAA8B;IAE9B,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACrE,MAAM,eAAe,GACnB,gBAAgB,CAAC,yBAAyB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IAErE,OAAO,IAAI,UAAU,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;AACtD,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,UAAU;IASA;IACA;IANF,MAAM,GAAW,UAAU,CAAC,KAAK,CAAC;QACnD,MAAM,EAAE,UAAU,CAAC,IAAI;KACxB,CAAC,CAAC;IAEH,YACqB,eAAwC,EACxC,WAAwB;QADxB,oBAAe,GAAf,eAAe,CAAyB;QACxC,gBAAW,GAAX,WAAW,CAAa;IAC1C,CAAC;IAEJ,KAAK,CAAC,IAAI,CAAC,OAAe;QACxB,kEAAkE;QAClE,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,gBAAgB,CAAC,OAAe;QACpC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,2BAA2B,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IACjE,CAAC;CACF"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ export { AltVMJsonRpcSubmitter } from './AltVMJsonRpcSubmitter.js';
|
|
|
2
2
|
export { AltVMCoreModule } from './AltVMCoreModule.js';
|
|
3
3
|
export { AltVMCoreReader } from './AltVMCoreReader.js';
|
|
4
4
|
export { coreModuleProvider } from './core-module.js';
|
|
5
|
+
export { CoreArtifactReader } from './core/core-artifact-reader.js';
|
|
5
6
|
export { createHookReader } from './hook/hook-reader.js';
|
|
6
7
|
export { HookWriter, createHookWriter } from './hook/hook-writer.js';
|
|
7
8
|
export { createIsmReader } from './ism/generic-ism.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,uBAAuB,GACxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,uBAAuB,GACxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -5,6 +5,7 @@ export { AltVMJsonRpcSubmitter } from './AltVMJsonRpcSubmitter.js';
|
|
|
5
5
|
export { AltVMCoreModule } from './AltVMCoreModule.js';
|
|
6
6
|
export { AltVMCoreReader } from './AltVMCoreReader.js';
|
|
7
7
|
export { coreModuleProvider } from './core-module.js';
|
|
8
|
+
export { CoreArtifactReader } from './core/core-artifact-reader.js';
|
|
8
9
|
export { createHookReader } from './hook/hook-reader.js';
|
|
9
10
|
export { HookWriter, createHookWriter } from './hook/hook-writer.js';
|
|
10
11
|
export { createIsmReader } from './ism/generic-ism.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,sEAAsE;AACtE,qFAAqF;AAErF,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,uBAAuB,GACxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,sEAAsE;AACtE,qFAAqF;AAErF,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,uBAAuB,GACxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generic-ism.d.ts","sourceRoot":"","sources":["../../src/ism/generic-ism.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,qBAAqB,EAEtB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAEL,cAAc,
|
|
1
|
+
{"version":3,"file":"generic-ism.d.ts","sourceRoot":"","sources":["../../src/ism/generic-ism.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,qBAAqB,EAEtB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAEL,cAAc,EAEf,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAChE,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,EACtB,iBAAiB,EAIlB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,MAAM,EAAc,MAAM,sBAAsB,CAAC;AAE1D;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAC7B,aAAa,EAAE,qBAAqB,EACpC,WAAW,EAAE,WAAW,GACvB,SAAS,CAMX;AAED;;;GAGG;AACH,qBAAa,SAAU,YAAW,cAAc,CAC9C,iBAAiB,EACjB,kBAAkB,CACnB;IAMG,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,sBAAsB;IAC1D,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW;IAN7C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAE9B;gBAGkB,eAAe,EAAE,sBAAsB,EACvC,WAAW,EAAE,WAAW;IAGvC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAkBzD;;;OAGG;YACW,gBAAgB;IAwC9B;;;OAGG;IACG,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAIlE"}
|
package/dist/ism/generic-ism.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { AltVM, getProtocolProvider, } from '@hyperlane-xyz/provider-sdk';
|
|
2
|
-
import { isArtifactDeployed,
|
|
2
|
+
import { isArtifactDeployed, } from '@hyperlane-xyz/provider-sdk/artifact';
|
|
3
|
+
import { ismArtifactToDerivedConfig, } from '@hyperlane-xyz/provider-sdk/ism';
|
|
3
4
|
import { rootLogger } from '@hyperlane-xyz/utils';
|
|
4
5
|
/**
|
|
5
6
|
* Factory function to create an IsmReader instance.
|
|
@@ -21,44 +22,6 @@ export function createIsmReader(chainMetadata, chainLookup) {
|
|
|
21
22
|
const artifactManager = protocolProvider.createIsmArtifactManager(chainMetadata);
|
|
22
23
|
return new IsmReader(artifactManager, chainLookup);
|
|
23
24
|
}
|
|
24
|
-
/**
|
|
25
|
-
* Converts a DeployedIsmArtifact to DerivedIsmConfig format.
|
|
26
|
-
* This handles the conversion between the new Artifact API and the old Config API.
|
|
27
|
-
*/
|
|
28
|
-
function artifactToDerivedConfig(artifact, chainLookup) {
|
|
29
|
-
const config = artifact.config;
|
|
30
|
-
const address = artifact.deployed.address;
|
|
31
|
-
// For routing ISMs, recursively convert nested artifacts
|
|
32
|
-
if (config.type === AltVM.IsmType.ROUTING) {
|
|
33
|
-
const domains = {};
|
|
34
|
-
for (const [domainId, nestedArtifact] of Object.entries(config.domains)) {
|
|
35
|
-
// Convert numeric domain ID to chain name for the config output
|
|
36
|
-
const chainName = chainLookup.getChainName(parseInt(domainId));
|
|
37
|
-
if (!chainName) {
|
|
38
|
-
// Skip unknown domains (already warned during expand)
|
|
39
|
-
continue;
|
|
40
|
-
}
|
|
41
|
-
if (isArtifactUnderived(nestedArtifact)) {
|
|
42
|
-
domains[chainName] = nestedArtifact.deployed.address;
|
|
43
|
-
}
|
|
44
|
-
else if (isArtifactDeployed(nestedArtifact)) {
|
|
45
|
-
domains[chainName] = artifactToDerivedConfig(nestedArtifact, chainLookup);
|
|
46
|
-
}
|
|
47
|
-
// Note: ArtifactState.NEW should never occur in expanded routing configs
|
|
48
|
-
}
|
|
49
|
-
return {
|
|
50
|
-
type: 'domainRoutingIsm',
|
|
51
|
-
owner: config.owner,
|
|
52
|
-
domains,
|
|
53
|
-
address,
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
// For other ISM types, just add the address
|
|
57
|
-
return {
|
|
58
|
-
...config,
|
|
59
|
-
address,
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
25
|
/**
|
|
63
26
|
* Generic ISM Reader that can read any ISM type by detecting its type
|
|
64
27
|
* and recursively expanding nested ISMs (e.g., for routing ISMs).
|
|
@@ -126,7 +89,7 @@ export class IsmReader {
|
|
|
126
89
|
*/
|
|
127
90
|
async deriveIsmConfig(address) {
|
|
128
91
|
const artifact = await this.read(address);
|
|
129
|
-
return
|
|
92
|
+
return ismArtifactToDerivedConfig(artifact, this.chainLookup);
|
|
130
93
|
}
|
|
131
94
|
}
|
|
132
95
|
//# sourceMappingURL=generic-ism.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generic-ism.js","sourceRoot":"","sources":["../../src/ism/generic-ism.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EAEL,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAGL,kBAAkB,
|
|
1
|
+
{"version":3,"file":"generic-ism.js","sourceRoot":"","sources":["../../src/ism/generic-ism.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,6 @@ import { ChainMetadataForAltVM } from '@hyperlane-xyz/provider-sdk';
|
|
|
2
2
|
import { ArtifactReader } from '@hyperlane-xyz/provider-sdk/artifact';
|
|
3
3
|
import { ChainLookup } from '@hyperlane-xyz/provider-sdk/chain';
|
|
4
4
|
import { DeployedWarpAddress, DeployedWarpArtifact, DerivedWarpConfig, IRawWarpArtifactManager, WarpArtifactConfig } from '@hyperlane-xyz/provider-sdk/warp';
|
|
5
|
-
import { HookReader } from '../hook/hook-reader.js';
|
|
6
5
|
import { IsmReader } from '../ism/generic-ism.js';
|
|
7
6
|
/**
|
|
8
7
|
* Generic Warp Token Reader that can read any warp token type by detecting its type
|
|
@@ -13,7 +12,6 @@ export declare class WarpTokenReader implements ArtifactReader<WarpArtifactConfi
|
|
|
13
12
|
protected readonly chainMetadata: ChainMetadataForAltVM;
|
|
14
13
|
protected readonly chainLookup: ChainLookup;
|
|
15
14
|
protected readonly ismReader: IsmReader;
|
|
16
|
-
protected readonly hookReader: HookReader;
|
|
17
15
|
constructor(artifactManager: IRawWarpArtifactManager, chainMetadata: ChainMetadataForAltVM, chainLookup: ChainLookup);
|
|
18
16
|
read(address: string): Promise<DeployedWarpArtifact>;
|
|
19
17
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"warp-reader.d.ts","sourceRoot":"","sources":["../../src/warp/warp-reader.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EAEtB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAEL,cAAc,EAGf,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAWhE,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,EACvB,kBAAkB,EAEnB,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"warp-reader.d.ts","sourceRoot":"","sources":["../../src/warp/warp-reader.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EAEtB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAEL,cAAc,EAGf,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAWhE,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,EACvB,kBAAkB,EAEnB,MAAM,kCAAkC,CAAC;AAG1C,OAAO,EAAE,SAAS,EAAmB,MAAM,uBAAuB,CAAC;AAEnE;;;GAGG;AACH,qBAAa,eAAgB,YAAW,cAAc,CACpD,kBAAkB,EAClB,mBAAmB,CACpB;IAIG,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,uBAAuB;IAC3D,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,qBAAqB;IACvD,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW;IAL7C,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;gBAGnB,eAAe,EAAE,uBAAuB,EACxC,aAAa,EAAE,qBAAqB,EACpC,WAAW,EAAE,WAAW;IAKvC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA8B1D;;;OAGG;YACW,iBAAiB;IAuB/B;;;OAGG;YACW,kBAAkB;IAwBhC;;;OAGG;IACG,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAIpE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,qBAAqB,CACnC,aAAa,EAAE,qBAAqB,EACpC,WAAW,EAAE,WAAW,GACvB,eAAe,CAMjB"}
|
package/dist/warp/warp-reader.js
CHANGED
|
@@ -12,21 +12,23 @@ export class WarpTokenReader {
|
|
|
12
12
|
chainMetadata;
|
|
13
13
|
chainLookup;
|
|
14
14
|
ismReader;
|
|
15
|
-
hookReader;
|
|
16
15
|
constructor(artifactManager, chainMetadata, chainLookup) {
|
|
17
16
|
this.artifactManager = artifactManager;
|
|
18
17
|
this.chainMetadata = chainMetadata;
|
|
19
18
|
this.chainLookup = chainLookup;
|
|
20
19
|
this.ismReader = createIsmReader(chainMetadata, chainLookup);
|
|
21
|
-
this.hookReader = createHookReader(chainMetadata, chainLookup);
|
|
22
20
|
}
|
|
23
21
|
async read(address) {
|
|
24
22
|
// Read warp token via artifactManager - detects type and returns raw config
|
|
25
23
|
const rawArtifact = await this.artifactManager.readWarpToken(address);
|
|
24
|
+
// Create hook reader with mailbox context from the warp config
|
|
25
|
+
const hookReader = createHookReader(this.chainMetadata, this.chainLookup, {
|
|
26
|
+
mailbox: rawArtifact.config.mailbox,
|
|
27
|
+
});
|
|
26
28
|
// Expand nested ISM artifact if present
|
|
27
29
|
const expandedIsmArtifact = await this.expandIsmArtifact(rawArtifact.config.interchainSecurityModule);
|
|
28
30
|
// Expand nested Hook artifact if present
|
|
29
|
-
const expandedHookArtifact = await this.expandHookArtifact(rawArtifact.config.hook);
|
|
31
|
+
const expandedHookArtifact = await this.expandHookArtifact(hookReader, rawArtifact.config.hook);
|
|
30
32
|
return {
|
|
31
33
|
...rawArtifact,
|
|
32
34
|
config: {
|
|
@@ -59,13 +61,13 @@ export class WarpTokenReader {
|
|
|
59
61
|
* Expands a Hook artifact by recursively reading it if underived.
|
|
60
62
|
* Returns undefined if no Hook is configured.
|
|
61
63
|
*/
|
|
62
|
-
async expandHookArtifact(hookArtifact) {
|
|
64
|
+
async expandHookArtifact(hookReader, hookArtifact) {
|
|
63
65
|
if (!hookArtifact) {
|
|
64
66
|
return undefined;
|
|
65
67
|
}
|
|
66
68
|
// If Hook is underived (just an address), read it recursively to get full config
|
|
67
69
|
if (isArtifactUnderived(hookArtifact)) {
|
|
68
|
-
return
|
|
70
|
+
return hookReader.read(hookArtifact.deployed.address);
|
|
69
71
|
}
|
|
70
72
|
// If already a full deployed artifact, use as-is
|
|
71
73
|
if (isArtifactDeployed(hookArtifact)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"warp-reader.js","sourceRoot":"","sources":["../../src/warp/warp-reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAGL,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,sCAAsC,CAAC;AAY9C,OAAO,EAML,2BAA2B,GAC5B,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAAc,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAa,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAEnE;;;GAGG;AACH,MAAM,OAAO,eAAe;
|
|
1
|
+
{"version":3,"file":"warp-reader.js","sourceRoot":"","sources":["../../src/warp/warp-reader.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hyperlane-xyz/deploy-sdk",
|
|
3
|
-
"version": "3.0
|
|
3
|
+
"version": "3.1.0",
|
|
4
4
|
"description": "Deployer SDK for the Hyperlane Protocol",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": "https://github.com/hyperlane-xyz/hyperlane-monorepo",
|
|
@@ -15,13 +15,13 @@
|
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
17
|
"zod": "^3.21.2",
|
|
18
|
-
"@hyperlane-xyz/aleo-sdk": "27.
|
|
19
|
-
"@hyperlane-xyz/cosmos-sdk": "27.
|
|
20
|
-
"@hyperlane-xyz/provider-sdk": "3.0
|
|
21
|
-
"@hyperlane-xyz/radix-sdk": "27.
|
|
22
|
-
"@hyperlane-xyz/sealevel-sdk": "27.
|
|
23
|
-
"@hyperlane-xyz/tron-sdk": "22.1.
|
|
24
|
-
"@hyperlane-xyz/utils": "27.
|
|
18
|
+
"@hyperlane-xyz/aleo-sdk": "27.1.0",
|
|
19
|
+
"@hyperlane-xyz/cosmos-sdk": "27.1.0",
|
|
20
|
+
"@hyperlane-xyz/provider-sdk": "3.1.0",
|
|
21
|
+
"@hyperlane-xyz/radix-sdk": "27.1.0",
|
|
22
|
+
"@hyperlane-xyz/sealevel-sdk": "27.1.0",
|
|
23
|
+
"@hyperlane-xyz/tron-sdk": "22.1.1",
|
|
24
|
+
"@hyperlane-xyz/utils": "27.1.0"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"@types/chai-as-promised": "^8",
|
|
@@ -36,8 +36,8 @@
|
|
|
36
36
|
"sinon": "^13.0.2",
|
|
37
37
|
"tsx": "^4.19.1",
|
|
38
38
|
"typescript": "5.8.3",
|
|
39
|
-
"@hyperlane-xyz/eslint-config": "^27.
|
|
40
|
-
"@hyperlane-xyz/tsconfig": "^27.
|
|
39
|
+
"@hyperlane-xyz/eslint-config": "^27.1.0",
|
|
40
|
+
"@hyperlane-xyz/tsconfig": "^27.1.0"
|
|
41
41
|
},
|
|
42
42
|
"scripts": {
|
|
43
43
|
"build": "tsc",
|