# Message Structure

The `MessageLibrary` library contract provides a data structure that represents a message for a remote call to a target contract on a destination chain.&#x20;

```solidity
    struct Message {
        uint256 srcChainId;
        uint256 dstChainId;
        address target;
        uint256 nonce;
        bytes callData;
        uint256 nativeValue;
        uint256 expiration;
    }
```

Each of these fields is described in further detail below:

* `srcChainId` is the ID of the chain where this message is sent from
* `dstChainId`: The ID of the chain where the message is sent to.
* `target`: The address of the contract to be called on the destination chain.
* `nonce`: An incrementing number held by `MultiBridgeMessageSender` to ensure msgId uniqueness.
* `callData`: The data to be sent to the target contract by low-level call (e.g., `address(target).call(callData)`).
* `nativeValue` is the native token value to be sent to the target in the low-level call(eg. address(target).call{value: nativeValue}(callData))
* `expiration`: is the timestamp when the message expires
