Files
wallet/ui
grenadeandClaude Opus 5.5 814355c9f3
ci / gate (push) Canceled after 5m23s
feat(near): swaps inside the intents account, on a Ref pool or 1Click
The intents panel can now swap any token the account holds into QTC,
wNEAR or USDC (#76). Rust prices it both ways and takes the larger
output.

- Pool: best_pool lists Ref's DCL pools for the pair and skips any
  that are not running or whitelist other accounts (they refuse with
  E407). It quotes each on chain.
  - pool_swap_calls is one delegate action: first the fee's
    mt_transfer, ceil(amount × bps) in the input token to the sponsor's
    recipient; then the ft_withdraw to the pool, with Ref's Swap
    message, a floor (default 1% slippage), and the account as
    client_echo.
  - The fee is computed exactly as the sponsor's rule (observer#51)
    checks it, so the relay accepts it.
- 1Click: a quote inside Intents (recipient and refund are the account)
  carrying the fee as appFees. When it wins, a firm quote is taken, its
  echoed recipient, refund, assets and amount checked against what was
  asked, and it is funded by one relayed mt_transfer.
- near_swap prices again at confirm time, checks the balance and the
  sponsor's terms, signs with the owning wallet's key, and relays it.

Measured while building this: without a partner key, 1Click adds its
own 20 bps and passes on half of an app fee (30 asked, 15 recorded).
The Distribution Channel key is what makes the 1Click leg pay the full
fee.

Checked live with quotes from the dev account:
- 1 QTC → 24.75 wNEAR on the QTC/wNEAR pool, with a 0.003 QTC fee; no
  1Click quote;
- 10 wNEAR → 46.83 USDC on a pool, against 46.78 on 1Click;
- 10 wNEAR → 0.393 QTC.
Executing one needs a funded account, which the release test (#78's
route on a real wallet) will do.

Refs #76, #82

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NUx7SPonBnB3ofU4mH41WT
2026-10-09 21:25:22 +03:00
..
2026-09-18 09:47:21 +03:00