import { z } from 'zod'; import { Hex } from 'viem'; /** * Configuration for ETH transfer spam strategy. * Includes depth for recursive transfers (if implemented) and recipient handling. */ export declare const EthTransferConfigSchema: z.ZodObject<{ mode: z.ZodLiteral<"transfer">; depth: z.ZodDefault; amountPerTx: z.ZodDefault; recipient: z.ZodOptional; }, z.core.$strip>; /** * Configuration for contract deployment spam strategy. * Requires bytecode and optional constructor arguments. */ export declare const ContractDeployConfigSchema: z.ZodObject<{ mode: z.ZodLiteral<"deploy">; bytecode: z.ZodString; args: z.ZodOptional>; }, z.core.$strip>; /** * Configuration for contract read operations (eth_call). * Does not consume gas on-chain but stresses the RPC node. */ export declare const ContractReadConfigSchema: z.ZodObject<{ mode: z.ZodLiteral<"read">; targetContract: z.ZodString; functionName: z.ZodString; abi: z.ZodArray; args: z.ZodOptional>; }, z.core.$strip>; /** * Configuration for contract write operations (state-changing transactions). * Consumes gas and stresses block building. */ export declare const ContractWriteConfigSchema: z.ZodObject<{ mode: z.ZodLiteral<"write">; targetContract: z.ZodString; functionName: z.ZodString; abi: z.ZodArray; argsGenerator: z.ZodOptional any[], () => any[]>>; staticArgs: z.ZodOptional>; }, z.core.$strip>; /** * Configuration for multi-contract write operations. * Targets multiple contracts in a round-robin fashion. */ export declare const ContractWriteManyConfigSchema: z.ZodObject<{ mode: z.ZodLiteral<"write_many">; targetContracts: z.ZodArray; functionName: z.ZodString; abi: z.ZodArray; argsGenerator: z.ZodOptional any[], () => any[]>>; staticArgs: z.ZodOptional>; }, z.core.$strip>; /** * Configuration for Blast Large Contracts mode. * Rapidly deploys garbage contracts to stress state. */ export declare const BlastLargeContractsConfigSchema: z.ZodObject<{ mode: z.ZodLiteral<"blast_large_contracts">; contractCount: z.ZodNumber; codeSize: z.ZodNumber; outputFile: z.ZodString; }, z.core.$strip>; /** * Configuration for Batch Toucher mode. * Reads existing contract addresses and 'touches' them to load into witness. */ export declare const BatchToucherConfigSchema: z.ZodObject<{ mode: z.ZodLiteral<"batch_toucher">; inputFile: z.ZodString; batchSize: z.ZodDefault; toucherAddress: z.ZodString; }, z.core.$strip>; /** * Configuration for mixed strategy mode. * Allows defining multiple sub-strategies with percentage-based resource allocation. */ export declare const MixedStrategyConfigSchema: z.ZodObject<{ mode: z.ZodLiteral<"mixed">; strategies: z.ZodArray; depth: z.ZodDefault; amountPerTx: z.ZodDefault; recipient: z.ZodOptional; }, z.core.$strip>, z.ZodObject<{ mode: z.ZodLiteral<"deploy">; bytecode: z.ZodString; args: z.ZodOptional>; }, z.core.$strip>, z.ZodObject<{ mode: z.ZodLiteral<"read">; targetContract: z.ZodString; functionName: z.ZodString; abi: z.ZodArray; args: z.ZodOptional>; }, z.core.$strip>, z.ZodObject<{ mode: z.ZodLiteral<"read">; targetContract: z.ZodString; functionName: z.ZodString; abi: z.ZodArray; args: z.ZodOptional>; }, z.core.$strip>, z.ZodObject<{ mode: z.ZodLiteral<"write">; targetContract: z.ZodString; functionName: z.ZodString; abi: z.ZodArray; argsGenerator: z.ZodOptional any[], () => any[]>>; staticArgs: z.ZodOptional>; }, z.core.$strip>, z.ZodObject<{ mode: z.ZodLiteral<"write_many">; targetContracts: z.ZodArray; functionName: z.ZodString; abi: z.ZodArray; argsGenerator: z.ZodOptional any[], () => any[]>>; staticArgs: z.ZodOptional>; }, z.core.$strip>, z.ZodObject<{ mode: z.ZodLiteral<"blast_large_contracts">; contractCount: z.ZodNumber; codeSize: z.ZodNumber; outputFile: z.ZodString; }, z.core.$strip>, z.ZodObject<{ mode: z.ZodLiteral<"batch_toucher">; inputFile: z.ZodString; batchSize: z.ZodDefault; toucherAddress: z.ZodString; }, z.core.$strip>], "mode">; percentage: z.ZodNumber; }, z.core.$strip>>; }, z.core.$strip>; /** * Union schema for all possible spam strategies. */ export declare const SpamStrategySchema: z.ZodDiscriminatedUnion<[z.ZodObject<{ mode: z.ZodLiteral<"transfer">; depth: z.ZodDefault; amountPerTx: z.ZodDefault; recipient: z.ZodOptional; }, z.core.$strip>, z.ZodObject<{ mode: z.ZodLiteral<"deploy">; bytecode: z.ZodString; args: z.ZodOptional>; }, z.core.$strip>, z.ZodObject<{ mode: z.ZodLiteral<"read">; targetContract: z.ZodString; functionName: z.ZodString; abi: z.ZodArray; args: z.ZodOptional>; }, z.core.$strip>, z.ZodObject<{ mode: z.ZodLiteral<"write">; targetContract: z.ZodString; functionName: z.ZodString; abi: z.ZodArray; argsGenerator: z.ZodOptional any[], () => any[]>>; staticArgs: z.ZodOptional>; }, z.core.$strip>, z.ZodObject<{ mode: z.ZodLiteral<"write_many">; targetContracts: z.ZodArray; functionName: z.ZodString; abi: z.ZodArray; argsGenerator: z.ZodOptional any[], () => any[]>>; staticArgs: z.ZodOptional>; }, z.core.$strip>, z.ZodObject<{ mode: z.ZodLiteral<"blast_large_contracts">; contractCount: z.ZodNumber; codeSize: z.ZodNumber; outputFile: z.ZodString; }, z.core.$strip>, z.ZodObject<{ mode: z.ZodLiteral<"batch_toucher">; inputFile: z.ZodString; batchSize: z.ZodDefault; toucherAddress: z.ZodString; }, z.core.$strip>, z.ZodObject<{ mode: z.ZodLiteral<"mixed">; strategies: z.ZodArray; depth: z.ZodDefault; amountPerTx: z.ZodDefault; recipient: z.ZodOptional; }, z.core.$strip>, z.ZodObject<{ mode: z.ZodLiteral<"deploy">; bytecode: z.ZodString; args: z.ZodOptional>; }, z.core.$strip>, z.ZodObject<{ mode: z.ZodLiteral<"read">; targetContract: z.ZodString; functionName: z.ZodString; abi: z.ZodArray; args: z.ZodOptional>; }, z.core.$strip>, z.ZodObject<{ mode: z.ZodLiteral<"read">; targetContract: z.ZodString; functionName: z.ZodString; abi: z.ZodArray; args: z.ZodOptional>; }, z.core.$strip>, z.ZodObject<{ mode: z.ZodLiteral<"write">; targetContract: z.ZodString; functionName: z.ZodString; abi: z.ZodArray; argsGenerator: z.ZodOptional any[], () => any[]>>; staticArgs: z.ZodOptional>; }, z.core.$strip>, z.ZodObject<{ mode: z.ZodLiteral<"write_many">; targetContracts: z.ZodArray; functionName: z.ZodString; abi: z.ZodArray; argsGenerator: z.ZodOptional any[], () => any[]>>; staticArgs: z.ZodOptional>; }, z.core.$strip>, z.ZodObject<{ mode: z.ZodLiteral<"blast_large_contracts">; contractCount: z.ZodNumber; codeSize: z.ZodNumber; outputFile: z.ZodString; }, z.core.$strip>, z.ZodObject<{ mode: z.ZodLiteral<"batch_toucher">; inputFile: z.ZodString; batchSize: z.ZodDefault; toucherAddress: z.ZodString; }, z.core.$strip>], "mode">; percentage: z.ZodNumber; }, z.core.$strip>>; }, z.core.$strip>], "mode">; /** * Top-level configuration for a spam sequence. */ export declare const SpamSequenceConfigSchema: z.ZodObject<{ rpcUrl: z.ZodString; chainId: z.ZodNumber; maxGasLimit: z.ZodDefault; concurrency: z.ZodDefault; strategy: z.ZodDiscriminatedUnion<[z.ZodObject<{ mode: z.ZodLiteral<"transfer">; depth: z.ZodDefault; amountPerTx: z.ZodDefault; recipient: z.ZodOptional; }, z.core.$strip>, z.ZodObject<{ mode: z.ZodLiteral<"deploy">; bytecode: z.ZodString; args: z.ZodOptional>; }, z.core.$strip>, z.ZodObject<{ mode: z.ZodLiteral<"read">; targetContract: z.ZodString; functionName: z.ZodString; abi: z.ZodArray; args: z.ZodOptional>; }, z.core.$strip>, z.ZodObject<{ mode: z.ZodLiteral<"write">; targetContract: z.ZodString; functionName: z.ZodString; abi: z.ZodArray; argsGenerator: z.ZodOptional any[], () => any[]>>; staticArgs: z.ZodOptional>; }, z.core.$strip>, z.ZodObject<{ mode: z.ZodLiteral<"write_many">; targetContracts: z.ZodArray; functionName: z.ZodString; abi: z.ZodArray; argsGenerator: z.ZodOptional any[], () => any[]>>; staticArgs: z.ZodOptional>; }, z.core.$strip>, z.ZodObject<{ mode: z.ZodLiteral<"blast_large_contracts">; contractCount: z.ZodNumber; codeSize: z.ZodNumber; outputFile: z.ZodString; }, z.core.$strip>, z.ZodObject<{ mode: z.ZodLiteral<"batch_toucher">; inputFile: z.ZodString; batchSize: z.ZodDefault; toucherAddress: z.ZodString; }, z.core.$strip>, z.ZodObject<{ mode: z.ZodLiteral<"mixed">; strategies: z.ZodArray; depth: z.ZodDefault; amountPerTx: z.ZodDefault; recipient: z.ZodOptional; }, z.core.$strip>, z.ZodObject<{ mode: z.ZodLiteral<"deploy">; bytecode: z.ZodString; args: z.ZodOptional>; }, z.core.$strip>, z.ZodObject<{ mode: z.ZodLiteral<"read">; targetContract: z.ZodString; functionName: z.ZodString; abi: z.ZodArray; args: z.ZodOptional>; }, z.core.$strip>, z.ZodObject<{ mode: z.ZodLiteral<"read">; targetContract: z.ZodString; functionName: z.ZodString; abi: z.ZodArray; args: z.ZodOptional>; }, z.core.$strip>, z.ZodObject<{ mode: z.ZodLiteral<"write">; targetContract: z.ZodString; functionName: z.ZodString; abi: z.ZodArray; argsGenerator: z.ZodOptional any[], () => any[]>>; staticArgs: z.ZodOptional>; }, z.core.$strip>, z.ZodObject<{ mode: z.ZodLiteral<"write_many">; targetContracts: z.ZodArray; functionName: z.ZodString; abi: z.ZodArray; argsGenerator: z.ZodOptional any[], () => any[]>>; staticArgs: z.ZodOptional>; }, z.core.$strip>, z.ZodObject<{ mode: z.ZodLiteral<"blast_large_contracts">; contractCount: z.ZodNumber; codeSize: z.ZodNumber; outputFile: z.ZodString; }, z.core.$strip>, z.ZodObject<{ mode: z.ZodLiteral<"batch_toucher">; inputFile: z.ZodString; batchSize: z.ZodDefault; toucherAddress: z.ZodString; }, z.core.$strip>], "mode">; percentage: z.ZodNumber; }, z.core.$strip>>; }, z.core.$strip>], "mode">; durationSeconds: z.ZodOptional; totalTxs: z.ZodOptional; }, z.core.$strip>; /** TypeScript type alias for ETH Transfer config. */ export type EthTransferConfig = z.infer; /** TypeScript type alias for Contract Deploy config. */ export type ContractDeployConfig = z.infer; /** TypeScript type alias for Contract Read config. */ export type ContractReadConfig = z.infer; /** TypeScript type alias for Contract Write config. */ export type ContractWriteConfig = z.infer; /** TypeScript type alias for Multi Contract Write config. */ export type ContractWriteManyConfig = z.infer; /** TypeScript type alias for Blast Large Contracts config. */ export type BlastLargeContractsConfig = z.infer; /** TypeScript type alias for Batch Toucher config. */ export type BatchToucherConfig = z.infer; /** TypeScript type alias for Mixed Strategy config. */ export type MixedStrategyConfig = z.infer; /** TypeScript type alias for any Spam Strategy config. */ export type SpamStrategyConfig = z.infer; /** TypeScript type alias for the full Spam Sequence config. */ export type SpamSequenceConfig = z.infer; /** * Result returned after the spam sequence completes. */ export interface SpamResult { /** The block number of the last transaction mined (or current block if no txs). */ blockNumber: bigint; /** The hash of the last transaction sent, if any. */ txHash: Hex | null; /** Total cumulative gas used by all transactions in this sequence (local estimate). */ totalGasUsed: bigint; /** The total gas used in the block corresponding to blockNumber. */ finalBlockGasUsed: bigint; /** Breakdown of operations performed by each strategy. Key is strategy label, value is count. */ stats: { [key: string]: number; }; }