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

# Sign

> sign(), request a gasless Permit2/EIP-2612 signature.

For Permit2/EIP-2612 paths - once [Check Allowance](/sdk/approvals/check-allowance) determines a token needs a signature, call `sign()`. It returns the permit response directly, not wrapped in `.data`:

```ts theme={null}
import { PermitTypes } from '@dzapio/sdk';

if (needsSignature) {
  const result = await dzap.sign({
    chainId: 42161,
    sender: '0xUser',
    tokens: [{ address: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831', amount: '1000000' }],
    service: Services.trade,
    signer: walletClient,
    permitType: PermitTypes.AutoPermit,
  });

  if (result.status === 'success') {
    if ('batchPermitData' in result) {
      // PermitBatchWitnessTransferFrom → single encoded payload covering all tokens
      console.log(result.batchPermitData);
    } else {
      // Every other permitType → per-token entries
      result.tokens.forEach((t) => console.log(t.address, t.permitData));
    }
  }
}
```

## Next steps

* [Check Allowance](/sdk/approvals/check-allowance), modes reference and recommended flow
* [Approve](/sdk/approvals/approve)
