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

# useStorage

> Hook para acceder a la instancia de almacenamiento del cliente de Sequence Connect

## Importar

```tsx theme={null}
import { useStorage, useStorageItem } from '@0xsequence/connect'
```

### Uso

```tsx theme={null}
import { useStorage, signEthAuthProof, validateEthProof } from '@0xsequence/connect'
import { useWalletClient, usePublicClient } from 'wagmi'

function App() {
  const { data: walletClient } = useWalletClient()
  const publicClient = usePublicClient()
  const storage = useStorage()
  
  const generateEthAuthProof = async () => {
    if (!walletClient || !publicClient || !storage) {
      return
    }
    
    try {
      // Use storage to generate an auth proof
      const proof = await signEthAuthProof(walletClient, storage)
      console.log('proof:', proof)
      
      const isValid = await validateEthProof(walletClient, publicClient, proof)
      console.log('isValid?:', isValid)
    } catch (e) {
      console.error(e)
    }
  }
  
  return (
    <button onClick={generateEthAuthProof}>
      Generate EthAuth Proof
    </button>
  )
}
```

### Tipo de retorno

`Storage<StorageItem> | null`

Retorna la instancia de Storage si está disponible, o null si no está configurada.

## useStorageItem

Hook para obtener un ítem específico del almacenamiento de Sequence Connect.

### Uso

```tsx theme={null}
import { useStorageItem } from '@0xsequence/connect'

function App() {
  const { data: authToken, isLoading } = useStorageItem('authToken')
  
  if (isLoading) {
    return <div>Loading...</div>
  }
  
  return (
    <div>
      {authToken ? 'Authenticated' : 'Not authenticated'}
    </div>
  )
}
```

### Parámetros

| Parámetro | Type                | Description                                   |
| --------- | ------------------- | --------------------------------------------- |
| `key`     | `keyof StorageItem` | La clave del ítem de almacenamiento a obtener |

### Tipo de retorno

`UseQueryResult<StorageItem[K]>`

Retorna un resultado de react-query con los datos del ítem de almacenamiento, con las siguientes propiedades:

| Propiedad   | Type             | Description                                     |
| ----------- | ---------------- | ----------------------------------------------- |
| `data`      | `StorageItem[K]` | Los datos obtenidos del ítem de almacenamiento  |
| `isLoading` | `boolean`        | Indica si los datos están cargando actualmente  |
| `isError`   | `boolean`        | Indica si ocurrió un error al obtener los datos |
| `error`     | `Error`          | El objeto de error si ocurrió alguno            |
| ...         | ...              | Otras propiedades de react-query                |

## Notas

Estos hooks permiten acceder a la capa de almacenamiento utilizada por Sequence Connect para persistir datos de autenticación, estado de wallet y otras necesidades de almacenamiento del lado del cliente. El hook `useStorage` se usa comúnmente para operaciones que requieren acceso directo a la capa de almacenamiento, como la generación de pruebas de autenticación, mientras que `useStorageItem` ofrece una forma conveniente de acceder a ítems específicos con integración de react-query.
