import { type Abi, type Address, type Hex, type PublicClient } from "viem"; import type { EVCBatchItem } from "../services/executionService/executionServiceTypes.js"; import { type BuildQueryFn } from "../utils/buildQuery.js"; export interface ExecuteBatchSimulationParams { provider: PublicClient; evcAddress: Address; prependItems: EVCBatchItem[]; totalValue: bigint; lensAddress: Address; lensAbi: Abi | readonly unknown[]; lensFunctionName: string; lensArgs: unknown[]; } /** * Adapter for EVC batchSimulation calls. * Follows the SDK's injectable query pattern: the raw RPC call is a `query*` arrow * function property, wrapped by `applyBuildQuery` for logging/caching/profiling. */ export declare class BatchSimulationAdapter { constructor(buildQuery?: BuildQueryFn); /** * Execute an EVC batchSimulation via eth_call. * The calldata should already be encoded as batchSimulation(items). */ queryBatchSimulation: (provider: PublicClient, evcAddress: Address, calldata: Hex, value: bigint) => Promise; } /** * Wraps a lens contract call inside EVC.batchSimulation() with prepended batch items. * This enables read-time injection of state changes (e.g. Pyth price updates) that * are atomically applied before the lens read, without any on-chain transaction. * * Returns the decoded lens call result, or undefined on failure. */ export declare function executeBatchSimulation(params: ExecuteBatchSimulationParams, adapter?: BatchSimulationAdapter): Promise; //# sourceMappingURL=batchSimulation.d.ts.map