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

# useERC1155SaleContractCheckout

> Hook for managing the ERC-1155 sale contract checkout

## Import

```tsx theme={null}
import { useERC1155SaleContractCheckout } from '@0xsequence/checkout'
```

## Usage

```tsx theme={null}
import { useERC1155SaleContractCheckout } from "@0xsequence/checkout"
import { useAccount } from "wagmi"

function App() {
  const { address: userAddress } = useAccount()
  const { openCheckoutModal } = useERC1155SaleContractCheckout({
    chain: 80001, // chainId of the chain the collectible is on
    contractAddress: "0x0327b2f274e04d292e74a06809bcd687c63a4ba4", // address of the contract handling the minting function
    wallet: userAddress!, // address of the recipient
    collectionAddress: "0x888a322db4b8033bac3ff84412738c096f87f9d0", // address of the collection contract
    items: [
      // array of collectibles to purchase
      {
        tokenId: "0",
        quantity: "1",
      },
    ],
    onSuccess: (txnHash: string) => {
      console.log("success!", txnHash)
    },
    onError: (error: Error) => {
      console.error(error)
    },
  })

  const onClick = () => {
    if (!userAddress) {
      return
    }
    openCheckoutModal()
  }

  return <button onClick={onClick}>Buy ERC-1155 collectible!</button>
}
```

## Return Type: `UseERC1155SaleContractCheckoutReturnType`

The hook returns an object with the following properties:

```tsx theme={null}
interface UseERC1155SaleContractCheckoutReturnType {
  openCheckoutModal: () => void
  closeCheckoutModal: () => void
  selectPaymentSettings?: SelectPaymentSettings
  isLoading: boolean
  isError: boolean
}
```

### Properties

#### openCheckoutModal

`() => void`

Function to open the checkout modal with the configured ERC-1155 purchase.

#### closeCheckoutModal

`() => void`

Function to close the checkout modal.

#### selectPaymentSettings

`SelectPaymentSettings | undefined`

```tsx theme={null}
export interface SelectPaymentSettings {
  collectibles: Collectible[]
  chain: number | string
  currencyAddress: string | Hex
  price: string
  targetContractAddress: string | Hex
  txData: Hex
  collectionAddress: string | Hex
  recipientAddress: string | Hex
  approvedSpenderAddress?: string
  transactionConfirmations?: number
  onSuccess?: (txHash: string) => void
  onError?: (error: Error) => void
  onClose?: () => void
  enableMainCurrencyPayment?: boolean
  enableSwapPayments?: boolean
  enableTransferFunds?: boolean
  creditCardProviders?: string[]
  copyrightText?: string
  transakConfig?: TransakConfig
  customProviderCallback?: (onSuccess: (txHash: string) => void, onError: (error: Error) => void, onClose: () => void) => void
  supplementaryAnalyticsInfo?: SupplementaryAnalyticsInfo
}
```

The current payment settings configuration for the modal.

#### isLoading

`boolean`

Whether the contract data is still loading.

#### isError

`boolean`

Whether there was an error loading the contract data.

## Parameters

The hook accepts a configuration object with the following properties:

| Parameter           | Type                                         | Description                                                     |
| ------------------- | -------------------------------------------- | --------------------------------------------------------------- |
| `chain`             | `number`                                     | Chain ID where the sale contract is deployed                    |
| `contractAddress`   | `string`                                     | Address of the ERC-1155 sale contract                           |
| `wallet`            | `string`                                     | Address of the wallet that will receive the NFTs                |
| `collectionAddress` | `string`                                     | Address of the ERC-1155 token contract                          |
| `items`             | `Array<{tokenId: string, quantity: string}>` | Array of token IDs and quantities to purchase                   |
| `onSuccess`         | `(txnHash: string) => void`                  | (Optional) Callback function when the transaction is successful |
| `onError`           | `(error: Error) => void`                     | (Optional) Callback function when an error occurs               |
| `onClose`           | `() => void`                                 | (Optional) Callback function when the modal is closed           |

## Notes

This hook simplifies the process of purchasing ERC-1155 tokens by automatically:

* Fetching price information from the sale contract
* Determining payment options (crypto, credit card, etc.)
* Generating the proper transaction data
* Opening and managing the checkout modal

## Deprecation Notice

<Warning>
  The `useERC1155SaleContractPaymentModal` hook is deprecated. Use `useERC1155SaleContractCheckout` instead.
</Warning>
