> **Can't find what you're looking for?** Use `search_docs` on the docs MCP server at `https://www.openfort.io/api/mcp` to find what you need.
>
> **Have feedback?** Use `submit_feedback` on the same MCP server.

# `use7702Authorization`

Sign EIP-7702 authorization payloads, allowing EOAs to temporarily behave like smart accounts for gasless transactions and batch operations.

:::tip
See the complete implementation in [Sign EIP-7702 authorization](https://www.openfort.io/docs/products/embedded-wallet/react/wallet/actions/eip-7702-authorization).
:::

## Usage

```tsx
import { use7702Authorization } from '@openfort/react';
import { usePublicClient } from 'wagmi';
import { sepolia } from 'viem/chains';

function Authorize7702() {
  const { signAuthorization, isLoading, error } = use7702Authorization();
  const publicClient = usePublicClient();

  const handleAuthorization = async () => {
    const nonce = await publicClient.getTransactionCount({ address: '0x...' });

    const result = await signAuthorization({
      contractAddress: '0xe6Cae83BdE06E4c305530e199D7217f42808555B',
      chainId: sepolia.id,
      nonce,
    });

    if (result.status === 'error') return;
    console.log('Authorization signed:', result.authorization);
  };

  return <button onClick={handleAuthorization} disabled={isLoading}>{error ? error.shortMessage : 'Sign Authorization'}</button>;
}
```

## Return type

```ts
type Use7702AuthorizationReturn = {
  signAuthorization(params: SignAuthorizationParameters, options?: SignAuthorizationOptions): Promise<SignAuthorizationResult>
  data: SignedAuthorization | null
  reset(): void
  isLoading: boolean
  isError: boolean
  isSuccess: boolean
  error: OpenfortError | null | undefined
}

type SignAuthorizationParameters = {
  address?: Address         // Implementation contract to authorize
  contractAddress?: Address // Alias accepted by viem
  chainId: number           // Chain ID for the authorization
  nonce: number             // Current transaction count
}

type SignAuthorizationOptions = {
  hashMessage?: boolean      // Hash message before signing (default: false)
  arrayifyMessage?: boolean  // Arrayify message before signing (default: false)
  allowAllChains?: boolean   // Required to permit chainId: 0
}

type SignAuthorizationResult =
  | { status: 'success'; authorization: SignedAuthorization }
  | { status: 'error'; error: OpenfortError }
```

`chainId: 0` creates an authorization valid on every EIP-7702 chain. It is rejected unless the second argument explicitly includes `{ allowAllChains: true }`.

## Related

* [Sign EIP-7702 authorization](https://www.openfort.io/docs/products/embedded-wallet/react/wallet/actions/eip-7702-authorization)
* [useGrantPermissions](https://www.openfort.io/docs/products/embedded-wallet/react/hooks/useGrantPermissions)
