CCIP v2.0.0 IPoolV1 API Reference

IPoolV1 defines the interface for CCIP V1-compatible token pools.

This interface exists for compatibility with CCIP V1 pool integrations and call flows.

If you implement this interface, you define how tokens are locked, burned, released, or minted during cross-chain transfers.

This interface represents the token movement surface used by CCIP routing components.

Most applications do not interact with this interface directly. It is implemented by pool contracts used within CCIP infrastructure.

Usage Boundary

You typically do not use this interface directly.

  • CCIP pools implement this interface to define token transfer behavior.
  • OnRamp and OffRamp components call these functions during cross-chain execution.
  • You implement this interface only if you are building a custom token pool.
  • You are responsible for validation, authorization, and correct token handling.

Contract

interfaces/IPool.sol

Import

import {IPoolV1} from "chainlink-ccip/interfaces/IPool.sol";

If you have not installed the package:

npm install @chainlink/contracts-ccip@2.0.0

Inheritance

  • IERC165

External API

lockOrBurn

function lockOrBurn(
  Pool.LockOrBurnInV1 calldata lockOrBurnIn
) external returns (Pool.LockOrBurnOutV1 memory lockOrBurnOut)

Locks or burns tokens on the source chain as part of a cross-chain transfer.

ParameterTypeDescription
lockOrBurnInPool.LockOrBurnInV1 calldataInput describing the token transfer and operation.

Returns:

TypeDescription
Pool.LockOrBurnOutV1 memoryOutput containing the data needed for destination-chain token handling.

releaseOrMint

function releaseOrMint(
  Pool.ReleaseOrMintInV1 calldata releaseOrMintIn
) external returns (Pool.ReleaseOrMintOutV1 memory)

Releases or mints tokens on the destination chain.

ParameterTypeDescription
releaseOrMintInPool.ReleaseOrMintInV1 calldataInput describing the release or mint operation.

Returns:

TypeDescription
Pool.ReleaseOrMintOutV1 memoryResult of the token release or mint.

isSupportedChain

function isSupportedChain(uint64 remoteChainSelector) external view returns (bool)

Checks whether the pool supports a given remote chain.

ParameterTypeDescription
remoteChainSelectoruint64Identifier of the remote chain.

Returns:

TypeDescription
boolTrue if the chain is supported.

isSupportedToken

function isSupportedToken(address token) external view returns (bool)

Checks whether the pool supports a given token.

ParameterTypeDescription
tokenaddressToken address to check.

Returns:

TypeDescription
boolTrue if the token is supported.

Notes

  • This interface does not enforce validation or authorization logic.
  • Implementations define how tokens are locked, burned, released, or minted.
  • Implementations must ensure only authorized CCIP components can trigger token movements.
  • Incorrect implementation can result in loss of funds or inconsistent cross-chain state.

Get the latest Chainlink content straight to your inbox.