> For the complete documentation index, see [llms.txt](https://docs.inverter.network/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.inverter.network/contracts/technical-reference/external/forwarder/interfaces/itransactionforwarder_v1.sol.md).

# ITransactionForwarder\_v1.sol

[Git Source](https://github.com/InverterNetwork/inverter-contracts/blob/2a8a4c80ff4f24a59546d4e6126b81bc51228c94/src/external/forwarder/interfaces/ITransactionForwarder_v1.sol)

### Functions

#### createDigest

Creates a digest for the given `ForwardRequestData`.

*The signature field of the given `ForwardRequestData` can be empty.*

```solidity
function createDigest(ERC2771ForwarderUpgradeable.ForwardRequestData memory req)
    external
    view
    returns (bytes32 digest);
```

**Parameters**

| Name  | Type                                             | Description                                         |
| ----- | ------------------------------------------------ | --------------------------------------------------- |
| `req` | `ERC2771ForwarderUpgradeable.ForwardRequestData` | The ForwardRequest you want to get the digest from. |

**Returns**

| Name     | Type      | Description                                              |
| -------- | --------- | -------------------------------------------------------- |
| `digest` | `bytes32` | The digest needed to create a signature for the request. |

#### executeMulticall

Enables the execution of multiple calls in a single transaction.

```solidity
function executeMulticall(SingleCall[] calldata calls)
    external
    returns (Result[] memory returnData);
```

**Parameters**

| Name    | Type           | Description                                                     |
| ------- | -------------- | --------------------------------------------------------------- |
| `calls` | `SingleCall[]` | Array of call structs that should be executed in the multicall. |

**Returns**

| Name         | Type       | Description                                      |
| ------------ | ---------- | ------------------------------------------------ |
| `returnData` | `Result[]` | The return data of the calls that were executed. |

### Errors

#### CallFailed

The request `from` doesn't match with the recovered `signer`.

```solidity
error CallFailed(SingleCall call);
```

**Parameters**

| Name   | Type         | Description           |
| ------ | ------------ | --------------------- |
| `call` | `SingleCall` | The call that failed. |

### Structs

#### SingleCall

Struct used to store information about a single call.

```solidity
struct SingleCall {
    address target;
    bool allowFailure;
    bytes callData;
}
```

**Properties**

| Name           | Type      | Description                                             |
| -------------- | --------- | ------------------------------------------------------- |
| `target`       | `address` | Target contract that will receive the call.             |
| `allowFailure` | `bool`    | Is the call allowed to fail in the multicall execution. |
| `callData`     | `bytes`   | Data of the call.                                       |

#### Result

Struct used to store information about a call result.

```solidity
struct Result {
    bool success;
    bytes returnData;
}
```

**Properties**

| Name         | Type    | Description              |
| ------------ | ------- | ------------------------ |
| `success`    | `bool`  | Was the call a success.  |
| `returnData` | `bytes` | Return data of the call. |
