Builders

dApp integration

The dApp translates the contract into user flows: owner dashboard, vault creation, heir claim console, settings, and cleanup. Good integration means users see intent, not ABI noise.

Routes

The main frontend has a small route surface for the dApp.

/app
dApp home and user orientation.
/dashboard
Owner vault status, balances, check-in, deposits, withdrawals, and token tools.
/create
Create a new vault lifecycle.
/claim
Heir console for owner-address based claims.
/settings
Owner settings and dangerous cleanup actions, visible only when a vault exists.

Reads

The dApp should read state from the contract and refetch after transactions or new blocks.

  • getVaultDetails powers the dashboard summary.
  • nativeUSDCBalances powers the main balance card.
  • getTrackedTokens plus tokenBalances powers token rows.
  • claimableAt and timeUntilClaimable power heir readiness and timers.
  • getVaultState decides whether to show active controls, claim controls, or completed-vault cleanup UI.

Writes

Write transactions should have clear labels, pending states, receipt waits, and user-readable errors.

Create
createVault
Liveness
checkIn
Native funds
depositUSDC, withdrawUSDC, claimUSDC
Tokens
depositToken, withdrawToken, claimToken
Settings
updateHeir, updateInactivityPeriod, updateGracePeriod
Cleanup
disableVault

Error mapping

Raw RPC messages are not acceptable user-facing UX. Custom errors should be translated.

VaultAlreadyExists
This wallet already has a vault. Disable the drained vault before creating a new one.
VaultClaimable
Owner controls are frozen because the inheritance window is open.
VaultNotClaimable
The heir claim window is not open yet.
VaultAlreadyClaimed
Inheritance was already activated for this vault.
AssetBalanceNotZero
Claim or withdraw remaining assets before disabling the vault.
InvalidReceiver
Enter a valid receiver wallet address.

Wallet copy on Arc

The dApp should consistently use USDC language. Wallets may still show generic native transaction UI internally, but page copy, button labels, and transaction summaries should say native USDC, not ETH.