Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 9 additions & 2 deletions src/services/rain.ts
Original file line number Diff line number Diff line change
Expand Up @@ -429,12 +429,15 @@ export const rainApi = {
/**
* Persist the serialized ZeroDev permission on the user's card so the
* backend can submit session-key UserOps for collateral withdrawals.
*
* No step-up: the payload is itself a fresh passkey signature (the grant
* ceremony's enable sig) — an extra assertion here just doubles the
* fingerprint prompts on the grant flow.
*/
submitWithdrawSessionApproval: async (input: { serializedApproval: string }): Promise<void> => {
await rainRequest<{ ok: boolean }>({
method: 'POST',
path: '/rain/cards/withdraw/session-approve',
stepUp: true,
body: input,
})
},
Expand All @@ -443,12 +446,16 @@ export const rainApi = {
* Stage a Rain V2 withdrawal: backend fetches Rain's executor signature,
* reads the current adminNonce from the collateral proxy, and persists a
* short-lived prep record. Caller then signs the admin EIP-712 payload.
*
* No step-up: a prep is inert until the passkey produces the admin
* EIP-712 signature that follows it, so the flow proves user presence on
* its own. Step-up here made every collateral-funded send cost three
* fingerprint prompts instead of two (the 2026-07 triple-prompt reports).
*/
prepareWithdrawal: async (input: PrepareRainWithdrawalInput): Promise<PrepareRainWithdrawalResponse> => {
return rainRequest<PrepareRainWithdrawalResponse>({
method: 'POST',
path: '/rain/cards/withdraw/prepare',
stepUp: true,
body: input,
})
},
Expand Down
Loading