@yodlpay/payment-router
v1.3.0
Published
Find the cheapest swap/bridge route across multiple protocols and encode Yodl payment calls
Readme
@yodlpay/payment-router
Find the cheapest swap/bridge route across multiple protocols and encode Yodl payment calls.
Installation
npm install @yodlpay/payment-routerPeer dependencies: viem and typescript.
Usage
import { getTokenBySymbol } from "@yodlpay/tokenlists";
import { preparePayment } from "@yodlpay/payment-router";
import { base } from "viem/chains";
const payment = await preparePayment(
{
fromToken: getTokenBySymbol("USDC", base.id),
toToken: getTokenBySymbol("USDT", base.id),
amount: "10",
receiver: "0x...",
},
"0x...", // sender address
);
// payment.calls → BatchCall[] ready for UserOp
// payment.method → "direct" | "swap" | "bridge"
// payment.protocol → "Relay" | "LI.FI" | "Across" | "Uniswap" | "direct"
// payment.fees → FeeItem[] | undefinedFee information
Every quote returns an itemized fee breakdown via fees?: FeeItem[] on both QuoteResult and PreparedPayment:
interface FeeItem {
label: string; // e.g. "Relayer gas", "LP fee", "Protocol fee"
category: FeeCategory; // "gas" | "relayer" | "lp" | "protocol" | "app"
amount: string; // raw token units
token: Address; // fee token address
chainId: number;
amountUsd?: string; // USD equivalent (when available)
}Protocols
| Protocol | Swap | Bridge | |----------|------|--------| | Relay | Yes | Yes | | LI.FI | Yes | Yes | | Across | No | Yes | | Uniswap | Yes | No |
Key concepts
- Stateless — no wallet, no signing, no tx submission. The SDK only does quoting + call encoding.
BatchCall[]— the output format. Each call has{ to, data, value }ready to batch into a UserOp.- Protocol adapters — all implement the same
ProtocolAdapterinterface withgetQuote()andbuildCalls().
