@hyperlane-xyz/deploy-sdk 4.1.0 → 4.2.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.
@@ -46,7 +46,7 @@ export declare function createHookWriter(chainMetadata: ChainMetadataForAltVM, c
46
46
  * - Works with pure Artifact API (HookArtifactConfig)
47
47
  * - Delegates to typed writers from artifact manager for specific hook types
48
48
  * - Protocol-agnostic through artifact manager abstraction
49
- * - Supports IGP hook updates (gas configs, owner changes)
49
+ * - Supports mutable hook updates (e.g. IGP gas configs, protocol fee updates)
50
50
  * - MerkleTree hooks are immutable (no updates)
51
51
  *
52
52
  * Note: In the future, the Artifact API will include an explicit check
@@ -67,7 +67,7 @@ export declare class HookWriter extends HookReader implements ArtifactWriter<Hoo
67
67
  create(artifact: ArtifactNew<HookArtifactConfig>): Promise<[DeployedHookArtifact, TxReceipt[]]>;
68
68
  /**
69
69
  * Updates an existing hook to match the desired configuration.
70
- * Only IGP hooks support updates (gas config changes, owner changes).
70
+ * Mutable hooks delegate to their protocol-specific writers.
71
71
  * MerkleTree hooks are immutable - returns empty array.
72
72
  *
73
73
  * Note: In the future, the Artifact API will provide an explicit
@@ -1 +1 @@
1
- {"version":3,"file":"hook-writer.d.ts","sourceRoot":"","sources":["../../src/hook/hook-writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,qBAAqB,EAEtB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AAC5D,OAAO,EACL,WAAW,EAEX,cAAc,EACf,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAChE,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,UAAU,EACV,uBAAuB,EAGxB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,OAAO,EAAkB,MAAM,sBAAsB,CAAC;AAE/D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,gBAAgB,CAC9B,aAAa,EAAE,qBAAqB,EACpC,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,EACvC,OAAO,CAAC,EAAE,qBAAqB,GAC9B,UAAU,CAMZ;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,UACX,SAAQ,UACR,YAAW,cAAc,CAAC,kBAAkB,EAAE,mBAAmB,CAAC;IAGhE,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,uBAAuB;IAC3D,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW;IAC3C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC;gBAFvC,eAAe,EAAE,uBAAuB,EACxC,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC;IAK5D;;;;;;OAMG;IACG,MAAM,CACV,QAAQ,EAAE,WAAW,CAAC,kBAAkB,CAAC,GACxC,OAAO,CAAC,CAAC,oBAAoB,EAAE,SAAS,EAAE,CAAC,CAAC;IAQ/C;;;;;;;;;;OAUG;IACG,MAAM,CAAC,QAAQ,EAAE,oBAAoB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAgBpE;;;;;;;;;;;;OAYG;IACG,cAAc,CAAC,MAAM,EAAE;QAC3B,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;QAClC,cAAc,EAAE,UAAU,CAAC;KAC5B,GAAG,OAAO,CAAC;QACV,OAAO,EAAE,OAAO,CAAC;QACjB,YAAY,EAAE,WAAW,EAAE,CAAC;KAC7B,CAAC;CA6CH"}
1
+ {"version":3,"file":"hook-writer.d.ts","sourceRoot":"","sources":["../../src/hook/hook-writer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EAEtB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AAC5D,OAAO,EACL,WAAW,EAEX,cAAc,EACf,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAChE,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,UAAU,EACV,uBAAuB,EAIxB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,OAAO,EAAkB,MAAM,sBAAsB,CAAC;AAE/D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,gBAAgB,CAC9B,aAAa,EAAE,qBAAqB,EACpC,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,EACvC,OAAO,CAAC,EAAE,qBAAqB,GAC9B,UAAU,CAMZ;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,UACX,SAAQ,UACR,YAAW,cAAc,CAAC,kBAAkB,EAAE,mBAAmB,CAAC;IAGhE,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,uBAAuB;IAC3D,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW;IAC3C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC;gBAFvC,eAAe,EAAE,uBAAuB,EACxC,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC;IAK5D;;;;;;OAMG;IACG,MAAM,CACV,QAAQ,EAAE,WAAW,CAAC,kBAAkB,CAAC,GACxC,OAAO,CAAC,CAAC,oBAAoB,EAAE,SAAS,EAAE,CAAC,CAAC;IAQ/C;;;;;;;;;;OAUG;IACG,MAAM,CAAC,QAAQ,EAAE,oBAAoB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAWpE;;;;;;;;;;;;OAYG;IACG,cAAc,CAAC,MAAM,EAAE;QAC3B,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;QAClC,cAAc,EAAE,UAAU,CAAC;KAC5B,GAAG,OAAO,CAAC;QACV,OAAO,EAAE,OAAO,CAAC;QACjB,YAAY,EAAE,WAAW,EAAE,CAAC;KAC7B,CAAC;CA6CH"}
@@ -1,6 +1,6 @@
1
- import { AltVM, getProtocolProvider, } from '@hyperlane-xyz/provider-sdk';
1
+ import { getProtocolProvider, } from '@hyperlane-xyz/provider-sdk';
2
2
  import { ArtifactState, } from '@hyperlane-xyz/provider-sdk/artifact';
3
- import { hookConfigToArtifact, shouldDeployNewHook, } from '@hyperlane-xyz/provider-sdk/hook';
3
+ import { MUTABLE_HOOK_TYPE, hookConfigToArtifact, shouldDeployNewHook, } from '@hyperlane-xyz/provider-sdk/hook';
4
4
  import { isEmptyAddress } from '@hyperlane-xyz/utils';
5
5
  import { HookReader } from './hook-reader.js';
6
6
  /**
@@ -39,7 +39,7 @@ export function createHookWriter(chainMetadata, chainLookup, signer, context) {
39
39
  * - Works with pure Artifact API (HookArtifactConfig)
40
40
  * - Delegates to typed writers from artifact manager for specific hook types
41
41
  * - Protocol-agnostic through artifact manager abstraction
42
- * - Supports IGP hook updates (gas configs, owner changes)
42
+ * - Supports mutable hook updates (e.g. IGP gas configs, protocol fee updates)
43
43
  * - MerkleTree hooks are immutable (no updates)
44
44
  *
45
45
  * Note: In the future, the Artifact API will include an explicit check
@@ -70,7 +70,7 @@ export class HookWriter extends HookReader {
70
70
  }
71
71
  /**
72
72
  * Updates an existing hook to match the desired configuration.
73
- * Only IGP hooks support updates (gas config changes, owner changes).
73
+ * Mutable hooks delegate to their protocol-specific writers.
74
74
  * MerkleTree hooks are immutable - returns empty array.
75
75
  *
76
76
  * Note: In the future, the Artifact API will provide an explicit
@@ -81,13 +81,11 @@ export class HookWriter extends HookReader {
81
81
  */
82
82
  async update(artifact) {
83
83
  const { artifactState, config, deployed } = artifact;
84
- // Only IGP hooks are mutable - support gas config and owner updates
85
- if (config.type === AltVM.HookType.INTERCHAIN_GAS_PAYMASTER) {
86
- const writer = this.artifactManager.createWriter(config.type, this.signer);
87
- return writer.update({ artifactState, config, deployed });
84
+ if (!MUTABLE_HOOK_TYPE.includes(config.type)) {
85
+ return [];
88
86
  }
89
- // MerkleTree hooks are immutable - no updates possible
90
- return [];
87
+ const writer = this.artifactManager.createWriter(config.type, this.signer);
88
+ return writer.update({ artifactState, config, deployed });
91
89
  }
92
90
  /**
93
91
  * Deploys a new hook or updates an existing one based on configuration comparison.
@@ -125,7 +123,7 @@ export class HookWriter extends HookReader {
125
123
  transactions: [],
126
124
  };
127
125
  }
128
- // Update existing hook (only IGP hooks support updates)
126
+ // Update existing hook in place when the hook type is mutable.
129
127
  const deployedArtifact = {
130
128
  ...expectedArtifact,
131
129
  artifactState: ArtifactState.DEPLOYED,
@@ -1 +1 @@
1
- {"version":3,"file":"hook-writer.js","sourceRoot":"","sources":["../../src/hook/hook-writer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hook-writer.js","sourceRoot":"","sources":["../../src/hook/hook-writer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=hook-writer.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook-writer.test.d.ts","sourceRoot":"","sources":["../../src/hook/hook-writer.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,69 @@
1
+ import { expect } from 'chai';
2
+ import sinon from 'sinon';
3
+ import { AltVM } from '@hyperlane-xyz/provider-sdk';
4
+ import { ArtifactState } from '@hyperlane-xyz/provider-sdk/artifact';
5
+ import { HookWriter } from './hook-writer.js';
6
+ const chainLookup = {
7
+ getChainMetadata: () => {
8
+ throw new Error('not needed');
9
+ },
10
+ getDomainId: () => null,
11
+ getChainName: () => null,
12
+ getKnownChainNames: () => [],
13
+ };
14
+ describe('HookWriter', () => {
15
+ it('delegates protocolFee updates to the protocol writer', async () => {
16
+ const expectedTxs = [
17
+ { annotation: 'protocol fee update' },
18
+ ];
19
+ const update = sinon.stub().resolves(expectedTxs);
20
+ const createWriter = sinon.stub().returns({
21
+ create: sinon.stub(),
22
+ read: sinon.stub(),
23
+ update,
24
+ });
25
+ const artifactManager = {
26
+ createReader: sinon.stub(),
27
+ createWriter,
28
+ readHook: sinon.stub(),
29
+ };
30
+ const signer = {};
31
+ const writer = new HookWriter(artifactManager, chainLookup, signer);
32
+ const artifact = {
33
+ artifactState: ArtifactState.DEPLOYED,
34
+ config: {
35
+ type: AltVM.HookType.PROTOCOL_FEE,
36
+ owner: '0xowner',
37
+ beneficiary: '0xbeneficiary',
38
+ maxProtocolFee: '100',
39
+ protocolFee: '10',
40
+ },
41
+ deployed: { address: '0x123' },
42
+ };
43
+ const txs = await writer.update(artifact);
44
+ expect(createWriter.calledOnceWith(AltVM.HookType.PROTOCOL_FEE, signer)).to.equal(true);
45
+ expect(update.calledOnceWith(artifact)).to.equal(true);
46
+ expect(txs).to.deep.equal(expectedTxs);
47
+ });
48
+ it('treats unknownHook updates as a no-op', async () => {
49
+ const createWriter = sinon.stub();
50
+ const artifactManager = {
51
+ createReader: sinon.stub(),
52
+ createWriter,
53
+ readHook: sinon.stub(),
54
+ };
55
+ const signer = {};
56
+ const writer = new HookWriter(artifactManager, chainLookup, signer);
57
+ const artifact = {
58
+ artifactState: ArtifactState.DEPLOYED,
59
+ config: {
60
+ type: 'unknownHook',
61
+ },
62
+ deployed: { address: '0x123' },
63
+ };
64
+ const txs = await writer.update(artifact);
65
+ expect(createWriter.called).to.equal(false);
66
+ expect(txs).to.deep.equal([]);
67
+ });
68
+ });
69
+ //# sourceMappingURL=hook-writer.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook-writer.test.js","sourceRoot":"","sources":["../../src/hook/hook-writer.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAGb,MAAM,6BAA6B,CAAC;AAGrC,wBAAsB,qBAAqB,CACzC,eAAe,EAAE,GAAG,CAAC,YAAY,CAAC,iBAkCnC"}
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAGb,MAAM,6BAA6B,CAAC;AAGrC,wBAAsB,qBAAqB,CACzC,eAAe,EAAE,GAAG,CAAC,YAAY,CAAC,iBAwCnC"}
package/dist/protocol.js CHANGED
@@ -27,6 +27,11 @@ export async function loadProtocolProviders(neededProtocols) {
27
27
  registerProtocol(protocol, () => new SealevelProtocolProvider());
28
28
  break;
29
29
  }
30
+ case ProtocolType.Starknet: {
31
+ const { StarknetProtocolProvider } = await import('@hyperlane-xyz/starknet-sdk');
32
+ registerProtocol(protocol, () => new StarknetProtocolProvider());
33
+ break;
34
+ }
30
35
  }
31
36
  }
32
37
  }
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,WAAW,EACX,gBAAgB,GACjB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,eAAkC;IAElC,KAAK,MAAM,QAAQ,IAAI,eAAe,EAAE,CAAC;QACvC,IAAI,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,UAAU,CAAC,KAAK,CAAC,GAAG,QAAQ,iBAAiB,CAAC,CAAC;YAC/C,SAAS;QACX,CAAC;QACD,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC/B,MAAM,EAAE,4BAA4B,EAAE,GACpC,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAC;gBAC5C,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,4BAA4B,EAAE,CAAC,CAAC;gBACrE,MAAM;YACR,CAAC;YACD,KAAK,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;gBACxB,MAAM,EAAE,qBAAqB,EAAE,GAC7B,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;gBAC3C,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,qBAAqB,EAAE,CAAC,CAAC;gBAC9D,MAAM;YACR,CAAC;YACD,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;gBACvB,MAAM,EAAE,oBAAoB,EAAE,GAC5B,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;gBAC1C,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC;gBAC7D,MAAM;YACR,CAAC;YACD,KAAK,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAC3B,MAAM,EAAE,wBAAwB,EAAE,GAChC,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAC;gBAC9C,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,wBAAwB,EAAE,CAAC,CAAC;gBACjE,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,WAAW,EACX,gBAAgB,GACjB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,eAAkC;IAElC,KAAK,MAAM,QAAQ,IAAI,eAAe,EAAE,CAAC;QACvC,IAAI,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,UAAU,CAAC,KAAK,CAAC,GAAG,QAAQ,iBAAiB,CAAC,CAAC;YAC/C,SAAS;QACX,CAAC;QACD,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC/B,MAAM,EAAE,4BAA4B,EAAE,GACpC,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAC;gBAC5C,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,4BAA4B,EAAE,CAAC,CAAC;gBACrE,MAAM;YACR,CAAC;YACD,KAAK,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;gBACxB,MAAM,EAAE,qBAAqB,EAAE,GAC7B,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;gBAC3C,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,qBAAqB,EAAE,CAAC,CAAC;gBAC9D,MAAM;YACR,CAAC;YACD,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;gBACvB,MAAM,EAAE,oBAAoB,EAAE,GAC5B,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;gBAC1C,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC;gBAC7D,MAAM;YACR,CAAC;YACD,KAAK,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAC3B,MAAM,EAAE,wBAAwB,EAAE,GAChC,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAC;gBAC9C,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,wBAAwB,EAAE,CAAC,CAAC;gBACjE,MAAM;YACR,CAAC;YACD,KAAK,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAC3B,MAAM,EAAE,wBAAwB,EAAE,GAChC,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAC;gBAC9C,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,wBAAwB,EAAE,CAAC,CAAC;gBACjE,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=protocol.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.test.d.ts","sourceRoot":"","sources":["../src/protocol.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,14 @@
1
+ import { expect } from 'chai';
2
+ import { ProtocolType, getProtocolProvider, hasProtocol, } from '@hyperlane-xyz/provider-sdk';
3
+ import { loadProtocolProviders } from './protocol.js';
4
+ describe('loadProtocolProviders', () => {
5
+ it('registers Starknet provider implementation', async () => {
6
+ await loadProtocolProviders(new Set([ProtocolType.Starknet]));
7
+ expect(hasProtocol(ProtocolType.Starknet)).to.equal(true);
8
+ const provider = getProtocolProvider(ProtocolType.Starknet);
9
+ expect(provider).to.have.property('createProvider');
10
+ expect(provider).to.have.property('createSigner');
11
+ expect(provider).to.have.property('createIsmArtifactManager');
12
+ });
13
+ });
14
+ //# sourceMappingURL=protocol.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.test.js","sourceRoot":"","sources":["../src/protocol.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAE9B,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,WAAW,GACZ,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEtD,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,qBAAqB,CAAC,IAAI,GAAG,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAE9D,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE1D,MAAM,QAAQ,GAAG,mBAAmB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC5D,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QACpD,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAClD,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,0BAA0B,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hyperlane-xyz/deploy-sdk",
3
- "version": "4.1.0",
3
+ "version": "4.2.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,15 +15,17 @@
15
15
  },
16
16
  "dependencies": {
17
17
  "zod": "^3.21.2",
18
- "@hyperlane-xyz/aleo-sdk": "28.1.0",
19
- "@hyperlane-xyz/cosmos-sdk": "28.1.0",
20
- "@hyperlane-xyz/provider-sdk": "4.1.0",
21
- "@hyperlane-xyz/radix-sdk": "28.1.0",
22
- "@hyperlane-xyz/sealevel-sdk": "28.1.0",
23
- "@hyperlane-xyz/tron-sdk": "22.1.3",
24
- "@hyperlane-xyz/utils": "28.1.0"
18
+ "@hyperlane-xyz/aleo-sdk": "29.0.0",
19
+ "@hyperlane-xyz/cosmos-sdk": "29.0.0",
20
+ "@hyperlane-xyz/provider-sdk": "4.2.0",
21
+ "@hyperlane-xyz/radix-sdk": "29.0.0",
22
+ "@hyperlane-xyz/sealevel-sdk": "29.0.0",
23
+ "@hyperlane-xyz/starknet-sdk": "27.2.0",
24
+ "@hyperlane-xyz/tron-sdk": "22.1.4",
25
+ "@hyperlane-xyz/utils": "29.0.0"
25
26
  },
26
27
  "devDependencies": {
28
+ "@types/chai": "^4.3.11",
27
29
  "@types/chai-as-promised": "^8",
28
30
  "@types/mocha": "^10.0.1",
29
31
  "@types/node": "^24.10.9",
@@ -35,9 +37,9 @@
35
37
  "mocha": "^11.5.0",
36
38
  "sinon": "^13.0.2",
37
39
  "tsx": "^4.19.1",
38
- "typescript": "5.8.3",
39
- "@hyperlane-xyz/eslint-config": "^28.1.0",
40
- "@hyperlane-xyz/tsconfig": "^28.1.0"
40
+ "typescript": "6.0.2",
41
+ "@hyperlane-xyz/eslint-config": "^29.0.0",
42
+ "@hyperlane-xyz/tsconfig": "^29.0.0"
41
43
  },
42
44
  "scripts": {
43
45
  "build": "tsc",