Compatibility with 1Click
What is the same as mainnet 1Click, what is different on Tidepool, and what is not supported yet.
Checked against the official 1Click OpenAPI (https://1click.chaindefuser.com/docs/v0/openapi.yaml). The latest live check is published in CONFORMANCE.md.
Same as mainnet 1Click
| Area | Detail |
|---|---|
| Endpoints | GET /v0/tokens, POST /v0/quote, POST /v0/deposit/submit, GET /v0/status, GET /v0/any-input/withdrawals, POST /v0/generate-intent, POST /v0/submit-intent, /v0/orders (create, list, get, cancel), POST /v0/auth/authenticate, POST /v0/auth/refresh, GET /v0/account/balances, GET /v0/account/history |
| Status codes | 200 on success for all four (quote and deposit/submit return 200, as in the spec), 400 on bad input, 404 for an unknown deposit address |
| Request fields | dry, swapType, slippageTolerance, originAsset, depositType, destinationAsset, amount, refundTo, refundType, recipient, recipientType, deadline (same required set) |
| Response shapes | QuoteResponse (correlationId, timestamp, signature, quoteRequest, quote), GetExecutionStatusResponse with swapDetails, TokenResponse |
| Swap types | EXACT_INPUT, EXACT_OUTPUT, FLEX_INPUT, ANY_INPUT |
| Quote options | appFees (bps, settled in the same execute_intents), depositMode SIMPLE / MEMO |
| Deposit / refund / recipient types | ORIGIN_CHAIN, INTENTS / ORIGIN_CHAIN, INTENTS / DESTINATION_CHAIN, INTENTS |
| Status lifecycle | PENDING_DEPOSIT, KNOWN_DEPOSIT_TX, INCOMPLETE_DEPOSIT, PROCESSING, SUCCESS, REFUNDED, FAILED |
| SDK | @defuse-protocol/one-click-sdk-typescript works by changing OpenAPI.BASE |
Different on Tidepool
| Area | Mainnet 1Click | Tidepool |
|---|---|---|
| Network | NEAR mainnet + many chains | NEAR testnet; Base, Arbitrum and Ethereum Sepolia, Solana devnet, Stellar testnet, Sui testnet, Bitcoin testnet4, XRP Ledger testnet |
| Solvers | Competing solvers via the solver relay | One Tidepool maker quotes and fills every swap (CoinGecko prices + fixed fee) |
| Verifier | intents.near | Official defuse v0.4.5 contract (built unmodified from the upstream tag) at verifier.tidepool-sandbox.testnet |
| Cross-chain | Production bridges | Tidepool-run trusted relayer bridges to Base / Arbitrum / Ethereum Sepolia, Solana devnet, Stellar testnet, Sui testnet, Bitcoin testnet4, XRP Ledger testnet |
blockchain values | 38 chains, listed in the spec enum | near, eth, base, arb, sol, stellar, sui, btc, xrp |
| XRP asset id | nep141:xrp.omft.near, 6 decimals, MEMO deposits (destination tag) | nep141:xrp.tp-omft.testnet, 6 decimals, MEMO deposits (destination tag), capped at 100 XRP; read ids from /v0/tokens |
| Stellar asset ids | nep245: ids from the HOT bridge, 7 decimals | nep141: OMFT-style ids; always read ids from /v0/tokens |
| Tokens | Real assets | Six NEAR test tokens, plus bridged USDC and USDT and native SOL, XLM, SUI, BTC and XRP; test USDC and USDT come from a public faucet; no value |
| Deposit addresses | Run by 1Click | Keys derived by the Tidepool server (custodial, testnet) |
| Auth | JWT required for fee-free quotes | Free JWTs from /v0/auth/authenticate (nep413, raw_ed25519, erc191); for swaps any x-api-key / Bearer value gets the lower fee |
depositMode: MEMO | Memo chains | NEAR-native ORIGIN_CHAIN tokens, Stellar testnet and XRP Ledger testnet (required on both); a NEAR-native submit also needs nearSenderAccount. Not allowed with ANY_INPUT |
ANY_INPUT | Authorized partners only | Open to everyone on testnet. Not available with Stellar or XRP deposits or SOL, XLM, SUI, BTC and XRP payouts |
ANY_INPUT request | NEAR's example uses originAsset: "1cs_v1:any" and amount: "0" | Rejected with 400: send a real originAsset id from /v0/tokens and an amount above "0" (it is only used to size the deposit; minAmountIn is "1" and each deposit is converted at the live price). appFees and ORIGIN_CHAIN deposits are accepted. See Swap types |
Mainnet asset ids and the $1,000 pool threshold for ANY_INPUT batching | Mainnet ids; deposits pooled until the threshold | Testnet ids only; each ANY_INPUT deposit is swapped on its own, with no pool threshold |
ANY_INPUT withdrawals | withdrawals object | Spec's single object (newest), plus the full page in tidepool.withdrawals |
| Orders | Solver-filled | Tidepool maker fills once (no partial fills); deadline 7d default, 30d max |
| generate-intent | All standards | INTENTS-deposit quotes only; webauthn/ton_connect submit-only |
swapDetails.slippage | "Actual slippage", unit not stated in the spec (example 50) | A fraction, for example 0.0012 for 0.12% |
/v0/account/balances | Private + public | Verifier balances, source: private |
| Extras | — | POST /v0/faucet, GET /v0/health, the quote field simulate (STUCK or FAILED) and tidepool objects in responses |
Accepted but no effect
| Feature | Behaviour on Tidepool |
|---|---|
confidentiality | Accepted and ignored; swaps settle publicly (see the settlement distinction below and NEAR's Oct 27, 2026 update). The CONFIDENTIAL_INTENTS deposit, refund and recipient types are not supported and return 400. |
referral, rebates, insured, virtualChain*, connectedWallets, sessionId, quoteWaitingTimeMs | Accepted and echoed, no effect |
Settlement distinction
On mainnet, 1Click now settles every swap confidentially on the NEAR Private Shard, so swapDetails.nearTxHashes lists only the public shield and unshield transactions (NEAR changelog, Oct 27, 2026). Tidepool testnet swaps settle publicly on the testnet verifier, so nearTxHashes also includes the swap's own hash. This is not a choice by Tidepool: confidential settlement (NEAR Private Shard / Confidential Intents) runs on NEAR's private infrastructure, which isn't exposed to outside builders. Rely on status (SUCCESS means delivered), not on the presence of a swap hash, so the same code works on both.
Community-built · not affiliated with NEAR. Tidepool is community-built and not affiliated with NEAR, Defuse or 1Click. Testnet only; test tokens have no value. Built by @realchriswilder.