Class: EVMChain
Defined in: evm/index.ts:182
EVM chain implementation supporting Ethereum-compatible networks.
Provides methods for sending CCIP cross-chain messages, querying message status, fetching fee quotes, and manually executing pending messages on Ethereum Virtual Machine compatible chains.
Examples
import { EVMChain } from '@chainlink/ccip-sdk'
const chain = await EVMChain.fromUrl('https://rpc.sepolia.org')
console.log(`Connected to: ${chain.network.name}`)
const requests = await chain.getMessagesInTx('0xabc123...')
for (const req of requests) {
console.log(`Message ID: ${req.message.messageId}`)
}
Extends
Indexable
[key: symbol]: () => string
Constructors
Constructor
new EVMChain(
provider:JsonRpcApiProvider,network:NetworkInfo,ctx?:ChainContext):EVMChain
Defined in: evm/index.ts:204
Creates a new EVMChain instance.
Parameters
| Parameter | Type | Description |
|---|---|---|
provider | JsonRpcApiProvider | JSON-RPC provider for the EVM network. |
network | NetworkInfo | Network information for this chain. |
ctx? | ChainContext | - |
Returns
EVMChain
Overrides
Chain<typeof ChainFamily.EVM>.constructor
Properties
apiClient
readonlyapiClient:CCIPAPIClient|null
Defined in: chain.ts:326
CCIP API client (null if opted out)
Inherited from
apiRetryConfig
readonlyapiRetryConfig:Required<ApiRetryConfig> |null
Defined in: chain.ts:328
Retry configuration for API fallback operations (null if API client is disabled)
Inherited from
destroy$
readonlydestroy$:Promise<void>
Defined in: evm/index.ts:190
logger
logger:
Logger
Defined in: chain.ts:324
Inherited from
network
readonlynetwork:NetworkInfo<"EVM">
Defined in: chain.ts:323
Inherited from
nonces
nonces:
Record<string,number>
Defined in: evm/index.ts:197
Cache of current nonces per wallet address. Used internally by sendMessage and executeReport to manage transaction ordering. Can be inspected for debugging or manually adjusted if needed.
provider
provider:
JsonRpcApiProvider
Defined in: evm/index.ts:189
decimals
readonlystaticdecimals:18=18
Defined in: evm/index.ts:187
family
readonlystaticfamily:"EVM"=ChainFamily.EVM
Defined in: evm/index.ts:186
Methods
_getSomeOnRampFor()
_getSomeOnRampFor(
router:string):Promise<string>
Defined in: evm/index.ts:887
Gets any available OnRamp for the given router.
Parameters
| Parameter | Type | Description |
|---|---|---|
router | string | Router contract address. |
Returns
Promise<string>
OnRamp contract address.
destroy()?
optionaldestroy():void|Promise<void>
Defined in: chain.ts:362
Cleanup method to release resources (e.g., close connections).
Returns
void | Promise<void>
Inherited from
estimateReceiveExecution()
estimateReceiveExecution(
opts: {message: {data?:BytesLike;destTokenAmounts?: readonly {amount:bigint;token:string; }[];messageId:string;sender?:string;sourceChainSelector:bigint; };offRamp:string;receiver:string; }):Promise<number>
Defined in: evm/index.ts:1517
Estimate ccipReceive execution cost (gas, computeUnits) for this dest
Parameters
| Parameter | Type | Description |
|---|---|---|
opts | { message: { data?: BytesLike; destTokenAmounts?: readonly { amount: bigint; token: string; }[]; messageId: string; sender?: string; sourceChainSelector: bigint; }; offRamp: string; receiver: string; } | estimation options |
opts.message | { data?: BytesLike; destTokenAmounts?: readonly { amount: bigint; token: string; }[]; messageId: string; sender?: string; sourceChainSelector: bigint; } | - |
opts.message.data? | BytesLike | - |
opts.message.destTokenAmounts? | readonly { amount: bigint; token: string; }[] | - |
opts.message.messageId | string | - |
opts.message.sender? | string | - |
opts.message.sourceChainSelector | bigint | - |
opts.offRamp | string | - |
opts.receiver | string | - |
Returns
Promise<number>
estimated execution cost (gas or computeUnits)
Overrides
Chain.estimateReceiveExecution
executeReport()
executeReport(
opts:ExecuteReportOpts& {wallet:unknown; }):Promise<CCIPExecution>
Defined in: evm/index.ts:1238
Execute messages in report in an offRamp.
Parameters
| Parameter | Type | Description |
|---|---|---|
opts | ExecuteReportOpts & { wallet: unknown; } | ExecuteReportOpts with chain-specific wallet to sign and send tx |
Returns
Promise<CCIPExecution>
Promise resolving to transaction of the execution
Throws
CCIPWalletInvalidError if wallet is not a valid Signer
Throws
CCIPExecTxNotConfirmedError if execution transaction fails to confirm
Throws
CCIPExecTxRevertedError if execution transaction reverts
Overrides
generateUnsignedExecuteReport()
generateUnsignedExecuteReport(
__namedParameters:ExecuteReportOpts& {payer:string; }):Promise<UnsignedEVMTx>
Defined in: evm/index.ts:1115
Generate unsigned tx to manuallyExecute a message.
Parameters
| Parameter | Type | Description |
|---|---|---|
__namedParameters | ExecuteReportOpts & { payer: string; } | ExecuteReportOpts with payer address which will send the exec tx |
Returns
Promise<UnsignedEVMTx>
Promise resolving to chain-family specific unsigned txs
Throws
CCIPVersionUnsupportedError if OffRamp version is not supported
Overrides
Chain.generateUnsignedExecuteReport
generateUnsignedSendMessage()
generateUnsignedSendMessage(
opts:SendMessageOpts& {sender:string; }):Promise<UnsignedEVMTx>
Defined in: evm/index.ts:987
Generate unsigned txs for ccipSend'ing a message.
Parameters
| Parameter | Type | Description |
|---|---|---|
opts | SendMessageOpts & { sender: string; } | SendMessageOpts with sender address |
Returns
Promise<UnsignedEVMTx>
Promise resolving to chain-family specific unsigned txs
Overrides
Chain.generateUnsignedSendMessage
getBalance()
getBalance(
opts:GetBalanceOpts):Promise<bigint>
Defined in: evm/index.ts:842
Query token balance for an address.
Parameters
| Parameter | Type | Description |
|---|---|---|
opts | GetBalanceOpts | Balance query options |
Returns
Promise<bigint>
Token balance information including raw and formatted values
Overrides
getBlockTimestamp()
getBlockTimestamp(
block:number|"finalized"):Promise<number>
Defined in: evm/index.ts:329
Fetch the timestamp of a given block.
Parameters
| Parameter | Type | Description |
|---|---|---|
block | number | "finalized" | Positive block number, negative finality depth, or 'finalized' tag |
Returns
Promise<number>
Promise resolving to timestamp of the block, in seconds
Overrides
getCommitReport()
getCommitReport(
opts: {commitStore:string;request: {lane:Lane<CCIPVersion>;message: {sequenceNumber:bigint; } | {sequenceNumber:bigint; } | {sequenceNumber:bigint; } | {sequenceNumber:bigint; } | {sequenceNumber:bigint; };tx: {timestamp:number; }; }; } &Pick<LogFilter,"startBlock"|"watch"|"page">):Promise<CCIPCommit>
Defined in: chain.ts:968
Look for a CommitReport at dest for given CCIP request. May be specialized by some subclasses.
Parameters
| Parameter | Type | Description |
|---|---|---|
opts | { commitStore: string; request: { lane: Lane<CCIPVersion>; message: { sequenceNumber: bigint; } | { sequenceNumber: bigint; } | { sequenceNumber: bigint; } | { sequenceNumber: bigint; } | { sequenceNumber: bigint; }; tx: { timestamp: number; }; }; } & Pick<LogFilter, "startBlock" | "watch" | "page"> | getCommitReport options |
Returns
Promise<CCIPCommit>
CCIPCommit info
Throws
CCIPCommitNotFoundError if no commit found for the request (transient)
Example
const commit = await dest.getCommitReport({
commitStore: offRampAddress, // v1.6+
request,
})
console.log(`Committed at block: ${commit.log.blockNumber}`)
Inherited from
getCommitStoreForOffRamp()
getCommitStoreForOffRamp(
offRamp:string):Promise<string>
Defined in: evm/index.ts:791
Fetch the CommitStore set in OffRamp config (CCIP v1.5 and earlier). For CCIP v1.6 and later, it should return the offRamp address.
Parameters
| Parameter | Type | Description |
|---|---|---|
offRamp | string | OffRamp contract address |
Returns
Promise<string>
Promise resolving to CommitStore address
Throws
CCIPVersionUnsupportedError if OffRamp version is not supported
Overrides
Chain.getCommitStoreForOffRamp
getExecutionReceipts()
getExecutionReceipts(
opts: {commit?:CCIPCommit;messageId?:string;offRamp:string;sourceChainSelector?:bigint; } &Pick<LogFilter,"startBlock"|"startTime"|"watch"|"page">):AsyncIterableIterator<CCIPExecution>
Defined in: evm/index.ts:1484
Default/generic implementation of getExecutionReceipts. Yields execution receipts for a given offRamp.
Parameters
| Parameter | Type | Description |
|---|---|---|
opts | { commit?: CCIPCommit; messageId?: string; offRamp: string; sourceChainSelector?: bigint; } & Pick<LogFilter, "startBlock" | "startTime" | "watch" | "page"> | getExecutionReceipts options |
Returns
AsyncIterableIterator<CCIPExecution>
Async generator of CCIPExecution receipts
Overrides
getFee()
getFee(
__namedParameters:Omit<SendMessageOpts,"approveMax">):Promise<bigint>
Defined in: evm/index.ts:960
Fetch the current fee for a given intended message.
Parameters
| Parameter | Type | Description |
|---|---|---|
__namedParameters | Omit<SendMessageOpts, "approveMax"> | SendMessageOpts without approveMax |
Returns
Promise<bigint>
Fee amount in the feeToken's smallest units
Overrides
getFeeTokens()
getFeeTokens(
router:string):Promise<{[k:string]: {decimals:number;name:string;symbol:string; }; }>
Defined in: evm/index.ts:1431
Fetch list and info of supported feeTokens.
Parameters
| Parameter | Type | Description |
|---|---|---|
router | string | Router address on this chain |
Returns
Promise<{[k: string]: { decimals: number; name: string; symbol: string; }; }>
Promise resolving to mapping of token addresses to TokenInfo objects
Throws
CCIPVersionUnsupportedError if OnRamp version is not supported
Overrides
getLaneForOnRamp()
getLaneForOnRamp(
onRamp:string):Promise<Lane<CCIPVersion>>
Defined in: evm/index.ts:631
Gets lane configuration from an OnRamp contract.
Parameters
| Parameter | Type | Description |
|---|---|---|
onRamp | string | OnRamp contract address. |
Returns
Promise<Lane<CCIPVersion>>
Lane configuration.
Throws
CCIPContractTypeInvalidError if contract doesn't have destChainSelector
getLaneLatency()
getLaneLatency(
destChainSelector:bigint):Promise<LaneLatencyResponse>
Defined in: chain.ts:1013
Fetches estimated lane latency to a destination chain. Uses this chain's selector as the source.
Parameters
| Parameter | Type | Description |
|---|---|---|
destChainSelector | bigint | Destination CCIP chain selector (bigint) |
Returns
Promise<LaneLatencyResponse>
Promise resolving to LaneLatencyResponse containing:
lane.sourceNetworkInfo- Source chain metadata (name, selector, chainId)lane.destNetworkInfo- Destination chain metadatalane.routerAddress- Router contract address on source chaintotalMs- Estimated delivery time in milliseconds
Throws
CCIPApiClientNotAvailableError if apiClient was disabled (set to null)
Throws
CCIPHttpError if API request fails (network error, 4xx, 5xx status)
Remarks
Each call makes a fresh API request. Consider caching results if making frequent calls for the same lane.
Example
const chain = await EVMChain.fromUrl('https://eth-mainnet.example.com')
try {
const latency = await chain.getLaneLatency(4949039107694359620n) // Arbitrum
console.log(`Estimated delivery: ${Math.round(latency.totalMs / 60000)} minutes`)
console.log(`Router: ${latency.lane.routerAddress}`)
} catch (err) {
if (err instanceof CCIPHttpError) {
console.error(`API error: ${err.context.apiErrorCode}`)
}
}
Inherited from
getLogs()
getLogs(
filter:LogFilter& {onlyFallback?:boolean; }):AsyncIterableIterator<Log>
Defined in: evm/index.ts:351
An async generator that yields logs based on the provided options.
Parameters
| Parameter | Type | Description |
|---|---|---|
filter | LogFilter & { onlyFallback?: boolean; } | Options object containing: - startBlock: if provided, fetch and generate logs forward starting from this block; otherwise, returns logs backwards in time from endBlock; optionally, startTime may be provided to fetch logs forward starting from this time - startTime: instead of a startBlock, a start timestamp may be provided; if either is provided, fetch logs forward from this starting point; otherwise, backwards - endBlock: if omitted, use latest block; can be a block number, 'latest', 'finalized' or negative finality block depth - endBefore: optional hint signature for end of iteration, instead of endBlock - address: if provided, fetch logs for this address only (may be required in some networks/implementations) - topics: if provided, fetch logs for these topics only; if string[], it's assumed to be a list of topic0s (i.e. string[] or string[][0], event_ids); some networks/implementations may not be able to filter topics other than topic0s, so one may want to assume those are optimization hints, instead of hard filters, and verify results - page: if provided, try to use this page/range for batches - watch: true or cancellation promise, getLogs continuously after initial fetch |
Returns
AsyncIterableIterator<Log>
An async iterable iterator of logs.
Overrides
getMessageById()
getMessageById(
messageId:string,_opts?: {onRamp?:string;page?:number; }):Promise<CCIPRequest<CCIPVersion>>
Defined in: chain.ts:568
Fetch a CCIP message by its unique message ID.
Parameters
| Parameter | Type | Description |
|---|---|---|
messageId | string | The unique message ID (0x + 64 hex chars) |
_opts? | { onRamp?: string; page?: number; } | Optional: onRamp hint for non-EVM chains |
_opts.onRamp? | string | - |
_opts.page? | number | - |
Returns
Promise<CCIPRequest<CCIPVersion>>
CCIPRequest with metadata populated from API
Remarks
Uses the CCIP API to retrieve message details. The returned request includes
a metadata field with API-specific information.
Example
const request = await chain.getMessageById(messageId)
console.log(`Sender: ${request.message.sender}`)
if (request.metadata) {
console.log(`Status: ${request.metadata.status}`)
if (request.metadata.deliveryTime) {
console.log(`Delivered in ${request.metadata.deliveryTime}ms`)
}
}
Throws
CCIPApiClientNotAvailableError if API disabled
Throws
CCIPMessageIdNotFoundError if message not found
Throws
CCIPOnRampRequiredError if onRamp is required but not provided
Throws
CCIPHttpError if API request fails
Inherited from
getMessagesInBatch()
getMessagesInBatch<
R>(request:R,commit:Pick<CommitReport,"minSeqNr"|"maxSeqNr">,opts?: {page?:number; }):Promise<R["message"][]>
Defined in: evm/index.ts:358
Fetches all CCIP messages contained in a given commit batch.
Type Parameters
| Type Parameter | Description |
|---|---|
R extends { lane: Lane<CCIPVersion>; log: { } & { } & { }; message: { sequenceNumber: bigint; } | { sequenceNumber: bigint; } | { sequenceNumber: bigint; } | { sequenceNumber: bigint; } | { sequenceNumber: bigint; }; } |
Parameters
| Parameter | Type | Description |
|---|---|---|
request | R | CCIPRequest to fetch batch for |
commit | Pick<CommitReport, "minSeqNr" | "maxSeqNr"> | CommitReport range (min, max) |
opts? | { page?: number; } | Optional parameters (e.g., page for pagination width) |
opts.page? | number | - |
Returns
Promise<R["message"][]>
Array of messages in the batch
Overrides
getMessagesInTx()
getMessagesInTx(
tx:string|ChainTransaction):Promise<CCIPRequest<CCIPVersion>[]>
Defined in: chain.ts:512
Fetch all CCIP requests in a transaction.
Parameters
| Parameter | Type | Description |
|---|---|---|
tx | string | ChainTransaction | ChainTransaction or txHash to fetch requests from |
Returns
Promise<CCIPRequest<CCIPVersion>[]>
Promise resolving to CCIP messages in the transaction (at least one)
Throws
CCIPTransactionNotFoundError if transaction does not exist
Throws
CCIPMessageNotFoundInTxError if no CCIPSendRequested events in tx
Example
const chain = await EVMChain.fromUrl('https://eth-mainnet.example.com')
const requests = await chain.getMessagesInTx('0xabc123...')
for (const req of requests) {
console.log(`Message ID: ${req.message.messageId}`)
}
Inherited from
getNativeTokenForRouter()
getNativeTokenForRouter(
router:string):Promise<string>
Defined in: evm/index.ts:719
Get the native token address for a Router.
Parameters
| Parameter | Type | Description |
|---|---|---|
router | string | Router contract address |
Returns
Promise<string>
Promise resolving to native token address (usually wrapped)
Overrides
getOffchainTokenData()
getOffchainTokenData(
request:CCIPRequest):Promise<OffchainTokenData[]>
Defined in: evm/index.ts:1106
Fetch supported offchain token data for a request from this network.
Parameters
| Parameter | Type | Description |
|---|---|---|
request | CCIPRequest | CCIP request, with tx, logs and message |
Returns
Promise<OffchainTokenData[]>
Promise resolving to array with one offchain token data for each token transfer
Overrides
getOffRampsForRouter()
getOffRampsForRouter(
router:string,sourceChainSelector:bigint):Promise<string[]>
Defined in: evm/index.ts:729
Fetch the OffRamps allowlisted in a Router. Used to discover OffRamp connected to an OnRamp.
Parameters
| Parameter | Type | Description |
|---|---|---|
router | string | Router contract address |
sourceChainSelector | bigint | Source chain selector |
Returns
Promise<string[]>
Promise resolving to array of OffRamp addresses
Overrides
getOnRampForOffRamp()
getOnRampForOffRamp(
offRamp:string,sourceChainSelector:bigint):Promise<string>
Defined in: evm/index.ts:755
Fetch the OnRamp address set in OffRamp config. Used to discover OffRamp connected to an OnRamp.
Parameters
| Parameter | Type | Description |
|---|---|---|
offRamp | string | OffRamp contract address |
sourceChainSelector | bigint | Source chain selector |
Returns
Promise<string>
Promise resolving to OnRamp address
Throws
CCIPVersionUnsupportedError if OffRamp version is not supported
Overrides
getOnRampForRouter()
getOnRampForRouter(
router:string,destChainSelector:bigint):Promise<string>
Defined in: evm/index.ts:742
Fetch the OnRamp registered in a Router for a destination chain.
Parameters
| Parameter | Type | Description |
|---|---|---|
router | string | Router contract address |
destChainSelector | bigint | Destination chain selector |
Returns
Promise<string>
Promise resolving to OnRamp address
Overrides
getRegistryTokenConfig()
getRegistryTokenConfig(
registry:string,token:string):Promise<{administrator:string;pendingAdministrator?:string;tokenPool?:string; }>
Defined in: evm/index.ts:1295
Fetch token configuration from a TokenAdminRegistry.
Parameters
| Parameter | Type | Description |
|---|---|---|
registry | string | TokenAdminRegistry contract address. |
token | string | Token address to query. |
Returns
Promise<{ administrator: string; pendingAdministrator?: string; tokenPool?: string; }>
RegistryTokenConfig containing administrator and pool information.
Remarks
The TokenAdminRegistry is a contract that tracks token administrators and their associated pools. Each token has an administrator who can update pool configurations.
Throws
CCIPTokenNotConfiguredError if token is not configured in registry
Overrides
getRouterForOffRamp()
getRouterForOffRamp(
offRamp:string,sourceChainSelector:bigint):Promise<string>
Defined in: evm/index.ts:685
Fetch the Router address set in OffRamp config.
Parameters
| Parameter | Type | Description |
|---|---|---|
offRamp | string | OffRamp contract address |
sourceChainSelector | bigint | Source chain selector |
Returns
Promise<string>
Promise resolving to Router address
Throws
CCIPVersionUnsupportedError if OffRamp version is not supported
Overrides
getRouterForOnRamp()
getRouterForOnRamp(
onRamp:string,destChainSelector:bigint):Promise<string>
Defined in: evm/index.ts:653
Fetch the Router address set in OnRamp config. Used to discover OffRamp connected to OnRamp.
Parameters
| Parameter | Type | Description |
|---|---|---|
onRamp | string | OnRamp contract address |
destChainSelector | bigint | Destination chain selector |
Returns
Promise<string>
Promise resolving to Router address
Throws
CCIPVersionUnsupportedError if OnRamp version is not supported
Overrides
getSupportedTokens()
getSupportedTokens(
registry:string,opts?: {page?:number; }):Promise<string[]>
Defined in: evm/index.ts:1274
Get the supported tokens for a given contract address.
Parameters
| Parameter | Type | Description |
|---|---|---|
registry | string | Router, OnRamp, OffRamp or TokenAdminRegistry contract address. |
opts? | { page?: number; } | Optional parameters. |
opts.page? | number | - |
Returns
Promise<string[]>
An array of supported token addresses.
Overrides
getTokenAdminRegistryFor()
getTokenAdminRegistryFor(
address:string):Promise<string>
Defined in: evm/index.ts:904
Fetch TokenAdminRegistry configured in a given OnRamp, Router, etc. Needed to map a source token to its dest counterparts.
Parameters
| Parameter | Type | Description |
|---|---|---|
address | string | Contract address (OnRamp, Router, etc.) |
Returns
Promise<string>
Promise resolving to TokenAdminRegistry address
Throws
CCIPContractNotRouterError if address is not a Router, OnRamp, or OffRamp
Overrides
Chain.getTokenAdminRegistryFor
getTokenForTokenPool()
getTokenForTokenPool(
tokenPool:string):Promise<string>
Defined in: evm/index.ts:817
Fetch the TokenPool's token/mint.
Parameters
| Parameter | Type | Description |
|---|---|---|
tokenPool | string | TokenPool address |
Returns
Promise<string>
Promise resolving to token or mint address
Overrides
getTokenInfo()
getTokenInfo(
token:string):Promise<{decimals:number;name:string;symbol:string; }>
Defined in: evm/index.ts:827
Fetch token metadata.
Parameters
| Parameter | Type | Description |
|---|---|---|
token | string | Token address |
Returns
Promise<{ decimals: number; name: string; symbol: string; }>
Promise resolving to token symbol, decimals, and optionally name
Overrides
getTokenPoolConfig()
getTokenPoolConfig(
tokenPool:string):Promise<{router:string;token:string;typeAndVersion:string; }>
Defined in: evm/index.ts:1324
Fetch configuration of a token pool.
Parameters
| Parameter | Type | Description |
|---|---|---|
tokenPool | string | Token pool contract address. |
Returns
Promise<{ router: string; token: string; typeAndVersion: string; }>
TokenPoolConfig containing token, router, and version info.
Remarks
Return type varies by chain:
- EVM:
typeAndVersionis always present (required) - Solana: Includes extra
tokenPoolProgramfield - Aptos: Standard fields only
- Sui/TON: Throws CCIPNotImplementedError
Overrides
getTokenPoolRemote()
getTokenPoolRemote(
tokenPool:string,remoteChainSelector:bigint):Promise<TokenPoolRemote>
Defined in: chain.ts:1238
Fetch remote chain configuration for a token pool for a specific destination.
Parameters
| Parameter | Type | Description |
|---|---|---|
tokenPool | string | Token pool address on the current chain. |
remoteChainSelector | bigint | Chain selector of the desired remote chain. |
Returns
Promise<TokenPoolRemote>
TokenPoolRemote config for the specified remote chain.
Remarks
Convenience wrapper around getTokenPoolRemotes that returns a single configuration instead of a Record. Use this when you need configuration for a specific destination chain.
Example
const arbitrumSelector = 4949039107694359620n
const remote = await chain.getTokenPoolRemote(poolAddress, arbitrumSelector)
console.log(`Remote token: ${remote.remoteToken}`)
console.log(`Remote pools: ${remote.remotePools.join(', ')}`)
Throws
CCIPTokenPoolChainConfigNotFoundError if no configuration found for the specified remote chain.
Inherited from
getTokenPoolRemotes()
getTokenPoolRemotes(
tokenPool:string,remoteChainSelector?:bigint):Promise<Record<string,TokenPoolRemote>>
Defined in: evm/index.ts:1349
Fetch remote chain configurations for a token pool.
Parameters
| Parameter | Type | Description |
|---|---|---|
tokenPool | string | Token pool address on the current chain. |
remoteChainSelector? | bigint | Optional chain selector to filter results to a single destination. |
Returns
Promise<Record<string, TokenPoolRemote>>
Record where keys are chain names (e.g., "ethereum-mainnet") and values are TokenPoolRemote configs.
Remarks
A token pool maintains configurations for each destination chain it supports. The returned Record maps chain names to their respective configurations.
Overrides
getTransaction()
getTransaction(
hash:string|TransactionReceipt):Promise<ChainTransaction>
Defined in: evm/index.ts:336
Fetch a transaction by its hash.
Parameters
| Parameter | Type | Description |
|---|---|---|
hash | string | TransactionReceipt | Transaction hash |
Returns
Promise<ChainTransaction>
Promise resolving to generic transaction details
Overrides
listAccounts()
listAccounts():
Promise<string[]>
Defined in: evm/index.ts:245
Expose ethers provider's listAccounts, if provider supports it
Returns
Promise<string[]>
nextNonce()
nextNonce(
address:string):Promise<number>
Defined in: evm/index.ts:255
Get the next nonce for a wallet address and increment the internal counter. Fetches from the network on first call, then uses cached value.
Parameters
| Parameter | Type | Description |
|---|---|---|
address | string | Wallet address to get nonce for |
Returns
Promise<number>
The next available nonce
sendMessage()
sendMessage(
opts:SendMessageOpts& {wallet:unknown; }):Promise<CCIPRequest<CCIPVersion>>
Defined in: evm/index.ts:1062
Send a CCIP message through a router using provided wallet.
Parameters
| Parameter | Type | Description |
|---|---|---|
opts | SendMessageOpts & { wallet: unknown; } | SendMessageOpts with chain-specific wallet for signing |
Returns
Promise<CCIPRequest<CCIPVersion>>
Promise resolving to CCIP request with message details
Throws
CCIPWalletInvalidError if wallet is not a valid Signer
Overrides
typeAndVersion()
typeAndVersion(
address:string):Promise<[string,string,string,string]>
Defined in: evm/index.ts:380
Fetch typeAndVersion for a given CCIP contract address.
Parameters
| Parameter | Type | Description |
|---|---|---|
address | string | CCIP contract address |
Returns
Promise<[string, string, string, string]>
Promise resolving to tuple:
type- Parsed type of the contract, e.g.OnRampversion- Parsed version of the contract, e.g.1.6.0typeAndVersion- Original (unparsed) typeAndVersion() stringsuffix- Suffix of the version, if any (e.g.-dev)
Overrides
waitFinalized()
waitFinalized(
opts: {cancel$?:Promise<unknown>;finality?:number|"finalized";request: {log: { } & { } & { } & { } & {tx?: {timestamp:number; }; };tx?: {timestamp:number; }; }; }):Promise<true>
Defined in: chain.ts:428
Confirm a log tx is finalized or wait for it to be finalized.
Parameters
| Parameter | Type | Description |
|---|---|---|
opts | { cancel$?: Promise<unknown>; finality?: number | "finalized"; request: { log: { } & { } & { } & { } & { tx?: { timestamp: number; }; }; tx?: { timestamp: number; }; }; } | Options containing the request, finality level, and optional cancel promise |
opts.cancel$? | Promise<unknown> | - |
opts.finality? | number | "finalized" | - |
opts.request | { log: { } & { } & { } & { } & { tx?: { timestamp: number; }; }; tx?: { timestamp: number; }; } | - |
opts.request.log | { } & { } & { } & { } & { tx?: { timestamp: number; }; } | Log event from the OnRamp. |
opts.request.tx? | { timestamp: number; } | Transaction that emitted the request. |
opts.request.tx.timestamp | number | Unix timestamp of the block. |
Returns
Promise<true>
true when the transaction is finalized
Throws
CCIPTransactionNotFinalizedError if the transaction is not included (e.g., due to a reorg)
Example
const request = await source.getMessagesInTx(txHash)
try {
await source.waitFinalized({ request: request[0] })
console.log('Transaction finalized')
} catch (err) {
if (err instanceof CCIPTransactionNotFinalizedError) {
console.log('Transaction not yet finalized')
}
}
Inherited from
_getProvider()
static_getProvider(url:string):Promise<JsonRpcApiProvider>
Defined in: evm/index.ts:270
Creates a JSON-RPC provider from a URL.
Parameters
| Parameter | Type | Description |
|---|---|---|
url | string | WebSocket (wss://) or HTTP (https://) endpoint URL. |
Returns
Promise<JsonRpcApiProvider>
A ready JSON-RPC provider.
buildMessageForDest()
staticbuildMessageForDest(message:MessageInput):AnyMessage
Defined in: chain.ts:1268
ChainStatic.buildMessageForDest
Parameters
| Parameter | Type |
|---|---|
message | MessageInput |
Returns
AnyMessage
Inherited from
Chain.buildMessageForDest
decodeCommits()
staticdecodeCommits(log: {data:unknown;topics?: readonlystring[]; },lane?:Omit<Lane<CCIPVersion>,"destChainSelector">): {maxSeqNr:bigint;merkleRoot:string;minSeqNr:bigint;onRampAddress:string;sourceChainSelector:bigint; }[] |undefined
Defined in: evm/index.ts:499
Decodes commit reports from a log event.
Parameters
| Parameter | Type | Description |
|---|---|---|
log | { data: unknown; topics?: readonly string[]; } | Log event with topics and data. |
log.data | unknown | - |
log.topics? | readonly string[] | - |
lane? | Omit<Lane<CCIPVersion>, "destChainSelector"> | Lane info (required for CCIP v1.5 and earlier). |
Returns
{ maxSeqNr: bigint; merkleRoot: string; minSeqNr: bigint; onRampAddress: string; sourceChainSelector: bigint; }[] | undefined
Array of CommitReport or undefined if not a valid commit event.
Throws
CCIPLogDataInvalidError if log data is not valid bytes
Throws
CCIPVersionRequiresLaneError if CCIP v1.5 event but no lane provided
decodeExtraArgs()
staticdecodeExtraArgs(extraArgs:BytesLike):EVMExtraArgsV1& {_tag:"EVMExtraArgsV1"; } |EVMExtraArgsV1& {allowOutOfOrderExecution:boolean; } & {_tag:"EVMExtraArgsV2"; } |GenericExtraArgsV3& {_tag:"GenericExtraArgsV3"; } |SVMExtraArgsV1& {_tag:"SVMExtraArgsV1"; } |EVMExtraArgsV1& {allowOutOfOrderExecution:boolean; } & {receiverObjectIds:string[];tokenReceiver:string; } & {_tag:"SuiExtraArgsV1"; } |undefined
Defined in: evm/index.ts:585
Decodes extra arguments from a CCIP message.
Parameters
| Parameter | Type | Description |
|---|---|---|
extraArgs | BytesLike | Encoded extra arguments bytes. |
Returns
EVMExtraArgsV1 & { _tag: "EVMExtraArgsV1"; }
EVMExtraArgsV1 & { allowOutOfOrderExecution: boolean; } & { _tag: "EVMExtraArgsV2"; }
GenericExtraArgsV3 & { _tag: "GenericExtraArgsV3"; }
SVMExtraArgsV1 & { _tag: "SVMExtraArgsV1"; }
EVMExtraArgsV1 & { allowOutOfOrderExecution: boolean; } & { receiverObjectIds: string[]; tokenReceiver: string; } & { _tag: "SuiExtraArgsV1"; }
undefined
Decoded extra arguments with tag, or undefined if unknown format.
decodeMessage()
staticdecodeMessage(log: {data:unknown;topics?: readonlystring[]; }):CCIPMessage|undefined
Defined in: evm/index.ts:396
Decodes a CCIP message from a log event.
Parameters
| Parameter | Type | Description |
|---|---|---|
log | { data: unknown; topics?: readonly string[]; } | Log event with topics and data. |
log.data | unknown | - |
log.topics? | readonly string[] | - |
Returns
CCIPMessage | undefined
Decoded CCIPMessage or undefined if not a valid CCIP message.
Throws
CCIPLogDataInvalidError if log data is not valid bytes
Throws
CCIPMessageDecodeError if message cannot be decoded
decodeReceipt()
staticdecodeReceipt(log: {data:unknown;topics?: readonlystring[]; }):ExecutionReceipt|undefined
Defined in: evm/index.ts:555
Decodes an execution receipt from a log event.
Parameters
| Parameter | Type | Description |
|---|---|---|
log | { data: unknown; topics?: readonly string[]; } | Log event with topics and data. |
log.data | unknown | - |
log.topics? | readonly string[] | - |
Returns
ExecutionReceipt | undefined
ExecutionReceipt or undefined if not a valid execution event.
Throws
CCIPLogDataInvalidError if log data is not valid bytes
encodeExtraArgs()
staticencodeExtraArgs(args:ExtraArgs|undefined):string
Defined in: evm/index.ts:594
Encodes extra arguments for a CCIP message.
Parameters
| Parameter | Type | Description |
|---|---|---|
args | ExtraArgs | undefined | Extra arguments to encode. |
Returns
string
Encoded extra arguments as hex string.
fromProvider()
staticfromProvider(provider:JsonRpcApiProvider,ctx?:ChainContext):Promise<EVMChain>
Defined in: evm/index.ts:298
Creates an EVMChain instance from an existing provider.
Parameters
| Parameter | Type | Description |
|---|---|---|
provider | JsonRpcApiProvider | JSON-RPC provider instance. |
ctx? | ChainContext | context containing logger. |
Returns
Promise<EVMChain>
A new EVMChain instance.
fromUrl()
staticfromUrl(url:string,ctx?:ChainContext):Promise<EVMChain>
Defined in: evm/index.ts:324
Creates an EVMChain instance from an RPC URL.
Parameters
| Parameter | Type | Description |
|---|---|---|
url | string | WebSocket (wss://) or HTTP (https://) endpoint URL. |
ctx? | ChainContext | Optional context containing logger and API client configuration. |
Returns
Promise<EVMChain>
A new EVMChain instance connected to the specified network.
Throws
CCIPChainNotFoundError if chain cannot be identified from chainId
Example
// HTTP connection
const chain = await EVMChain.fromUrl('https://rpc.sepolia.org')
// With custom logger
const chain = await EVMChain.fromUrl(url, { logger: customLogger })
getAddress()
staticgetAddress(bytes:BytesLike):string
Defined in: evm/index.ts:604
Converts bytes to a checksummed EVM address.
Parameters
| Parameter | Type | Description |
|---|---|---|
bytes | BytesLike | Bytes to convert (must be 20 bytes or 32 bytes with leading zeros). |
Returns
string
Checksummed EVM address.
Throws
CCIPAddressInvalidEvmError if bytes cannot be converted to a valid EVM address
getDestLeafHasher()
staticgetDestLeafHasher(lane:Lane,ctx?:WithLogger):LeafHasher
Defined in: evm/index.ts:865
Gets the leaf hasher for computing Merkle proofs on the destination chain.
Parameters
| Parameter | Type | Description |
|---|---|---|
lane | Lane | Lane configuration. |
ctx? | WithLogger | Context object containing logger. |
Returns
LeafHasher
Leaf hasher function.
Throws
CCIPSourceChainUnsupportedError if source chain is not EVM for v1.2/v1.5
Throws
CCIPHasherVersionUnsupportedError if lane version is not supported
isTxHash()
staticisTxHash(v:unknown):v is `0x${string}`
Defined in: evm/index.ts:621
Validates a transaction hash format for EVM
Parameters
| Parameter | Type |
|---|---|
v | unknown |
Returns
v is `0x${string}`
parse()
staticparse(data:unknown):Record<string,unknown> |undefined
Defined in: evm/index.ts:1264
Parses raw data into typed structures.
Parameters
| Parameter | Type | Description |
|---|---|---|
data | unknown | Raw data to parse. |
Returns
Record<string, unknown> | undefined
Parsed data.