Skip to main content
import * as Paymaster from 'voltaire-effect/primitives/Paymaster'
import { Effect } from 'effect'

// Create with time validity
const paymaster = await Effect.runPromise(Paymaster.from({
  address: '0x1234567890123456789012345678901234567890',
  data: '0xabcd',
  validUntil: 1700000000n,
  validAfter: 1699000000n
}))

// Check validity at timestamp
const valid = await Effect.runPromise(
  Paymaster.isValid(paymaster, BigInt(Math.floor(Date.now() / 1000)))
)

// Encode for UserOperation
const paymasterAndData = await Effect.runPromise(
  Paymaster.toPaymasterAndData(paymaster)
) // Uint8Array: [20 bytes address][data bytes]

// Check for no paymaster
const isZero = await Effect.runPromise(Paymaster.isZeroAddress(paymaster))

Fields

FieldTypeDescription
addressAddressPaymaster contract
dataUint8ArrayPaymaster-specific data
validUntilbigint?Expiry timestamp
validAfterbigint?Start timestamp