Skip to content

Commit 9ee67b6

Browse files
authored
Definitions: Allow contracts to be passed to the getProtocol fn (#452)
1 parent 8195c88 commit 9ee67b6

File tree

2 files changed

+16
-10
lines changed

2 files changed

+16
-10
lines changed

core/definitions/src/chain.ts

+10-8
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,21 @@ import { tokens } from "@wormhole-foundation/sdk-base";
33
import type { ChainAddress, UniversalOrNative } from "./address.js";
44
import { toNative } from "./address.js";
55
import type { WormholeMessageId } from "./attestation.js";
6-
import type { PlatformContext } from "./platform.js";
7-
import type { ProtocolImplementation, ProtocolName } from "./protocol.js";
8-
import { protocolIsRegistered } from "./protocol.js";
9-
import type { AutomaticTokenBridge, TokenBridge } from "./protocols/tokenBridge/tokenBridge.js";
10-
import type { RpcConnection } from "./rpc.js";
11-
import type { ChainConfig, SignedTx, TokenAddress, TokenId } from "./types.js";
12-
import { canonicalAddress, isNative } from "./types.js";
136
import {
147
AutomaticCircleBridge,
158
CircleBridge,
9+
Contracts,
1610
IbcBridge,
1711
PorticoBridge,
1812
WormholeCore,
1913
} from "./index.js";
14+
import type { PlatformContext } from "./platform.js";
15+
import type { ProtocolImplementation, ProtocolName } from "./protocol.js";
16+
import { protocolIsRegistered } from "./protocol.js";
17+
import type { AutomaticTokenBridge, TokenBridge } from "./protocols/tokenBridge/tokenBridge.js";
18+
import type { RpcConnection } from "./rpc.js";
19+
import type { ChainConfig, SignedTx, TokenAddress, TokenId } from "./types.js";
20+
import { canonicalAddress, isNative } from "./types.js";
2021

2122
/**
2223
* A ChainContext provides a consistent interface for interacting with a chain.
@@ -194,14 +195,15 @@ export abstract class ChainContext<
194195
*/
195196
async getProtocol<PN extends ProtocolName>(
196197
protocolName: ProtocolName,
198+
contracts: Contracts = this.config.contracts,
197199
rpc?: RpcConnection<P>,
198200
): Promise<ProtocolImplementation<P, PN>> {
199201
if (!this.protocols.has(protocolName)) {
200202
const ctor = this.platform.getProtocolInitializer(protocolName);
201203

202204
const protocol = rpc
203205
? await this.platform.getProtocol(protocolName, rpc)
204-
: new ctor(this.network, this.chain, await this.getRpc(), this.config.contracts);
206+
: new ctor(this.network, this.chain, await this.getRpc(), contracts);
205207

206208
this.protocols.set(protocolName, protocol);
207209
}

core/definitions/src/contracts.ts

+6-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
import type { Chain, Network } from "@wormhole-foundation/sdk-base";
22
import { contracts } from "@wormhole-foundation/sdk-base";
33

4+
// Allow contracts to be passed that arent
5+
// part of the known contract set
6+
type UnknownContracts = Record<string, any>;
7+
48
/** The Contract addresses set in configuration for a given chain */
5-
export interface Contracts {
9+
export type Contracts = {
610
coreBridge?: string;
711
tokenBridge?: string;
812
tokenBridgeRelayer?: string;
@@ -12,7 +16,7 @@ export interface Contracts {
1216
gateway?: string;
1317
translator?: string;
1418
portico?: contracts.PorticoContracts;
15-
}
19+
} & UnknownContracts;
1620

1721
/**
1822
*

0 commit comments

Comments
 (0)