Skip to main content

Import

import { useHasPermission } from '@0xsequence/connect'

Usage

import { useHasPermission } from '@0xsequence/connect'
import { encodeFunctionData, type TransactionRequest } from 'viem'

function App() {
  const { checkPermission, isLoading, error, data } = useHasPermission()

  const check = async () => {
    const txs: TransactionRequest[] = [
      {
        to: '0x0000000000000000000000000000000000000000',
        data: encodeFunctionData({
          abi: [
            {
              type: 'function',
              name: 'foo',
              stateMutability: 'nonpayable',
              inputs: [],
              outputs: []
            }
          ],
          functionName: 'foo'
        })
      }
    ]

    const allowed = await checkPermission({ chainId: 42161, transactions: txs })
    console.log('Allowed:', allowed)
  }

  return (
    <div>
      <button onClick={check}>Check permission</button>
      {isLoading && <div>Checking...</div>}
      {error && <div>Error: {error.message}</div>}
      {data !== undefined && <div>Allowed: {data ? 'Yes' : 'No'}</div>}
    </div>
  )
}

Parameters

type HasPermissionParams = {
  chainId: number
  transactions: TransactionRequest[]
}

Return Type

type UseHasPermissionReturnType = {
  isLoading: boolean
  error: Error | null
  data: boolean | undefined
  checkPermission: (params: HasPermissionParams) => Promise<boolean>
}

Notes

  • This hook uses the Sequence V3 connector internally.
  • Each transaction must include a to address.