EIPs
EIP-5792 — Wallet calls (batched submission)
A dapp asks the wallet to execute multiple calls atomically. The wallet can implement the batch any way it likes — multiple sequential transactions, a multicall, an EIP-7702 set-code call, or a smart-account UserOperation. The dapp doesn’t care; it just submits the calls and polls for status.
import { wallet_send_calls, wallet_get_calls_status } from "@ethernauta/eip/5792";
const id = await wallet_send_calls({
version: "1.0",
chain_id: "0x1",
from: account,
calls: [
{ to: token_a, data: approve_calldata },
{ to: token_b, data: swap_calldata },
],
})(signer({ chain_id: eip155_1.chain_id }));
const status = await wallet_get_calls_status({ id })(
signer({ chain_id: eip155_1.chain_id }),
); Surface
Methods
| Method | Shape | Purpose |
|---|---|---|
wallet_send_calls | Signable<SendCallsResult> | Submit a batch. |
wallet_get_calls_status | Signable<CallsStatus> | Poll for status by batch ID. |
wallet_get_capabilities | Signable<Capabilities> | What the wallet supports. |
Status codes
CallsStatusCode enumerates pending / confirmed / partial / reverted states. The CALLS_STATUS constant holds the numeric values.
Types
SendCallsParameter,SendCallsParameters,SendCallsCall,SendCallsResultCallsStatus,CallsStatusCode,CallsReceipt,CallsReceiptLogCapabilities
All with matching Valibot schemas.
Why this matters
Without 5792, dapps that need “approve + swap” had to choose between:
- Two separate signatures (bad UX).
- Asking the user to use a hardcoded gas multiplier (fragile).
- Relying on permit (only works on tokens that implement ERC-2612).
With 5792 the wallet decides the execution strategy: a multicall on chains where it’s deployed, an EIP-7702 set-code tx on chains where it’s deployed, or a smart-account UserOperation if the account is a 4337 smart account. The dapp doesn’t choose.
What the wallet does
The Ethernauta wallet’s send-calls view shows the batch as a list of decoded calls (using the selector registry to label them — see Tooling → ERC codegen). On approval, it picks the best execution strategy available for the active chain.
wallet_getCallsStatus is a tier-4 internal-storage read: the wallet tracks which batches it submitted and serves their status from a local registry.
See also
- EIP-7702 — one of the execution strategies.
- Wallet → send-calls view.