import { Address } from 'viem'; /** Quote and calldata boundaries use actual basis points, with a denominator of 10,000. */ export declare const CROSS_CURRENCY_DEFAULT_SLIPPAGE_BPS = 100n; export declare const CROSS_CURRENCY_QUOTE_SECONDS = 120n; export declare const universalRouterExecuteAbi: readonly [{ readonly name: "execute"; readonly type: "function"; readonly stateMutability: "payable"; readonly inputs: readonly [{ readonly type: "bytes"; readonly name: "commands"; }, { readonly type: "bytes[]"; readonly name: "inputs"; }, { readonly type: "uint256"; readonly name: "deadline"; }]; readonly outputs: readonly []; }]; /** Bounds the transaction by the old loan's maturity and every incoming offer's expiry. */ export declare const crossCurrencyDeadline: ({ now, maturity, expirations, }: { now: bigint; maturity: bigint; expirations: bigint[]; }) => bigint; /** All arguments and returned budget amounts are denominated in the NEW loan currency. */ export declare const calculateCrossCurrencyBudget: ({ quotedInput, slippageBps, premiumBps, netNewPrincipal, }: { quotedInput: bigint; slippageBps: bigint; premiumBps: bigint; netNewPrincipal: bigint; }) => { maximumInput: bigint; premium: bigint; maximumFlashRepayment: bigint; maximumTopUp: bigint; minimumSurplus: bigint; }; /** * Pays old debt and refunds unused NEW currency directly to the borrower. * * IMPLEMENTATION NOTE: Universal Router exact-output paths are reversed. Commands 0x02, * 0x01 and 0x04 move the full budget to the router, pay the old currency to the borrower, * and sweep remaining input to the borrower. The swap uses the router's balance, so the * PurchaseBundler cannot refund user input to its caller (the migrator). * https://developers.uniswap.org/docs/protocols/universal-router/concepts/commands */ export declare const buildCrossCurrencySwap: ({ borrower, oldCurrency, newCurrency, router, repaymentAmount, maximumInput, deadline, }: { borrower: Address; oldCurrency: Address; newCurrency: Address; router: Address; repaymentAmount: bigint; maximumInput: bigint; deadline: bigint; }) => `0x${string}`;