Skip to main content
Gasless approvals via EIP-712 signatures.
import * as Permit from 'voltaire-effect/primitives/Permit'
import { Effect } from 'effect'

const permit = await Effect.runPromise(
  Permit.from({
    owner: '0x1234567890123456789012345678901234567890',
    spender: '0xabcdefabcdefabcdefabcdefabcdefabcdefabcd',
    value: 1000000000000000000n,
    nonce: 0n,
    deadline: 1700000000n
  })
)

Schemas

import { PermitTypeSchema, PermitDomainTypeSchema } from 'voltaire-effect/primitives/Permit'
import * as S from 'effect/Schema'

// Permit message
const permit = S.decodeSync(PermitTypeSchema)({
  owner: ownerBytes,
  spender: spenderBytes,
  value: 1000000000000000000n,
  nonce: 0n,
  deadline: 1700000000n
})

// EIP-712 domain
const domain = S.decodeSync(PermitDomainTypeSchema)({
  name: 'USD Coin',
  version: '2',
  chainId: 1n,
  verifyingContract: contractBytes
})

Errors

Returns PermitError on invalid addresses or values.