import type { Address, Hex } from 'viem';
import { type Quote } from './codec.js';
import type { Permit2Data, SubmitQuoteCommand } from './types.js';
import { TokenPullMode } from './types.js';
/** Common params for both quoting and executing */
export interface QuotedTransferParams {
    /** QuotedCalls contract address */
    quotedCallsAddress: Address;
    /** Warp route (TokenRouter) address */
    warpRoute: Address;
    /** Destination domain ID */
    destination: number;
    /** Recipient address as bytes32 */
    recipient: Hex;
    /** Transfer amount in token wei */
    amount: bigint;
    /** ERC20 token address (zeroAddress for native token routes) */
    token: Address;
    /** Signed quotes from fee-quoting service */
    quotes: SubmitQuoteCommand[];
    /** Client salt (pre-scope) */
    clientSalt: Hex;
    /** Target router bytes32 for cross-collateral TRANSFER_REMOTE_TO */
    targetRouter?: Hex;
}
export interface QuotedCallsTransaction {
    to: Address;
    data: Hex;
    value: bigint;
}
/**
 * Build calldata for QuotedCalls.quoteExecute() — used via eth_call
 * to discover fee amounts before building the real execute tx.
 *
 * Commands: [SUBMIT_QUOTE×N, TRANSFER_REMOTE/TRANSFER_REMOTE_TO]
 */
export declare function buildQuoteCalldata(params: QuotedTransferParams): QuotedCallsTransaction;
/**
 * Build calldata for QuotedCalls.execute() using fee amounts
 * from a prior quoteExecute call.
 *
 * Commands: [SUBMIT_QUOTE×N, TRANSFER_FROM/PERMIT2, TRANSFER_REMOTE, SWEEP]
 */
export declare function buildExecuteCalldata(params: QuotedTransferParams & {
    /** Fee quotes from quoteExecute (parsed Quote[][]) */
    feeQuotes: Quote[][];
    /** Token pull strategy */
    tokenPullMode: TokenPullMode;
    /** Required when tokenPullMode === Permit2 */
    permit2Data?: Permit2Data;
}): QuotedCallsTransaction;
//# sourceMappingURL=builder.d.ts.map