CCIP v1.5.0 Client Library API Reference
     
CCIP senders and receivers use the CCIP Client library to build CCIP messages.
import { Client } from "@chainlink/contracts-ccip/src/v0.8/ccip/libraries/Client.sol";
Use this solidity struct to specify the token address and amount.
struct EVMTokenAmount {
  address token;
  uint256 amount;
}
| Name | Type | Description | 
|---|
| token | address | token address on the local chain. | 
| amount | uint256 | Amount of tokens. | 
CCIP receivers use this solidity struct to parse the received CCIP message.
struct Any2EVMMessage {
  bytes32 messageId;
  uint64 sourceChainSelector;
  bytes sender;
  bytes data;
  struct Client.EVMTokenAmount[] destTokenAmounts;
}
| Name | Type | Description | 
|---|
| messageId | bytes32 | CCIP messageId, generated on the source chain. | 
| sourceChainSelector | uint64 | Source chain selector. | 
| sender | bytes | Sender address. abi.decode(sender, (address))if the source chain is an EVM chain. | 
| data | bytes | Payload sent within the CCIP message. | 
| destTokenAmounts | Client.EVMTokenAmount[] | Tokens and their amounts in their destination chain representation. | 
CCIP senders use this solidity struct to build the CCIP message.
struct EVM2AnyMessage {
  bytes receiver;
  bytes data;
  struct Client.EVMTokenAmount[] tokenAmounts;
  address feeToken;
  bytes extraArgs;
}
| Name | Type | Description | 
|---|
| receiver | bytes | Receiver address. Use abi.encode(sender)to encode the address to bytes. | 
| data | bytes | Payload sent within the CCIP message. | 
| tokenAmounts | Client.EVMTokenAmount[] | Tokens and their amounts in the source chain representation. | 
| feeToken | address | Address of feeToken. Set address(0)to pay in native gas tokens such as ETH on Ethereum or POL on Polygon. | 
| extraArgs | bytes | Users fill in the EVMExtraArgs struct then encode it to bytes using the _argsToBytes function | 
bytes4 EVM_EXTRA_ARGS_V1_TAG
bytes4 EVM_EXTRA_ARGS_V2_TAG
  
struct EVMExtraArgsV1 {
  uint256 gasLimit;
}
| Name | Type | Description | 
|---|
| gasLimit | uint256 | specifies the maximum amount of gas CCIP can consume to execute ccipReceive()on the contract located on the destination blockchain. Read Setting gasLimit for more details. | 
struct EVMExtraArgsV2 {
  uint256 gasLimit;
  bool allowOutOfOrderExecution;
}
| Name | Type | Description | 
|---|
| gasLimit | uint256 | specifies the maximum amount of gas CCIP can consume to execute ccipReceive()on the contract located on the destination blockchain. Read Setting gasLimit for more details. | 
| allowOutOfOrderExecution | bool | if true, it indicates that the message can be executed in any order relative to other messages from the same sender. This value's default varies by chain. On some chains, a particular value is enforced, meaning if the expected value is not set, the message request will revert. | 
function _argsToBytes(struct Client.EVMExtraArgsV1 extraArgs) internal pure returns (bytes bts)
It is used to convert the arguments to bytes.
| Name | Type | Description | 
|---|
| bts | bytes | Encoded extra arguments in bytes. | 
function _argsToBytes(struct Client.EVMExtraArgsV2 extraArgs) internal pure returns (bytes bts)
It is used to convert the arguments to bytes.
| Name | Type | Description | 
|---|
| bts | bytes | Encoded extra arguments in bytes. |