> ## Documentation Index
> Fetch the complete documentation index at: https://docs.qu.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# ContractRunner

A **ContractRunner** is a generic interface which defines an object capable of interacting with a Contract on the
network.

The more operations supported, the more utility it is capable of.

The most common ContractRunners are [Providers](../classes/Provider) which enable read-only access and
[Signers](../classes/Signer) which enable write-access.

## Extended by

* [`Provider`](/sdk/content/interfaces/Provider)
* [`Signer`](/sdk/content/interfaces/Signer)

## Properties

| Property            | Type                                                                                                                                                               | Description                                                                                                                                                                                         |
| :------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `call?`             | (`tx`: `QuaiTransactionRequest`) => `Promise`\<`string`>                                                                                                           | Required for pure, view or static calls to contracts.                                                                                                                                               |
| `createAccessList?` | (`tx`: `QuaiTransactionRequest`) => `Promise`\<[`AccessList`](/sdk/content/type-aliases/AccessList)>                                                               | Required for populating access lists for state mutating calls                                                                                                                                       |
| `estimateGas?`      | (`tx`: [`TransactionRequest`](/sdk/content/type-aliases/TransactionRequest)) => `Promise`\<`bigint`>                                                               | Required to estimate gas.                                                                                                                                                                           |
| `provider`          | `null` \| [`Provider`](/sdk/content/interfaces/Provider)                                                                                                           | The provider used for necessary state querying operations.<br /><br />This can also point to the **ContractRunner** itself, in the case of an<br />[AbstractProvider](../classes/AbstractProvider). |
| `sendTransaction?`  | (`tx`: [`TransactionRequest`](/sdk/content/type-aliases/TransactionRequest)) => `Promise`\<[`TransactionResponse`](/sdk/content/type-aliases/TransactionResponse)> | Required for state mutating calls                                                                                                                                                                   |
