import type { Address, Hex, PermissionTemplate } from "../types.js";
/**
 * Params for SharedApproveAndCallBatchPermission.
 *
 * Matches the on-chain `_applyConfig` decode exactly:
 *   abi.decode(params, (Config))
 * where Config is the tuple
 *   (address[] tokens, address[] spenders, address[] consumingTargets,
 *    bytes4[] consumingSelectors, uint256[] maxApprovalAmounts, bool requireAmountMatch)
 *
 * Note: the contract encodes a SINGLE struct, so the blob is one top-level tuple.
 */
export type ApproveAndCallBatchParams = {
    /** Allowlisted ERC-20 tokens that may be approved. Index-parallel with `maxApprovalAmounts`. */
    tokens: Address[];
    /** Allowlisted spenders that may receive the allowance. */
    spenders: Address[];
    /** Allowlisted consuming-call targets (often the same as spenders). */
    consumingTargets: Address[];
    /** Allowlisted selectors for the consuming call (4-byte hex, e.g. "0x095ea7b3"). */
    consumingSelectors: Hex[];
    /** Max approve amount per token, index-parallel with `tokens`. */
    maxApprovalAmounts: bigint[];
    /** When true, the consuming call's leading uint256 arg must equal the approved amount. */
    requireAmountMatch: boolean;
};
export declare const approveAndCallBatchTemplate: PermissionTemplate<ApproveAndCallBatchParams>;
//# sourceMappingURL=approveAndCallBatch.d.ts.map