import type { Abi, ContractConstructorArgs } from '@tevm/utils' import type { DeployParams } from '../params/DeployParams.js' import type { DeployResult } from '../result/DeployResult.js' export type DeployHandler = < TThrowOnFail extends boolean = boolean, TAbi extends Abi | readonly unknown[] = Abi, THasConstructor = TAbi extends Abi ? Abi extends TAbi ? true : [Extract] extends [never] ? false : true : true, TAllArgs = ContractConstructorArgs, >( action: DeployParams, ) => Promise