Files
wallet/ui
grenadeandClaude Opus 5.5 4f3b446cc3
ci / gate (push) Successful in 13m0s
feat(near): cash out from the intents account to an address on another chain
The intents panel can now pay a token it holds out through 1Click (#77):
USDC on Ethereum, Base, Arbitrum, Solana or NEAR; USDT or ETH on
Ethereum; BTC.

- cashout.toml ships the destinations with their 1Click asset ids,
  checked against GET /v0/tokens today, and the address form each
  takes.
- check_address refuses a mistyped payout address before anything is
  priced or signed, because nothing refunds a payout to the wrong
  address:
  - EVM: 0x and 40 hex digits, with the EIP-55 checksum enforced when
    the address is mixed case;
  - Bitcoin: bech32 or base58;
  - Solana: base58 of 32 bytes;
  - NEAR: an account id.
- near_cashout takes a firm 1Click quote with recipientType
  DESTINATION_CHAIN, the fee as appFees, and refunds to the account. It
  checks the echoed recipient, its type, the refund, the assets and the
  amount against what was asked, funds it with one mt_transfer signed by
  the owning wallet's key, and has the sponsor relay it.
- The 1Click request builder now serves swaps and cash-outs: None pays
  the account itself, Some(address) pays out on the destination chain.

Checked live from the dev account:
- 10 wNEAR quoted at 46.38 USDC on Ethereum, Ethereum's withdrawal
  included, with a floor of 45.91;
- the same EIP-55 example address with its last character's case
  flipped was refused on its checksum.

Refs #77

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