# useContractWrite

## Function: useContractWrite()

> **useContractWrite**<`chainId`, `abi`, `functionName`, `args`, `config`, `selectData`>(`params`): `object`

useContractWrite is a utility function designed to manage the process of interacting with a smart contract's writable or payable methods. It includes capabilities for simulating transactions, estimating gas, pre-approving transactions using guardians, and waiting for transaction receipts after execution. This function provides comprehensive functionality to handle the complexities of writing to smart contracts in a streamlined manner.

Variables, callbacks, and computed states are provided to empower developers with greater control during interaction with smart contracts. It integrates various modules like simulation, transaction pre-approval, and gas estimation into a unified interface.

### Type Parameters

• **chainId** *extends* `number`

The chain ID where the contract resides.

• **abi** *extends* `Abi` | readonly `unknown`\[]

The ABI of the contract, defining available methods.

• **functionName** *extends* `string`

The name of the writable or payable function of the contract.

• **args** *extends* `unknown`

The arguments required by the contract function.

• **config** *extends* `Config` = `Config`

Configuration options for the contract write, including chain details.

• **selectData** = `SimulateContractData`<`abi`, `functionName`, `args`, `config`, `chainId`>

Data derived from simulation output passed into this template.

### Parameters

#### params

`UseContractWriteParameters`<`chainId`, `abi`, `functionName`, `args`, `config`, `selectData`>

Configuration parameters for the contract write operation.

### Returns

`object`

A set of properties and methods to manage contract write operations

#### hash

> **hash**: `undefined` | \`0x${string}\`

#### isError

> **isError**: `boolean`

#### isLoading

> **isLoading**: `boolean`

#### isSimulateError

> **isSimulateError**: `boolean`

#### isSimulateLoading

> **isSimulateLoading**: `boolean`

#### isTxError

> **isTxError**: `boolean`

#### isTxLoading

> **isTxLoading**: `boolean`

#### isTxSuccess

> **isTxSuccess**: `boolean`

#### isWriteError

> **isWriteError**: `boolean`

#### isWriteSuccess

> **isWriteSuccess**: `boolean`

#### isWriting

> **isWriting**: `boolean`

#### readyToWrite

> **readyToWrite**: `boolean`

#### simulateData

> **simulateData**: `undefined` | `SimulateContractReturnType`<`Abi`, `string`, readonly `unknown`\[], `Chain`, `Account`, `Chain`> & `object`

#### simulateError

> **simulateError**: `null` | `SimulateContractErrorType`

#### txError

> **txError**: `null` | `WaitForTransactionReceiptErrorType`

#### txReceipt

> **txReceipt**: `undefined` | { `blobGasPrice`: `bigint`; `blobGasUsed`: `bigint`; `blockHash`: \`0x${string}\`; `blockNumber`: `bigint`; `chainId`: `number`; `contractAddress`: `undefined` | `null` | \`0x${string}\`; `cumulativeGasUsed`: `bigint`; `effectiveGasPrice`: `bigint`; `from`: \`0x${string}\`; `gasUsed`: `bigint`; `logs`: `Log`<`bigint`, `number`, `false`>\[]; `logsBloom`: \`0x${string}\`; `root`: \`0x${string}\`; `status`: `"success"` | `"reverted"`; `to`: `null` | \`0x${string}\`; `transactionHash`: \`0x${string}\`; `transactionIndex`: `number`; `type`: `TransactionType`; }

**Type declaration**

`undefined`

{ `blobGasPrice`: `bigint`; `blobGasUsed`: `bigint`; `blockHash`: \`0x${string}\`; `blockNumber`: `bigint`; `chainId`: `number`; `contractAddress`: `undefined` | `null` | \`0x${string}\`; `cumulativeGasUsed`: `bigint`; `effectiveGasPrice`: `bigint`; `from`: \`0x${string}\`; `gasUsed`: `bigint`; `logs`: `Log`<`bigint`, `number`, `false`>\[]; `logsBloom`: \`0x${string}\`; `root`: \`0x${string}\`; `status`: `"success"` | `"reverted"`; `to`: `null` | \`0x${string}\`; `transactionHash`: \`0x${string}\`; `transactionIndex`: `number`; `type`: `TransactionType`; }

#### writeContract()

> **writeContract**: () => `void`

**Returns**

`void`

#### writeContractAsync()

> **writeContractAsync**: () => `Promise`<`void`>

**Returns**

`Promise`<`void`>

#### writeError

> **writeError**: `null` | `WriteContractErrorType`

#### writeReset()

> **writeReset**: () => `void`

**Returns**

`void`

### Defined in

[packages/wagmi/src/hook/useContractWrite.tsx:111](https://github.com/haven1network/haven1-sdk/blob/df6267fec7b75040411529269f9c6a88e9c756ee/packages/wagmi/src/hook/useContractWrite.tsx#L111)
