Skip to main content
Returns the unsigned call batch to deposit into a vault, for the given wallet to sign. Non-custodial — the server never signs, sends, or holds keys. The batch is exactly what the Spiral app submits.

Input

Same as simulate_equity_deposit, plus:
string
required
The wallet that will sign. The stock leg and the yield loop are opened for it.

Output

Executing

Unlike a loop bundle there is no approvals / tx split: the Morpho manager authorization the router needs is granted and revoked inside the batch, so nothing persists after it.
1

Submit as one atomic batch

Send calls in order as a single batch — EIP-5792 wallet_sendCalls, or a Safe MultiSend. This is how the app submits it (atomic: true).
2

If the wallet cannot batch

Send the calls one by one, in order, and always send the final call — it revokes the authorization granted in step 2, even if step 3 failed.
3

Or hand off the link

Give the user meta.signingUrl to review and sign in the Spiral app.
Rebuild if meta.expiresAt passes before signing — the swap calldata is only valid for ~60 seconds.

What the router does on-chain

equityEntry pulls the USDG, swaps it to the stock, supplies the stock as your collateral on the partner Morpho market, borrows stockBorrowAmount USDG against it (bounded on-chain to LLTV − 0.25% of the collateral actually received), zaps that USDG into the yield collateral and opens the yield loop on Spiral’s core for you. Any residual is refunded to you in the same call.