/** * SwapProvider Interface — Abstracts over different DEX routing backends * * Implementations: 0x API (aggregated) and Aerodrome Router (direct). * Strategy: try 0x first (better routing), fall back to Aerodrome for core pairs. */ import type { SwapQuoteParams, SwapQuote } from '../types'; export interface SwapProvider { /** Provider name (e.g., '0x', 'aerodrome') */ readonly name: string; /** * Get a swap quote. * @param params - Sell/buy tokens, amount, taker address, slippage * @returns Quote with calldata for execution */ getQuote(params: SwapQuoteParams): Promise; } export declare class SwapProviderError extends Error { readonly provider: string; readonly retryable: boolean; readonly statusCode?: number; constructor(message: string, provider: string, retryable?: boolean, statusCode?: number); } /** * Auto-select provider: try 0x first, fall back to Aerodrome. */ export declare function getQuoteWithFallback(providers: SwapProvider[], params: SwapQuoteParams): Promise;