|
1 | 1 | import { NextResponse, type NextRequest } from "next/server"; |
2 | | -import { DAO_ADDRESSES, SWAP_FEE_BPS } from "@/lib/config"; |
| 2 | +import { getSwapFeeRecipient, SWAP_FEE_BPS } from "@/lib/config"; |
3 | 3 |
|
4 | 4 | // Server-only API key — never leaked to the client bundle. |
5 | 5 | const ZEROX_API_KEY = process.env.ZEROX_API_KEY ?? ""; |
6 | 6 |
|
7 | | -// Fee recipient + rate live in src/lib/config.ts so they ship with the code |
8 | | -// (the DAO treasury is canonical and overridable via NEXT_PUBLIC_TREASURY_ADDRESS |
9 | | -// alongside every other DAO address). |
10 | | -const FEE_RECIPIENT = DAO_ADDRESSES.treasury; |
| 7 | +// Fee recipient is chain-aware: Base → DAO treasury, others → multichain |
| 8 | +// custody address. See `getSwapFeeRecipient` in src/lib/config.ts. |
11 | 9 | const FEE_BPS = String(SWAP_FEE_BPS); |
12 | 10 |
|
13 | 11 | const ZEROX_HEADERS: HeadersInit = { |
@@ -41,8 +39,9 @@ export async function GET(request: NextRequest) { |
41 | 39 |
|
42 | 40 | if (wantsFee) { |
43 | 41 | const buyToken = params.get("buyToken") ?? ""; |
44 | | - if (buyToken) { |
45 | | - params.set("swapFeeRecipient", FEE_RECIPIENT); |
| 42 | + const chainId = Number(params.get("chainId") ?? "0"); |
| 43 | + if (buyToken && Number.isFinite(chainId) && chainId > 0) { |
| 44 | + params.set("swapFeeRecipient", getSwapFeeRecipient(chainId)); |
46 | 45 | params.set("swapFeeBps", FEE_BPS); |
47 | 46 | params.set("swapFeeToken", buyToken); |
48 | 47 | } |
|
0 commit comments