The veilify_* methods and Round fields describe the proposed Veilify interface. No live Veilify RPC deployment is published yet.
Creates a prepared intent: the chosen round, a fee quote, gas fields and an expiry. The wallet then signs an ordinary transfer that matches it. Requires an account session.

Params

params[0] is an object:
address
required
The withdrawing account.
address
required
Public recipient.
address
required
0x0 for ETH.
string
required
Gross amount, base units, decimal string.
'instant' | 'round'
required
string
Desired net amount. The service computes the gross.
number
Requested round (Unix seconds). Omit to let the service pick the next valid round.
{ id, index, count }
Stagger metadata. id is a random 32-byte hex value shared by all legs. index is zero-based.

Result

hex
required
'instant' | 'round'
required
Must equal the requested mode.
number | null
Chosen round. Required for Round.
string
Present when the service moved the requested round.
object
object | null
maxFeePerGas, maxPriorityFeePerGas, gasLimit. All three are required for Round.
string[]
number
required
Unix seconds (milliseconds are accepted and normalized).

Client rules

  1. Round responses without roundAt or full gas are rejected as malformed.
  2. Refresh an intent with < 30 seconds left before asking the wallet to sign.
  3. Build the wallet transaction from the intent:
    • ETH: { chainId, to, value, gas, maxFeePerGas, maxPriorityFeePerGas }
    • ERC-20: { chainId, to: token, data: transfer(to, amount), gas, maxFeePerGas, maxPriorityFeePerGas }
  4. For staggered exits, prepare every leg before signing any. If one fails, cancel the others.
intentId, roundAt and group are not fields of the signed transaction. The service associates the signature with the intent. Round timing is service policy, not a cryptographic binding.