export type { Account, Address, ChainContract, GetContractReturnType as Contract, FeeValuesEIP1559, Assign as Merge, } from 'viem'; /** * Utility type that returns a tuple type with the first element removed. * * @example * type Args = [string, number, boolean]; * type Rest = DropFirst; // [number, boolean] */ export type DropFirst = T extends [unknown, ...infer R] ? R : never; /** * The primary denomination of a blockchain’s currency * * @example * const unit: FormattedUnits = "1"; // 1 ETH */ export type NativeUnits = `${number}`; /** * The smallest indivisible unit of a blockchain’s currency * * @example * const unit: BaseUnits = 1n; // 0.000000000000000001 ETH */ export type BaseUnits = bigint; export type ControlFlowOptions = { /** * Caller provided Abort signal to cancel long running tasks * * @example * Using [AbortController](https://nodejs.org/api/globals.html#class-abortcontroller) * ```typescript * const controller = new AbortController(); * setTimeout(() => controller.abort(), 5000); * * action({ * signal: controller.signal, * }) * ``` * * @example * Using [AbortSignal](https://nodejs.org/api/globals.html#class-abortsignal) * ```typescript * action({ * signal: AbortSignal.timeout(5000), * }) * ``` * */ signal?: AbortSignal; };