> ## Documentation Index
> Fetch the complete documentation index at: https://corridor.udokaam.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# NEAR Intents: funding the shielded lane

> How USD leaves the hub and arrives as ZEC in a shielded vault: NEAR Intents 1Click quotes from Base USDC to ZEC, delivered straight to the vault's unified address.

<img src="https://mintcdn.com/corridorapp/YeOtjsXcStLLcZ_W/images/chains/near.svg?fit=max&auto=format&n=YeOtjsXcStLLcZ_W&q=85&s=f9227452bdd20b00178ec89147835b6c" alt="NEAR" width="56" height="56" data-path="images/chains/near.svg" />

The shielded lane needs ZEC in the vault. NEAR Intents' **1Click** API swaps USDC to ZEC and delivers it directly to a Zcash unified address, so the vault receives shielded funds without Corridor holding ZEC anywhere else.

## API

| | |
| - | - |
| Base URL | `https://1click.chaindefuser.com/v0` |
| Origin asset (Base USDC) | `nep141:base-0x833589fcd6edb6e08f4c7c32d4f71b54bda02913.omft.near` |
| Destination asset | `nep141:zec.omft.near` |

```ts theme={"dark"}
const q = await quoteSwap({
  originAsset: NEAR_ASSETS.baseUSDC,
  destinationAsset: NEAR_ASSETS.ZEC,
  amount: 15_000_000n,            // $15
  recipient: vaultUnifiedAddress, // ZEC delivered here
  refundTo: baseRelay,            // USDC refunded here if the swap cannot complete
  dry: true,                      // price only, no deposit address reserved
});
usdPerZec(q);  // implied price
```

A live (non-dry) quote returns a `depositAddress`; the saga sends USDC there and polls `swapStatus(depositAddress)` until delivery.

## Why Base

NEAR Intents has no Tempo market, so on mainnet the shielded route takes one Across hop from the hub to Base, then swaps Base USDC → ZEC:

```text theme={"dark"}
ledger.reserve → across.bridge (Tempo → Base) → near.swap (Base USDC → ZEC) → zcash.shieldedBatch
```

## On testnet

The testnet `near.swap` leg is fully real except for the swap itself:

1. **Rate:** a live mainnet 1Click quote (dry).
2. **Tempo leg:** pathUSD leaves the treasury toward the swap venue with the batch reference as memo ([0xbafdbde3…](https://explore.testnet.tempo.xyz/tx/0xbafdbde30386b736fb7151df338ebacc395843575704303fe5e438c17bb760a5)).
3. **Delivery:** real testnet ZEC, sized from the live quote, sent to the FROST vault's unified address with a memo ([1f05d641…](https://testnet.zcashexplorer.app/transactions/1f05d6415ad694bdc3ecffc06ef57eb9b859b2fbc1c5724601faf5bf806ee720)).

Bookings convert the customer's pathUSD hold into a ZEC liability through a `usd-zec` clearing pair, and the delivery is booked under the vault output that observers (and an auditor's viewing key) will see. Each step is recorded in `leg_artifacts`, so a retry never sends twice.

| Quote | Value |
| - | - |
| \$50 USDC → ZEC (30 Sep 2026) | 0.0348 ZEC, \~150 s estimate |
| \$15 USDC → ZEC (saga run) | 0.01022830 ZEC (\~\$1,466.52 per ZEC) |

<Info>
  The mainnet `near.swap` leg from Base USDC is next on the [roadmap](/status/roadmap); the quote and status client is already in `@corridor/swap-near`.
</Info>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.