import { type Address, type Hex } from 'viem'; import type { Permit2Data, SubmitQuoteCommand } from './types.js'; import { QuotedCallsCommand } from './types.js'; /** * Sentinel value: resolves to the contract's token balance (ERC20) or * native balance (ETH) at execution time. Matches QuotedCalls.CONTRACT_BALANCE. */ export declare const CONTRACT_BALANCE: bigint; /** Matches QuotedCalls._scopeSalt: keccak256(abi.encodePacked(caller, salt)) */ export declare function computeScopedSalt(caller: Address, clientSalt: Hex): Hex; /** Encode SUBMIT_QUOTE input: abi.encode(address quoter, SignedQuote quote, bytes signature, bytes32 clientSalt) */ export declare function encodeSubmitQuoteInput(cmd: SubmitQuoteCommand, clientSalt: Hex): Hex; /** Encode PERMIT2_PERMIT input: abi.encode(IAllowanceTransfer.PermitSingle, bytes signature) */ export declare function encodePermit2PermitInput(permit2Data: Permit2Data): Hex; /** Encode PERMIT2_TRANSFER_FROM input: abi.encode(address token, uint160 amount) */ export declare function encodePermit2TransferFromInput(token: Address, amount: bigint): Hex; /** Encode TRANSFER_FROM input: abi.encode(address token, uint256 amount) */ export declare function encodeTransferFromInput(token: Address, amount: bigint): Hex; /** Encode TRANSFER_REMOTE input: abi.encode(address warpRoute, uint32 destination, bytes32 recipient, uint256 amount, uint256 value, address token, uint256 approval) */ export declare function encodeTransferRemoteInput(params: { warpRoute: Address; destination: number; recipient: Hex; amount: bigint; value: bigint; token: Address; approval: bigint; }): Hex; /** Encode TRANSFER_REMOTE_TO input: abi.encode(address router, uint32 destination, bytes32 recipient, uint256 amount, bytes32 targetRouter, uint256 value, address token, uint256 approval) */ export declare function encodeTransferRemoteToInput(params: { router: Address; destination: number; recipient: Hex; amount: bigint; targetRouter: Hex; value: bigint; token: Address; approval: bigint; }): Hex; /** Encode SWEEP input: abi.encode(address token) */ export declare function encodeSweepInput(token: Address): Hex; export declare const quotedCallsAbi: readonly [{ readonly name: "execute"; readonly type: "function"; readonly inputs: readonly [{ readonly name: "commands"; readonly type: "bytes"; }, { readonly name: "inputs"; readonly type: "bytes[]"; }]; readonly outputs: readonly []; readonly stateMutability: "payable"; }, { readonly name: "quoteExecute"; readonly type: "function"; readonly inputs: readonly [{ readonly name: "commands"; readonly type: "bytes"; }, { readonly name: "inputs"; readonly type: "bytes[]"; }]; readonly outputs: readonly [{ readonly name: "results"; readonly type: "tuple[][]"; readonly components: ({ name: string; type: "address"; } | { name: string; type: "uint256"; })[]; }]; readonly stateMutability: "nonpayable"; }]; /** Encode QuotedCalls.execute(commands, inputs) calldata */ export declare function encodeExecuteCalldata(commands: QuotedCallsCommand[], inputs: Hex[]): Hex; /** Encode QuotedCalls.quoteExecute(commands, inputs) calldata */ export declare function encodeQuoteExecuteCalldata(commands: QuotedCallsCommand[], inputs: Hex[]): Hex; export interface Quote { token: Address; amount: bigint; } /** Decode the return value of quoteExecute into Quote[][] */ export declare function decodeQuoteExecuteResult(data: Hex): Quote[][]; /** Sum Quote[][] into totals per token address (normalized to lowercase) */ export declare function sumQuotesByToken(results: Quote[][]): Map; /** Extract native (address(0)) and ERC20 totals from quote results */ export declare function extractQuoteTotals(results: Quote[][]): { nativeValue: bigint; tokenTotals: Map; }; //# sourceMappingURL=codec.d.ts.map