/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import type {
  BaseContract,
  BigNumber,
  BigNumberish,
  BytesLike,
  CallOverrides,
  ContractTransaction,
  Overrides,
  PopulatedTransaction,
  Signer,
  utils,
} from "ethers";
import type { FunctionFragment, Result } from "@ethersproject/abi";
import type { Listener, Provider } from "@ethersproject/providers";
import type {
  TypedEventFilter,
  TypedEvent,
  TypedListener,
  OnEvent,
} from "../common";

export declare namespace VmSafe {
  export type PotentialRevertStruct = {
    reverter: string;
    partialMatch: boolean;
    revertData: BytesLike;
  };

  export type PotentialRevertStructOutput = [string, boolean, string] & {
    reverter: string;
    partialMatch: boolean;
    revertData: string;
  };

  export type SignedDelegationStruct = {
    v: BigNumberish;
    r: BytesLike;
    s: BytesLike;
    nonce: BigNumberish;
    implementation: string;
  };

  export type SignedDelegationStructOutput = [
    number,
    string,
    string,
    BigNumber,
    string
  ] & {
    v: number;
    r: string;
    s: string;
    nonce: BigNumber;
    implementation: string;
  };

  export type WalletStruct = {
    addr: string;
    publicKeyX: BigNumberish;
    publicKeyY: BigNumberish;
    privateKey: BigNumberish;
  };

  export type WalletStructOutput = [string, BigNumber, BigNumber, BigNumber] & {
    addr: string;
    publicKeyX: BigNumber;
    publicKeyY: BigNumber;
    privateKey: BigNumber;
  };

  export type EthGetLogsStruct = {
    emitter: string;
    topics: BytesLike[];
    data: BytesLike;
    blockHash: BytesLike;
    blockNumber: BigNumberish;
    transactionHash: BytesLike;
    transactionIndex: BigNumberish;
    logIndex: BigNumberish;
    removed: boolean;
  };

  export type EthGetLogsStructOutput = [
    string,
    string[],
    string,
    string,
    BigNumber,
    string,
    BigNumber,
    BigNumber,
    boolean
  ] & {
    emitter: string;
    topics: string[];
    data: string;
    blockHash: string;
    blockNumber: BigNumber;
    transactionHash: string;
    transactionIndex: BigNumber;
    logIndex: BigNumber;
    removed: boolean;
  };

  export type FsMetadataStruct = {
    isDir: boolean;
    isSymlink: boolean;
    length: BigNumberish;
    readOnly: boolean;
    modified: BigNumberish;
    accessed: BigNumberish;
    created: BigNumberish;
  };

  export type FsMetadataStructOutput = [
    boolean,
    boolean,
    BigNumber,
    boolean,
    BigNumber,
    BigNumber,
    BigNumber
  ] & {
    isDir: boolean;
    isSymlink: boolean;
    length: BigNumber;
    readOnly: boolean;
    modified: BigNumber;
    accessed: BigNumber;
    created: BigNumber;
  };

  export type BroadcastTxSummaryStruct = {
    txHash: BytesLike;
    txType: BigNumberish;
    contractAddress: string;
    blockNumber: BigNumberish;
    success: boolean;
  };

  export type BroadcastTxSummaryStructOutput = [
    string,
    number,
    string,
    BigNumber,
    boolean
  ] & {
    txHash: string;
    txType: number;
    contractAddress: string;
    blockNumber: BigNumber;
    success: boolean;
  };

  export type LogStruct = {
    topics: BytesLike[];
    data: BytesLike;
    emitter: string;
  };

  export type LogStructOutput = [string[], string, string] & {
    topics: string[];
    data: string;
    emitter: string;
  };

  export type GasStruct = {
    gasLimit: BigNumberish;
    gasTotalUsed: BigNumberish;
    gasMemoryUsed: BigNumberish;
    gasRefunded: BigNumberish;
    gasRemaining: BigNumberish;
  };

  export type GasStructOutput = [
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber
  ] & {
    gasLimit: BigNumber;
    gasTotalUsed: BigNumber;
    gasMemoryUsed: BigNumber;
    gasRefunded: BigNumber;
    gasRemaining: BigNumber;
  };

  export type DirEntryStruct = {
    errorMessage: string;
    path: string;
    depth: BigNumberish;
    isDir: boolean;
    isSymlink: boolean;
  };

  export type DirEntryStructOutput = [
    string,
    string,
    BigNumber,
    boolean,
    boolean
  ] & {
    errorMessage: string;
    path: string;
    depth: BigNumber;
    isDir: boolean;
    isSymlink: boolean;
  };

  export type RpcStruct = { key: string; url: string };

  export type RpcStructOutput = [string, string] & { key: string; url: string };

  export type DebugStepStruct = {
    stack: BigNumberish[];
    memoryInput: BytesLike;
    opcode: BigNumberish;
    depth: BigNumberish;
    isOutOfGas: boolean;
    contractAddr: string;
  };

  export type DebugStepStructOutput = [
    BigNumber[],
    string,
    number,
    BigNumber,
    boolean,
    string
  ] & {
    stack: BigNumber[];
    memoryInput: string;
    opcode: number;
    depth: BigNumber;
    isOutOfGas: boolean;
    contractAddr: string;
  };

  export type ChainInfoStruct = { forkId: BigNumberish; chainId: BigNumberish };

  export type ChainInfoStructOutput = [BigNumber, BigNumber] & {
    forkId: BigNumber;
    chainId: BigNumber;
  };

  export type StorageAccessStruct = {
    account: string;
    slot: BytesLike;
    isWrite: boolean;
    previousValue: BytesLike;
    newValue: BytesLike;
    reverted: boolean;
  };

  export type StorageAccessStructOutput = [
    string,
    string,
    boolean,
    string,
    string,
    boolean
  ] & {
    account: string;
    slot: string;
    isWrite: boolean;
    previousValue: string;
    newValue: string;
    reverted: boolean;
  };

  export type AccountAccessStruct = {
    chainInfo: VmSafe.ChainInfoStruct;
    kind: BigNumberish;
    account: string;
    accessor: string;
    initialized: boolean;
    oldBalance: BigNumberish;
    newBalance: BigNumberish;
    deployedCode: BytesLike;
    value: BigNumberish;
    data: BytesLike;
    reverted: boolean;
    storageAccesses: VmSafe.StorageAccessStruct[];
    depth: BigNumberish;
  };

  export type AccountAccessStructOutput = [
    VmSafe.ChainInfoStructOutput,
    number,
    string,
    string,
    boolean,
    BigNumber,
    BigNumber,
    string,
    BigNumber,
    string,
    boolean,
    VmSafe.StorageAccessStructOutput[],
    BigNumber
  ] & {
    chainInfo: VmSafe.ChainInfoStructOutput;
    kind: number;
    account: string;
    accessor: string;
    initialized: boolean;
    oldBalance: BigNumber;
    newBalance: BigNumber;
    deployedCode: string;
    value: BigNumber;
    data: string;
    reverted: boolean;
    storageAccesses: VmSafe.StorageAccessStructOutput[];
    depth: BigNumber;
  };

  export type FfiResultStruct = {
    exitCode: BigNumberish;
    stdout: BytesLike;
    stderr: BytesLike;
  };

  export type FfiResultStructOutput = [number, string, string] & {
    exitCode: number;
    stdout: string;
    stderr: string;
  };
}

export interface VmSafeInterface extends utils.Interface {
  functions: {
    "accesses(address)": FunctionFragment;
    "addr(uint256)": FunctionFragment;
    "assertApproxEqAbs(uint256,uint256,uint256)": FunctionFragment;
    "assertApproxEqAbs(int256,int256,uint256)": FunctionFragment;
    "assertApproxEqAbs(int256,int256,uint256,string)": FunctionFragment;
    "assertApproxEqAbs(uint256,uint256,uint256,string)": FunctionFragment;
    "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)": FunctionFragment;
    "assertApproxEqAbsDecimal(int256,int256,uint256,uint256)": FunctionFragment;
    "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)": FunctionFragment;
    "assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)": FunctionFragment;
    "assertApproxEqRel(uint256,uint256,uint256,string)": FunctionFragment;
    "assertApproxEqRel(uint256,uint256,uint256)": FunctionFragment;
    "assertApproxEqRel(int256,int256,uint256,string)": FunctionFragment;
    "assertApproxEqRel(int256,int256,uint256)": FunctionFragment;
    "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)": FunctionFragment;
    "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)": FunctionFragment;
    "assertApproxEqRelDecimal(int256,int256,uint256,uint256)": FunctionFragment;
    "assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)": FunctionFragment;
    "assertEq(bytes32[],bytes32[])": FunctionFragment;
    "assertEq(int256[],int256[],string)": FunctionFragment;
    "assertEq(address,address,string)": FunctionFragment;
    "assertEq(string,string,string)": FunctionFragment;
    "assertEq(address[],address[])": FunctionFragment;
    "assertEq(address[],address[],string)": FunctionFragment;
    "assertEq(bool,bool,string)": FunctionFragment;
    "assertEq(address,address)": FunctionFragment;
    "assertEq(uint256[],uint256[],string)": FunctionFragment;
    "assertEq(bool[],bool[])": FunctionFragment;
    "assertEq(int256[],int256[])": FunctionFragment;
    "assertEq(int256,int256,string)": FunctionFragment;
    "assertEq(bytes32,bytes32)": FunctionFragment;
    "assertEq(uint256,uint256,string)": FunctionFragment;
    "assertEq(uint256[],uint256[])": FunctionFragment;
    "assertEq(bytes,bytes)": FunctionFragment;
    "assertEq(uint256,uint256)": FunctionFragment;
    "assertEq(bytes32,bytes32,string)": FunctionFragment;
    "assertEq(string[],string[])": FunctionFragment;
    "assertEq(bytes32[],bytes32[],string)": FunctionFragment;
    "assertEq(bytes,bytes,string)": FunctionFragment;
    "assertEq(bool[],bool[],string)": FunctionFragment;
    "assertEq(bytes[],bytes[])": FunctionFragment;
    "assertEq(string[],string[],string)": FunctionFragment;
    "assertEq(string,string)": FunctionFragment;
    "assertEq(bytes[],bytes[],string)": FunctionFragment;
    "assertEq(bool,bool)": FunctionFragment;
    "assertEq(int256,int256)": FunctionFragment;
    "assertEqDecimal(uint256,uint256,uint256)": FunctionFragment;
    "assertEqDecimal(int256,int256,uint256)": FunctionFragment;
    "assertEqDecimal(int256,int256,uint256,string)": FunctionFragment;
    "assertEqDecimal(uint256,uint256,uint256,string)": FunctionFragment;
    "assertFalse(bool,string)": FunctionFragment;
    "assertFalse(bool)": FunctionFragment;
    "assertGe(int256,int256)": FunctionFragment;
    "assertGe(int256,int256,string)": FunctionFragment;
    "assertGe(uint256,uint256)": FunctionFragment;
    "assertGe(uint256,uint256,string)": FunctionFragment;
    "assertGeDecimal(uint256,uint256,uint256)": FunctionFragment;
    "assertGeDecimal(int256,int256,uint256,string)": FunctionFragment;
    "assertGeDecimal(uint256,uint256,uint256,string)": FunctionFragment;
    "assertGeDecimal(int256,int256,uint256)": FunctionFragment;
    "assertGt(int256,int256)": FunctionFragment;
    "assertGt(uint256,uint256,string)": FunctionFragment;
    "assertGt(uint256,uint256)": FunctionFragment;
    "assertGt(int256,int256,string)": FunctionFragment;
    "assertGtDecimal(int256,int256,uint256,string)": FunctionFragment;
    "assertGtDecimal(uint256,uint256,uint256,string)": FunctionFragment;
    "assertGtDecimal(int256,int256,uint256)": FunctionFragment;
    "assertGtDecimal(uint256,uint256,uint256)": FunctionFragment;
    "assertLe(int256,int256,string)": FunctionFragment;
    "assertLe(uint256,uint256)": FunctionFragment;
    "assertLe(int256,int256)": FunctionFragment;
    "assertLe(uint256,uint256,string)": FunctionFragment;
    "assertLeDecimal(int256,int256,uint256)": FunctionFragment;
    "assertLeDecimal(uint256,uint256,uint256,string)": FunctionFragment;
    "assertLeDecimal(int256,int256,uint256,string)": FunctionFragment;
    "assertLeDecimal(uint256,uint256,uint256)": FunctionFragment;
    "assertLt(int256,int256)": FunctionFragment;
    "assertLt(uint256,uint256,string)": FunctionFragment;
    "assertLt(int256,int256,string)": FunctionFragment;
    "assertLt(uint256,uint256)": FunctionFragment;
    "assertLtDecimal(uint256,uint256,uint256)": FunctionFragment;
    "assertLtDecimal(int256,int256,uint256,string)": FunctionFragment;
    "assertLtDecimal(uint256,uint256,uint256,string)": FunctionFragment;
    "assertLtDecimal(int256,int256,uint256)": FunctionFragment;
    "assertNotEq(bytes32[],bytes32[])": FunctionFragment;
    "assertNotEq(int256[],int256[])": FunctionFragment;
    "assertNotEq(bool,bool,string)": FunctionFragment;
    "assertNotEq(bytes[],bytes[],string)": FunctionFragment;
    "assertNotEq(bool,bool)": FunctionFragment;
    "assertNotEq(bool[],bool[])": FunctionFragment;
    "assertNotEq(bytes,bytes)": FunctionFragment;
    "assertNotEq(address[],address[])": FunctionFragment;
    "assertNotEq(int256,int256,string)": FunctionFragment;
    "assertNotEq(uint256[],uint256[])": FunctionFragment;
    "assertNotEq(bool[],bool[],string)": FunctionFragment;
    "assertNotEq(string,string)": FunctionFragment;
    "assertNotEq(address[],address[],string)": FunctionFragment;
    "assertNotEq(string,string,string)": FunctionFragment;
    "assertNotEq(address,address,string)": FunctionFragment;
    "assertNotEq(bytes32,bytes32)": FunctionFragment;
    "assertNotEq(bytes,bytes,string)": FunctionFragment;
    "assertNotEq(uint256,uint256,string)": FunctionFragment;
    "assertNotEq(uint256[],uint256[],string)": FunctionFragment;
    "assertNotEq(address,address)": FunctionFragment;
    "assertNotEq(bytes32,bytes32,string)": FunctionFragment;
    "assertNotEq(string[],string[],string)": FunctionFragment;
    "assertNotEq(uint256,uint256)": FunctionFragment;
    "assertNotEq(bytes32[],bytes32[],string)": FunctionFragment;
    "assertNotEq(string[],string[])": FunctionFragment;
    "assertNotEq(int256[],int256[],string)": FunctionFragment;
    "assertNotEq(bytes[],bytes[])": FunctionFragment;
    "assertNotEq(int256,int256)": FunctionFragment;
    "assertNotEqDecimal(int256,int256,uint256)": FunctionFragment;
    "assertNotEqDecimal(int256,int256,uint256,string)": FunctionFragment;
    "assertNotEqDecimal(uint256,uint256,uint256)": FunctionFragment;
    "assertNotEqDecimal(uint256,uint256,uint256,string)": FunctionFragment;
    "assertTrue(bool)": FunctionFragment;
    "assertTrue(bool,string)": FunctionFragment;
    "assume(bool)": FunctionFragment;
    "assumeNoRevert()": FunctionFragment;
    "assumeNoRevert((address,bool,bytes)[])": FunctionFragment;
    "assumeNoRevert((address,bool,bytes))": FunctionFragment;
    "attachDelegation((uint8,bytes32,bytes32,uint64,address))": FunctionFragment;
    "breakpoint(string)": FunctionFragment;
    "breakpoint(string,bool)": FunctionFragment;
    "broadcast()": FunctionFragment;
    "broadcast(address)": FunctionFragment;
    "broadcast(uint256)": FunctionFragment;
    "broadcastRawTransaction(bytes)": FunctionFragment;
    "closeFile(string)": FunctionFragment;
    "computeCreate2Address(bytes32,bytes32)": FunctionFragment;
    "computeCreate2Address(bytes32,bytes32,address)": FunctionFragment;
    "computeCreateAddress(address,uint256)": FunctionFragment;
    "contains(string,string)": FunctionFragment;
    "copyFile(string,string)": FunctionFragment;
    "copyStorage(address,address)": FunctionFragment;
    "createDir(string,bool)": FunctionFragment;
    "createWallet(string)": FunctionFragment;
    "createWallet(uint256)": FunctionFragment;
    "createWallet(uint256,string)": FunctionFragment;
    "deployCode(string,bytes)": FunctionFragment;
    "deployCode(string)": FunctionFragment;
    "deriveKey(string,string,uint32,string)": FunctionFragment;
    "deriveKey(string,uint32,string)": FunctionFragment;
    "deriveKey(string,uint32)": FunctionFragment;
    "deriveKey(string,string,uint32)": FunctionFragment;
    "ensNamehash(string)": FunctionFragment;
    "envAddress(string)": FunctionFragment;
    "envAddress(string,string)": FunctionFragment;
    "envBool(string)": FunctionFragment;
    "envBool(string,string)": FunctionFragment;
    "envBytes(string)": FunctionFragment;
    "envBytes(string,string)": FunctionFragment;
    "envBytes32(string,string)": FunctionFragment;
    "envBytes32(string)": FunctionFragment;
    "envExists(string)": FunctionFragment;
    "envInt(string,string)": FunctionFragment;
    "envInt(string)": FunctionFragment;
    "envOr(string,string,bytes32[])": FunctionFragment;
    "envOr(string,string,int256[])": FunctionFragment;
    "envOr(string,bool)": FunctionFragment;
    "envOr(string,address)": FunctionFragment;
    "envOr(string,uint256)": FunctionFragment;
    "envOr(string,string,bytes[])": FunctionFragment;
    "envOr(string,string,uint256[])": FunctionFragment;
    "envOr(string,string,string[])": FunctionFragment;
    "envOr(string,bytes)": FunctionFragment;
    "envOr(string,bytes32)": FunctionFragment;
    "envOr(string,int256)": FunctionFragment;
    "envOr(string,string,address[])": FunctionFragment;
    "envOr(string,string)": FunctionFragment;
    "envOr(string,string,bool[])": FunctionFragment;
    "envString(string,string)": FunctionFragment;
    "envString(string)": FunctionFragment;
    "envUint(string)": FunctionFragment;
    "envUint(string,string)": FunctionFragment;
    "eth_getLogs(uint256,uint256,address,bytes32[])": FunctionFragment;
    "exists(string)": FunctionFragment;
    "ffi(string[])": FunctionFragment;
    "foundryVersionAtLeast(string)": FunctionFragment;
    "foundryVersionCmp(string)": FunctionFragment;
    "fsMetadata(string)": FunctionFragment;
    "getArtifactPathByCode(bytes)": FunctionFragment;
    "getArtifactPathByDeployedCode(bytes)": FunctionFragment;
    "getBlobBaseFee()": FunctionFragment;
    "getBlockNumber()": FunctionFragment;
    "getBlockTimestamp()": FunctionFragment;
    "getBroadcast(string,uint64,uint8)": FunctionFragment;
    "getBroadcasts(string,uint64)": FunctionFragment;
    "getBroadcasts(string,uint64,uint8)": FunctionFragment;
    "getCode(string)": FunctionFragment;
    "getDeployedCode(string)": FunctionFragment;
    "getDeployment(string,uint64)": FunctionFragment;
    "getDeployment(string)": FunctionFragment;
    "getDeployments(string,uint64)": FunctionFragment;
    "getFoundryVersion()": FunctionFragment;
    "getLabel(address)": FunctionFragment;
    "getMappingKeyAndParentOf(address,bytes32)": FunctionFragment;
    "getMappingLength(address,bytes32)": FunctionFragment;
    "getMappingSlotAt(address,bytes32,uint256)": FunctionFragment;
    "getNonce(address)": FunctionFragment;
    "getNonce((address,uint256,uint256,uint256))": FunctionFragment;
    "getRecordedLogs()": FunctionFragment;
    "getStateDiff()": FunctionFragment;
    "getStateDiffJson()": FunctionFragment;
    "getWallets()": FunctionFragment;
    "indexOf(string,string)": FunctionFragment;
    "isContext(uint8)": FunctionFragment;
    "isDir(string)": FunctionFragment;
    "isFile(string)": FunctionFragment;
    "keyExists(string,string)": FunctionFragment;
    "keyExistsJson(string,string)": FunctionFragment;
    "keyExistsToml(string,string)": FunctionFragment;
    "label(address,string)": FunctionFragment;
    "lastCallGas()": FunctionFragment;
    "load(address,bytes32)": FunctionFragment;
    "parseAddress(string)": FunctionFragment;
    "parseBool(string)": FunctionFragment;
    "parseBytes(string)": FunctionFragment;
    "parseBytes32(string)": FunctionFragment;
    "parseInt(string)": FunctionFragment;
    "parseJson(string)": FunctionFragment;
    "parseJson(string,string)": FunctionFragment;
    "parseJsonAddress(string,string)": FunctionFragment;
    "parseJsonAddressArray(string,string)": FunctionFragment;
    "parseJsonBool(string,string)": FunctionFragment;
    "parseJsonBoolArray(string,string)": FunctionFragment;
    "parseJsonBytes(string,string)": FunctionFragment;
    "parseJsonBytes32(string,string)": FunctionFragment;
    "parseJsonBytes32Array(string,string)": FunctionFragment;
    "parseJsonBytesArray(string,string)": FunctionFragment;
    "parseJsonInt(string,string)": FunctionFragment;
    "parseJsonIntArray(string,string)": FunctionFragment;
    "parseJsonKeys(string,string)": FunctionFragment;
    "parseJsonString(string,string)": FunctionFragment;
    "parseJsonStringArray(string,string)": FunctionFragment;
    "parseJsonType(string,string)": FunctionFragment;
    "parseJsonType(string,string,string)": FunctionFragment;
    "parseJsonTypeArray(string,string,string)": FunctionFragment;
    "parseJsonUint(string,string)": FunctionFragment;
    "parseJsonUintArray(string,string)": FunctionFragment;
    "parseToml(string,string)": FunctionFragment;
    "parseToml(string)": FunctionFragment;
    "parseTomlAddress(string,string)": FunctionFragment;
    "parseTomlAddressArray(string,string)": FunctionFragment;
    "parseTomlBool(string,string)": FunctionFragment;
    "parseTomlBoolArray(string,string)": FunctionFragment;
    "parseTomlBytes(string,string)": FunctionFragment;
    "parseTomlBytes32(string,string)": FunctionFragment;
    "parseTomlBytes32Array(string,string)": FunctionFragment;
    "parseTomlBytesArray(string,string)": FunctionFragment;
    "parseTomlInt(string,string)": FunctionFragment;
    "parseTomlIntArray(string,string)": FunctionFragment;
    "parseTomlKeys(string,string)": FunctionFragment;
    "parseTomlString(string,string)": FunctionFragment;
    "parseTomlStringArray(string,string)": FunctionFragment;
    "parseTomlType(string,string)": FunctionFragment;
    "parseTomlType(string,string,string)": FunctionFragment;
    "parseTomlTypeArray(string,string,string)": FunctionFragment;
    "parseTomlUint(string,string)": FunctionFragment;
    "parseTomlUintArray(string,string)": FunctionFragment;
    "parseUint(string)": FunctionFragment;
    "pauseGasMetering()": FunctionFragment;
    "pauseTracing()": FunctionFragment;
    "projectRoot()": FunctionFragment;
    "prompt(string)": FunctionFragment;
    "promptAddress(string)": FunctionFragment;
    "promptSecret(string)": FunctionFragment;
    "promptSecretUint(string)": FunctionFragment;
    "promptUint(string)": FunctionFragment;
    "publicKeyP256(uint256)": FunctionFragment;
    "randomAddress()": FunctionFragment;
    "randomBool()": FunctionFragment;
    "randomBytes(uint256)": FunctionFragment;
    "randomBytes4()": FunctionFragment;
    "randomBytes8()": FunctionFragment;
    "randomInt()": FunctionFragment;
    "randomInt(uint256)": FunctionFragment;
    "randomUint()": FunctionFragment;
    "randomUint(uint256)": FunctionFragment;
    "randomUint(uint256,uint256)": FunctionFragment;
    "readDir(string,uint64)": FunctionFragment;
    "readDir(string,uint64,bool)": FunctionFragment;
    "readDir(string)": FunctionFragment;
    "readFile(string)": FunctionFragment;
    "readFileBinary(string)": FunctionFragment;
    "readLine(string)": FunctionFragment;
    "readLink(string)": FunctionFragment;
    "record()": FunctionFragment;
    "recordLogs()": FunctionFragment;
    "rememberKey(uint256)": FunctionFragment;
    "rememberKeys(string,string,uint32)": FunctionFragment;
    "rememberKeys(string,string,string,uint32)": FunctionFragment;
    "removeDir(string,bool)": FunctionFragment;
    "removeFile(string)": FunctionFragment;
    "replace(string,string,string)": FunctionFragment;
    "resetGasMetering()": FunctionFragment;
    "resumeGasMetering()": FunctionFragment;
    "resumeTracing()": FunctionFragment;
    "rpc(string,string,string)": FunctionFragment;
    "rpc(string,string)": FunctionFragment;
    "rpcUrl(string)": FunctionFragment;
    "rpcUrlStructs()": FunctionFragment;
    "rpcUrls()": FunctionFragment;
    "serializeAddress(string,string,address[])": FunctionFragment;
    "serializeAddress(string,string,address)": FunctionFragment;
    "serializeBool(string,string,bool[])": FunctionFragment;
    "serializeBool(string,string,bool)": FunctionFragment;
    "serializeBytes(string,string,bytes[])": FunctionFragment;
    "serializeBytes(string,string,bytes)": FunctionFragment;
    "serializeBytes32(string,string,bytes32[])": FunctionFragment;
    "serializeBytes32(string,string,bytes32)": FunctionFragment;
    "serializeInt(string,string,int256)": FunctionFragment;
    "serializeInt(string,string,int256[])": FunctionFragment;
    "serializeJson(string,string)": FunctionFragment;
    "serializeJsonType(string,bytes)": FunctionFragment;
    "serializeJsonType(string,string,string,bytes)": FunctionFragment;
    "serializeString(string,string,string[])": FunctionFragment;
    "serializeString(string,string,string)": FunctionFragment;
    "serializeUint(string,string,uint256)": FunctionFragment;
    "serializeUint(string,string,uint256[])": FunctionFragment;
    "serializeUintToHex(string,string,uint256)": FunctionFragment;
    "setArbitraryStorage(address)": FunctionFragment;
    "setEnv(string,string)": FunctionFragment;
    "sign(bytes32)": FunctionFragment;
    "sign(address,bytes32)": FunctionFragment;
    "sign((address,uint256,uint256,uint256),bytes32)": FunctionFragment;
    "sign(uint256,bytes32)": FunctionFragment;
    "signAndAttachDelegation(address,uint256)": FunctionFragment;
    "signCompact((address,uint256,uint256,uint256),bytes32)": FunctionFragment;
    "signCompact(address,bytes32)": FunctionFragment;
    "signCompact(bytes32)": FunctionFragment;
    "signCompact(uint256,bytes32)": FunctionFragment;
    "signDelegation(address,uint256)": FunctionFragment;
    "signP256(uint256,bytes32)": FunctionFragment;
    "sleep(uint256)": FunctionFragment;
    "split(string,string)": FunctionFragment;
    "startBroadcast()": FunctionFragment;
    "startBroadcast(address)": FunctionFragment;
    "startBroadcast(uint256)": FunctionFragment;
    "startDebugTraceRecording()": FunctionFragment;
    "startMappingRecording()": FunctionFragment;
    "startStateDiffRecording()": FunctionFragment;
    "stopAndReturnDebugTraceRecording()": FunctionFragment;
    "stopAndReturnStateDiff()": FunctionFragment;
    "stopBroadcast()": FunctionFragment;
    "stopMappingRecording()": FunctionFragment;
    "toBase64(string)": FunctionFragment;
    "toBase64(bytes)": FunctionFragment;
    "toBase64URL(string)": FunctionFragment;
    "toBase64URL(bytes)": FunctionFragment;
    "toLowercase(string)": FunctionFragment;
    "toString(address)": FunctionFragment;
    "toString(uint256)": FunctionFragment;
    "toString(bytes)": FunctionFragment;
    "toString(bool)": FunctionFragment;
    "toString(int256)": FunctionFragment;
    "toString(bytes32)": FunctionFragment;
    "toUppercase(string)": FunctionFragment;
    "trim(string)": FunctionFragment;
    "tryFfi(string[])": FunctionFragment;
    "unixTime()": FunctionFragment;
    "writeFile(string,string)": FunctionFragment;
    "writeFileBinary(string,bytes)": FunctionFragment;
    "writeJson(string,string,string)": FunctionFragment;
    "writeJson(string,string)": FunctionFragment;
    "writeLine(string,string)": FunctionFragment;
    "writeToml(string,string,string)": FunctionFragment;
    "writeToml(string,string)": FunctionFragment;
  };

  getFunction(
    nameOrSignatureOrTopic:
      | "accesses"
      | "addr"
      | "assertApproxEqAbs(uint256,uint256,uint256)"
      | "assertApproxEqAbs(int256,int256,uint256)"
      | "assertApproxEqAbs(int256,int256,uint256,string)"
      | "assertApproxEqAbs(uint256,uint256,uint256,string)"
      | "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)"
      | "assertApproxEqAbsDecimal(int256,int256,uint256,uint256)"
      | "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)"
      | "assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)"
      | "assertApproxEqRel(uint256,uint256,uint256,string)"
      | "assertApproxEqRel(uint256,uint256,uint256)"
      | "assertApproxEqRel(int256,int256,uint256,string)"
      | "assertApproxEqRel(int256,int256,uint256)"
      | "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)"
      | "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)"
      | "assertApproxEqRelDecimal(int256,int256,uint256,uint256)"
      | "assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)"
      | "assertEq(bytes32[],bytes32[])"
      | "assertEq(int256[],int256[],string)"
      | "assertEq(address,address,string)"
      | "assertEq(string,string,string)"
      | "assertEq(address[],address[])"
      | "assertEq(address[],address[],string)"
      | "assertEq(bool,bool,string)"
      | "assertEq(address,address)"
      | "assertEq(uint256[],uint256[],string)"
      | "assertEq(bool[],bool[])"
      | "assertEq(int256[],int256[])"
      | "assertEq(int256,int256,string)"
      | "assertEq(bytes32,bytes32)"
      | "assertEq(uint256,uint256,string)"
      | "assertEq(uint256[],uint256[])"
      | "assertEq(bytes,bytes)"
      | "assertEq(uint256,uint256)"
      | "assertEq(bytes32,bytes32,string)"
      | "assertEq(string[],string[])"
      | "assertEq(bytes32[],bytes32[],string)"
      | "assertEq(bytes,bytes,string)"
      | "assertEq(bool[],bool[],string)"
      | "assertEq(bytes[],bytes[])"
      | "assertEq(string[],string[],string)"
      | "assertEq(string,string)"
      | "assertEq(bytes[],bytes[],string)"
      | "assertEq(bool,bool)"
      | "assertEq(int256,int256)"
      | "assertEqDecimal(uint256,uint256,uint256)"
      | "assertEqDecimal(int256,int256,uint256)"
      | "assertEqDecimal(int256,int256,uint256,string)"
      | "assertEqDecimal(uint256,uint256,uint256,string)"
      | "assertFalse(bool,string)"
      | "assertFalse(bool)"
      | "assertGe(int256,int256)"
      | "assertGe(int256,int256,string)"
      | "assertGe(uint256,uint256)"
      | "assertGe(uint256,uint256,string)"
      | "assertGeDecimal(uint256,uint256,uint256)"
      | "assertGeDecimal(int256,int256,uint256,string)"
      | "assertGeDecimal(uint256,uint256,uint256,string)"
      | "assertGeDecimal(int256,int256,uint256)"
      | "assertGt(int256,int256)"
      | "assertGt(uint256,uint256,string)"
      | "assertGt(uint256,uint256)"
      | "assertGt(int256,int256,string)"
      | "assertGtDecimal(int256,int256,uint256,string)"
      | "assertGtDecimal(uint256,uint256,uint256,string)"
      | "assertGtDecimal(int256,int256,uint256)"
      | "assertGtDecimal(uint256,uint256,uint256)"
      | "assertLe(int256,int256,string)"
      | "assertLe(uint256,uint256)"
      | "assertLe(int256,int256)"
      | "assertLe(uint256,uint256,string)"
      | "assertLeDecimal(int256,int256,uint256)"
      | "assertLeDecimal(uint256,uint256,uint256,string)"
      | "assertLeDecimal(int256,int256,uint256,string)"
      | "assertLeDecimal(uint256,uint256,uint256)"
      | "assertLt(int256,int256)"
      | "assertLt(uint256,uint256,string)"
      | "assertLt(int256,int256,string)"
      | "assertLt(uint256,uint256)"
      | "assertLtDecimal(uint256,uint256,uint256)"
      | "assertLtDecimal(int256,int256,uint256,string)"
      | "assertLtDecimal(uint256,uint256,uint256,string)"
      | "assertLtDecimal(int256,int256,uint256)"
      | "assertNotEq(bytes32[],bytes32[])"
      | "assertNotEq(int256[],int256[])"
      | "assertNotEq(bool,bool,string)"
      | "assertNotEq(bytes[],bytes[],string)"
      | "assertNotEq(bool,bool)"
      | "assertNotEq(bool[],bool[])"
      | "assertNotEq(bytes,bytes)"
      | "assertNotEq(address[],address[])"
      | "assertNotEq(int256,int256,string)"
      | "assertNotEq(uint256[],uint256[])"
      | "assertNotEq(bool[],bool[],string)"
      | "assertNotEq(string,string)"
      | "assertNotEq(address[],address[],string)"
      | "assertNotEq(string,string,string)"
      | "assertNotEq(address,address,string)"
      | "assertNotEq(bytes32,bytes32)"
      | "assertNotEq(bytes,bytes,string)"
      | "assertNotEq(uint256,uint256,string)"
      | "assertNotEq(uint256[],uint256[],string)"
      | "assertNotEq(address,address)"
      | "assertNotEq(bytes32,bytes32,string)"
      | "assertNotEq(string[],string[],string)"
      | "assertNotEq(uint256,uint256)"
      | "assertNotEq(bytes32[],bytes32[],string)"
      | "assertNotEq(string[],string[])"
      | "assertNotEq(int256[],int256[],string)"
      | "assertNotEq(bytes[],bytes[])"
      | "assertNotEq(int256,int256)"
      | "assertNotEqDecimal(int256,int256,uint256)"
      | "assertNotEqDecimal(int256,int256,uint256,string)"
      | "assertNotEqDecimal(uint256,uint256,uint256)"
      | "assertNotEqDecimal(uint256,uint256,uint256,string)"
      | "assertTrue(bool)"
      | "assertTrue(bool,string)"
      | "assume"
      | "assumeNoRevert()"
      | "assumeNoRevert((address,bool,bytes)[])"
      | "assumeNoRevert((address,bool,bytes))"
      | "attachDelegation"
      | "breakpoint(string)"
      | "breakpoint(string,bool)"
      | "broadcast()"
      | "broadcast(address)"
      | "broadcast(uint256)"
      | "broadcastRawTransaction"
      | "closeFile"
      | "computeCreate2Address(bytes32,bytes32)"
      | "computeCreate2Address(bytes32,bytes32,address)"
      | "computeCreateAddress"
      | "contains"
      | "copyFile"
      | "copyStorage"
      | "createDir"
      | "createWallet(string)"
      | "createWallet(uint256)"
      | "createWallet(uint256,string)"
      | "deployCode(string,bytes)"
      | "deployCode(string)"
      | "deriveKey(string,string,uint32,string)"
      | "deriveKey(string,uint32,string)"
      | "deriveKey(string,uint32)"
      | "deriveKey(string,string,uint32)"
      | "ensNamehash"
      | "envAddress(string)"
      | "envAddress(string,string)"
      | "envBool(string)"
      | "envBool(string,string)"
      | "envBytes(string)"
      | "envBytes(string,string)"
      | "envBytes32(string,string)"
      | "envBytes32(string)"
      | "envExists"
      | "envInt(string,string)"
      | "envInt(string)"
      | "envOr(string,string,bytes32[])"
      | "envOr(string,string,int256[])"
      | "envOr(string,bool)"
      | "envOr(string,address)"
      | "envOr(string,uint256)"
      | "envOr(string,string,bytes[])"
      | "envOr(string,string,uint256[])"
      | "envOr(string,string,string[])"
      | "envOr(string,bytes)"
      | "envOr(string,bytes32)"
      | "envOr(string,int256)"
      | "envOr(string,string,address[])"
      | "envOr(string,string)"
      | "envOr(string,string,bool[])"
      | "envString(string,string)"
      | "envString(string)"
      | "envUint(string)"
      | "envUint(string,string)"
      | "eth_getLogs"
      | "exists"
      | "ffi"
      | "foundryVersionAtLeast"
      | "foundryVersionCmp"
      | "fsMetadata"
      | "getArtifactPathByCode"
      | "getArtifactPathByDeployedCode"
      | "getBlobBaseFee"
      | "getBlockNumber"
      | "getBlockTimestamp"
      | "getBroadcast"
      | "getBroadcasts(string,uint64)"
      | "getBroadcasts(string,uint64,uint8)"
      | "getCode"
      | "getDeployedCode"
      | "getDeployment(string,uint64)"
      | "getDeployment(string)"
      | "getDeployments"
      | "getFoundryVersion"
      | "getLabel"
      | "getMappingKeyAndParentOf"
      | "getMappingLength"
      | "getMappingSlotAt"
      | "getNonce(address)"
      | "getNonce((address,uint256,uint256,uint256))"
      | "getRecordedLogs"
      | "getStateDiff"
      | "getStateDiffJson"
      | "getWallets"
      | "indexOf"
      | "isContext"
      | "isDir"
      | "isFile"
      | "keyExists"
      | "keyExistsJson"
      | "keyExistsToml"
      | "label"
      | "lastCallGas"
      | "load"
      | "parseAddress"
      | "parseBool"
      | "parseBytes"
      | "parseBytes32"
      | "parseInt"
      | "parseJson(string)"
      | "parseJson(string,string)"
      | "parseJsonAddress"
      | "parseJsonAddressArray"
      | "parseJsonBool"
      | "parseJsonBoolArray"
      | "parseJsonBytes"
      | "parseJsonBytes32"
      | "parseJsonBytes32Array"
      | "parseJsonBytesArray"
      | "parseJsonInt"
      | "parseJsonIntArray"
      | "parseJsonKeys"
      | "parseJsonString"
      | "parseJsonStringArray"
      | "parseJsonType(string,string)"
      | "parseJsonType(string,string,string)"
      | "parseJsonTypeArray"
      | "parseJsonUint"
      | "parseJsonUintArray"
      | "parseToml(string,string)"
      | "parseToml(string)"
      | "parseTomlAddress"
      | "parseTomlAddressArray"
      | "parseTomlBool"
      | "parseTomlBoolArray"
      | "parseTomlBytes"
      | "parseTomlBytes32"
      | "parseTomlBytes32Array"
      | "parseTomlBytesArray"
      | "parseTomlInt"
      | "parseTomlIntArray"
      | "parseTomlKeys"
      | "parseTomlString"
      | "parseTomlStringArray"
      | "parseTomlType(string,string)"
      | "parseTomlType(string,string,string)"
      | "parseTomlTypeArray"
      | "parseTomlUint"
      | "parseTomlUintArray"
      | "parseUint"
      | "pauseGasMetering"
      | "pauseTracing"
      | "projectRoot"
      | "prompt"
      | "promptAddress"
      | "promptSecret"
      | "promptSecretUint"
      | "promptUint"
      | "publicKeyP256"
      | "randomAddress"
      | "randomBool"
      | "randomBytes"
      | "randomBytes4"
      | "randomBytes8"
      | "randomInt()"
      | "randomInt(uint256)"
      | "randomUint()"
      | "randomUint(uint256)"
      | "randomUint(uint256,uint256)"
      | "readDir(string,uint64)"
      | "readDir(string,uint64,bool)"
      | "readDir(string)"
      | "readFile"
      | "readFileBinary"
      | "readLine"
      | "readLink"
      | "record"
      | "recordLogs"
      | "rememberKey"
      | "rememberKeys(string,string,uint32)"
      | "rememberKeys(string,string,string,uint32)"
      | "removeDir"
      | "removeFile"
      | "replace"
      | "resetGasMetering"
      | "resumeGasMetering"
      | "resumeTracing"
      | "rpc(string,string,string)"
      | "rpc(string,string)"
      | "rpcUrl"
      | "rpcUrlStructs"
      | "rpcUrls"
      | "serializeAddress(string,string,address[])"
      | "serializeAddress(string,string,address)"
      | "serializeBool(string,string,bool[])"
      | "serializeBool(string,string,bool)"
      | "serializeBytes(string,string,bytes[])"
      | "serializeBytes(string,string,bytes)"
      | "serializeBytes32(string,string,bytes32[])"
      | "serializeBytes32(string,string,bytes32)"
      | "serializeInt(string,string,int256)"
      | "serializeInt(string,string,int256[])"
      | "serializeJson"
      | "serializeJsonType(string,bytes)"
      | "serializeJsonType(string,string,string,bytes)"
      | "serializeString(string,string,string[])"
      | "serializeString(string,string,string)"
      | "serializeUint(string,string,uint256)"
      | "serializeUint(string,string,uint256[])"
      | "serializeUintToHex"
      | "setArbitraryStorage"
      | "setEnv"
      | "sign(bytes32)"
      | "sign(address,bytes32)"
      | "sign((address,uint256,uint256,uint256),bytes32)"
      | "sign(uint256,bytes32)"
      | "signAndAttachDelegation"
      | "signCompact((address,uint256,uint256,uint256),bytes32)"
      | "signCompact(address,bytes32)"
      | "signCompact(bytes32)"
      | "signCompact(uint256,bytes32)"
      | "signDelegation"
      | "signP256"
      | "sleep"
      | "split"
      | "startBroadcast()"
      | "startBroadcast(address)"
      | "startBroadcast(uint256)"
      | "startDebugTraceRecording"
      | "startMappingRecording"
      | "startStateDiffRecording"
      | "stopAndReturnDebugTraceRecording"
      | "stopAndReturnStateDiff"
      | "stopBroadcast"
      | "stopMappingRecording"
      | "toBase64(string)"
      | "toBase64(bytes)"
      | "toBase64URL(string)"
      | "toBase64URL(bytes)"
      | "toLowercase"
      | "toString(address)"
      | "toString(uint256)"
      | "toString(bytes)"
      | "toString(bool)"
      | "toString(int256)"
      | "toString(bytes32)"
      | "toUppercase"
      | "trim"
      | "tryFfi"
      | "unixTime"
      | "writeFile"
      | "writeFileBinary"
      | "writeJson(string,string,string)"
      | "writeJson(string,string)"
      | "writeLine"
      | "writeToml(string,string,string)"
      | "writeToml(string,string)"
  ): FunctionFragment;

  encodeFunctionData(functionFragment: "accesses", values: [string]): string;
  encodeFunctionData(functionFragment: "addr", values: [BigNumberish]): string;
  encodeFunctionData(
    functionFragment: "assertApproxEqAbs(uint256,uint256,uint256)",
    values: [BigNumberish, BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "assertApproxEqAbs(int256,int256,uint256)",
    values: [BigNumberish, BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "assertApproxEqAbs(int256,int256,uint256,string)",
    values: [BigNumberish, BigNumberish, BigNumberish, string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertApproxEqAbs(uint256,uint256,uint256,string)",
    values: [BigNumberish, BigNumberish, BigNumberish, string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)",
    values: [BigNumberish, BigNumberish, BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "assertApproxEqAbsDecimal(int256,int256,uint256,uint256)",
    values: [BigNumberish, BigNumberish, BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)",
    values: [BigNumberish, BigNumberish, BigNumberish, BigNumberish, string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)",
    values: [BigNumberish, BigNumberish, BigNumberish, BigNumberish, string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertApproxEqRel(uint256,uint256,uint256,string)",
    values: [BigNumberish, BigNumberish, BigNumberish, string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertApproxEqRel(uint256,uint256,uint256)",
    values: [BigNumberish, BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "assertApproxEqRel(int256,int256,uint256,string)",
    values: [BigNumberish, BigNumberish, BigNumberish, string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertApproxEqRel(int256,int256,uint256)",
    values: [BigNumberish, BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)",
    values: [BigNumberish, BigNumberish, BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)",
    values: [BigNumberish, BigNumberish, BigNumberish, BigNumberish, string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertApproxEqRelDecimal(int256,int256,uint256,uint256)",
    values: [BigNumberish, BigNumberish, BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)",
    values: [BigNumberish, BigNumberish, BigNumberish, BigNumberish, string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertEq(bytes32[],bytes32[])",
    values: [BytesLike[], BytesLike[]]
  ): string;
  encodeFunctionData(
    functionFragment: "assertEq(int256[],int256[],string)",
    values: [BigNumberish[], BigNumberish[], string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertEq(address,address,string)",
    values: [string, string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertEq(string,string,string)",
    values: [string, string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertEq(address[],address[])",
    values: [string[], string[]]
  ): string;
  encodeFunctionData(
    functionFragment: "assertEq(address[],address[],string)",
    values: [string[], string[], string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertEq(bool,bool,string)",
    values: [boolean, boolean, string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertEq(address,address)",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertEq(uint256[],uint256[],string)",
    values: [BigNumberish[], BigNumberish[], string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertEq(bool[],bool[])",
    values: [boolean[], boolean[]]
  ): string;
  encodeFunctionData(
    functionFragment: "assertEq(int256[],int256[])",
    values: [BigNumberish[], BigNumberish[]]
  ): string;
  encodeFunctionData(
    functionFragment: "assertEq(int256,int256,string)",
    values: [BigNumberish, BigNumberish, string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertEq(bytes32,bytes32)",
    values: [BytesLike, BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "assertEq(uint256,uint256,string)",
    values: [BigNumberish, BigNumberish, string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertEq(uint256[],uint256[])",
    values: [BigNumberish[], BigNumberish[]]
  ): string;
  encodeFunctionData(
    functionFragment: "assertEq(bytes,bytes)",
    values: [BytesLike, BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "assertEq(uint256,uint256)",
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "assertEq(bytes32,bytes32,string)",
    values: [BytesLike, BytesLike, string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertEq(string[],string[])",
    values: [string[], string[]]
  ): string;
  encodeFunctionData(
    functionFragment: "assertEq(bytes32[],bytes32[],string)",
    values: [BytesLike[], BytesLike[], string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertEq(bytes,bytes,string)",
    values: [BytesLike, BytesLike, string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertEq(bool[],bool[],string)",
    values: [boolean[], boolean[], string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertEq(bytes[],bytes[])",
    values: [BytesLike[], BytesLike[]]
  ): string;
  encodeFunctionData(
    functionFragment: "assertEq(string[],string[],string)",
    values: [string[], string[], string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertEq(string,string)",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertEq(bytes[],bytes[],string)",
    values: [BytesLike[], BytesLike[], string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertEq(bool,bool)",
    values: [boolean, boolean]
  ): string;
  encodeFunctionData(
    functionFragment: "assertEq(int256,int256)",
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "assertEqDecimal(uint256,uint256,uint256)",
    values: [BigNumberish, BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "assertEqDecimal(int256,int256,uint256)",
    values: [BigNumberish, BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "assertEqDecimal(int256,int256,uint256,string)",
    values: [BigNumberish, BigNumberish, BigNumberish, string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertEqDecimal(uint256,uint256,uint256,string)",
    values: [BigNumberish, BigNumberish, BigNumberish, string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertFalse(bool,string)",
    values: [boolean, string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertFalse(bool)",
    values: [boolean]
  ): string;
  encodeFunctionData(
    functionFragment: "assertGe(int256,int256)",
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "assertGe(int256,int256,string)",
    values: [BigNumberish, BigNumberish, string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertGe(uint256,uint256)",
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "assertGe(uint256,uint256,string)",
    values: [BigNumberish, BigNumberish, string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertGeDecimal(uint256,uint256,uint256)",
    values: [BigNumberish, BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "assertGeDecimal(int256,int256,uint256,string)",
    values: [BigNumberish, BigNumberish, BigNumberish, string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertGeDecimal(uint256,uint256,uint256,string)",
    values: [BigNumberish, BigNumberish, BigNumberish, string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertGeDecimal(int256,int256,uint256)",
    values: [BigNumberish, BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "assertGt(int256,int256)",
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "assertGt(uint256,uint256,string)",
    values: [BigNumberish, BigNumberish, string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertGt(uint256,uint256)",
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "assertGt(int256,int256,string)",
    values: [BigNumberish, BigNumberish, string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertGtDecimal(int256,int256,uint256,string)",
    values: [BigNumberish, BigNumberish, BigNumberish, string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertGtDecimal(uint256,uint256,uint256,string)",
    values: [BigNumberish, BigNumberish, BigNumberish, string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertGtDecimal(int256,int256,uint256)",
    values: [BigNumberish, BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "assertGtDecimal(uint256,uint256,uint256)",
    values: [BigNumberish, BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "assertLe(int256,int256,string)",
    values: [BigNumberish, BigNumberish, string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertLe(uint256,uint256)",
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "assertLe(int256,int256)",
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "assertLe(uint256,uint256,string)",
    values: [BigNumberish, BigNumberish, string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertLeDecimal(int256,int256,uint256)",
    values: [BigNumberish, BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "assertLeDecimal(uint256,uint256,uint256,string)",
    values: [BigNumberish, BigNumberish, BigNumberish, string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertLeDecimal(int256,int256,uint256,string)",
    values: [BigNumberish, BigNumberish, BigNumberish, string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertLeDecimal(uint256,uint256,uint256)",
    values: [BigNumberish, BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "assertLt(int256,int256)",
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "assertLt(uint256,uint256,string)",
    values: [BigNumberish, BigNumberish, string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertLt(int256,int256,string)",
    values: [BigNumberish, BigNumberish, string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertLt(uint256,uint256)",
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "assertLtDecimal(uint256,uint256,uint256)",
    values: [BigNumberish, BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "assertLtDecimal(int256,int256,uint256,string)",
    values: [BigNumberish, BigNumberish, BigNumberish, string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertLtDecimal(uint256,uint256,uint256,string)",
    values: [BigNumberish, BigNumberish, BigNumberish, string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertLtDecimal(int256,int256,uint256)",
    values: [BigNumberish, BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "assertNotEq(bytes32[],bytes32[])",
    values: [BytesLike[], BytesLike[]]
  ): string;
  encodeFunctionData(
    functionFragment: "assertNotEq(int256[],int256[])",
    values: [BigNumberish[], BigNumberish[]]
  ): string;
  encodeFunctionData(
    functionFragment: "assertNotEq(bool,bool,string)",
    values: [boolean, boolean, string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertNotEq(bytes[],bytes[],string)",
    values: [BytesLike[], BytesLike[], string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertNotEq(bool,bool)",
    values: [boolean, boolean]
  ): string;
  encodeFunctionData(
    functionFragment: "assertNotEq(bool[],bool[])",
    values: [boolean[], boolean[]]
  ): string;
  encodeFunctionData(
    functionFragment: "assertNotEq(bytes,bytes)",
    values: [BytesLike, BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "assertNotEq(address[],address[])",
    values: [string[], string[]]
  ): string;
  encodeFunctionData(
    functionFragment: "assertNotEq(int256,int256,string)",
    values: [BigNumberish, BigNumberish, string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertNotEq(uint256[],uint256[])",
    values: [BigNumberish[], BigNumberish[]]
  ): string;
  encodeFunctionData(
    functionFragment: "assertNotEq(bool[],bool[],string)",
    values: [boolean[], boolean[], string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertNotEq(string,string)",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertNotEq(address[],address[],string)",
    values: [string[], string[], string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertNotEq(string,string,string)",
    values: [string, string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertNotEq(address,address,string)",
    values: [string, string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertNotEq(bytes32,bytes32)",
    values: [BytesLike, BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "assertNotEq(bytes,bytes,string)",
    values: [BytesLike, BytesLike, string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertNotEq(uint256,uint256,string)",
    values: [BigNumberish, BigNumberish, string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertNotEq(uint256[],uint256[],string)",
    values: [BigNumberish[], BigNumberish[], string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertNotEq(address,address)",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertNotEq(bytes32,bytes32,string)",
    values: [BytesLike, BytesLike, string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertNotEq(string[],string[],string)",
    values: [string[], string[], string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertNotEq(uint256,uint256)",
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "assertNotEq(bytes32[],bytes32[],string)",
    values: [BytesLike[], BytesLike[], string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertNotEq(string[],string[])",
    values: [string[], string[]]
  ): string;
  encodeFunctionData(
    functionFragment: "assertNotEq(int256[],int256[],string)",
    values: [BigNumberish[], BigNumberish[], string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertNotEq(bytes[],bytes[])",
    values: [BytesLike[], BytesLike[]]
  ): string;
  encodeFunctionData(
    functionFragment: "assertNotEq(int256,int256)",
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "assertNotEqDecimal(int256,int256,uint256)",
    values: [BigNumberish, BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "assertNotEqDecimal(int256,int256,uint256,string)",
    values: [BigNumberish, BigNumberish, BigNumberish, string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertNotEqDecimal(uint256,uint256,uint256)",
    values: [BigNumberish, BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "assertNotEqDecimal(uint256,uint256,uint256,string)",
    values: [BigNumberish, BigNumberish, BigNumberish, string]
  ): string;
  encodeFunctionData(
    functionFragment: "assertTrue(bool)",
    values: [boolean]
  ): string;
  encodeFunctionData(
    functionFragment: "assertTrue(bool,string)",
    values: [boolean, string]
  ): string;
  encodeFunctionData(functionFragment: "assume", values: [boolean]): string;
  encodeFunctionData(
    functionFragment: "assumeNoRevert()",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "assumeNoRevert((address,bool,bytes)[])",
    values: [VmSafe.PotentialRevertStruct[]]
  ): string;
  encodeFunctionData(
    functionFragment: "assumeNoRevert((address,bool,bytes))",
    values: [VmSafe.PotentialRevertStruct]
  ): string;
  encodeFunctionData(
    functionFragment: "attachDelegation",
    values: [VmSafe.SignedDelegationStruct]
  ): string;
  encodeFunctionData(
    functionFragment: "breakpoint(string)",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "breakpoint(string,bool)",
    values: [string, boolean]
  ): string;
  encodeFunctionData(
    functionFragment: "broadcast()",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "broadcast(address)",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "broadcast(uint256)",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "broadcastRawTransaction",
    values: [BytesLike]
  ): string;
  encodeFunctionData(functionFragment: "closeFile", values: [string]): string;
  encodeFunctionData(
    functionFragment: "computeCreate2Address(bytes32,bytes32)",
    values: [BytesLike, BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "computeCreate2Address(bytes32,bytes32,address)",
    values: [BytesLike, BytesLike, string]
  ): string;
  encodeFunctionData(
    functionFragment: "computeCreateAddress",
    values: [string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "contains",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "copyFile",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "copyStorage",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "createDir",
    values: [string, boolean]
  ): string;
  encodeFunctionData(
    functionFragment: "createWallet(string)",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "createWallet(uint256)",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "createWallet(uint256,string)",
    values: [BigNumberish, string]
  ): string;
  encodeFunctionData(
    functionFragment: "deployCode(string,bytes)",
    values: [string, BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "deployCode(string)",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "deriveKey(string,string,uint32,string)",
    values: [string, string, BigNumberish, string]
  ): string;
  encodeFunctionData(
    functionFragment: "deriveKey(string,uint32,string)",
    values: [string, BigNumberish, string]
  ): string;
  encodeFunctionData(
    functionFragment: "deriveKey(string,uint32)",
    values: [string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "deriveKey(string,string,uint32)",
    values: [string, string, BigNumberish]
  ): string;
  encodeFunctionData(functionFragment: "ensNamehash", values: [string]): string;
  encodeFunctionData(
    functionFragment: "envAddress(string)",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "envAddress(string,string)",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "envBool(string)",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "envBool(string,string)",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "envBytes(string)",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "envBytes(string,string)",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "envBytes32(string,string)",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "envBytes32(string)",
    values: [string]
  ): string;
  encodeFunctionData(functionFragment: "envExists", values: [string]): string;
  encodeFunctionData(
    functionFragment: "envInt(string,string)",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "envInt(string)",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "envOr(string,string,bytes32[])",
    values: [string, string, BytesLike[]]
  ): string;
  encodeFunctionData(
    functionFragment: "envOr(string,string,int256[])",
    values: [string, string, BigNumberish[]]
  ): string;
  encodeFunctionData(
    functionFragment: "envOr(string,bool)",
    values: [string, boolean]
  ): string;
  encodeFunctionData(
    functionFragment: "envOr(string,address)",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "envOr(string,uint256)",
    values: [string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "envOr(string,string,bytes[])",
    values: [string, string, BytesLike[]]
  ): string;
  encodeFunctionData(
    functionFragment: "envOr(string,string,uint256[])",
    values: [string, string, BigNumberish[]]
  ): string;
  encodeFunctionData(
    functionFragment: "envOr(string,string,string[])",
    values: [string, string, string[]]
  ): string;
  encodeFunctionData(
    functionFragment: "envOr(string,bytes)",
    values: [string, BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "envOr(string,bytes32)",
    values: [string, BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "envOr(string,int256)",
    values: [string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "envOr(string,string,address[])",
    values: [string, string, string[]]
  ): string;
  encodeFunctionData(
    functionFragment: "envOr(string,string)",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "envOr(string,string,bool[])",
    values: [string, string, boolean[]]
  ): string;
  encodeFunctionData(
    functionFragment: "envString(string,string)",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "envString(string)",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "envUint(string)",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "envUint(string,string)",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "eth_getLogs",
    values: [BigNumberish, BigNumberish, string, BytesLike[]]
  ): string;
  encodeFunctionData(functionFragment: "exists", values: [string]): string;
  encodeFunctionData(functionFragment: "ffi", values: [string[]]): string;
  encodeFunctionData(
    functionFragment: "foundryVersionAtLeast",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "foundryVersionCmp",
    values: [string]
  ): string;
  encodeFunctionData(functionFragment: "fsMetadata", values: [string]): string;
  encodeFunctionData(
    functionFragment: "getArtifactPathByCode",
    values: [BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "getArtifactPathByDeployedCode",
    values: [BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "getBlobBaseFee",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "getBlockNumber",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "getBlockTimestamp",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "getBroadcast",
    values: [string, BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getBroadcasts(string,uint64)",
    values: [string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getBroadcasts(string,uint64,uint8)",
    values: [string, BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(functionFragment: "getCode", values: [string]): string;
  encodeFunctionData(
    functionFragment: "getDeployedCode",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "getDeployment(string,uint64)",
    values: [string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getDeployment(string)",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "getDeployments",
    values: [string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getFoundryVersion",
    values?: undefined
  ): string;
  encodeFunctionData(functionFragment: "getLabel", values: [string]): string;
  encodeFunctionData(
    functionFragment: "getMappingKeyAndParentOf",
    values: [string, BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "getMappingLength",
    values: [string, BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "getMappingSlotAt",
    values: [string, BytesLike, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getNonce(address)",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "getNonce((address,uint256,uint256,uint256))",
    values: [VmSafe.WalletStruct]
  ): string;
  encodeFunctionData(
    functionFragment: "getRecordedLogs",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "getStateDiff",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "getStateDiffJson",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "getWallets",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "indexOf",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "isContext",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(functionFragment: "isDir", values: [string]): string;
  encodeFunctionData(functionFragment: "isFile", values: [string]): string;
  encodeFunctionData(
    functionFragment: "keyExists",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "keyExistsJson",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "keyExistsToml",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "label",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "lastCallGas",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "load",
    values: [string, BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "parseAddress",
    values: [string]
  ): string;
  encodeFunctionData(functionFragment: "parseBool", values: [string]): string;
  encodeFunctionData(functionFragment: "parseBytes", values: [string]): string;
  encodeFunctionData(
    functionFragment: "parseBytes32",
    values: [string]
  ): string;
  encodeFunctionData(functionFragment: "parseInt", values: [string]): string;
  encodeFunctionData(
    functionFragment: "parseJson(string)",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "parseJson(string,string)",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "parseJsonAddress",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "parseJsonAddressArray",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "parseJsonBool",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "parseJsonBoolArray",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "parseJsonBytes",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "parseJsonBytes32",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "parseJsonBytes32Array",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "parseJsonBytesArray",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "parseJsonInt",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "parseJsonIntArray",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "parseJsonKeys",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "parseJsonString",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "parseJsonStringArray",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "parseJsonType(string,string)",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "parseJsonType(string,string,string)",
    values: [string, string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "parseJsonTypeArray",
    values: [string, string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "parseJsonUint",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "parseJsonUintArray",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "parseToml(string,string)",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "parseToml(string)",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "parseTomlAddress",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "parseTomlAddressArray",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "parseTomlBool",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "parseTomlBoolArray",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "parseTomlBytes",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "parseTomlBytes32",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "parseTomlBytes32Array",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "parseTomlBytesArray",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "parseTomlInt",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "parseTomlIntArray",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "parseTomlKeys",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "parseTomlString",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "parseTomlStringArray",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "parseTomlType(string,string)",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "parseTomlType(string,string,string)",
    values: [string, string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "parseTomlTypeArray",
    values: [string, string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "parseTomlUint",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "parseTomlUintArray",
    values: [string, string]
  ): string;
  encodeFunctionData(functionFragment: "parseUint", values: [string]): string;
  encodeFunctionData(
    functionFragment: "pauseGasMetering",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "pauseTracing",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "projectRoot",
    values?: undefined
  ): string;
  encodeFunctionData(functionFragment: "prompt", values: [string]): string;
  encodeFunctionData(
    functionFragment: "promptAddress",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "promptSecret",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "promptSecretUint",
    values: [string]
  ): string;
  encodeFunctionData(functionFragment: "promptUint", values: [string]): string;
  encodeFunctionData(
    functionFragment: "publicKeyP256",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "randomAddress",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "randomBool",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "randomBytes",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "randomBytes4",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "randomBytes8",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "randomInt()",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "randomInt(uint256)",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "randomUint()",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "randomUint(uint256)",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "randomUint(uint256,uint256)",
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "readDir(string,uint64)",
    values: [string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "readDir(string,uint64,bool)",
    values: [string, BigNumberish, boolean]
  ): string;
  encodeFunctionData(
    functionFragment: "readDir(string)",
    values: [string]
  ): string;
  encodeFunctionData(functionFragment: "readFile", values: [string]): string;
  encodeFunctionData(
    functionFragment: "readFileBinary",
    values: [string]
  ): string;
  encodeFunctionData(functionFragment: "readLine", values: [string]): string;
  encodeFunctionData(functionFragment: "readLink", values: [string]): string;
  encodeFunctionData(functionFragment: "record", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "recordLogs",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "rememberKey",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "rememberKeys(string,string,uint32)",
    values: [string, string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "rememberKeys(string,string,string,uint32)",
    values: [string, string, string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "removeDir",
    values: [string, boolean]
  ): string;
  encodeFunctionData(functionFragment: "removeFile", values: [string]): string;
  encodeFunctionData(
    functionFragment: "replace",
    values: [string, string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "resetGasMetering",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "resumeGasMetering",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "resumeTracing",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "rpc(string,string,string)",
    values: [string, string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "rpc(string,string)",
    values: [string, string]
  ): string;
  encodeFunctionData(functionFragment: "rpcUrl", values: [string]): string;
  encodeFunctionData(
    functionFragment: "rpcUrlStructs",
    values?: undefined
  ): string;
  encodeFunctionData(functionFragment: "rpcUrls", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "serializeAddress(string,string,address[])",
    values: [string, string, string[]]
  ): string;
  encodeFunctionData(
    functionFragment: "serializeAddress(string,string,address)",
    values: [string, string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "serializeBool(string,string,bool[])",
    values: [string, string, boolean[]]
  ): string;
  encodeFunctionData(
    functionFragment: "serializeBool(string,string,bool)",
    values: [string, string, boolean]
  ): string;
  encodeFunctionData(
    functionFragment: "serializeBytes(string,string,bytes[])",
    values: [string, string, BytesLike[]]
  ): string;
  encodeFunctionData(
    functionFragment: "serializeBytes(string,string,bytes)",
    values: [string, string, BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "serializeBytes32(string,string,bytes32[])",
    values: [string, string, BytesLike[]]
  ): string;
  encodeFunctionData(
    functionFragment: "serializeBytes32(string,string,bytes32)",
    values: [string, string, BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "serializeInt(string,string,int256)",
    values: [string, string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "serializeInt(string,string,int256[])",
    values: [string, string, BigNumberish[]]
  ): string;
  encodeFunctionData(
    functionFragment: "serializeJson",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "serializeJsonType(string,bytes)",
    values: [string, BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "serializeJsonType(string,string,string,bytes)",
    values: [string, string, string, BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "serializeString(string,string,string[])",
    values: [string, string, string[]]
  ): string;
  encodeFunctionData(
    functionFragment: "serializeString(string,string,string)",
    values: [string, string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "serializeUint(string,string,uint256)",
    values: [string, string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "serializeUint(string,string,uint256[])",
    values: [string, string, BigNumberish[]]
  ): string;
  encodeFunctionData(
    functionFragment: "serializeUintToHex",
    values: [string, string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setArbitraryStorage",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "setEnv",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "sign(bytes32)",
    values: [BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "sign(address,bytes32)",
    values: [string, BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "sign((address,uint256,uint256,uint256),bytes32)",
    values: [VmSafe.WalletStruct, BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "sign(uint256,bytes32)",
    values: [BigNumberish, BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "signAndAttachDelegation",
    values: [string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "signCompact((address,uint256,uint256,uint256),bytes32)",
    values: [VmSafe.WalletStruct, BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "signCompact(address,bytes32)",
    values: [string, BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "signCompact(bytes32)",
    values: [BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "signCompact(uint256,bytes32)",
    values: [BigNumberish, BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "signDelegation",
    values: [string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "signP256",
    values: [BigNumberish, BytesLike]
  ): string;
  encodeFunctionData(functionFragment: "sleep", values: [BigNumberish]): string;
  encodeFunctionData(
    functionFragment: "split",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "startBroadcast()",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "startBroadcast(address)",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "startBroadcast(uint256)",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "startDebugTraceRecording",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "startMappingRecording",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "startStateDiffRecording",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "stopAndReturnDebugTraceRecording",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "stopAndReturnStateDiff",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "stopBroadcast",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "stopMappingRecording",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "toBase64(string)",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "toBase64(bytes)",
    values: [BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "toBase64URL(string)",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "toBase64URL(bytes)",
    values: [BytesLike]
  ): string;
  encodeFunctionData(functionFragment: "toLowercase", values: [string]): string;
  encodeFunctionData(
    functionFragment: "toString(address)",
    values: [string]
  ): string;
  encodeFunctionData(
    functionFragment: "toString(uint256)",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "toString(bytes)",
    values: [BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "toString(bool)",
    values: [boolean]
  ): string;
  encodeFunctionData(
    functionFragment: "toString(int256)",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "toString(bytes32)",
    values: [BytesLike]
  ): string;
  encodeFunctionData(functionFragment: "toUppercase", values: [string]): string;
  encodeFunctionData(functionFragment: "trim", values: [string]): string;
  encodeFunctionData(functionFragment: "tryFfi", values: [string[]]): string;
  encodeFunctionData(functionFragment: "unixTime", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "writeFile",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "writeFileBinary",
    values: [string, BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "writeJson(string,string,string)",
    values: [string, string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "writeJson(string,string)",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "writeLine",
    values: [string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "writeToml(string,string,string)",
    values: [string, string, string]
  ): string;
  encodeFunctionData(
    functionFragment: "writeToml(string,string)",
    values: [string, string]
  ): string;

  decodeFunctionResult(functionFragment: "accesses", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "addr", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "assertApproxEqAbs(uint256,uint256,uint256)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertApproxEqAbs(int256,int256,uint256)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertApproxEqAbs(int256,int256,uint256,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertApproxEqAbs(uint256,uint256,uint256,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertApproxEqAbsDecimal(int256,int256,uint256,uint256)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertApproxEqRel(uint256,uint256,uint256,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertApproxEqRel(uint256,uint256,uint256)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertApproxEqRel(int256,int256,uint256,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertApproxEqRel(int256,int256,uint256)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertApproxEqRelDecimal(int256,int256,uint256,uint256)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertEq(bytes32[],bytes32[])",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertEq(int256[],int256[],string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertEq(address,address,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertEq(string,string,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertEq(address[],address[])",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertEq(address[],address[],string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertEq(bool,bool,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertEq(address,address)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertEq(uint256[],uint256[],string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertEq(bool[],bool[])",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertEq(int256[],int256[])",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertEq(int256,int256,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertEq(bytes32,bytes32)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertEq(uint256,uint256,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertEq(uint256[],uint256[])",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertEq(bytes,bytes)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertEq(uint256,uint256)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertEq(bytes32,bytes32,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertEq(string[],string[])",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertEq(bytes32[],bytes32[],string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertEq(bytes,bytes,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertEq(bool[],bool[],string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertEq(bytes[],bytes[])",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertEq(string[],string[],string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertEq(string,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertEq(bytes[],bytes[],string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertEq(bool,bool)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertEq(int256,int256)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertEqDecimal(uint256,uint256,uint256)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertEqDecimal(int256,int256,uint256)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertEqDecimal(int256,int256,uint256,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertEqDecimal(uint256,uint256,uint256,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertFalse(bool,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertFalse(bool)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertGe(int256,int256)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertGe(int256,int256,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertGe(uint256,uint256)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertGe(uint256,uint256,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertGeDecimal(uint256,uint256,uint256)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertGeDecimal(int256,int256,uint256,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertGeDecimal(uint256,uint256,uint256,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertGeDecimal(int256,int256,uint256)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertGt(int256,int256)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertGt(uint256,uint256,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertGt(uint256,uint256)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertGt(int256,int256,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertGtDecimal(int256,int256,uint256,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertGtDecimal(uint256,uint256,uint256,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertGtDecimal(int256,int256,uint256)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertGtDecimal(uint256,uint256,uint256)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertLe(int256,int256,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertLe(uint256,uint256)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertLe(int256,int256)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertLe(uint256,uint256,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertLeDecimal(int256,int256,uint256)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertLeDecimal(uint256,uint256,uint256,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertLeDecimal(int256,int256,uint256,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertLeDecimal(uint256,uint256,uint256)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertLt(int256,int256)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertLt(uint256,uint256,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertLt(int256,int256,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertLt(uint256,uint256)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertLtDecimal(uint256,uint256,uint256)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertLtDecimal(int256,int256,uint256,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertLtDecimal(uint256,uint256,uint256,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertLtDecimal(int256,int256,uint256)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertNotEq(bytes32[],bytes32[])",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertNotEq(int256[],int256[])",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertNotEq(bool,bool,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertNotEq(bytes[],bytes[],string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertNotEq(bool,bool)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertNotEq(bool[],bool[])",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertNotEq(bytes,bytes)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertNotEq(address[],address[])",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertNotEq(int256,int256,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertNotEq(uint256[],uint256[])",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertNotEq(bool[],bool[],string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertNotEq(string,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertNotEq(address[],address[],string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertNotEq(string,string,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertNotEq(address,address,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertNotEq(bytes32,bytes32)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertNotEq(bytes,bytes,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertNotEq(uint256,uint256,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertNotEq(uint256[],uint256[],string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertNotEq(address,address)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertNotEq(bytes32,bytes32,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertNotEq(string[],string[],string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertNotEq(uint256,uint256)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertNotEq(bytes32[],bytes32[],string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertNotEq(string[],string[])",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertNotEq(int256[],int256[],string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertNotEq(bytes[],bytes[])",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertNotEq(int256,int256)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertNotEqDecimal(int256,int256,uint256)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertNotEqDecimal(int256,int256,uint256,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertNotEqDecimal(uint256,uint256,uint256)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertNotEqDecimal(uint256,uint256,uint256,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertTrue(bool)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assertTrue(bool,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "assume", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "assumeNoRevert()",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assumeNoRevert((address,bool,bytes)[])",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "assumeNoRevert((address,bool,bytes))",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "attachDelegation",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "breakpoint(string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "breakpoint(string,bool)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "broadcast()",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "broadcast(address)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "broadcast(uint256)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "broadcastRawTransaction",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "closeFile", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "computeCreate2Address(bytes32,bytes32)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "computeCreate2Address(bytes32,bytes32,address)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "computeCreateAddress",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "contains", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "copyFile", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "copyStorage",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "createDir", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "createWallet(string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "createWallet(uint256)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "createWallet(uint256,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "deployCode(string,bytes)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "deployCode(string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "deriveKey(string,string,uint32,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "deriveKey(string,uint32,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "deriveKey(string,uint32)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "deriveKey(string,string,uint32)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "ensNamehash",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "envAddress(string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "envAddress(string,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "envBool(string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "envBool(string,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "envBytes(string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "envBytes(string,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "envBytes32(string,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "envBytes32(string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "envExists", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "envInt(string,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "envInt(string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "envOr(string,string,bytes32[])",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "envOr(string,string,int256[])",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "envOr(string,bool)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "envOr(string,address)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "envOr(string,uint256)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "envOr(string,string,bytes[])",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "envOr(string,string,uint256[])",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "envOr(string,string,string[])",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "envOr(string,bytes)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "envOr(string,bytes32)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "envOr(string,int256)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "envOr(string,string,address[])",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "envOr(string,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "envOr(string,string,bool[])",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "envString(string,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "envString(string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "envUint(string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "envUint(string,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "eth_getLogs",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "exists", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "ffi", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "foundryVersionAtLeast",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "foundryVersionCmp",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "fsMetadata", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "getArtifactPathByCode",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getArtifactPathByDeployedCode",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getBlobBaseFee",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getBlockNumber",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getBlockTimestamp",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getBroadcast",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getBroadcasts(string,uint64)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getBroadcasts(string,uint64,uint8)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "getCode", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "getDeployedCode",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getDeployment(string,uint64)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getDeployment(string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getDeployments",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getFoundryVersion",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "getLabel", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "getMappingKeyAndParentOf",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getMappingLength",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getMappingSlotAt",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getNonce(address)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getNonce((address,uint256,uint256,uint256))",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getRecordedLogs",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getStateDiff",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getStateDiffJson",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "getWallets", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "indexOf", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "isContext", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "isDir", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "isFile", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "keyExists", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "keyExistsJson",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "keyExistsToml",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "label", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "lastCallGas",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "load", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "parseAddress",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "parseBool", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "parseBytes", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "parseBytes32",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "parseInt", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "parseJson(string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "parseJson(string,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "parseJsonAddress",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "parseJsonAddressArray",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "parseJsonBool",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "parseJsonBoolArray",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "parseJsonBytes",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "parseJsonBytes32",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "parseJsonBytes32Array",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "parseJsonBytesArray",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "parseJsonInt",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "parseJsonIntArray",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "parseJsonKeys",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "parseJsonString",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "parseJsonStringArray",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "parseJsonType(string,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "parseJsonType(string,string,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "parseJsonTypeArray",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "parseJsonUint",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "parseJsonUintArray",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "parseToml(string,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "parseToml(string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "parseTomlAddress",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "parseTomlAddressArray",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "parseTomlBool",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "parseTomlBoolArray",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "parseTomlBytes",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "parseTomlBytes32",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "parseTomlBytes32Array",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "parseTomlBytesArray",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "parseTomlInt",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "parseTomlIntArray",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "parseTomlKeys",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "parseTomlString",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "parseTomlStringArray",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "parseTomlType(string,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "parseTomlType(string,string,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "parseTomlTypeArray",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "parseTomlUint",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "parseTomlUintArray",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "parseUint", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "pauseGasMetering",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "pauseTracing",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "projectRoot",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "prompt", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "promptAddress",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "promptSecret",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "promptSecretUint",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "promptUint", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "publicKeyP256",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "randomAddress",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "randomBool", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "randomBytes",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "randomBytes4",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "randomBytes8",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "randomInt()",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "randomInt(uint256)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "randomUint()",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "randomUint(uint256)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "randomUint(uint256,uint256)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "readDir(string,uint64)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "readDir(string,uint64,bool)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "readDir(string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "readFile", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "readFileBinary",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "readLine", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "readLink", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "record", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "recordLogs", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "rememberKey",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "rememberKeys(string,string,uint32)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "rememberKeys(string,string,string,uint32)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "removeDir", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "removeFile", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "replace", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "resetGasMetering",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "resumeGasMetering",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "resumeTracing",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "rpc(string,string,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "rpc(string,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "rpcUrl", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "rpcUrlStructs",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "rpcUrls", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "serializeAddress(string,string,address[])",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "serializeAddress(string,string,address)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "serializeBool(string,string,bool[])",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "serializeBool(string,string,bool)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "serializeBytes(string,string,bytes[])",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "serializeBytes(string,string,bytes)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "serializeBytes32(string,string,bytes32[])",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "serializeBytes32(string,string,bytes32)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "serializeInt(string,string,int256)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "serializeInt(string,string,int256[])",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "serializeJson",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "serializeJsonType(string,bytes)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "serializeJsonType(string,string,string,bytes)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "serializeString(string,string,string[])",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "serializeString(string,string,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "serializeUint(string,string,uint256)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "serializeUint(string,string,uint256[])",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "serializeUintToHex",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setArbitraryStorage",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "setEnv", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "sign(bytes32)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "sign(address,bytes32)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "sign((address,uint256,uint256,uint256),bytes32)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "sign(uint256,bytes32)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "signAndAttachDelegation",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "signCompact((address,uint256,uint256,uint256),bytes32)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "signCompact(address,bytes32)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "signCompact(bytes32)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "signCompact(uint256,bytes32)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "signDelegation",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "signP256", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "sleep", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "split", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "startBroadcast()",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "startBroadcast(address)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "startBroadcast(uint256)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "startDebugTraceRecording",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "startMappingRecording",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "startStateDiffRecording",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "stopAndReturnDebugTraceRecording",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "stopAndReturnStateDiff",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "stopBroadcast",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "stopMappingRecording",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "toBase64(string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "toBase64(bytes)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "toBase64URL(string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "toBase64URL(bytes)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "toLowercase",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "toString(address)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "toString(uint256)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "toString(bytes)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "toString(bool)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "toString(int256)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "toString(bytes32)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "toUppercase",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "trim", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "tryFfi", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "unixTime", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "writeFile", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "writeFileBinary",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "writeJson(string,string,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "writeJson(string,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "writeLine", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "writeToml(string,string,string)",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "writeToml(string,string)",
    data: BytesLike
  ): Result;

  events: {};
}

export interface VmSafe extends BaseContract {
  connect(signerOrProvider: Signer | Provider | string): this;
  attach(addressOrName: string): this;
  deployed(): Promise<this>;

  interface: VmSafeInterface;

  queryFilter<TEvent extends TypedEvent>(
    event: TypedEventFilter<TEvent>,
    fromBlockOrBlockhash?: string | number | undefined,
    toBlock?: string | number | undefined
  ): Promise<Array<TEvent>>;

  listeners<TEvent extends TypedEvent>(
    eventFilter?: TypedEventFilter<TEvent>
  ): Array<TypedListener<TEvent>>;
  listeners(eventName?: string): Array<Listener>;
  removeAllListeners<TEvent extends TypedEvent>(
    eventFilter: TypedEventFilter<TEvent>
  ): this;
  removeAllListeners(eventName?: string): this;
  off: OnEvent<this>;
  on: OnEvent<this>;
  once: OnEvent<this>;
  removeListener: OnEvent<this>;

  functions: {
    accesses(
      target: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    addr(
      privateKey: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[string] & { keyAddr: string }>;

    "assertApproxEqAbs(uint256,uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      maxDelta: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertApproxEqAbs(int256,int256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      maxDelta: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertApproxEqAbs(int256,int256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      maxDelta: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertApproxEqAbs(uint256,uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      maxDelta: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      maxDelta: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertApproxEqAbsDecimal(int256,int256,uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      maxDelta: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      maxDelta: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      maxDelta: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertApproxEqRel(uint256,uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      maxPercentDelta: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertApproxEqRel(uint256,uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      maxPercentDelta: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertApproxEqRel(int256,int256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      maxPercentDelta: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertApproxEqRel(int256,int256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      maxPercentDelta: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      maxPercentDelta: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      maxPercentDelta: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertApproxEqRelDecimal(int256,int256,uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      maxPercentDelta: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      maxPercentDelta: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertEq(bytes32[],bytes32[])"(
      left: BytesLike[],
      right: BytesLike[],
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertEq(int256[],int256[],string)"(
      left: BigNumberish[],
      right: BigNumberish[],
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertEq(address,address,string)"(
      left: string,
      right: string,
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertEq(string,string,string)"(
      left: string,
      right: string,
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertEq(address[],address[])"(
      left: string[],
      right: string[],
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertEq(address[],address[],string)"(
      left: string[],
      right: string[],
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertEq(bool,bool,string)"(
      left: boolean,
      right: boolean,
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertEq(address,address)"(
      left: string,
      right: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertEq(uint256[],uint256[],string)"(
      left: BigNumberish[],
      right: BigNumberish[],
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertEq(bool[],bool[])"(
      left: boolean[],
      right: boolean[],
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertEq(int256[],int256[])"(
      left: BigNumberish[],
      right: BigNumberish[],
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertEq(int256,int256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertEq(bytes32,bytes32)"(
      left: BytesLike,
      right: BytesLike,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertEq(uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertEq(uint256[],uint256[])"(
      left: BigNumberish[],
      right: BigNumberish[],
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertEq(bytes,bytes)"(
      left: BytesLike,
      right: BytesLike,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertEq(uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertEq(bytes32,bytes32,string)"(
      left: BytesLike,
      right: BytesLike,
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertEq(string[],string[])"(
      left: string[],
      right: string[],
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertEq(bytes32[],bytes32[],string)"(
      left: BytesLike[],
      right: BytesLike[],
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertEq(bytes,bytes,string)"(
      left: BytesLike,
      right: BytesLike,
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertEq(bool[],bool[],string)"(
      left: boolean[],
      right: boolean[],
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertEq(bytes[],bytes[])"(
      left: BytesLike[],
      right: BytesLike[],
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertEq(string[],string[],string)"(
      left: string[],
      right: string[],
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertEq(string,string)"(
      left: string,
      right: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertEq(bytes[],bytes[],string)"(
      left: BytesLike[],
      right: BytesLike[],
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertEq(bool,bool)"(
      left: boolean,
      right: boolean,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertEq(int256,int256)"(
      left: BigNumberish,
      right: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertEqDecimal(uint256,uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertEqDecimal(int256,int256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertEqDecimal(int256,int256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertEqDecimal(uint256,uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertFalse(bool,string)"(
      condition: boolean,
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertFalse(bool)"(
      condition: boolean,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertGe(int256,int256)"(
      left: BigNumberish,
      right: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertGe(int256,int256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertGe(uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertGe(uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertGeDecimal(uint256,uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertGeDecimal(int256,int256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertGeDecimal(uint256,uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertGeDecimal(int256,int256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertGt(int256,int256)"(
      left: BigNumberish,
      right: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertGt(uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertGt(uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertGt(int256,int256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertGtDecimal(int256,int256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertGtDecimal(uint256,uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertGtDecimal(int256,int256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertGtDecimal(uint256,uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertLe(int256,int256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertLe(uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertLe(int256,int256)"(
      left: BigNumberish,
      right: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertLe(uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertLeDecimal(int256,int256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertLeDecimal(uint256,uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertLeDecimal(int256,int256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertLeDecimal(uint256,uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertLt(int256,int256)"(
      left: BigNumberish,
      right: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertLt(uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertLt(int256,int256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertLt(uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertLtDecimal(uint256,uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertLtDecimal(int256,int256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertLtDecimal(uint256,uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertLtDecimal(int256,int256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertNotEq(bytes32[],bytes32[])"(
      left: BytesLike[],
      right: BytesLike[],
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertNotEq(int256[],int256[])"(
      left: BigNumberish[],
      right: BigNumberish[],
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertNotEq(bool,bool,string)"(
      left: boolean,
      right: boolean,
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertNotEq(bytes[],bytes[],string)"(
      left: BytesLike[],
      right: BytesLike[],
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertNotEq(bool,bool)"(
      left: boolean,
      right: boolean,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertNotEq(bool[],bool[])"(
      left: boolean[],
      right: boolean[],
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertNotEq(bytes,bytes)"(
      left: BytesLike,
      right: BytesLike,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertNotEq(address[],address[])"(
      left: string[],
      right: string[],
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertNotEq(int256,int256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertNotEq(uint256[],uint256[])"(
      left: BigNumberish[],
      right: BigNumberish[],
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertNotEq(bool[],bool[],string)"(
      left: boolean[],
      right: boolean[],
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertNotEq(string,string)"(
      left: string,
      right: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertNotEq(address[],address[],string)"(
      left: string[],
      right: string[],
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertNotEq(string,string,string)"(
      left: string,
      right: string,
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertNotEq(address,address,string)"(
      left: string,
      right: string,
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertNotEq(bytes32,bytes32)"(
      left: BytesLike,
      right: BytesLike,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertNotEq(bytes,bytes,string)"(
      left: BytesLike,
      right: BytesLike,
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertNotEq(uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertNotEq(uint256[],uint256[],string)"(
      left: BigNumberish[],
      right: BigNumberish[],
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertNotEq(address,address)"(
      left: string,
      right: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertNotEq(bytes32,bytes32,string)"(
      left: BytesLike,
      right: BytesLike,
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertNotEq(string[],string[],string)"(
      left: string[],
      right: string[],
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertNotEq(uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertNotEq(bytes32[],bytes32[],string)"(
      left: BytesLike[],
      right: BytesLike[],
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertNotEq(string[],string[])"(
      left: string[],
      right: string[],
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertNotEq(int256[],int256[],string)"(
      left: BigNumberish[],
      right: BigNumberish[],
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertNotEq(bytes[],bytes[])"(
      left: BytesLike[],
      right: BytesLike[],
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertNotEq(int256,int256)"(
      left: BigNumberish,
      right: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertNotEqDecimal(int256,int256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertNotEqDecimal(int256,int256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertNotEqDecimal(uint256,uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertNotEqDecimal(uint256,uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertTrue(bool)"(
      condition: boolean,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assertTrue(bool,string)"(
      condition: boolean,
      error: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    assume(condition: boolean, overrides?: CallOverrides): Promise<[void]>;

    "assumeNoRevert()"(overrides?: CallOverrides): Promise<[void]>;

    "assumeNoRevert((address,bool,bytes)[])"(
      potentialReverts: VmSafe.PotentialRevertStruct[],
      overrides?: CallOverrides
    ): Promise<[void]>;

    "assumeNoRevert((address,bool,bytes))"(
      potentialRevert: VmSafe.PotentialRevertStruct,
      overrides?: CallOverrides
    ): Promise<[void]>;

    attachDelegation(
      signedDelegation: VmSafe.SignedDelegationStruct,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    "breakpoint(string)"(
      char: string,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "breakpoint(string,bool)"(
      char: string,
      value: boolean,
      overrides?: CallOverrides
    ): Promise<[void]>;

    "broadcast()"(
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    "broadcast(address)"(
      signer: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    "broadcast(uint256)"(
      privateKey: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    broadcastRawTransaction(
      data: BytesLike,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    closeFile(
      path: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    "computeCreate2Address(bytes32,bytes32)"(
      salt: BytesLike,
      initCodeHash: BytesLike,
      overrides?: CallOverrides
    ): Promise<[string]>;

    "computeCreate2Address(bytes32,bytes32,address)"(
      salt: BytesLike,
      initCodeHash: BytesLike,
      deployer: string,
      overrides?: CallOverrides
    ): Promise<[string]>;

    computeCreateAddress(
      deployer: string,
      nonce: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[string]>;

    contains(
      subject: string,
      search: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    copyFile(
      from: string,
      to: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    copyStorage(
      from: string,
      to: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    createDir(
      path: string,
      recursive: boolean,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    "createWallet(string)"(
      walletLabel: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    "createWallet(uint256)"(
      privateKey: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    "createWallet(uint256,string)"(
      privateKey: BigNumberish,
      walletLabel: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    "deployCode(string,bytes)"(
      artifactPath: string,
      constructorArgs: BytesLike,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    "deployCode(string)"(
      artifactPath: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    "deriveKey(string,string,uint32,string)"(
      mnemonic: string,
      derivationPath: string,
      index: BigNumberish,
      language: string,
      overrides?: CallOverrides
    ): Promise<[BigNumber] & { privateKey: BigNumber }>;

    "deriveKey(string,uint32,string)"(
      mnemonic: string,
      index: BigNumberish,
      language: string,
      overrides?: CallOverrides
    ): Promise<[BigNumber] & { privateKey: BigNumber }>;

    "deriveKey(string,uint32)"(
      mnemonic: string,
      index: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[BigNumber] & { privateKey: BigNumber }>;

    "deriveKey(string,string,uint32)"(
      mnemonic: string,
      derivationPath: string,
      index: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[BigNumber] & { privateKey: BigNumber }>;

    ensNamehash(name: string, overrides?: CallOverrides): Promise<[string]>;

    "envAddress(string)"(
      name: string,
      overrides?: CallOverrides
    ): Promise<[string] & { value: string }>;

    "envAddress(string,string)"(
      name: string,
      delim: string,
      overrides?: CallOverrides
    ): Promise<[string[]] & { value: string[] }>;

    "envBool(string)"(
      name: string,
      overrides?: CallOverrides
    ): Promise<[boolean] & { value: boolean }>;

    "envBool(string,string)"(
      name: string,
      delim: string,
      overrides?: CallOverrides
    ): Promise<[boolean[]] & { value: boolean[] }>;

    "envBytes(string)"(
      name: string,
      overrides?: CallOverrides
    ): Promise<[string] & { value: string }>;

    "envBytes(string,string)"(
      name: string,
      delim: string,
      overrides?: CallOverrides
    ): Promise<[string[]] & { value: string[] }>;

    "envBytes32(string,string)"(
      name: string,
      delim: string,
      overrides?: CallOverrides
    ): Promise<[string[]] & { value: string[] }>;

    "envBytes32(string)"(
      name: string,
      overrides?: CallOverrides
    ): Promise<[string] & { value: string }>;

    envExists(
      name: string,
      overrides?: CallOverrides
    ): Promise<[boolean] & { result: boolean }>;

    "envInt(string,string)"(
      name: string,
      delim: string,
      overrides?: CallOverrides
    ): Promise<[BigNumber[]] & { value: BigNumber[] }>;

    "envInt(string)"(
      name: string,
      overrides?: CallOverrides
    ): Promise<[BigNumber] & { value: BigNumber }>;

    "envOr(string,string,bytes32[])"(
      name: string,
      delim: string,
      defaultValue: BytesLike[],
      overrides?: CallOverrides
    ): Promise<[string[]] & { value: string[] }>;

    "envOr(string,string,int256[])"(
      name: string,
      delim: string,
      defaultValue: BigNumberish[],
      overrides?: CallOverrides
    ): Promise<[BigNumber[]] & { value: BigNumber[] }>;

    "envOr(string,bool)"(
      name: string,
      defaultValue: boolean,
      overrides?: CallOverrides
    ): Promise<[boolean] & { value: boolean }>;

    "envOr(string,address)"(
      name: string,
      defaultValue: string,
      overrides?: CallOverrides
    ): Promise<[string] & { value: string }>;

    "envOr(string,uint256)"(
      name: string,
      defaultValue: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[BigNumber] & { value: BigNumber }>;

    "envOr(string,string,bytes[])"(
      name: string,
      delim: string,
      defaultValue: BytesLike[],
      overrides?: CallOverrides
    ): Promise<[string[]] & { value: string[] }>;

    "envOr(string,string,uint256[])"(
      name: string,
      delim: string,
      defaultValue: BigNumberish[],
      overrides?: CallOverrides
    ): Promise<[BigNumber[]] & { value: BigNumber[] }>;

    "envOr(string,string,string[])"(
      name: string,
      delim: string,
      defaultValue: string[],
      overrides?: CallOverrides
    ): Promise<[string[]] & { value: string[] }>;

    "envOr(string,bytes)"(
      name: string,
      defaultValue: BytesLike,
      overrides?: CallOverrides
    ): Promise<[string] & { value: string }>;

    "envOr(string,bytes32)"(
      name: string,
      defaultValue: BytesLike,
      overrides?: CallOverrides
    ): Promise<[string] & { value: string }>;

    "envOr(string,int256)"(
      name: string,
      defaultValue: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[BigNumber] & { value: BigNumber }>;

    "envOr(string,string,address[])"(
      name: string,
      delim: string,
      defaultValue: string[],
      overrides?: CallOverrides
    ): Promise<[string[]] & { value: string[] }>;

    "envOr(string,string)"(
      name: string,
      defaultValue: string,
      overrides?: CallOverrides
    ): Promise<[string] & { value: string }>;

    "envOr(string,string,bool[])"(
      name: string,
      delim: string,
      defaultValue: boolean[],
      overrides?: CallOverrides
    ): Promise<[boolean[]] & { value: boolean[] }>;

    "envString(string,string)"(
      name: string,
      delim: string,
      overrides?: CallOverrides
    ): Promise<[string[]] & { value: string[] }>;

    "envString(string)"(
      name: string,
      overrides?: CallOverrides
    ): Promise<[string] & { value: string }>;

    "envUint(string)"(
      name: string,
      overrides?: CallOverrides
    ): Promise<[BigNumber] & { value: BigNumber }>;

    "envUint(string,string)"(
      name: string,
      delim: string,
      overrides?: CallOverrides
    ): Promise<[BigNumber[]] & { value: BigNumber[] }>;

    eth_getLogs(
      fromBlock: BigNumberish,
      toBlock: BigNumberish,
      target: string,
      topics: BytesLike[],
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    exists(
      path: string,
      overrides?: CallOverrides
    ): Promise<[boolean] & { result: boolean }>;

    ffi(
      commandInput: string[],
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    foundryVersionAtLeast(
      version: string,
      overrides?: CallOverrides
    ): Promise<[boolean]>;

    foundryVersionCmp(
      version: string,
      overrides?: CallOverrides
    ): Promise<[BigNumber]>;

    fsMetadata(
      path: string,
      overrides?: CallOverrides
    ): Promise<
      [VmSafe.FsMetadataStructOutput] & {
        metadata: VmSafe.FsMetadataStructOutput;
      }
    >;

    getArtifactPathByCode(
      code: BytesLike,
      overrides?: CallOverrides
    ): Promise<[string] & { path: string }>;

    getArtifactPathByDeployedCode(
      deployedCode: BytesLike,
      overrides?: CallOverrides
    ): Promise<[string] & { path: string }>;

    getBlobBaseFee(
      overrides?: CallOverrides
    ): Promise<[BigNumber] & { blobBaseFee: BigNumber }>;

    getBlockNumber(
      overrides?: CallOverrides
    ): Promise<[BigNumber] & { height: BigNumber }>;

    getBlockTimestamp(
      overrides?: CallOverrides
    ): Promise<[BigNumber] & { timestamp: BigNumber }>;

    getBroadcast(
      contractName: string,
      chainId: BigNumberish,
      txType: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[VmSafe.BroadcastTxSummaryStructOutput]>;

    "getBroadcasts(string,uint64)"(
      contractName: string,
      chainId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[VmSafe.BroadcastTxSummaryStructOutput[]]>;

    "getBroadcasts(string,uint64,uint8)"(
      contractName: string,
      chainId: BigNumberish,
      txType: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[VmSafe.BroadcastTxSummaryStructOutput[]]>;

    getCode(
      artifactPath: string,
      overrides?: CallOverrides
    ): Promise<[string] & { creationBytecode: string }>;

    getDeployedCode(
      artifactPath: string,
      overrides?: CallOverrides
    ): Promise<[string] & { runtimeBytecode: string }>;

    "getDeployment(string,uint64)"(
      contractName: string,
      chainId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[string] & { deployedAddress: string }>;

    "getDeployment(string)"(
      contractName: string,
      overrides?: CallOverrides
    ): Promise<[string] & { deployedAddress: string }>;

    getDeployments(
      contractName: string,
      chainId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[string[]] & { deployedAddresses: string[] }>;

    getFoundryVersion(
      overrides?: CallOverrides
    ): Promise<[string] & { version: string }>;

    getLabel(
      account: string,
      overrides?: CallOverrides
    ): Promise<[string] & { currentLabel: string }>;

    getMappingKeyAndParentOf(
      target: string,
      elementSlot: BytesLike,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    getMappingLength(
      target: string,
      mappingSlot: BytesLike,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    getMappingSlotAt(
      target: string,
      mappingSlot: BytesLike,
      idx: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    "getNonce(address)"(
      account: string,
      overrides?: CallOverrides
    ): Promise<[BigNumber] & { nonce: BigNumber }>;

    "getNonce((address,uint256,uint256,uint256))"(
      wallet: VmSafe.WalletStruct,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    getRecordedLogs(
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    getStateDiff(
      overrides?: CallOverrides
    ): Promise<[string] & { diff: string }>;

    getStateDiffJson(
      overrides?: CallOverrides
    ): Promise<[string] & { diff: string }>;

    getWallets(
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    indexOf(
      input: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<[BigNumber]>;

    isContext(
      context: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[boolean] & { result: boolean }>;

    isDir(
      path: string,
      overrides?: CallOverrides
    ): Promise<[boolean] & { result: boolean }>;

    isFile(
      path: string,
      overrides?: CallOverrides
    ): Promise<[boolean] & { result: boolean }>;

    keyExists(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<[boolean]>;

    keyExistsJson(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<[boolean]>;

    keyExistsToml(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<[boolean]>;

    label(
      account: string,
      newLabel: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    lastCallGas(
      overrides?: CallOverrides
    ): Promise<[VmSafe.GasStructOutput] & { gas: VmSafe.GasStructOutput }>;

    load(
      target: string,
      slot: BytesLike,
      overrides?: CallOverrides
    ): Promise<[string] & { data: string }>;

    parseAddress(
      stringifiedValue: string,
      overrides?: CallOverrides
    ): Promise<[string] & { parsedValue: string }>;

    parseBool(
      stringifiedValue: string,
      overrides?: CallOverrides
    ): Promise<[boolean] & { parsedValue: boolean }>;

    parseBytes(
      stringifiedValue: string,
      overrides?: CallOverrides
    ): Promise<[string] & { parsedValue: string }>;

    parseBytes32(
      stringifiedValue: string,
      overrides?: CallOverrides
    ): Promise<[string] & { parsedValue: string }>;

    parseInt(
      stringifiedValue: string,
      overrides?: CallOverrides
    ): Promise<[BigNumber] & { parsedValue: BigNumber }>;

    "parseJson(string)"(
      json: string,
      overrides?: CallOverrides
    ): Promise<[string] & { abiEncodedData: string }>;

    "parseJson(string,string)"(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<[string] & { abiEncodedData: string }>;

    parseJsonAddress(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<[string]>;

    parseJsonAddressArray(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<[string[]]>;

    parseJsonBool(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<[boolean]>;

    parseJsonBoolArray(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<[boolean[]]>;

    parseJsonBytes(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<[string]>;

    parseJsonBytes32(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<[string]>;

    parseJsonBytes32Array(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<[string[]]>;

    parseJsonBytesArray(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<[string[]]>;

    parseJsonInt(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<[BigNumber]>;

    parseJsonIntArray(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<[BigNumber[]]>;

    parseJsonKeys(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<[string[]] & { keys: string[] }>;

    parseJsonString(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<[string]>;

    parseJsonStringArray(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<[string[]]>;

    "parseJsonType(string,string)"(
      json: string,
      typeDescription: string,
      overrides?: CallOverrides
    ): Promise<[string]>;

    "parseJsonType(string,string,string)"(
      json: string,
      key: string,
      typeDescription: string,
      overrides?: CallOverrides
    ): Promise<[string]>;

    parseJsonTypeArray(
      json: string,
      key: string,
      typeDescription: string,
      overrides?: CallOverrides
    ): Promise<[string]>;

    parseJsonUint(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<[BigNumber]>;

    parseJsonUintArray(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<[BigNumber[]]>;

    "parseToml(string,string)"(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<[string] & { abiEncodedData: string }>;

    "parseToml(string)"(
      toml: string,
      overrides?: CallOverrides
    ): Promise<[string] & { abiEncodedData: string }>;

    parseTomlAddress(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<[string]>;

    parseTomlAddressArray(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<[string[]]>;

    parseTomlBool(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<[boolean]>;

    parseTomlBoolArray(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<[boolean[]]>;

    parseTomlBytes(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<[string]>;

    parseTomlBytes32(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<[string]>;

    parseTomlBytes32Array(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<[string[]]>;

    parseTomlBytesArray(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<[string[]]>;

    parseTomlInt(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<[BigNumber]>;

    parseTomlIntArray(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<[BigNumber[]]>;

    parseTomlKeys(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<[string[]] & { keys: string[] }>;

    parseTomlString(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<[string]>;

    parseTomlStringArray(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<[string[]]>;

    "parseTomlType(string,string)"(
      toml: string,
      typeDescription: string,
      overrides?: CallOverrides
    ): Promise<[string]>;

    "parseTomlType(string,string,string)"(
      toml: string,
      key: string,
      typeDescription: string,
      overrides?: CallOverrides
    ): Promise<[string]>;

    parseTomlTypeArray(
      toml: string,
      key: string,
      typeDescription: string,
      overrides?: CallOverrides
    ): Promise<[string]>;

    parseTomlUint(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<[BigNumber]>;

    parseTomlUintArray(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<[BigNumber[]]>;

    parseUint(
      stringifiedValue: string,
      overrides?: CallOverrides
    ): Promise<[BigNumber] & { parsedValue: BigNumber }>;

    pauseGasMetering(
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    pauseTracing(overrides?: CallOverrides): Promise<[void]>;

    projectRoot(
      overrides?: CallOverrides
    ): Promise<[string] & { path: string }>;

    prompt(
      promptText: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    promptAddress(
      promptText: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    promptSecret(
      promptText: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    promptSecretUint(
      promptText: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    promptUint(
      promptText: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    publicKeyP256(
      privateKey: BigNumberish,
      overrides?: CallOverrides
    ): Promise<
      [BigNumber, BigNumber] & { publicKeyX: BigNumber; publicKeyY: BigNumber }
    >;

    randomAddress(
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    randomBool(overrides?: CallOverrides): Promise<[boolean]>;

    randomBytes(
      len: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[string]>;

    randomBytes4(overrides?: CallOverrides): Promise<[string]>;

    randomBytes8(overrides?: CallOverrides): Promise<[string]>;

    "randomInt()"(overrides?: CallOverrides): Promise<[BigNumber]>;

    "randomInt(uint256)"(
      bits: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[BigNumber]>;

    "randomUint()"(
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    "randomUint(uint256)"(
      bits: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[BigNumber]>;

    "randomUint(uint256,uint256)"(
      min: BigNumberish,
      max: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    "readDir(string,uint64)"(
      path: string,
      maxDepth: BigNumberish,
      overrides?: CallOverrides
    ): Promise<
      [VmSafe.DirEntryStructOutput[]] & {
        entries: VmSafe.DirEntryStructOutput[];
      }
    >;

    "readDir(string,uint64,bool)"(
      path: string,
      maxDepth: BigNumberish,
      followLinks: boolean,
      overrides?: CallOverrides
    ): Promise<
      [VmSafe.DirEntryStructOutput[]] & {
        entries: VmSafe.DirEntryStructOutput[];
      }
    >;

    "readDir(string)"(
      path: string,
      overrides?: CallOverrides
    ): Promise<
      [VmSafe.DirEntryStructOutput[]] & {
        entries: VmSafe.DirEntryStructOutput[];
      }
    >;

    readFile(
      path: string,
      overrides?: CallOverrides
    ): Promise<[string] & { data: string }>;

    readFileBinary(
      path: string,
      overrides?: CallOverrides
    ): Promise<[string] & { data: string }>;

    readLine(
      path: string,
      overrides?: CallOverrides
    ): Promise<[string] & { line: string }>;

    readLink(
      linkPath: string,
      overrides?: CallOverrides
    ): Promise<[string] & { targetPath: string }>;

    record(
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    recordLogs(
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    rememberKey(
      privateKey: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    "rememberKeys(string,string,uint32)"(
      mnemonic: string,
      derivationPath: string,
      count: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    "rememberKeys(string,string,string,uint32)"(
      mnemonic: string,
      derivationPath: string,
      language: string,
      count: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    removeDir(
      path: string,
      recursive: boolean,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    removeFile(
      path: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    replace(
      input: string,
      from: string,
      to: string,
      overrides?: CallOverrides
    ): Promise<[string] & { output: string }>;

    resetGasMetering(
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    resumeGasMetering(
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    resumeTracing(overrides?: CallOverrides): Promise<[void]>;

    "rpc(string,string,string)"(
      urlOrAlias: string,
      method: string,
      params: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    "rpc(string,string)"(
      method: string,
      params: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    rpcUrl(
      rpcAlias: string,
      overrides?: CallOverrides
    ): Promise<[string] & { json: string }>;

    rpcUrlStructs(
      overrides?: CallOverrides
    ): Promise<[VmSafe.RpcStructOutput[]] & { urls: VmSafe.RpcStructOutput[] }>;

    rpcUrls(
      overrides?: CallOverrides
    ): Promise<[[string, string][]] & { urls: [string, string][] }>;

    "serializeAddress(string,string,address[])"(
      objectKey: string,
      valueKey: string,
      values: string[],
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    "serializeAddress(string,string,address)"(
      objectKey: string,
      valueKey: string,
      value: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    "serializeBool(string,string,bool[])"(
      objectKey: string,
      valueKey: string,
      values: boolean[],
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    "serializeBool(string,string,bool)"(
      objectKey: string,
      valueKey: string,
      value: boolean,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    "serializeBytes(string,string,bytes[])"(
      objectKey: string,
      valueKey: string,
      values: BytesLike[],
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    "serializeBytes(string,string,bytes)"(
      objectKey: string,
      valueKey: string,
      value: BytesLike,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    "serializeBytes32(string,string,bytes32[])"(
      objectKey: string,
      valueKey: string,
      values: BytesLike[],
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    "serializeBytes32(string,string,bytes32)"(
      objectKey: string,
      valueKey: string,
      value: BytesLike,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    "serializeInt(string,string,int256)"(
      objectKey: string,
      valueKey: string,
      value: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    "serializeInt(string,string,int256[])"(
      objectKey: string,
      valueKey: string,
      values: BigNumberish[],
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    serializeJson(
      objectKey: string,
      value: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    "serializeJsonType(string,bytes)"(
      typeDescription: string,
      value: BytesLike,
      overrides?: CallOverrides
    ): Promise<[string] & { json: string }>;

    "serializeJsonType(string,string,string,bytes)"(
      objectKey: string,
      valueKey: string,
      typeDescription: string,
      value: BytesLike,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    "serializeString(string,string,string[])"(
      objectKey: string,
      valueKey: string,
      values: string[],
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    "serializeString(string,string,string)"(
      objectKey: string,
      valueKey: string,
      value: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    "serializeUint(string,string,uint256)"(
      objectKey: string,
      valueKey: string,
      value: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    "serializeUint(string,string,uint256[])"(
      objectKey: string,
      valueKey: string,
      values: BigNumberish[],
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    serializeUintToHex(
      objectKey: string,
      valueKey: string,
      value: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    setArbitraryStorage(
      target: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    setEnv(
      name: string,
      value: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    "sign(bytes32)"(
      digest: BytesLike,
      overrides?: CallOverrides
    ): Promise<[number, string, string] & { v: number; r: string; s: string }>;

    "sign(address,bytes32)"(
      signer: string,
      digest: BytesLike,
      overrides?: CallOverrides
    ): Promise<[number, string, string] & { v: number; r: string; s: string }>;

    "sign((address,uint256,uint256,uint256),bytes32)"(
      wallet: VmSafe.WalletStruct,
      digest: BytesLike,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    "sign(uint256,bytes32)"(
      privateKey: BigNumberish,
      digest: BytesLike,
      overrides?: CallOverrides
    ): Promise<[number, string, string] & { v: number; r: string; s: string }>;

    signAndAttachDelegation(
      implementation: string,
      privateKey: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    "signCompact((address,uint256,uint256,uint256),bytes32)"(
      wallet: VmSafe.WalletStruct,
      digest: BytesLike,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    "signCompact(address,bytes32)"(
      signer: string,
      digest: BytesLike,
      overrides?: CallOverrides
    ): Promise<[string, string] & { r: string; vs: string }>;

    "signCompact(bytes32)"(
      digest: BytesLike,
      overrides?: CallOverrides
    ): Promise<[string, string] & { r: string; vs: string }>;

    "signCompact(uint256,bytes32)"(
      privateKey: BigNumberish,
      digest: BytesLike,
      overrides?: CallOverrides
    ): Promise<[string, string] & { r: string; vs: string }>;

    signDelegation(
      implementation: string,
      privateKey: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    signP256(
      privateKey: BigNumberish,
      digest: BytesLike,
      overrides?: CallOverrides
    ): Promise<[string, string] & { r: string; s: string }>;

    sleep(
      duration: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    split(
      input: string,
      delimiter: string,
      overrides?: CallOverrides
    ): Promise<[string[]] & { outputs: string[] }>;

    "startBroadcast()"(
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    "startBroadcast(address)"(
      signer: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    "startBroadcast(uint256)"(
      privateKey: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    startDebugTraceRecording(
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    startMappingRecording(
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    startStateDiffRecording(
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    stopAndReturnDebugTraceRecording(
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    stopAndReturnStateDiff(
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    stopBroadcast(
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    stopMappingRecording(
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    "toBase64(string)"(
      data: string,
      overrides?: CallOverrides
    ): Promise<[string]>;

    "toBase64(bytes)"(
      data: BytesLike,
      overrides?: CallOverrides
    ): Promise<[string]>;

    "toBase64URL(string)"(
      data: string,
      overrides?: CallOverrides
    ): Promise<[string]>;

    "toBase64URL(bytes)"(
      data: BytesLike,
      overrides?: CallOverrides
    ): Promise<[string]>;

    toLowercase(
      input: string,
      overrides?: CallOverrides
    ): Promise<[string] & { output: string }>;

    "toString(address)"(
      value: string,
      overrides?: CallOverrides
    ): Promise<[string] & { stringifiedValue: string }>;

    "toString(uint256)"(
      value: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[string] & { stringifiedValue: string }>;

    "toString(bytes)"(
      value: BytesLike,
      overrides?: CallOverrides
    ): Promise<[string] & { stringifiedValue: string }>;

    "toString(bool)"(
      value: boolean,
      overrides?: CallOverrides
    ): Promise<[string] & { stringifiedValue: string }>;

    "toString(int256)"(
      value: BigNumberish,
      overrides?: CallOverrides
    ): Promise<[string] & { stringifiedValue: string }>;

    "toString(bytes32)"(
      value: BytesLike,
      overrides?: CallOverrides
    ): Promise<[string] & { stringifiedValue: string }>;

    toUppercase(
      input: string,
      overrides?: CallOverrides
    ): Promise<[string] & { output: string }>;

    trim(
      input: string,
      overrides?: CallOverrides
    ): Promise<[string] & { output: string }>;

    tryFfi(
      commandInput: string[],
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    unixTime(
      overrides?: CallOverrides
    ): Promise<[BigNumber] & { milliseconds: BigNumber }>;

    writeFile(
      path: string,
      data: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    writeFileBinary(
      path: string,
      data: BytesLike,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    "writeJson(string,string,string)"(
      json: string,
      path: string,
      valueKey: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    "writeJson(string,string)"(
      json: string,
      path: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    writeLine(
      path: string,
      data: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    "writeToml(string,string,string)"(
      json: string,
      path: string,
      valueKey: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;

    "writeToml(string,string)"(
      json: string,
      path: string,
      overrides?: Overrides & { from?: string }
    ): Promise<ContractTransaction>;
  };

  accesses(
    target: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  addr(privateKey: BigNumberish, overrides?: CallOverrides): Promise<string>;

  "assertApproxEqAbs(uint256,uint256,uint256)"(
    left: BigNumberish,
    right: BigNumberish,
    maxDelta: BigNumberish,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertApproxEqAbs(int256,int256,uint256)"(
    left: BigNumberish,
    right: BigNumberish,
    maxDelta: BigNumberish,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertApproxEqAbs(int256,int256,uint256,string)"(
    left: BigNumberish,
    right: BigNumberish,
    maxDelta: BigNumberish,
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertApproxEqAbs(uint256,uint256,uint256,string)"(
    left: BigNumberish,
    right: BigNumberish,
    maxDelta: BigNumberish,
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)"(
    left: BigNumberish,
    right: BigNumberish,
    maxDelta: BigNumberish,
    decimals: BigNumberish,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertApproxEqAbsDecimal(int256,int256,uint256,uint256)"(
    left: BigNumberish,
    right: BigNumberish,
    maxDelta: BigNumberish,
    decimals: BigNumberish,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)"(
    left: BigNumberish,
    right: BigNumberish,
    maxDelta: BigNumberish,
    decimals: BigNumberish,
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)"(
    left: BigNumberish,
    right: BigNumberish,
    maxDelta: BigNumberish,
    decimals: BigNumberish,
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertApproxEqRel(uint256,uint256,uint256,string)"(
    left: BigNumberish,
    right: BigNumberish,
    maxPercentDelta: BigNumberish,
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertApproxEqRel(uint256,uint256,uint256)"(
    left: BigNumberish,
    right: BigNumberish,
    maxPercentDelta: BigNumberish,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertApproxEqRel(int256,int256,uint256,string)"(
    left: BigNumberish,
    right: BigNumberish,
    maxPercentDelta: BigNumberish,
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertApproxEqRel(int256,int256,uint256)"(
    left: BigNumberish,
    right: BigNumberish,
    maxPercentDelta: BigNumberish,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)"(
    left: BigNumberish,
    right: BigNumberish,
    maxPercentDelta: BigNumberish,
    decimals: BigNumberish,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)"(
    left: BigNumberish,
    right: BigNumberish,
    maxPercentDelta: BigNumberish,
    decimals: BigNumberish,
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertApproxEqRelDecimal(int256,int256,uint256,uint256)"(
    left: BigNumberish,
    right: BigNumberish,
    maxPercentDelta: BigNumberish,
    decimals: BigNumberish,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)"(
    left: BigNumberish,
    right: BigNumberish,
    maxPercentDelta: BigNumberish,
    decimals: BigNumberish,
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertEq(bytes32[],bytes32[])"(
    left: BytesLike[],
    right: BytesLike[],
    overrides?: CallOverrides
  ): Promise<void>;

  "assertEq(int256[],int256[],string)"(
    left: BigNumberish[],
    right: BigNumberish[],
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertEq(address,address,string)"(
    left: string,
    right: string,
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertEq(string,string,string)"(
    left: string,
    right: string,
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertEq(address[],address[])"(
    left: string[],
    right: string[],
    overrides?: CallOverrides
  ): Promise<void>;

  "assertEq(address[],address[],string)"(
    left: string[],
    right: string[],
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertEq(bool,bool,string)"(
    left: boolean,
    right: boolean,
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertEq(address,address)"(
    left: string,
    right: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertEq(uint256[],uint256[],string)"(
    left: BigNumberish[],
    right: BigNumberish[],
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertEq(bool[],bool[])"(
    left: boolean[],
    right: boolean[],
    overrides?: CallOverrides
  ): Promise<void>;

  "assertEq(int256[],int256[])"(
    left: BigNumberish[],
    right: BigNumberish[],
    overrides?: CallOverrides
  ): Promise<void>;

  "assertEq(int256,int256,string)"(
    left: BigNumberish,
    right: BigNumberish,
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertEq(bytes32,bytes32)"(
    left: BytesLike,
    right: BytesLike,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertEq(uint256,uint256,string)"(
    left: BigNumberish,
    right: BigNumberish,
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertEq(uint256[],uint256[])"(
    left: BigNumberish[],
    right: BigNumberish[],
    overrides?: CallOverrides
  ): Promise<void>;

  "assertEq(bytes,bytes)"(
    left: BytesLike,
    right: BytesLike,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertEq(uint256,uint256)"(
    left: BigNumberish,
    right: BigNumberish,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertEq(bytes32,bytes32,string)"(
    left: BytesLike,
    right: BytesLike,
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertEq(string[],string[])"(
    left: string[],
    right: string[],
    overrides?: CallOverrides
  ): Promise<void>;

  "assertEq(bytes32[],bytes32[],string)"(
    left: BytesLike[],
    right: BytesLike[],
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertEq(bytes,bytes,string)"(
    left: BytesLike,
    right: BytesLike,
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertEq(bool[],bool[],string)"(
    left: boolean[],
    right: boolean[],
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertEq(bytes[],bytes[])"(
    left: BytesLike[],
    right: BytesLike[],
    overrides?: CallOverrides
  ): Promise<void>;

  "assertEq(string[],string[],string)"(
    left: string[],
    right: string[],
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertEq(string,string)"(
    left: string,
    right: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertEq(bytes[],bytes[],string)"(
    left: BytesLike[],
    right: BytesLike[],
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertEq(bool,bool)"(
    left: boolean,
    right: boolean,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertEq(int256,int256)"(
    left: BigNumberish,
    right: BigNumberish,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertEqDecimal(uint256,uint256,uint256)"(
    left: BigNumberish,
    right: BigNumberish,
    decimals: BigNumberish,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertEqDecimal(int256,int256,uint256)"(
    left: BigNumberish,
    right: BigNumberish,
    decimals: BigNumberish,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertEqDecimal(int256,int256,uint256,string)"(
    left: BigNumberish,
    right: BigNumberish,
    decimals: BigNumberish,
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertEqDecimal(uint256,uint256,uint256,string)"(
    left: BigNumberish,
    right: BigNumberish,
    decimals: BigNumberish,
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertFalse(bool,string)"(
    condition: boolean,
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertFalse(bool)"(
    condition: boolean,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertGe(int256,int256)"(
    left: BigNumberish,
    right: BigNumberish,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertGe(int256,int256,string)"(
    left: BigNumberish,
    right: BigNumberish,
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertGe(uint256,uint256)"(
    left: BigNumberish,
    right: BigNumberish,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertGe(uint256,uint256,string)"(
    left: BigNumberish,
    right: BigNumberish,
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertGeDecimal(uint256,uint256,uint256)"(
    left: BigNumberish,
    right: BigNumberish,
    decimals: BigNumberish,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertGeDecimal(int256,int256,uint256,string)"(
    left: BigNumberish,
    right: BigNumberish,
    decimals: BigNumberish,
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertGeDecimal(uint256,uint256,uint256,string)"(
    left: BigNumberish,
    right: BigNumberish,
    decimals: BigNumberish,
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertGeDecimal(int256,int256,uint256)"(
    left: BigNumberish,
    right: BigNumberish,
    decimals: BigNumberish,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertGt(int256,int256)"(
    left: BigNumberish,
    right: BigNumberish,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertGt(uint256,uint256,string)"(
    left: BigNumberish,
    right: BigNumberish,
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertGt(uint256,uint256)"(
    left: BigNumberish,
    right: BigNumberish,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertGt(int256,int256,string)"(
    left: BigNumberish,
    right: BigNumberish,
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertGtDecimal(int256,int256,uint256,string)"(
    left: BigNumberish,
    right: BigNumberish,
    decimals: BigNumberish,
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertGtDecimal(uint256,uint256,uint256,string)"(
    left: BigNumberish,
    right: BigNumberish,
    decimals: BigNumberish,
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertGtDecimal(int256,int256,uint256)"(
    left: BigNumberish,
    right: BigNumberish,
    decimals: BigNumberish,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertGtDecimal(uint256,uint256,uint256)"(
    left: BigNumberish,
    right: BigNumberish,
    decimals: BigNumberish,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertLe(int256,int256,string)"(
    left: BigNumberish,
    right: BigNumberish,
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertLe(uint256,uint256)"(
    left: BigNumberish,
    right: BigNumberish,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertLe(int256,int256)"(
    left: BigNumberish,
    right: BigNumberish,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertLe(uint256,uint256,string)"(
    left: BigNumberish,
    right: BigNumberish,
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertLeDecimal(int256,int256,uint256)"(
    left: BigNumberish,
    right: BigNumberish,
    decimals: BigNumberish,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertLeDecimal(uint256,uint256,uint256,string)"(
    left: BigNumberish,
    right: BigNumberish,
    decimals: BigNumberish,
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertLeDecimal(int256,int256,uint256,string)"(
    left: BigNumberish,
    right: BigNumberish,
    decimals: BigNumberish,
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertLeDecimal(uint256,uint256,uint256)"(
    left: BigNumberish,
    right: BigNumberish,
    decimals: BigNumberish,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertLt(int256,int256)"(
    left: BigNumberish,
    right: BigNumberish,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertLt(uint256,uint256,string)"(
    left: BigNumberish,
    right: BigNumberish,
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertLt(int256,int256,string)"(
    left: BigNumberish,
    right: BigNumberish,
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertLt(uint256,uint256)"(
    left: BigNumberish,
    right: BigNumberish,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertLtDecimal(uint256,uint256,uint256)"(
    left: BigNumberish,
    right: BigNumberish,
    decimals: BigNumberish,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertLtDecimal(int256,int256,uint256,string)"(
    left: BigNumberish,
    right: BigNumberish,
    decimals: BigNumberish,
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertLtDecimal(uint256,uint256,uint256,string)"(
    left: BigNumberish,
    right: BigNumberish,
    decimals: BigNumberish,
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertLtDecimal(int256,int256,uint256)"(
    left: BigNumberish,
    right: BigNumberish,
    decimals: BigNumberish,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertNotEq(bytes32[],bytes32[])"(
    left: BytesLike[],
    right: BytesLike[],
    overrides?: CallOverrides
  ): Promise<void>;

  "assertNotEq(int256[],int256[])"(
    left: BigNumberish[],
    right: BigNumberish[],
    overrides?: CallOverrides
  ): Promise<void>;

  "assertNotEq(bool,bool,string)"(
    left: boolean,
    right: boolean,
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertNotEq(bytes[],bytes[],string)"(
    left: BytesLike[],
    right: BytesLike[],
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertNotEq(bool,bool)"(
    left: boolean,
    right: boolean,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertNotEq(bool[],bool[])"(
    left: boolean[],
    right: boolean[],
    overrides?: CallOverrides
  ): Promise<void>;

  "assertNotEq(bytes,bytes)"(
    left: BytesLike,
    right: BytesLike,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertNotEq(address[],address[])"(
    left: string[],
    right: string[],
    overrides?: CallOverrides
  ): Promise<void>;

  "assertNotEq(int256,int256,string)"(
    left: BigNumberish,
    right: BigNumberish,
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertNotEq(uint256[],uint256[])"(
    left: BigNumberish[],
    right: BigNumberish[],
    overrides?: CallOverrides
  ): Promise<void>;

  "assertNotEq(bool[],bool[],string)"(
    left: boolean[],
    right: boolean[],
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertNotEq(string,string)"(
    left: string,
    right: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertNotEq(address[],address[],string)"(
    left: string[],
    right: string[],
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertNotEq(string,string,string)"(
    left: string,
    right: string,
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertNotEq(address,address,string)"(
    left: string,
    right: string,
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertNotEq(bytes32,bytes32)"(
    left: BytesLike,
    right: BytesLike,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertNotEq(bytes,bytes,string)"(
    left: BytesLike,
    right: BytesLike,
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertNotEq(uint256,uint256,string)"(
    left: BigNumberish,
    right: BigNumberish,
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertNotEq(uint256[],uint256[],string)"(
    left: BigNumberish[],
    right: BigNumberish[],
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertNotEq(address,address)"(
    left: string,
    right: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertNotEq(bytes32,bytes32,string)"(
    left: BytesLike,
    right: BytesLike,
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertNotEq(string[],string[],string)"(
    left: string[],
    right: string[],
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertNotEq(uint256,uint256)"(
    left: BigNumberish,
    right: BigNumberish,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertNotEq(bytes32[],bytes32[],string)"(
    left: BytesLike[],
    right: BytesLike[],
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertNotEq(string[],string[])"(
    left: string[],
    right: string[],
    overrides?: CallOverrides
  ): Promise<void>;

  "assertNotEq(int256[],int256[],string)"(
    left: BigNumberish[],
    right: BigNumberish[],
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertNotEq(bytes[],bytes[])"(
    left: BytesLike[],
    right: BytesLike[],
    overrides?: CallOverrides
  ): Promise<void>;

  "assertNotEq(int256,int256)"(
    left: BigNumberish,
    right: BigNumberish,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertNotEqDecimal(int256,int256,uint256)"(
    left: BigNumberish,
    right: BigNumberish,
    decimals: BigNumberish,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertNotEqDecimal(int256,int256,uint256,string)"(
    left: BigNumberish,
    right: BigNumberish,
    decimals: BigNumberish,
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertNotEqDecimal(uint256,uint256,uint256)"(
    left: BigNumberish,
    right: BigNumberish,
    decimals: BigNumberish,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertNotEqDecimal(uint256,uint256,uint256,string)"(
    left: BigNumberish,
    right: BigNumberish,
    decimals: BigNumberish,
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertTrue(bool)"(
    condition: boolean,
    overrides?: CallOverrides
  ): Promise<void>;

  "assertTrue(bool,string)"(
    condition: boolean,
    error: string,
    overrides?: CallOverrides
  ): Promise<void>;

  assume(condition: boolean, overrides?: CallOverrides): Promise<void>;

  "assumeNoRevert()"(overrides?: CallOverrides): Promise<void>;

  "assumeNoRevert((address,bool,bytes)[])"(
    potentialReverts: VmSafe.PotentialRevertStruct[],
    overrides?: CallOverrides
  ): Promise<void>;

  "assumeNoRevert((address,bool,bytes))"(
    potentialRevert: VmSafe.PotentialRevertStruct,
    overrides?: CallOverrides
  ): Promise<void>;

  attachDelegation(
    signedDelegation: VmSafe.SignedDelegationStruct,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  "breakpoint(string)"(char: string, overrides?: CallOverrides): Promise<void>;

  "breakpoint(string,bool)"(
    char: string,
    value: boolean,
    overrides?: CallOverrides
  ): Promise<void>;

  "broadcast()"(
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  "broadcast(address)"(
    signer: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  "broadcast(uint256)"(
    privateKey: BigNumberish,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  broadcastRawTransaction(
    data: BytesLike,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  closeFile(
    path: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  "computeCreate2Address(bytes32,bytes32)"(
    salt: BytesLike,
    initCodeHash: BytesLike,
    overrides?: CallOverrides
  ): Promise<string>;

  "computeCreate2Address(bytes32,bytes32,address)"(
    salt: BytesLike,
    initCodeHash: BytesLike,
    deployer: string,
    overrides?: CallOverrides
  ): Promise<string>;

  computeCreateAddress(
    deployer: string,
    nonce: BigNumberish,
    overrides?: CallOverrides
  ): Promise<string>;

  contains(
    subject: string,
    search: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  copyFile(
    from: string,
    to: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  copyStorage(
    from: string,
    to: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  createDir(
    path: string,
    recursive: boolean,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  "createWallet(string)"(
    walletLabel: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  "createWallet(uint256)"(
    privateKey: BigNumberish,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  "createWallet(uint256,string)"(
    privateKey: BigNumberish,
    walletLabel: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  "deployCode(string,bytes)"(
    artifactPath: string,
    constructorArgs: BytesLike,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  "deployCode(string)"(
    artifactPath: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  "deriveKey(string,string,uint32,string)"(
    mnemonic: string,
    derivationPath: string,
    index: BigNumberish,
    language: string,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  "deriveKey(string,uint32,string)"(
    mnemonic: string,
    index: BigNumberish,
    language: string,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  "deriveKey(string,uint32)"(
    mnemonic: string,
    index: BigNumberish,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  "deriveKey(string,string,uint32)"(
    mnemonic: string,
    derivationPath: string,
    index: BigNumberish,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  ensNamehash(name: string, overrides?: CallOverrides): Promise<string>;

  "envAddress(string)"(
    name: string,
    overrides?: CallOverrides
  ): Promise<string>;

  "envAddress(string,string)"(
    name: string,
    delim: string,
    overrides?: CallOverrides
  ): Promise<string[]>;

  "envBool(string)"(name: string, overrides?: CallOverrides): Promise<boolean>;

  "envBool(string,string)"(
    name: string,
    delim: string,
    overrides?: CallOverrides
  ): Promise<boolean[]>;

  "envBytes(string)"(name: string, overrides?: CallOverrides): Promise<string>;

  "envBytes(string,string)"(
    name: string,
    delim: string,
    overrides?: CallOverrides
  ): Promise<string[]>;

  "envBytes32(string,string)"(
    name: string,
    delim: string,
    overrides?: CallOverrides
  ): Promise<string[]>;

  "envBytes32(string)"(
    name: string,
    overrides?: CallOverrides
  ): Promise<string>;

  envExists(name: string, overrides?: CallOverrides): Promise<boolean>;

  "envInt(string,string)"(
    name: string,
    delim: string,
    overrides?: CallOverrides
  ): Promise<BigNumber[]>;

  "envInt(string)"(name: string, overrides?: CallOverrides): Promise<BigNumber>;

  "envOr(string,string,bytes32[])"(
    name: string,
    delim: string,
    defaultValue: BytesLike[],
    overrides?: CallOverrides
  ): Promise<string[]>;

  "envOr(string,string,int256[])"(
    name: string,
    delim: string,
    defaultValue: BigNumberish[],
    overrides?: CallOverrides
  ): Promise<BigNumber[]>;

  "envOr(string,bool)"(
    name: string,
    defaultValue: boolean,
    overrides?: CallOverrides
  ): Promise<boolean>;

  "envOr(string,address)"(
    name: string,
    defaultValue: string,
    overrides?: CallOverrides
  ): Promise<string>;

  "envOr(string,uint256)"(
    name: string,
    defaultValue: BigNumberish,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  "envOr(string,string,bytes[])"(
    name: string,
    delim: string,
    defaultValue: BytesLike[],
    overrides?: CallOverrides
  ): Promise<string[]>;

  "envOr(string,string,uint256[])"(
    name: string,
    delim: string,
    defaultValue: BigNumberish[],
    overrides?: CallOverrides
  ): Promise<BigNumber[]>;

  "envOr(string,string,string[])"(
    name: string,
    delim: string,
    defaultValue: string[],
    overrides?: CallOverrides
  ): Promise<string[]>;

  "envOr(string,bytes)"(
    name: string,
    defaultValue: BytesLike,
    overrides?: CallOverrides
  ): Promise<string>;

  "envOr(string,bytes32)"(
    name: string,
    defaultValue: BytesLike,
    overrides?: CallOverrides
  ): Promise<string>;

  "envOr(string,int256)"(
    name: string,
    defaultValue: BigNumberish,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  "envOr(string,string,address[])"(
    name: string,
    delim: string,
    defaultValue: string[],
    overrides?: CallOverrides
  ): Promise<string[]>;

  "envOr(string,string)"(
    name: string,
    defaultValue: string,
    overrides?: CallOverrides
  ): Promise<string>;

  "envOr(string,string,bool[])"(
    name: string,
    delim: string,
    defaultValue: boolean[],
    overrides?: CallOverrides
  ): Promise<boolean[]>;

  "envString(string,string)"(
    name: string,
    delim: string,
    overrides?: CallOverrides
  ): Promise<string[]>;

  "envString(string)"(name: string, overrides?: CallOverrides): Promise<string>;

  "envUint(string)"(
    name: string,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  "envUint(string,string)"(
    name: string,
    delim: string,
    overrides?: CallOverrides
  ): Promise<BigNumber[]>;

  eth_getLogs(
    fromBlock: BigNumberish,
    toBlock: BigNumberish,
    target: string,
    topics: BytesLike[],
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  exists(path: string, overrides?: CallOverrides): Promise<boolean>;

  ffi(
    commandInput: string[],
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  foundryVersionAtLeast(
    version: string,
    overrides?: CallOverrides
  ): Promise<boolean>;

  foundryVersionCmp(
    version: string,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  fsMetadata(
    path: string,
    overrides?: CallOverrides
  ): Promise<VmSafe.FsMetadataStructOutput>;

  getArtifactPathByCode(
    code: BytesLike,
    overrides?: CallOverrides
  ): Promise<string>;

  getArtifactPathByDeployedCode(
    deployedCode: BytesLike,
    overrides?: CallOverrides
  ): Promise<string>;

  getBlobBaseFee(overrides?: CallOverrides): Promise<BigNumber>;

  getBlockNumber(overrides?: CallOverrides): Promise<BigNumber>;

  getBlockTimestamp(overrides?: CallOverrides): Promise<BigNumber>;

  getBroadcast(
    contractName: string,
    chainId: BigNumberish,
    txType: BigNumberish,
    overrides?: CallOverrides
  ): Promise<VmSafe.BroadcastTxSummaryStructOutput>;

  "getBroadcasts(string,uint64)"(
    contractName: string,
    chainId: BigNumberish,
    overrides?: CallOverrides
  ): Promise<VmSafe.BroadcastTxSummaryStructOutput[]>;

  "getBroadcasts(string,uint64,uint8)"(
    contractName: string,
    chainId: BigNumberish,
    txType: BigNumberish,
    overrides?: CallOverrides
  ): Promise<VmSafe.BroadcastTxSummaryStructOutput[]>;

  getCode(artifactPath: string, overrides?: CallOverrides): Promise<string>;

  getDeployedCode(
    artifactPath: string,
    overrides?: CallOverrides
  ): Promise<string>;

  "getDeployment(string,uint64)"(
    contractName: string,
    chainId: BigNumberish,
    overrides?: CallOverrides
  ): Promise<string>;

  "getDeployment(string)"(
    contractName: string,
    overrides?: CallOverrides
  ): Promise<string>;

  getDeployments(
    contractName: string,
    chainId: BigNumberish,
    overrides?: CallOverrides
  ): Promise<string[]>;

  getFoundryVersion(overrides?: CallOverrides): Promise<string>;

  getLabel(account: string, overrides?: CallOverrides): Promise<string>;

  getMappingKeyAndParentOf(
    target: string,
    elementSlot: BytesLike,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  getMappingLength(
    target: string,
    mappingSlot: BytesLike,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  getMappingSlotAt(
    target: string,
    mappingSlot: BytesLike,
    idx: BigNumberish,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  "getNonce(address)"(
    account: string,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  "getNonce((address,uint256,uint256,uint256))"(
    wallet: VmSafe.WalletStruct,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  getRecordedLogs(
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  getStateDiff(overrides?: CallOverrides): Promise<string>;

  getStateDiffJson(overrides?: CallOverrides): Promise<string>;

  getWallets(
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  indexOf(
    input: string,
    key: string,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  isContext(context: BigNumberish, overrides?: CallOverrides): Promise<boolean>;

  isDir(path: string, overrides?: CallOverrides): Promise<boolean>;

  isFile(path: string, overrides?: CallOverrides): Promise<boolean>;

  keyExists(
    json: string,
    key: string,
    overrides?: CallOverrides
  ): Promise<boolean>;

  keyExistsJson(
    json: string,
    key: string,
    overrides?: CallOverrides
  ): Promise<boolean>;

  keyExistsToml(
    toml: string,
    key: string,
    overrides?: CallOverrides
  ): Promise<boolean>;

  label(
    account: string,
    newLabel: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  lastCallGas(overrides?: CallOverrides): Promise<VmSafe.GasStructOutput>;

  load(
    target: string,
    slot: BytesLike,
    overrides?: CallOverrides
  ): Promise<string>;

  parseAddress(
    stringifiedValue: string,
    overrides?: CallOverrides
  ): Promise<string>;

  parseBool(
    stringifiedValue: string,
    overrides?: CallOverrides
  ): Promise<boolean>;

  parseBytes(
    stringifiedValue: string,
    overrides?: CallOverrides
  ): Promise<string>;

  parseBytes32(
    stringifiedValue: string,
    overrides?: CallOverrides
  ): Promise<string>;

  parseInt(
    stringifiedValue: string,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  "parseJson(string)"(json: string, overrides?: CallOverrides): Promise<string>;

  "parseJson(string,string)"(
    json: string,
    key: string,
    overrides?: CallOverrides
  ): Promise<string>;

  parseJsonAddress(
    json: string,
    key: string,
    overrides?: CallOverrides
  ): Promise<string>;

  parseJsonAddressArray(
    json: string,
    key: string,
    overrides?: CallOverrides
  ): Promise<string[]>;

  parseJsonBool(
    json: string,
    key: string,
    overrides?: CallOverrides
  ): Promise<boolean>;

  parseJsonBoolArray(
    json: string,
    key: string,
    overrides?: CallOverrides
  ): Promise<boolean[]>;

  parseJsonBytes(
    json: string,
    key: string,
    overrides?: CallOverrides
  ): Promise<string>;

  parseJsonBytes32(
    json: string,
    key: string,
    overrides?: CallOverrides
  ): Promise<string>;

  parseJsonBytes32Array(
    json: string,
    key: string,
    overrides?: CallOverrides
  ): Promise<string[]>;

  parseJsonBytesArray(
    json: string,
    key: string,
    overrides?: CallOverrides
  ): Promise<string[]>;

  parseJsonInt(
    json: string,
    key: string,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  parseJsonIntArray(
    json: string,
    key: string,
    overrides?: CallOverrides
  ): Promise<BigNumber[]>;

  parseJsonKeys(
    json: string,
    key: string,
    overrides?: CallOverrides
  ): Promise<string[]>;

  parseJsonString(
    json: string,
    key: string,
    overrides?: CallOverrides
  ): Promise<string>;

  parseJsonStringArray(
    json: string,
    key: string,
    overrides?: CallOverrides
  ): Promise<string[]>;

  "parseJsonType(string,string)"(
    json: string,
    typeDescription: string,
    overrides?: CallOverrides
  ): Promise<string>;

  "parseJsonType(string,string,string)"(
    json: string,
    key: string,
    typeDescription: string,
    overrides?: CallOverrides
  ): Promise<string>;

  parseJsonTypeArray(
    json: string,
    key: string,
    typeDescription: string,
    overrides?: CallOverrides
  ): Promise<string>;

  parseJsonUint(
    json: string,
    key: string,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  parseJsonUintArray(
    json: string,
    key: string,
    overrides?: CallOverrides
  ): Promise<BigNumber[]>;

  "parseToml(string,string)"(
    toml: string,
    key: string,
    overrides?: CallOverrides
  ): Promise<string>;

  "parseToml(string)"(toml: string, overrides?: CallOverrides): Promise<string>;

  parseTomlAddress(
    toml: string,
    key: string,
    overrides?: CallOverrides
  ): Promise<string>;

  parseTomlAddressArray(
    toml: string,
    key: string,
    overrides?: CallOverrides
  ): Promise<string[]>;

  parseTomlBool(
    toml: string,
    key: string,
    overrides?: CallOverrides
  ): Promise<boolean>;

  parseTomlBoolArray(
    toml: string,
    key: string,
    overrides?: CallOverrides
  ): Promise<boolean[]>;

  parseTomlBytes(
    toml: string,
    key: string,
    overrides?: CallOverrides
  ): Promise<string>;

  parseTomlBytes32(
    toml: string,
    key: string,
    overrides?: CallOverrides
  ): Promise<string>;

  parseTomlBytes32Array(
    toml: string,
    key: string,
    overrides?: CallOverrides
  ): Promise<string[]>;

  parseTomlBytesArray(
    toml: string,
    key: string,
    overrides?: CallOverrides
  ): Promise<string[]>;

  parseTomlInt(
    toml: string,
    key: string,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  parseTomlIntArray(
    toml: string,
    key: string,
    overrides?: CallOverrides
  ): Promise<BigNumber[]>;

  parseTomlKeys(
    toml: string,
    key: string,
    overrides?: CallOverrides
  ): Promise<string[]>;

  parseTomlString(
    toml: string,
    key: string,
    overrides?: CallOverrides
  ): Promise<string>;

  parseTomlStringArray(
    toml: string,
    key: string,
    overrides?: CallOverrides
  ): Promise<string[]>;

  "parseTomlType(string,string)"(
    toml: string,
    typeDescription: string,
    overrides?: CallOverrides
  ): Promise<string>;

  "parseTomlType(string,string,string)"(
    toml: string,
    key: string,
    typeDescription: string,
    overrides?: CallOverrides
  ): Promise<string>;

  parseTomlTypeArray(
    toml: string,
    key: string,
    typeDescription: string,
    overrides?: CallOverrides
  ): Promise<string>;

  parseTomlUint(
    toml: string,
    key: string,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  parseTomlUintArray(
    toml: string,
    key: string,
    overrides?: CallOverrides
  ): Promise<BigNumber[]>;

  parseUint(
    stringifiedValue: string,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  pauseGasMetering(
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  pauseTracing(overrides?: CallOverrides): Promise<void>;

  projectRoot(overrides?: CallOverrides): Promise<string>;

  prompt(
    promptText: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  promptAddress(
    promptText: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  promptSecret(
    promptText: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  promptSecretUint(
    promptText: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  promptUint(
    promptText: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  publicKeyP256(
    privateKey: BigNumberish,
    overrides?: CallOverrides
  ): Promise<
    [BigNumber, BigNumber] & { publicKeyX: BigNumber; publicKeyY: BigNumber }
  >;

  randomAddress(
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  randomBool(overrides?: CallOverrides): Promise<boolean>;

  randomBytes(len: BigNumberish, overrides?: CallOverrides): Promise<string>;

  randomBytes4(overrides?: CallOverrides): Promise<string>;

  randomBytes8(overrides?: CallOverrides): Promise<string>;

  "randomInt()"(overrides?: CallOverrides): Promise<BigNumber>;

  "randomInt(uint256)"(
    bits: BigNumberish,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  "randomUint()"(
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  "randomUint(uint256)"(
    bits: BigNumberish,
    overrides?: CallOverrides
  ): Promise<BigNumber>;

  "randomUint(uint256,uint256)"(
    min: BigNumberish,
    max: BigNumberish,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  "readDir(string,uint64)"(
    path: string,
    maxDepth: BigNumberish,
    overrides?: CallOverrides
  ): Promise<VmSafe.DirEntryStructOutput[]>;

  "readDir(string,uint64,bool)"(
    path: string,
    maxDepth: BigNumberish,
    followLinks: boolean,
    overrides?: CallOverrides
  ): Promise<VmSafe.DirEntryStructOutput[]>;

  "readDir(string)"(
    path: string,
    overrides?: CallOverrides
  ): Promise<VmSafe.DirEntryStructOutput[]>;

  readFile(path: string, overrides?: CallOverrides): Promise<string>;

  readFileBinary(path: string, overrides?: CallOverrides): Promise<string>;

  readLine(path: string, overrides?: CallOverrides): Promise<string>;

  readLink(linkPath: string, overrides?: CallOverrides): Promise<string>;

  record(
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  recordLogs(
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  rememberKey(
    privateKey: BigNumberish,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  "rememberKeys(string,string,uint32)"(
    mnemonic: string,
    derivationPath: string,
    count: BigNumberish,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  "rememberKeys(string,string,string,uint32)"(
    mnemonic: string,
    derivationPath: string,
    language: string,
    count: BigNumberish,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  removeDir(
    path: string,
    recursive: boolean,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  removeFile(
    path: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  replace(
    input: string,
    from: string,
    to: string,
    overrides?: CallOverrides
  ): Promise<string>;

  resetGasMetering(
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  resumeGasMetering(
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  resumeTracing(overrides?: CallOverrides): Promise<void>;

  "rpc(string,string,string)"(
    urlOrAlias: string,
    method: string,
    params: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  "rpc(string,string)"(
    method: string,
    params: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  rpcUrl(rpcAlias: string, overrides?: CallOverrides): Promise<string>;

  rpcUrlStructs(overrides?: CallOverrides): Promise<VmSafe.RpcStructOutput[]>;

  rpcUrls(overrides?: CallOverrides): Promise<[string, string][]>;

  "serializeAddress(string,string,address[])"(
    objectKey: string,
    valueKey: string,
    values: string[],
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  "serializeAddress(string,string,address)"(
    objectKey: string,
    valueKey: string,
    value: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  "serializeBool(string,string,bool[])"(
    objectKey: string,
    valueKey: string,
    values: boolean[],
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  "serializeBool(string,string,bool)"(
    objectKey: string,
    valueKey: string,
    value: boolean,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  "serializeBytes(string,string,bytes[])"(
    objectKey: string,
    valueKey: string,
    values: BytesLike[],
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  "serializeBytes(string,string,bytes)"(
    objectKey: string,
    valueKey: string,
    value: BytesLike,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  "serializeBytes32(string,string,bytes32[])"(
    objectKey: string,
    valueKey: string,
    values: BytesLike[],
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  "serializeBytes32(string,string,bytes32)"(
    objectKey: string,
    valueKey: string,
    value: BytesLike,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  "serializeInt(string,string,int256)"(
    objectKey: string,
    valueKey: string,
    value: BigNumberish,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  "serializeInt(string,string,int256[])"(
    objectKey: string,
    valueKey: string,
    values: BigNumberish[],
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  serializeJson(
    objectKey: string,
    value: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  "serializeJsonType(string,bytes)"(
    typeDescription: string,
    value: BytesLike,
    overrides?: CallOverrides
  ): Promise<string>;

  "serializeJsonType(string,string,string,bytes)"(
    objectKey: string,
    valueKey: string,
    typeDescription: string,
    value: BytesLike,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  "serializeString(string,string,string[])"(
    objectKey: string,
    valueKey: string,
    values: string[],
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  "serializeString(string,string,string)"(
    objectKey: string,
    valueKey: string,
    value: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  "serializeUint(string,string,uint256)"(
    objectKey: string,
    valueKey: string,
    value: BigNumberish,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  "serializeUint(string,string,uint256[])"(
    objectKey: string,
    valueKey: string,
    values: BigNumberish[],
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  serializeUintToHex(
    objectKey: string,
    valueKey: string,
    value: BigNumberish,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  setArbitraryStorage(
    target: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  setEnv(
    name: string,
    value: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  "sign(bytes32)"(
    digest: BytesLike,
    overrides?: CallOverrides
  ): Promise<[number, string, string] & { v: number; r: string; s: string }>;

  "sign(address,bytes32)"(
    signer: string,
    digest: BytesLike,
    overrides?: CallOverrides
  ): Promise<[number, string, string] & { v: number; r: string; s: string }>;

  "sign((address,uint256,uint256,uint256),bytes32)"(
    wallet: VmSafe.WalletStruct,
    digest: BytesLike,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  "sign(uint256,bytes32)"(
    privateKey: BigNumberish,
    digest: BytesLike,
    overrides?: CallOverrides
  ): Promise<[number, string, string] & { v: number; r: string; s: string }>;

  signAndAttachDelegation(
    implementation: string,
    privateKey: BigNumberish,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  "signCompact((address,uint256,uint256,uint256),bytes32)"(
    wallet: VmSafe.WalletStruct,
    digest: BytesLike,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  "signCompact(address,bytes32)"(
    signer: string,
    digest: BytesLike,
    overrides?: CallOverrides
  ): Promise<[string, string] & { r: string; vs: string }>;

  "signCompact(bytes32)"(
    digest: BytesLike,
    overrides?: CallOverrides
  ): Promise<[string, string] & { r: string; vs: string }>;

  "signCompact(uint256,bytes32)"(
    privateKey: BigNumberish,
    digest: BytesLike,
    overrides?: CallOverrides
  ): Promise<[string, string] & { r: string; vs: string }>;

  signDelegation(
    implementation: string,
    privateKey: BigNumberish,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  signP256(
    privateKey: BigNumberish,
    digest: BytesLike,
    overrides?: CallOverrides
  ): Promise<[string, string] & { r: string; s: string }>;

  sleep(
    duration: BigNumberish,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  split(
    input: string,
    delimiter: string,
    overrides?: CallOverrides
  ): Promise<string[]>;

  "startBroadcast()"(
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  "startBroadcast(address)"(
    signer: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  "startBroadcast(uint256)"(
    privateKey: BigNumberish,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  startDebugTraceRecording(
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  startMappingRecording(
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  startStateDiffRecording(
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  stopAndReturnDebugTraceRecording(
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  stopAndReturnStateDiff(
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  stopBroadcast(
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  stopMappingRecording(
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  "toBase64(string)"(data: string, overrides?: CallOverrides): Promise<string>;

  "toBase64(bytes)"(
    data: BytesLike,
    overrides?: CallOverrides
  ): Promise<string>;

  "toBase64URL(string)"(
    data: string,
    overrides?: CallOverrides
  ): Promise<string>;

  "toBase64URL(bytes)"(
    data: BytesLike,
    overrides?: CallOverrides
  ): Promise<string>;

  toLowercase(input: string, overrides?: CallOverrides): Promise<string>;

  "toString(address)"(
    value: string,
    overrides?: CallOverrides
  ): Promise<string>;

  "toString(uint256)"(
    value: BigNumberish,
    overrides?: CallOverrides
  ): Promise<string>;

  "toString(bytes)"(
    value: BytesLike,
    overrides?: CallOverrides
  ): Promise<string>;

  "toString(bool)"(value: boolean, overrides?: CallOverrides): Promise<string>;

  "toString(int256)"(
    value: BigNumberish,
    overrides?: CallOverrides
  ): Promise<string>;

  "toString(bytes32)"(
    value: BytesLike,
    overrides?: CallOverrides
  ): Promise<string>;

  toUppercase(input: string, overrides?: CallOverrides): Promise<string>;

  trim(input: string, overrides?: CallOverrides): Promise<string>;

  tryFfi(
    commandInput: string[],
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  unixTime(overrides?: CallOverrides): Promise<BigNumber>;

  writeFile(
    path: string,
    data: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  writeFileBinary(
    path: string,
    data: BytesLike,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  "writeJson(string,string,string)"(
    json: string,
    path: string,
    valueKey: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  "writeJson(string,string)"(
    json: string,
    path: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  writeLine(
    path: string,
    data: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  "writeToml(string,string,string)"(
    json: string,
    path: string,
    valueKey: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  "writeToml(string,string)"(
    json: string,
    path: string,
    overrides?: Overrides & { from?: string }
  ): Promise<ContractTransaction>;

  callStatic: {
    accesses(
      target: string,
      overrides?: CallOverrides
    ): Promise<
      [string[], string[]] & { readSlots: string[]; writeSlots: string[] }
    >;

    addr(privateKey: BigNumberish, overrides?: CallOverrides): Promise<string>;

    "assertApproxEqAbs(uint256,uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      maxDelta: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertApproxEqAbs(int256,int256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      maxDelta: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertApproxEqAbs(int256,int256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      maxDelta: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertApproxEqAbs(uint256,uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      maxDelta: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      maxDelta: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertApproxEqAbsDecimal(int256,int256,uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      maxDelta: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      maxDelta: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      maxDelta: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertApproxEqRel(uint256,uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      maxPercentDelta: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertApproxEqRel(uint256,uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      maxPercentDelta: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertApproxEqRel(int256,int256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      maxPercentDelta: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertApproxEqRel(int256,int256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      maxPercentDelta: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      maxPercentDelta: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      maxPercentDelta: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertApproxEqRelDecimal(int256,int256,uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      maxPercentDelta: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      maxPercentDelta: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertEq(bytes32[],bytes32[])"(
      left: BytesLike[],
      right: BytesLike[],
      overrides?: CallOverrides
    ): Promise<void>;

    "assertEq(int256[],int256[],string)"(
      left: BigNumberish[],
      right: BigNumberish[],
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertEq(address,address,string)"(
      left: string,
      right: string,
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertEq(string,string,string)"(
      left: string,
      right: string,
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertEq(address[],address[])"(
      left: string[],
      right: string[],
      overrides?: CallOverrides
    ): Promise<void>;

    "assertEq(address[],address[],string)"(
      left: string[],
      right: string[],
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertEq(bool,bool,string)"(
      left: boolean,
      right: boolean,
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertEq(address,address)"(
      left: string,
      right: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertEq(uint256[],uint256[],string)"(
      left: BigNumberish[],
      right: BigNumberish[],
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertEq(bool[],bool[])"(
      left: boolean[],
      right: boolean[],
      overrides?: CallOverrides
    ): Promise<void>;

    "assertEq(int256[],int256[])"(
      left: BigNumberish[],
      right: BigNumberish[],
      overrides?: CallOverrides
    ): Promise<void>;

    "assertEq(int256,int256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertEq(bytes32,bytes32)"(
      left: BytesLike,
      right: BytesLike,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertEq(uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertEq(uint256[],uint256[])"(
      left: BigNumberish[],
      right: BigNumberish[],
      overrides?: CallOverrides
    ): Promise<void>;

    "assertEq(bytes,bytes)"(
      left: BytesLike,
      right: BytesLike,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertEq(uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertEq(bytes32,bytes32,string)"(
      left: BytesLike,
      right: BytesLike,
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertEq(string[],string[])"(
      left: string[],
      right: string[],
      overrides?: CallOverrides
    ): Promise<void>;

    "assertEq(bytes32[],bytes32[],string)"(
      left: BytesLike[],
      right: BytesLike[],
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertEq(bytes,bytes,string)"(
      left: BytesLike,
      right: BytesLike,
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertEq(bool[],bool[],string)"(
      left: boolean[],
      right: boolean[],
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertEq(bytes[],bytes[])"(
      left: BytesLike[],
      right: BytesLike[],
      overrides?: CallOverrides
    ): Promise<void>;

    "assertEq(string[],string[],string)"(
      left: string[],
      right: string[],
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertEq(string,string)"(
      left: string,
      right: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertEq(bytes[],bytes[],string)"(
      left: BytesLike[],
      right: BytesLike[],
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertEq(bool,bool)"(
      left: boolean,
      right: boolean,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertEq(int256,int256)"(
      left: BigNumberish,
      right: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertEqDecimal(uint256,uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertEqDecimal(int256,int256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertEqDecimal(int256,int256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertEqDecimal(uint256,uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertFalse(bool,string)"(
      condition: boolean,
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertFalse(bool)"(
      condition: boolean,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertGe(int256,int256)"(
      left: BigNumberish,
      right: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertGe(int256,int256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertGe(uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertGe(uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertGeDecimal(uint256,uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertGeDecimal(int256,int256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertGeDecimal(uint256,uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertGeDecimal(int256,int256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertGt(int256,int256)"(
      left: BigNumberish,
      right: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertGt(uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertGt(uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertGt(int256,int256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertGtDecimal(int256,int256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertGtDecimal(uint256,uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertGtDecimal(int256,int256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertGtDecimal(uint256,uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertLe(int256,int256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertLe(uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertLe(int256,int256)"(
      left: BigNumberish,
      right: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertLe(uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertLeDecimal(int256,int256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertLeDecimal(uint256,uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertLeDecimal(int256,int256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertLeDecimal(uint256,uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertLt(int256,int256)"(
      left: BigNumberish,
      right: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertLt(uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertLt(int256,int256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertLt(uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertLtDecimal(uint256,uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertLtDecimal(int256,int256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertLtDecimal(uint256,uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertLtDecimal(int256,int256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertNotEq(bytes32[],bytes32[])"(
      left: BytesLike[],
      right: BytesLike[],
      overrides?: CallOverrides
    ): Promise<void>;

    "assertNotEq(int256[],int256[])"(
      left: BigNumberish[],
      right: BigNumberish[],
      overrides?: CallOverrides
    ): Promise<void>;

    "assertNotEq(bool,bool,string)"(
      left: boolean,
      right: boolean,
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertNotEq(bytes[],bytes[],string)"(
      left: BytesLike[],
      right: BytesLike[],
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertNotEq(bool,bool)"(
      left: boolean,
      right: boolean,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertNotEq(bool[],bool[])"(
      left: boolean[],
      right: boolean[],
      overrides?: CallOverrides
    ): Promise<void>;

    "assertNotEq(bytes,bytes)"(
      left: BytesLike,
      right: BytesLike,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertNotEq(address[],address[])"(
      left: string[],
      right: string[],
      overrides?: CallOverrides
    ): Promise<void>;

    "assertNotEq(int256,int256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertNotEq(uint256[],uint256[])"(
      left: BigNumberish[],
      right: BigNumberish[],
      overrides?: CallOverrides
    ): Promise<void>;

    "assertNotEq(bool[],bool[],string)"(
      left: boolean[],
      right: boolean[],
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertNotEq(string,string)"(
      left: string,
      right: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertNotEq(address[],address[],string)"(
      left: string[],
      right: string[],
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertNotEq(string,string,string)"(
      left: string,
      right: string,
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertNotEq(address,address,string)"(
      left: string,
      right: string,
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertNotEq(bytes32,bytes32)"(
      left: BytesLike,
      right: BytesLike,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertNotEq(bytes,bytes,string)"(
      left: BytesLike,
      right: BytesLike,
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertNotEq(uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertNotEq(uint256[],uint256[],string)"(
      left: BigNumberish[],
      right: BigNumberish[],
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertNotEq(address,address)"(
      left: string,
      right: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertNotEq(bytes32,bytes32,string)"(
      left: BytesLike,
      right: BytesLike,
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertNotEq(string[],string[],string)"(
      left: string[],
      right: string[],
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertNotEq(uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertNotEq(bytes32[],bytes32[],string)"(
      left: BytesLike[],
      right: BytesLike[],
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertNotEq(string[],string[])"(
      left: string[],
      right: string[],
      overrides?: CallOverrides
    ): Promise<void>;

    "assertNotEq(int256[],int256[],string)"(
      left: BigNumberish[],
      right: BigNumberish[],
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertNotEq(bytes[],bytes[])"(
      left: BytesLike[],
      right: BytesLike[],
      overrides?: CallOverrides
    ): Promise<void>;

    "assertNotEq(int256,int256)"(
      left: BigNumberish,
      right: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertNotEqDecimal(int256,int256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertNotEqDecimal(int256,int256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertNotEqDecimal(uint256,uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertNotEqDecimal(uint256,uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertTrue(bool)"(
      condition: boolean,
      overrides?: CallOverrides
    ): Promise<void>;

    "assertTrue(bool,string)"(
      condition: boolean,
      error: string,
      overrides?: CallOverrides
    ): Promise<void>;

    assume(condition: boolean, overrides?: CallOverrides): Promise<void>;

    "assumeNoRevert()"(overrides?: CallOverrides): Promise<void>;

    "assumeNoRevert((address,bool,bytes)[])"(
      potentialReverts: VmSafe.PotentialRevertStruct[],
      overrides?: CallOverrides
    ): Promise<void>;

    "assumeNoRevert((address,bool,bytes))"(
      potentialRevert: VmSafe.PotentialRevertStruct,
      overrides?: CallOverrides
    ): Promise<void>;

    attachDelegation(
      signedDelegation: VmSafe.SignedDelegationStruct,
      overrides?: CallOverrides
    ): Promise<void>;

    "breakpoint(string)"(
      char: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "breakpoint(string,bool)"(
      char: string,
      value: boolean,
      overrides?: CallOverrides
    ): Promise<void>;

    "broadcast()"(overrides?: CallOverrides): Promise<void>;

    "broadcast(address)"(
      signer: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "broadcast(uint256)"(
      privateKey: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    broadcastRawTransaction(
      data: BytesLike,
      overrides?: CallOverrides
    ): Promise<void>;

    closeFile(path: string, overrides?: CallOverrides): Promise<void>;

    "computeCreate2Address(bytes32,bytes32)"(
      salt: BytesLike,
      initCodeHash: BytesLike,
      overrides?: CallOverrides
    ): Promise<string>;

    "computeCreate2Address(bytes32,bytes32,address)"(
      salt: BytesLike,
      initCodeHash: BytesLike,
      deployer: string,
      overrides?: CallOverrides
    ): Promise<string>;

    computeCreateAddress(
      deployer: string,
      nonce: BigNumberish,
      overrides?: CallOverrides
    ): Promise<string>;

    contains(
      subject: string,
      search: string,
      overrides?: CallOverrides
    ): Promise<boolean>;

    copyFile(
      from: string,
      to: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    copyStorage(
      from: string,
      to: string,
      overrides?: CallOverrides
    ): Promise<void>;

    createDir(
      path: string,
      recursive: boolean,
      overrides?: CallOverrides
    ): Promise<void>;

    "createWallet(string)"(
      walletLabel: string,
      overrides?: CallOverrides
    ): Promise<VmSafe.WalletStructOutput>;

    "createWallet(uint256)"(
      privateKey: BigNumberish,
      overrides?: CallOverrides
    ): Promise<VmSafe.WalletStructOutput>;

    "createWallet(uint256,string)"(
      privateKey: BigNumberish,
      walletLabel: string,
      overrides?: CallOverrides
    ): Promise<VmSafe.WalletStructOutput>;

    "deployCode(string,bytes)"(
      artifactPath: string,
      constructorArgs: BytesLike,
      overrides?: CallOverrides
    ): Promise<string>;

    "deployCode(string)"(
      artifactPath: string,
      overrides?: CallOverrides
    ): Promise<string>;

    "deriveKey(string,string,uint32,string)"(
      mnemonic: string,
      derivationPath: string,
      index: BigNumberish,
      language: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "deriveKey(string,uint32,string)"(
      mnemonic: string,
      index: BigNumberish,
      language: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "deriveKey(string,uint32)"(
      mnemonic: string,
      index: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "deriveKey(string,string,uint32)"(
      mnemonic: string,
      derivationPath: string,
      index: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    ensNamehash(name: string, overrides?: CallOverrides): Promise<string>;

    "envAddress(string)"(
      name: string,
      overrides?: CallOverrides
    ): Promise<string>;

    "envAddress(string,string)"(
      name: string,
      delim: string,
      overrides?: CallOverrides
    ): Promise<string[]>;

    "envBool(string)"(
      name: string,
      overrides?: CallOverrides
    ): Promise<boolean>;

    "envBool(string,string)"(
      name: string,
      delim: string,
      overrides?: CallOverrides
    ): Promise<boolean[]>;

    "envBytes(string)"(
      name: string,
      overrides?: CallOverrides
    ): Promise<string>;

    "envBytes(string,string)"(
      name: string,
      delim: string,
      overrides?: CallOverrides
    ): Promise<string[]>;

    "envBytes32(string,string)"(
      name: string,
      delim: string,
      overrides?: CallOverrides
    ): Promise<string[]>;

    "envBytes32(string)"(
      name: string,
      overrides?: CallOverrides
    ): Promise<string>;

    envExists(name: string, overrides?: CallOverrides): Promise<boolean>;

    "envInt(string,string)"(
      name: string,
      delim: string,
      overrides?: CallOverrides
    ): Promise<BigNumber[]>;

    "envInt(string)"(
      name: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "envOr(string,string,bytes32[])"(
      name: string,
      delim: string,
      defaultValue: BytesLike[],
      overrides?: CallOverrides
    ): Promise<string[]>;

    "envOr(string,string,int256[])"(
      name: string,
      delim: string,
      defaultValue: BigNumberish[],
      overrides?: CallOverrides
    ): Promise<BigNumber[]>;

    "envOr(string,bool)"(
      name: string,
      defaultValue: boolean,
      overrides?: CallOverrides
    ): Promise<boolean>;

    "envOr(string,address)"(
      name: string,
      defaultValue: string,
      overrides?: CallOverrides
    ): Promise<string>;

    "envOr(string,uint256)"(
      name: string,
      defaultValue: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "envOr(string,string,bytes[])"(
      name: string,
      delim: string,
      defaultValue: BytesLike[],
      overrides?: CallOverrides
    ): Promise<string[]>;

    "envOr(string,string,uint256[])"(
      name: string,
      delim: string,
      defaultValue: BigNumberish[],
      overrides?: CallOverrides
    ): Promise<BigNumber[]>;

    "envOr(string,string,string[])"(
      name: string,
      delim: string,
      defaultValue: string[],
      overrides?: CallOverrides
    ): Promise<string[]>;

    "envOr(string,bytes)"(
      name: string,
      defaultValue: BytesLike,
      overrides?: CallOverrides
    ): Promise<string>;

    "envOr(string,bytes32)"(
      name: string,
      defaultValue: BytesLike,
      overrides?: CallOverrides
    ): Promise<string>;

    "envOr(string,int256)"(
      name: string,
      defaultValue: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "envOr(string,string,address[])"(
      name: string,
      delim: string,
      defaultValue: string[],
      overrides?: CallOverrides
    ): Promise<string[]>;

    "envOr(string,string)"(
      name: string,
      defaultValue: string,
      overrides?: CallOverrides
    ): Promise<string>;

    "envOr(string,string,bool[])"(
      name: string,
      delim: string,
      defaultValue: boolean[],
      overrides?: CallOverrides
    ): Promise<boolean[]>;

    "envString(string,string)"(
      name: string,
      delim: string,
      overrides?: CallOverrides
    ): Promise<string[]>;

    "envString(string)"(
      name: string,
      overrides?: CallOverrides
    ): Promise<string>;

    "envUint(string)"(
      name: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "envUint(string,string)"(
      name: string,
      delim: string,
      overrides?: CallOverrides
    ): Promise<BigNumber[]>;

    eth_getLogs(
      fromBlock: BigNumberish,
      toBlock: BigNumberish,
      target: string,
      topics: BytesLike[],
      overrides?: CallOverrides
    ): Promise<VmSafe.EthGetLogsStructOutput[]>;

    exists(path: string, overrides?: CallOverrides): Promise<boolean>;

    ffi(commandInput: string[], overrides?: CallOverrides): Promise<string>;

    foundryVersionAtLeast(
      version: string,
      overrides?: CallOverrides
    ): Promise<boolean>;

    foundryVersionCmp(
      version: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    fsMetadata(
      path: string,
      overrides?: CallOverrides
    ): Promise<VmSafe.FsMetadataStructOutput>;

    getArtifactPathByCode(
      code: BytesLike,
      overrides?: CallOverrides
    ): Promise<string>;

    getArtifactPathByDeployedCode(
      deployedCode: BytesLike,
      overrides?: CallOverrides
    ): Promise<string>;

    getBlobBaseFee(overrides?: CallOverrides): Promise<BigNumber>;

    getBlockNumber(overrides?: CallOverrides): Promise<BigNumber>;

    getBlockTimestamp(overrides?: CallOverrides): Promise<BigNumber>;

    getBroadcast(
      contractName: string,
      chainId: BigNumberish,
      txType: BigNumberish,
      overrides?: CallOverrides
    ): Promise<VmSafe.BroadcastTxSummaryStructOutput>;

    "getBroadcasts(string,uint64)"(
      contractName: string,
      chainId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<VmSafe.BroadcastTxSummaryStructOutput[]>;

    "getBroadcasts(string,uint64,uint8)"(
      contractName: string,
      chainId: BigNumberish,
      txType: BigNumberish,
      overrides?: CallOverrides
    ): Promise<VmSafe.BroadcastTxSummaryStructOutput[]>;

    getCode(artifactPath: string, overrides?: CallOverrides): Promise<string>;

    getDeployedCode(
      artifactPath: string,
      overrides?: CallOverrides
    ): Promise<string>;

    "getDeployment(string,uint64)"(
      contractName: string,
      chainId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<string>;

    "getDeployment(string)"(
      contractName: string,
      overrides?: CallOverrides
    ): Promise<string>;

    getDeployments(
      contractName: string,
      chainId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<string[]>;

    getFoundryVersion(overrides?: CallOverrides): Promise<string>;

    getLabel(account: string, overrides?: CallOverrides): Promise<string>;

    getMappingKeyAndParentOf(
      target: string,
      elementSlot: BytesLike,
      overrides?: CallOverrides
    ): Promise<
      [boolean, string, string] & {
        found: boolean;
        key: string;
        parent: string;
      }
    >;

    getMappingLength(
      target: string,
      mappingSlot: BytesLike,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    getMappingSlotAt(
      target: string,
      mappingSlot: BytesLike,
      idx: BigNumberish,
      overrides?: CallOverrides
    ): Promise<string>;

    "getNonce(address)"(
      account: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "getNonce((address,uint256,uint256,uint256))"(
      wallet: VmSafe.WalletStruct,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    getRecordedLogs(
      overrides?: CallOverrides
    ): Promise<VmSafe.LogStructOutput[]>;

    getStateDiff(overrides?: CallOverrides): Promise<string>;

    getStateDiffJson(overrides?: CallOverrides): Promise<string>;

    getWallets(overrides?: CallOverrides): Promise<string[]>;

    indexOf(
      input: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    isContext(
      context: BigNumberish,
      overrides?: CallOverrides
    ): Promise<boolean>;

    isDir(path: string, overrides?: CallOverrides): Promise<boolean>;

    isFile(path: string, overrides?: CallOverrides): Promise<boolean>;

    keyExists(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<boolean>;

    keyExistsJson(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<boolean>;

    keyExistsToml(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<boolean>;

    label(
      account: string,
      newLabel: string,
      overrides?: CallOverrides
    ): Promise<void>;

    lastCallGas(overrides?: CallOverrides): Promise<VmSafe.GasStructOutput>;

    load(
      target: string,
      slot: BytesLike,
      overrides?: CallOverrides
    ): Promise<string>;

    parseAddress(
      stringifiedValue: string,
      overrides?: CallOverrides
    ): Promise<string>;

    parseBool(
      stringifiedValue: string,
      overrides?: CallOverrides
    ): Promise<boolean>;

    parseBytes(
      stringifiedValue: string,
      overrides?: CallOverrides
    ): Promise<string>;

    parseBytes32(
      stringifiedValue: string,
      overrides?: CallOverrides
    ): Promise<string>;

    parseInt(
      stringifiedValue: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "parseJson(string)"(
      json: string,
      overrides?: CallOverrides
    ): Promise<string>;

    "parseJson(string,string)"(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<string>;

    parseJsonAddress(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<string>;

    parseJsonAddressArray(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<string[]>;

    parseJsonBool(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<boolean>;

    parseJsonBoolArray(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<boolean[]>;

    parseJsonBytes(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<string>;

    parseJsonBytes32(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<string>;

    parseJsonBytes32Array(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<string[]>;

    parseJsonBytesArray(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<string[]>;

    parseJsonInt(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    parseJsonIntArray(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<BigNumber[]>;

    parseJsonKeys(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<string[]>;

    parseJsonString(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<string>;

    parseJsonStringArray(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<string[]>;

    "parseJsonType(string,string)"(
      json: string,
      typeDescription: string,
      overrides?: CallOverrides
    ): Promise<string>;

    "parseJsonType(string,string,string)"(
      json: string,
      key: string,
      typeDescription: string,
      overrides?: CallOverrides
    ): Promise<string>;

    parseJsonTypeArray(
      json: string,
      key: string,
      typeDescription: string,
      overrides?: CallOverrides
    ): Promise<string>;

    parseJsonUint(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    parseJsonUintArray(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<BigNumber[]>;

    "parseToml(string,string)"(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<string>;

    "parseToml(string)"(
      toml: string,
      overrides?: CallOverrides
    ): Promise<string>;

    parseTomlAddress(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<string>;

    parseTomlAddressArray(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<string[]>;

    parseTomlBool(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<boolean>;

    parseTomlBoolArray(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<boolean[]>;

    parseTomlBytes(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<string>;

    parseTomlBytes32(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<string>;

    parseTomlBytes32Array(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<string[]>;

    parseTomlBytesArray(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<string[]>;

    parseTomlInt(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    parseTomlIntArray(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<BigNumber[]>;

    parseTomlKeys(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<string[]>;

    parseTomlString(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<string>;

    parseTomlStringArray(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<string[]>;

    "parseTomlType(string,string)"(
      toml: string,
      typeDescription: string,
      overrides?: CallOverrides
    ): Promise<string>;

    "parseTomlType(string,string,string)"(
      toml: string,
      key: string,
      typeDescription: string,
      overrides?: CallOverrides
    ): Promise<string>;

    parseTomlTypeArray(
      toml: string,
      key: string,
      typeDescription: string,
      overrides?: CallOverrides
    ): Promise<string>;

    parseTomlUint(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    parseTomlUintArray(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<BigNumber[]>;

    parseUint(
      stringifiedValue: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    pauseGasMetering(overrides?: CallOverrides): Promise<void>;

    pauseTracing(overrides?: CallOverrides): Promise<void>;

    projectRoot(overrides?: CallOverrides): Promise<string>;

    prompt(promptText: string, overrides?: CallOverrides): Promise<string>;

    promptAddress(
      promptText: string,
      overrides?: CallOverrides
    ): Promise<string>;

    promptSecret(
      promptText: string,
      overrides?: CallOverrides
    ): Promise<string>;

    promptSecretUint(
      promptText: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    promptUint(
      promptText: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    publicKeyP256(
      privateKey: BigNumberish,
      overrides?: CallOverrides
    ): Promise<
      [BigNumber, BigNumber] & { publicKeyX: BigNumber; publicKeyY: BigNumber }
    >;

    randomAddress(overrides?: CallOverrides): Promise<string>;

    randomBool(overrides?: CallOverrides): Promise<boolean>;

    randomBytes(len: BigNumberish, overrides?: CallOverrides): Promise<string>;

    randomBytes4(overrides?: CallOverrides): Promise<string>;

    randomBytes8(overrides?: CallOverrides): Promise<string>;

    "randomInt()"(overrides?: CallOverrides): Promise<BigNumber>;

    "randomInt(uint256)"(
      bits: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "randomUint()"(overrides?: CallOverrides): Promise<BigNumber>;

    "randomUint(uint256)"(
      bits: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "randomUint(uint256,uint256)"(
      min: BigNumberish,
      max: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "readDir(string,uint64)"(
      path: string,
      maxDepth: BigNumberish,
      overrides?: CallOverrides
    ): Promise<VmSafe.DirEntryStructOutput[]>;

    "readDir(string,uint64,bool)"(
      path: string,
      maxDepth: BigNumberish,
      followLinks: boolean,
      overrides?: CallOverrides
    ): Promise<VmSafe.DirEntryStructOutput[]>;

    "readDir(string)"(
      path: string,
      overrides?: CallOverrides
    ): Promise<VmSafe.DirEntryStructOutput[]>;

    readFile(path: string, overrides?: CallOverrides): Promise<string>;

    readFileBinary(path: string, overrides?: CallOverrides): Promise<string>;

    readLine(path: string, overrides?: CallOverrides): Promise<string>;

    readLink(linkPath: string, overrides?: CallOverrides): Promise<string>;

    record(overrides?: CallOverrides): Promise<void>;

    recordLogs(overrides?: CallOverrides): Promise<void>;

    rememberKey(
      privateKey: BigNumberish,
      overrides?: CallOverrides
    ): Promise<string>;

    "rememberKeys(string,string,uint32)"(
      mnemonic: string,
      derivationPath: string,
      count: BigNumberish,
      overrides?: CallOverrides
    ): Promise<string[]>;

    "rememberKeys(string,string,string,uint32)"(
      mnemonic: string,
      derivationPath: string,
      language: string,
      count: BigNumberish,
      overrides?: CallOverrides
    ): Promise<string[]>;

    removeDir(
      path: string,
      recursive: boolean,
      overrides?: CallOverrides
    ): Promise<void>;

    removeFile(path: string, overrides?: CallOverrides): Promise<void>;

    replace(
      input: string,
      from: string,
      to: string,
      overrides?: CallOverrides
    ): Promise<string>;

    resetGasMetering(overrides?: CallOverrides): Promise<void>;

    resumeGasMetering(overrides?: CallOverrides): Promise<void>;

    resumeTracing(overrides?: CallOverrides): Promise<void>;

    "rpc(string,string,string)"(
      urlOrAlias: string,
      method: string,
      params: string,
      overrides?: CallOverrides
    ): Promise<string>;

    "rpc(string,string)"(
      method: string,
      params: string,
      overrides?: CallOverrides
    ): Promise<string>;

    rpcUrl(rpcAlias: string, overrides?: CallOverrides): Promise<string>;

    rpcUrlStructs(overrides?: CallOverrides): Promise<VmSafe.RpcStructOutput[]>;

    rpcUrls(overrides?: CallOverrides): Promise<[string, string][]>;

    "serializeAddress(string,string,address[])"(
      objectKey: string,
      valueKey: string,
      values: string[],
      overrides?: CallOverrides
    ): Promise<string>;

    "serializeAddress(string,string,address)"(
      objectKey: string,
      valueKey: string,
      value: string,
      overrides?: CallOverrides
    ): Promise<string>;

    "serializeBool(string,string,bool[])"(
      objectKey: string,
      valueKey: string,
      values: boolean[],
      overrides?: CallOverrides
    ): Promise<string>;

    "serializeBool(string,string,bool)"(
      objectKey: string,
      valueKey: string,
      value: boolean,
      overrides?: CallOverrides
    ): Promise<string>;

    "serializeBytes(string,string,bytes[])"(
      objectKey: string,
      valueKey: string,
      values: BytesLike[],
      overrides?: CallOverrides
    ): Promise<string>;

    "serializeBytes(string,string,bytes)"(
      objectKey: string,
      valueKey: string,
      value: BytesLike,
      overrides?: CallOverrides
    ): Promise<string>;

    "serializeBytes32(string,string,bytes32[])"(
      objectKey: string,
      valueKey: string,
      values: BytesLike[],
      overrides?: CallOverrides
    ): Promise<string>;

    "serializeBytes32(string,string,bytes32)"(
      objectKey: string,
      valueKey: string,
      value: BytesLike,
      overrides?: CallOverrides
    ): Promise<string>;

    "serializeInt(string,string,int256)"(
      objectKey: string,
      valueKey: string,
      value: BigNumberish,
      overrides?: CallOverrides
    ): Promise<string>;

    "serializeInt(string,string,int256[])"(
      objectKey: string,
      valueKey: string,
      values: BigNumberish[],
      overrides?: CallOverrides
    ): Promise<string>;

    serializeJson(
      objectKey: string,
      value: string,
      overrides?: CallOverrides
    ): Promise<string>;

    "serializeJsonType(string,bytes)"(
      typeDescription: string,
      value: BytesLike,
      overrides?: CallOverrides
    ): Promise<string>;

    "serializeJsonType(string,string,string,bytes)"(
      objectKey: string,
      valueKey: string,
      typeDescription: string,
      value: BytesLike,
      overrides?: CallOverrides
    ): Promise<string>;

    "serializeString(string,string,string[])"(
      objectKey: string,
      valueKey: string,
      values: string[],
      overrides?: CallOverrides
    ): Promise<string>;

    "serializeString(string,string,string)"(
      objectKey: string,
      valueKey: string,
      value: string,
      overrides?: CallOverrides
    ): Promise<string>;

    "serializeUint(string,string,uint256)"(
      objectKey: string,
      valueKey: string,
      value: BigNumberish,
      overrides?: CallOverrides
    ): Promise<string>;

    "serializeUint(string,string,uint256[])"(
      objectKey: string,
      valueKey: string,
      values: BigNumberish[],
      overrides?: CallOverrides
    ): Promise<string>;

    serializeUintToHex(
      objectKey: string,
      valueKey: string,
      value: BigNumberish,
      overrides?: CallOverrides
    ): Promise<string>;

    setArbitraryStorage(
      target: string,
      overrides?: CallOverrides
    ): Promise<void>;

    setEnv(
      name: string,
      value: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "sign(bytes32)"(
      digest: BytesLike,
      overrides?: CallOverrides
    ): Promise<[number, string, string] & { v: number; r: string; s: string }>;

    "sign(address,bytes32)"(
      signer: string,
      digest: BytesLike,
      overrides?: CallOverrides
    ): Promise<[number, string, string] & { v: number; r: string; s: string }>;

    "sign((address,uint256,uint256,uint256),bytes32)"(
      wallet: VmSafe.WalletStruct,
      digest: BytesLike,
      overrides?: CallOverrides
    ): Promise<[number, string, string] & { v: number; r: string; s: string }>;

    "sign(uint256,bytes32)"(
      privateKey: BigNumberish,
      digest: BytesLike,
      overrides?: CallOverrides
    ): Promise<[number, string, string] & { v: number; r: string; s: string }>;

    signAndAttachDelegation(
      implementation: string,
      privateKey: BigNumberish,
      overrides?: CallOverrides
    ): Promise<VmSafe.SignedDelegationStructOutput>;

    "signCompact((address,uint256,uint256,uint256),bytes32)"(
      wallet: VmSafe.WalletStruct,
      digest: BytesLike,
      overrides?: CallOverrides
    ): Promise<[string, string] & { r: string; vs: string }>;

    "signCompact(address,bytes32)"(
      signer: string,
      digest: BytesLike,
      overrides?: CallOverrides
    ): Promise<[string, string] & { r: string; vs: string }>;

    "signCompact(bytes32)"(
      digest: BytesLike,
      overrides?: CallOverrides
    ): Promise<[string, string] & { r: string; vs: string }>;

    "signCompact(uint256,bytes32)"(
      privateKey: BigNumberish,
      digest: BytesLike,
      overrides?: CallOverrides
    ): Promise<[string, string] & { r: string; vs: string }>;

    signDelegation(
      implementation: string,
      privateKey: BigNumberish,
      overrides?: CallOverrides
    ): Promise<VmSafe.SignedDelegationStructOutput>;

    signP256(
      privateKey: BigNumberish,
      digest: BytesLike,
      overrides?: CallOverrides
    ): Promise<[string, string] & { r: string; s: string }>;

    sleep(duration: BigNumberish, overrides?: CallOverrides): Promise<void>;

    split(
      input: string,
      delimiter: string,
      overrides?: CallOverrides
    ): Promise<string[]>;

    "startBroadcast()"(overrides?: CallOverrides): Promise<void>;

    "startBroadcast(address)"(
      signer: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "startBroadcast(uint256)"(
      privateKey: BigNumberish,
      overrides?: CallOverrides
    ): Promise<void>;

    startDebugTraceRecording(overrides?: CallOverrides): Promise<void>;

    startMappingRecording(overrides?: CallOverrides): Promise<void>;

    startStateDiffRecording(overrides?: CallOverrides): Promise<void>;

    stopAndReturnDebugTraceRecording(
      overrides?: CallOverrides
    ): Promise<VmSafe.DebugStepStructOutput[]>;

    stopAndReturnStateDiff(
      overrides?: CallOverrides
    ): Promise<VmSafe.AccountAccessStructOutput[]>;

    stopBroadcast(overrides?: CallOverrides): Promise<void>;

    stopMappingRecording(overrides?: CallOverrides): Promise<void>;

    "toBase64(string)"(
      data: string,
      overrides?: CallOverrides
    ): Promise<string>;

    "toBase64(bytes)"(
      data: BytesLike,
      overrides?: CallOverrides
    ): Promise<string>;

    "toBase64URL(string)"(
      data: string,
      overrides?: CallOverrides
    ): Promise<string>;

    "toBase64URL(bytes)"(
      data: BytesLike,
      overrides?: CallOverrides
    ): Promise<string>;

    toLowercase(input: string, overrides?: CallOverrides): Promise<string>;

    "toString(address)"(
      value: string,
      overrides?: CallOverrides
    ): Promise<string>;

    "toString(uint256)"(
      value: BigNumberish,
      overrides?: CallOverrides
    ): Promise<string>;

    "toString(bytes)"(
      value: BytesLike,
      overrides?: CallOverrides
    ): Promise<string>;

    "toString(bool)"(
      value: boolean,
      overrides?: CallOverrides
    ): Promise<string>;

    "toString(int256)"(
      value: BigNumberish,
      overrides?: CallOverrides
    ): Promise<string>;

    "toString(bytes32)"(
      value: BytesLike,
      overrides?: CallOverrides
    ): Promise<string>;

    toUppercase(input: string, overrides?: CallOverrides): Promise<string>;

    trim(input: string, overrides?: CallOverrides): Promise<string>;

    tryFfi(
      commandInput: string[],
      overrides?: CallOverrides
    ): Promise<VmSafe.FfiResultStructOutput>;

    unixTime(overrides?: CallOverrides): Promise<BigNumber>;

    writeFile(
      path: string,
      data: string,
      overrides?: CallOverrides
    ): Promise<void>;

    writeFileBinary(
      path: string,
      data: BytesLike,
      overrides?: CallOverrides
    ): Promise<void>;

    "writeJson(string,string,string)"(
      json: string,
      path: string,
      valueKey: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "writeJson(string,string)"(
      json: string,
      path: string,
      overrides?: CallOverrides
    ): Promise<void>;

    writeLine(
      path: string,
      data: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "writeToml(string,string,string)"(
      json: string,
      path: string,
      valueKey: string,
      overrides?: CallOverrides
    ): Promise<void>;

    "writeToml(string,string)"(
      json: string,
      path: string,
      overrides?: CallOverrides
    ): Promise<void>;
  };

  filters: {};

  estimateGas: {
    accesses(
      target: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    addr(
      privateKey: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertApproxEqAbs(uint256,uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      maxDelta: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertApproxEqAbs(int256,int256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      maxDelta: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertApproxEqAbs(int256,int256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      maxDelta: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertApproxEqAbs(uint256,uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      maxDelta: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      maxDelta: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertApproxEqAbsDecimal(int256,int256,uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      maxDelta: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      maxDelta: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      maxDelta: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertApproxEqRel(uint256,uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      maxPercentDelta: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertApproxEqRel(uint256,uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      maxPercentDelta: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertApproxEqRel(int256,int256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      maxPercentDelta: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertApproxEqRel(int256,int256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      maxPercentDelta: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      maxPercentDelta: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      maxPercentDelta: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertApproxEqRelDecimal(int256,int256,uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      maxPercentDelta: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      maxPercentDelta: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertEq(bytes32[],bytes32[])"(
      left: BytesLike[],
      right: BytesLike[],
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertEq(int256[],int256[],string)"(
      left: BigNumberish[],
      right: BigNumberish[],
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertEq(address,address,string)"(
      left: string,
      right: string,
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertEq(string,string,string)"(
      left: string,
      right: string,
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertEq(address[],address[])"(
      left: string[],
      right: string[],
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertEq(address[],address[],string)"(
      left: string[],
      right: string[],
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertEq(bool,bool,string)"(
      left: boolean,
      right: boolean,
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertEq(address,address)"(
      left: string,
      right: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertEq(uint256[],uint256[],string)"(
      left: BigNumberish[],
      right: BigNumberish[],
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertEq(bool[],bool[])"(
      left: boolean[],
      right: boolean[],
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertEq(int256[],int256[])"(
      left: BigNumberish[],
      right: BigNumberish[],
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertEq(int256,int256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertEq(bytes32,bytes32)"(
      left: BytesLike,
      right: BytesLike,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertEq(uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertEq(uint256[],uint256[])"(
      left: BigNumberish[],
      right: BigNumberish[],
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertEq(bytes,bytes)"(
      left: BytesLike,
      right: BytesLike,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertEq(uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertEq(bytes32,bytes32,string)"(
      left: BytesLike,
      right: BytesLike,
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertEq(string[],string[])"(
      left: string[],
      right: string[],
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertEq(bytes32[],bytes32[],string)"(
      left: BytesLike[],
      right: BytesLike[],
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertEq(bytes,bytes,string)"(
      left: BytesLike,
      right: BytesLike,
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertEq(bool[],bool[],string)"(
      left: boolean[],
      right: boolean[],
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertEq(bytes[],bytes[])"(
      left: BytesLike[],
      right: BytesLike[],
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertEq(string[],string[],string)"(
      left: string[],
      right: string[],
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertEq(string,string)"(
      left: string,
      right: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertEq(bytes[],bytes[],string)"(
      left: BytesLike[],
      right: BytesLike[],
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertEq(bool,bool)"(
      left: boolean,
      right: boolean,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertEq(int256,int256)"(
      left: BigNumberish,
      right: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertEqDecimal(uint256,uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertEqDecimal(int256,int256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertEqDecimal(int256,int256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertEqDecimal(uint256,uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertFalse(bool,string)"(
      condition: boolean,
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertFalse(bool)"(
      condition: boolean,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertGe(int256,int256)"(
      left: BigNumberish,
      right: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertGe(int256,int256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertGe(uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertGe(uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertGeDecimal(uint256,uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertGeDecimal(int256,int256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertGeDecimal(uint256,uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertGeDecimal(int256,int256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertGt(int256,int256)"(
      left: BigNumberish,
      right: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertGt(uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertGt(uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertGt(int256,int256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertGtDecimal(int256,int256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertGtDecimal(uint256,uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertGtDecimal(int256,int256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertGtDecimal(uint256,uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertLe(int256,int256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertLe(uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertLe(int256,int256)"(
      left: BigNumberish,
      right: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertLe(uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertLeDecimal(int256,int256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertLeDecimal(uint256,uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertLeDecimal(int256,int256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertLeDecimal(uint256,uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertLt(int256,int256)"(
      left: BigNumberish,
      right: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertLt(uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertLt(int256,int256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertLt(uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertLtDecimal(uint256,uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertLtDecimal(int256,int256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertLtDecimal(uint256,uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertLtDecimal(int256,int256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertNotEq(bytes32[],bytes32[])"(
      left: BytesLike[],
      right: BytesLike[],
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertNotEq(int256[],int256[])"(
      left: BigNumberish[],
      right: BigNumberish[],
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertNotEq(bool,bool,string)"(
      left: boolean,
      right: boolean,
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertNotEq(bytes[],bytes[],string)"(
      left: BytesLike[],
      right: BytesLike[],
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertNotEq(bool,bool)"(
      left: boolean,
      right: boolean,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertNotEq(bool[],bool[])"(
      left: boolean[],
      right: boolean[],
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertNotEq(bytes,bytes)"(
      left: BytesLike,
      right: BytesLike,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertNotEq(address[],address[])"(
      left: string[],
      right: string[],
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertNotEq(int256,int256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertNotEq(uint256[],uint256[])"(
      left: BigNumberish[],
      right: BigNumberish[],
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertNotEq(bool[],bool[],string)"(
      left: boolean[],
      right: boolean[],
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertNotEq(string,string)"(
      left: string,
      right: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertNotEq(address[],address[],string)"(
      left: string[],
      right: string[],
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertNotEq(string,string,string)"(
      left: string,
      right: string,
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertNotEq(address,address,string)"(
      left: string,
      right: string,
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertNotEq(bytes32,bytes32)"(
      left: BytesLike,
      right: BytesLike,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertNotEq(bytes,bytes,string)"(
      left: BytesLike,
      right: BytesLike,
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertNotEq(uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertNotEq(uint256[],uint256[],string)"(
      left: BigNumberish[],
      right: BigNumberish[],
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertNotEq(address,address)"(
      left: string,
      right: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertNotEq(bytes32,bytes32,string)"(
      left: BytesLike,
      right: BytesLike,
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertNotEq(string[],string[],string)"(
      left: string[],
      right: string[],
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertNotEq(uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertNotEq(bytes32[],bytes32[],string)"(
      left: BytesLike[],
      right: BytesLike[],
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertNotEq(string[],string[])"(
      left: string[],
      right: string[],
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertNotEq(int256[],int256[],string)"(
      left: BigNumberish[],
      right: BigNumberish[],
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertNotEq(bytes[],bytes[])"(
      left: BytesLike[],
      right: BytesLike[],
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertNotEq(int256,int256)"(
      left: BigNumberish,
      right: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertNotEqDecimal(int256,int256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertNotEqDecimal(int256,int256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertNotEqDecimal(uint256,uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertNotEqDecimal(uint256,uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertTrue(bool)"(
      condition: boolean,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assertTrue(bool,string)"(
      condition: boolean,
      error: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    assume(condition: boolean, overrides?: CallOverrides): Promise<BigNumber>;

    "assumeNoRevert()"(overrides?: CallOverrides): Promise<BigNumber>;

    "assumeNoRevert((address,bool,bytes)[])"(
      potentialReverts: VmSafe.PotentialRevertStruct[],
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "assumeNoRevert((address,bool,bytes))"(
      potentialRevert: VmSafe.PotentialRevertStruct,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    attachDelegation(
      signedDelegation: VmSafe.SignedDelegationStruct,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    "breakpoint(string)"(
      char: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "breakpoint(string,bool)"(
      char: string,
      value: boolean,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "broadcast()"(
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    "broadcast(address)"(
      signer: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    "broadcast(uint256)"(
      privateKey: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    broadcastRawTransaction(
      data: BytesLike,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    closeFile(
      path: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    "computeCreate2Address(bytes32,bytes32)"(
      salt: BytesLike,
      initCodeHash: BytesLike,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "computeCreate2Address(bytes32,bytes32,address)"(
      salt: BytesLike,
      initCodeHash: BytesLike,
      deployer: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    computeCreateAddress(
      deployer: string,
      nonce: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    contains(
      subject: string,
      search: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    copyFile(
      from: string,
      to: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    copyStorage(
      from: string,
      to: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    createDir(
      path: string,
      recursive: boolean,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    "createWallet(string)"(
      walletLabel: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    "createWallet(uint256)"(
      privateKey: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    "createWallet(uint256,string)"(
      privateKey: BigNumberish,
      walletLabel: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    "deployCode(string,bytes)"(
      artifactPath: string,
      constructorArgs: BytesLike,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    "deployCode(string)"(
      artifactPath: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    "deriveKey(string,string,uint32,string)"(
      mnemonic: string,
      derivationPath: string,
      index: BigNumberish,
      language: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "deriveKey(string,uint32,string)"(
      mnemonic: string,
      index: BigNumberish,
      language: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "deriveKey(string,uint32)"(
      mnemonic: string,
      index: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "deriveKey(string,string,uint32)"(
      mnemonic: string,
      derivationPath: string,
      index: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    ensNamehash(name: string, overrides?: CallOverrides): Promise<BigNumber>;

    "envAddress(string)"(
      name: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "envAddress(string,string)"(
      name: string,
      delim: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "envBool(string)"(
      name: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "envBool(string,string)"(
      name: string,
      delim: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "envBytes(string)"(
      name: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "envBytes(string,string)"(
      name: string,
      delim: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "envBytes32(string,string)"(
      name: string,
      delim: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "envBytes32(string)"(
      name: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    envExists(name: string, overrides?: CallOverrides): Promise<BigNumber>;

    "envInt(string,string)"(
      name: string,
      delim: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "envInt(string)"(
      name: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "envOr(string,string,bytes32[])"(
      name: string,
      delim: string,
      defaultValue: BytesLike[],
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "envOr(string,string,int256[])"(
      name: string,
      delim: string,
      defaultValue: BigNumberish[],
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "envOr(string,bool)"(
      name: string,
      defaultValue: boolean,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "envOr(string,address)"(
      name: string,
      defaultValue: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "envOr(string,uint256)"(
      name: string,
      defaultValue: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "envOr(string,string,bytes[])"(
      name: string,
      delim: string,
      defaultValue: BytesLike[],
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "envOr(string,string,uint256[])"(
      name: string,
      delim: string,
      defaultValue: BigNumberish[],
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "envOr(string,string,string[])"(
      name: string,
      delim: string,
      defaultValue: string[],
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "envOr(string,bytes)"(
      name: string,
      defaultValue: BytesLike,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "envOr(string,bytes32)"(
      name: string,
      defaultValue: BytesLike,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "envOr(string,int256)"(
      name: string,
      defaultValue: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "envOr(string,string,address[])"(
      name: string,
      delim: string,
      defaultValue: string[],
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "envOr(string,string)"(
      name: string,
      defaultValue: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "envOr(string,string,bool[])"(
      name: string,
      delim: string,
      defaultValue: boolean[],
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "envString(string,string)"(
      name: string,
      delim: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "envString(string)"(
      name: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "envUint(string)"(
      name: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "envUint(string,string)"(
      name: string,
      delim: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    eth_getLogs(
      fromBlock: BigNumberish,
      toBlock: BigNumberish,
      target: string,
      topics: BytesLike[],
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    exists(path: string, overrides?: CallOverrides): Promise<BigNumber>;

    ffi(
      commandInput: string[],
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    foundryVersionAtLeast(
      version: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    foundryVersionCmp(
      version: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    fsMetadata(path: string, overrides?: CallOverrides): Promise<BigNumber>;

    getArtifactPathByCode(
      code: BytesLike,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    getArtifactPathByDeployedCode(
      deployedCode: BytesLike,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    getBlobBaseFee(overrides?: CallOverrides): Promise<BigNumber>;

    getBlockNumber(overrides?: CallOverrides): Promise<BigNumber>;

    getBlockTimestamp(overrides?: CallOverrides): Promise<BigNumber>;

    getBroadcast(
      contractName: string,
      chainId: BigNumberish,
      txType: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "getBroadcasts(string,uint64)"(
      contractName: string,
      chainId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "getBroadcasts(string,uint64,uint8)"(
      contractName: string,
      chainId: BigNumberish,
      txType: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    getCode(
      artifactPath: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    getDeployedCode(
      artifactPath: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "getDeployment(string,uint64)"(
      contractName: string,
      chainId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "getDeployment(string)"(
      contractName: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    getDeployments(
      contractName: string,
      chainId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    getFoundryVersion(overrides?: CallOverrides): Promise<BigNumber>;

    getLabel(account: string, overrides?: CallOverrides): Promise<BigNumber>;

    getMappingKeyAndParentOf(
      target: string,
      elementSlot: BytesLike,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    getMappingLength(
      target: string,
      mappingSlot: BytesLike,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    getMappingSlotAt(
      target: string,
      mappingSlot: BytesLike,
      idx: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    "getNonce(address)"(
      account: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "getNonce((address,uint256,uint256,uint256))"(
      wallet: VmSafe.WalletStruct,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    getRecordedLogs(
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    getStateDiff(overrides?: CallOverrides): Promise<BigNumber>;

    getStateDiffJson(overrides?: CallOverrides): Promise<BigNumber>;

    getWallets(overrides?: Overrides & { from?: string }): Promise<BigNumber>;

    indexOf(
      input: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    isContext(
      context: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    isDir(path: string, overrides?: CallOverrides): Promise<BigNumber>;

    isFile(path: string, overrides?: CallOverrides): Promise<BigNumber>;

    keyExists(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    keyExistsJson(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    keyExistsToml(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    label(
      account: string,
      newLabel: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    lastCallGas(overrides?: CallOverrides): Promise<BigNumber>;

    load(
      target: string,
      slot: BytesLike,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    parseAddress(
      stringifiedValue: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    parseBool(
      stringifiedValue: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    parseBytes(
      stringifiedValue: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    parseBytes32(
      stringifiedValue: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    parseInt(
      stringifiedValue: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "parseJson(string)"(
      json: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "parseJson(string,string)"(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    parseJsonAddress(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    parseJsonAddressArray(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    parseJsonBool(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    parseJsonBoolArray(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    parseJsonBytes(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    parseJsonBytes32(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    parseJsonBytes32Array(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    parseJsonBytesArray(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    parseJsonInt(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    parseJsonIntArray(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    parseJsonKeys(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    parseJsonString(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    parseJsonStringArray(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "parseJsonType(string,string)"(
      json: string,
      typeDescription: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "parseJsonType(string,string,string)"(
      json: string,
      key: string,
      typeDescription: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    parseJsonTypeArray(
      json: string,
      key: string,
      typeDescription: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    parseJsonUint(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    parseJsonUintArray(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "parseToml(string,string)"(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "parseToml(string)"(
      toml: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    parseTomlAddress(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    parseTomlAddressArray(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    parseTomlBool(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    parseTomlBoolArray(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    parseTomlBytes(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    parseTomlBytes32(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    parseTomlBytes32Array(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    parseTomlBytesArray(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    parseTomlInt(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    parseTomlIntArray(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    parseTomlKeys(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    parseTomlString(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    parseTomlStringArray(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "parseTomlType(string,string)"(
      toml: string,
      typeDescription: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "parseTomlType(string,string,string)"(
      toml: string,
      key: string,
      typeDescription: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    parseTomlTypeArray(
      toml: string,
      key: string,
      typeDescription: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    parseTomlUint(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    parseTomlUintArray(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    parseUint(
      stringifiedValue: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    pauseGasMetering(
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    pauseTracing(overrides?: CallOverrides): Promise<BigNumber>;

    projectRoot(overrides?: CallOverrides): Promise<BigNumber>;

    prompt(
      promptText: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    promptAddress(
      promptText: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    promptSecret(
      promptText: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    promptSecretUint(
      promptText: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    promptUint(
      promptText: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    publicKeyP256(
      privateKey: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    randomAddress(
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    randomBool(overrides?: CallOverrides): Promise<BigNumber>;

    randomBytes(
      len: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    randomBytes4(overrides?: CallOverrides): Promise<BigNumber>;

    randomBytes8(overrides?: CallOverrides): Promise<BigNumber>;

    "randomInt()"(overrides?: CallOverrides): Promise<BigNumber>;

    "randomInt(uint256)"(
      bits: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "randomUint()"(
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    "randomUint(uint256)"(
      bits: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "randomUint(uint256,uint256)"(
      min: BigNumberish,
      max: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    "readDir(string,uint64)"(
      path: string,
      maxDepth: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "readDir(string,uint64,bool)"(
      path: string,
      maxDepth: BigNumberish,
      followLinks: boolean,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "readDir(string)"(
      path: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    readFile(path: string, overrides?: CallOverrides): Promise<BigNumber>;

    readFileBinary(path: string, overrides?: CallOverrides): Promise<BigNumber>;

    readLine(path: string, overrides?: CallOverrides): Promise<BigNumber>;

    readLink(linkPath: string, overrides?: CallOverrides): Promise<BigNumber>;

    record(overrides?: Overrides & { from?: string }): Promise<BigNumber>;

    recordLogs(overrides?: Overrides & { from?: string }): Promise<BigNumber>;

    rememberKey(
      privateKey: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    "rememberKeys(string,string,uint32)"(
      mnemonic: string,
      derivationPath: string,
      count: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    "rememberKeys(string,string,string,uint32)"(
      mnemonic: string,
      derivationPath: string,
      language: string,
      count: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    removeDir(
      path: string,
      recursive: boolean,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    removeFile(
      path: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    replace(
      input: string,
      from: string,
      to: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    resetGasMetering(
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    resumeGasMetering(
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    resumeTracing(overrides?: CallOverrides): Promise<BigNumber>;

    "rpc(string,string,string)"(
      urlOrAlias: string,
      method: string,
      params: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    "rpc(string,string)"(
      method: string,
      params: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    rpcUrl(rpcAlias: string, overrides?: CallOverrides): Promise<BigNumber>;

    rpcUrlStructs(overrides?: CallOverrides): Promise<BigNumber>;

    rpcUrls(overrides?: CallOverrides): Promise<BigNumber>;

    "serializeAddress(string,string,address[])"(
      objectKey: string,
      valueKey: string,
      values: string[],
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    "serializeAddress(string,string,address)"(
      objectKey: string,
      valueKey: string,
      value: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    "serializeBool(string,string,bool[])"(
      objectKey: string,
      valueKey: string,
      values: boolean[],
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    "serializeBool(string,string,bool)"(
      objectKey: string,
      valueKey: string,
      value: boolean,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    "serializeBytes(string,string,bytes[])"(
      objectKey: string,
      valueKey: string,
      values: BytesLike[],
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    "serializeBytes(string,string,bytes)"(
      objectKey: string,
      valueKey: string,
      value: BytesLike,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    "serializeBytes32(string,string,bytes32[])"(
      objectKey: string,
      valueKey: string,
      values: BytesLike[],
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    "serializeBytes32(string,string,bytes32)"(
      objectKey: string,
      valueKey: string,
      value: BytesLike,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    "serializeInt(string,string,int256)"(
      objectKey: string,
      valueKey: string,
      value: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    "serializeInt(string,string,int256[])"(
      objectKey: string,
      valueKey: string,
      values: BigNumberish[],
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    serializeJson(
      objectKey: string,
      value: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    "serializeJsonType(string,bytes)"(
      typeDescription: string,
      value: BytesLike,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "serializeJsonType(string,string,string,bytes)"(
      objectKey: string,
      valueKey: string,
      typeDescription: string,
      value: BytesLike,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    "serializeString(string,string,string[])"(
      objectKey: string,
      valueKey: string,
      values: string[],
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    "serializeString(string,string,string)"(
      objectKey: string,
      valueKey: string,
      value: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    "serializeUint(string,string,uint256)"(
      objectKey: string,
      valueKey: string,
      value: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    "serializeUint(string,string,uint256[])"(
      objectKey: string,
      valueKey: string,
      values: BigNumberish[],
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    serializeUintToHex(
      objectKey: string,
      valueKey: string,
      value: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    setArbitraryStorage(
      target: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    setEnv(
      name: string,
      value: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    "sign(bytes32)"(
      digest: BytesLike,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "sign(address,bytes32)"(
      signer: string,
      digest: BytesLike,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "sign((address,uint256,uint256,uint256),bytes32)"(
      wallet: VmSafe.WalletStruct,
      digest: BytesLike,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    "sign(uint256,bytes32)"(
      privateKey: BigNumberish,
      digest: BytesLike,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    signAndAttachDelegation(
      implementation: string,
      privateKey: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    "signCompact((address,uint256,uint256,uint256),bytes32)"(
      wallet: VmSafe.WalletStruct,
      digest: BytesLike,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    "signCompact(address,bytes32)"(
      signer: string,
      digest: BytesLike,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "signCompact(bytes32)"(
      digest: BytesLike,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "signCompact(uint256,bytes32)"(
      privateKey: BigNumberish,
      digest: BytesLike,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    signDelegation(
      implementation: string,
      privateKey: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    signP256(
      privateKey: BigNumberish,
      digest: BytesLike,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    sleep(
      duration: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    split(
      input: string,
      delimiter: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "startBroadcast()"(
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    "startBroadcast(address)"(
      signer: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    "startBroadcast(uint256)"(
      privateKey: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    startDebugTraceRecording(
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    startMappingRecording(
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    startStateDiffRecording(
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    stopAndReturnDebugTraceRecording(
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    stopAndReturnStateDiff(
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    stopBroadcast(
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    stopMappingRecording(
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    "toBase64(string)"(
      data: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "toBase64(bytes)"(
      data: BytesLike,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "toBase64URL(string)"(
      data: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "toBase64URL(bytes)"(
      data: BytesLike,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    toLowercase(input: string, overrides?: CallOverrides): Promise<BigNumber>;

    "toString(address)"(
      value: string,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "toString(uint256)"(
      value: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "toString(bytes)"(
      value: BytesLike,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "toString(bool)"(
      value: boolean,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "toString(int256)"(
      value: BigNumberish,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    "toString(bytes32)"(
      value: BytesLike,
      overrides?: CallOverrides
    ): Promise<BigNumber>;

    toUppercase(input: string, overrides?: CallOverrides): Promise<BigNumber>;

    trim(input: string, overrides?: CallOverrides): Promise<BigNumber>;

    tryFfi(
      commandInput: string[],
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    unixTime(overrides?: CallOverrides): Promise<BigNumber>;

    writeFile(
      path: string,
      data: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    writeFileBinary(
      path: string,
      data: BytesLike,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    "writeJson(string,string,string)"(
      json: string,
      path: string,
      valueKey: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    "writeJson(string,string)"(
      json: string,
      path: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    writeLine(
      path: string,
      data: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    "writeToml(string,string,string)"(
      json: string,
      path: string,
      valueKey: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;

    "writeToml(string,string)"(
      json: string,
      path: string,
      overrides?: Overrides & { from?: string }
    ): Promise<BigNumber>;
  };

  populateTransaction: {
    accesses(
      target: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    addr(
      privateKey: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertApproxEqAbs(uint256,uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      maxDelta: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertApproxEqAbs(int256,int256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      maxDelta: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertApproxEqAbs(int256,int256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      maxDelta: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertApproxEqAbs(uint256,uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      maxDelta: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      maxDelta: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertApproxEqAbsDecimal(int256,int256,uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      maxDelta: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      maxDelta: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      maxDelta: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertApproxEqRel(uint256,uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      maxPercentDelta: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertApproxEqRel(uint256,uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      maxPercentDelta: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertApproxEqRel(int256,int256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      maxPercentDelta: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertApproxEqRel(int256,int256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      maxPercentDelta: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      maxPercentDelta: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      maxPercentDelta: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertApproxEqRelDecimal(int256,int256,uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      maxPercentDelta: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      maxPercentDelta: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertEq(bytes32[],bytes32[])"(
      left: BytesLike[],
      right: BytesLike[],
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertEq(int256[],int256[],string)"(
      left: BigNumberish[],
      right: BigNumberish[],
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertEq(address,address,string)"(
      left: string,
      right: string,
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertEq(string,string,string)"(
      left: string,
      right: string,
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertEq(address[],address[])"(
      left: string[],
      right: string[],
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertEq(address[],address[],string)"(
      left: string[],
      right: string[],
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertEq(bool,bool,string)"(
      left: boolean,
      right: boolean,
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertEq(address,address)"(
      left: string,
      right: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertEq(uint256[],uint256[],string)"(
      left: BigNumberish[],
      right: BigNumberish[],
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertEq(bool[],bool[])"(
      left: boolean[],
      right: boolean[],
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertEq(int256[],int256[])"(
      left: BigNumberish[],
      right: BigNumberish[],
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertEq(int256,int256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertEq(bytes32,bytes32)"(
      left: BytesLike,
      right: BytesLike,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertEq(uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertEq(uint256[],uint256[])"(
      left: BigNumberish[],
      right: BigNumberish[],
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertEq(bytes,bytes)"(
      left: BytesLike,
      right: BytesLike,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertEq(uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertEq(bytes32,bytes32,string)"(
      left: BytesLike,
      right: BytesLike,
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertEq(string[],string[])"(
      left: string[],
      right: string[],
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertEq(bytes32[],bytes32[],string)"(
      left: BytesLike[],
      right: BytesLike[],
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertEq(bytes,bytes,string)"(
      left: BytesLike,
      right: BytesLike,
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertEq(bool[],bool[],string)"(
      left: boolean[],
      right: boolean[],
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertEq(bytes[],bytes[])"(
      left: BytesLike[],
      right: BytesLike[],
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertEq(string[],string[],string)"(
      left: string[],
      right: string[],
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertEq(string,string)"(
      left: string,
      right: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertEq(bytes[],bytes[],string)"(
      left: BytesLike[],
      right: BytesLike[],
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertEq(bool,bool)"(
      left: boolean,
      right: boolean,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertEq(int256,int256)"(
      left: BigNumberish,
      right: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertEqDecimal(uint256,uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertEqDecimal(int256,int256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertEqDecimal(int256,int256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertEqDecimal(uint256,uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertFalse(bool,string)"(
      condition: boolean,
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertFalse(bool)"(
      condition: boolean,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertGe(int256,int256)"(
      left: BigNumberish,
      right: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertGe(int256,int256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertGe(uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertGe(uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertGeDecimal(uint256,uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertGeDecimal(int256,int256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertGeDecimal(uint256,uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertGeDecimal(int256,int256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertGt(int256,int256)"(
      left: BigNumberish,
      right: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertGt(uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertGt(uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertGt(int256,int256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertGtDecimal(int256,int256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertGtDecimal(uint256,uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertGtDecimal(int256,int256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertGtDecimal(uint256,uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertLe(int256,int256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertLe(uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertLe(int256,int256)"(
      left: BigNumberish,
      right: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertLe(uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertLeDecimal(int256,int256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertLeDecimal(uint256,uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertLeDecimal(int256,int256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertLeDecimal(uint256,uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertLt(int256,int256)"(
      left: BigNumberish,
      right: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertLt(uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertLt(int256,int256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertLt(uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertLtDecimal(uint256,uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertLtDecimal(int256,int256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertLtDecimal(uint256,uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertLtDecimal(int256,int256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertNotEq(bytes32[],bytes32[])"(
      left: BytesLike[],
      right: BytesLike[],
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertNotEq(int256[],int256[])"(
      left: BigNumberish[],
      right: BigNumberish[],
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertNotEq(bool,bool,string)"(
      left: boolean,
      right: boolean,
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertNotEq(bytes[],bytes[],string)"(
      left: BytesLike[],
      right: BytesLike[],
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertNotEq(bool,bool)"(
      left: boolean,
      right: boolean,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertNotEq(bool[],bool[])"(
      left: boolean[],
      right: boolean[],
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertNotEq(bytes,bytes)"(
      left: BytesLike,
      right: BytesLike,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertNotEq(address[],address[])"(
      left: string[],
      right: string[],
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertNotEq(int256,int256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertNotEq(uint256[],uint256[])"(
      left: BigNumberish[],
      right: BigNumberish[],
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertNotEq(bool[],bool[],string)"(
      left: boolean[],
      right: boolean[],
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertNotEq(string,string)"(
      left: string,
      right: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertNotEq(address[],address[],string)"(
      left: string[],
      right: string[],
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertNotEq(string,string,string)"(
      left: string,
      right: string,
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertNotEq(address,address,string)"(
      left: string,
      right: string,
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertNotEq(bytes32,bytes32)"(
      left: BytesLike,
      right: BytesLike,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertNotEq(bytes,bytes,string)"(
      left: BytesLike,
      right: BytesLike,
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertNotEq(uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertNotEq(uint256[],uint256[],string)"(
      left: BigNumberish[],
      right: BigNumberish[],
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertNotEq(address,address)"(
      left: string,
      right: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertNotEq(bytes32,bytes32,string)"(
      left: BytesLike,
      right: BytesLike,
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertNotEq(string[],string[],string)"(
      left: string[],
      right: string[],
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertNotEq(uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertNotEq(bytes32[],bytes32[],string)"(
      left: BytesLike[],
      right: BytesLike[],
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertNotEq(string[],string[])"(
      left: string[],
      right: string[],
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertNotEq(int256[],int256[],string)"(
      left: BigNumberish[],
      right: BigNumberish[],
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertNotEq(bytes[],bytes[])"(
      left: BytesLike[],
      right: BytesLike[],
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertNotEq(int256,int256)"(
      left: BigNumberish,
      right: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertNotEqDecimal(int256,int256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertNotEqDecimal(int256,int256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertNotEqDecimal(uint256,uint256,uint256)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertNotEqDecimal(uint256,uint256,uint256,string)"(
      left: BigNumberish,
      right: BigNumberish,
      decimals: BigNumberish,
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertTrue(bool)"(
      condition: boolean,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assertTrue(bool,string)"(
      condition: boolean,
      error: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    assume(
      condition: boolean,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assumeNoRevert()"(
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assumeNoRevert((address,bool,bytes)[])"(
      potentialReverts: VmSafe.PotentialRevertStruct[],
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "assumeNoRevert((address,bool,bytes))"(
      potentialRevert: VmSafe.PotentialRevertStruct,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    attachDelegation(
      signedDelegation: VmSafe.SignedDelegationStruct,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    "breakpoint(string)"(
      char: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "breakpoint(string,bool)"(
      char: string,
      value: boolean,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "broadcast()"(
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    "broadcast(address)"(
      signer: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    "broadcast(uint256)"(
      privateKey: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    broadcastRawTransaction(
      data: BytesLike,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    closeFile(
      path: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    "computeCreate2Address(bytes32,bytes32)"(
      salt: BytesLike,
      initCodeHash: BytesLike,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "computeCreate2Address(bytes32,bytes32,address)"(
      salt: BytesLike,
      initCodeHash: BytesLike,
      deployer: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    computeCreateAddress(
      deployer: string,
      nonce: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    contains(
      subject: string,
      search: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    copyFile(
      from: string,
      to: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    copyStorage(
      from: string,
      to: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    createDir(
      path: string,
      recursive: boolean,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    "createWallet(string)"(
      walletLabel: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    "createWallet(uint256)"(
      privateKey: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    "createWallet(uint256,string)"(
      privateKey: BigNumberish,
      walletLabel: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    "deployCode(string,bytes)"(
      artifactPath: string,
      constructorArgs: BytesLike,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    "deployCode(string)"(
      artifactPath: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    "deriveKey(string,string,uint32,string)"(
      mnemonic: string,
      derivationPath: string,
      index: BigNumberish,
      language: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "deriveKey(string,uint32,string)"(
      mnemonic: string,
      index: BigNumberish,
      language: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "deriveKey(string,uint32)"(
      mnemonic: string,
      index: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "deriveKey(string,string,uint32)"(
      mnemonic: string,
      derivationPath: string,
      index: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    ensNamehash(
      name: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "envAddress(string)"(
      name: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "envAddress(string,string)"(
      name: string,
      delim: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "envBool(string)"(
      name: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "envBool(string,string)"(
      name: string,
      delim: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "envBytes(string)"(
      name: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "envBytes(string,string)"(
      name: string,
      delim: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "envBytes32(string,string)"(
      name: string,
      delim: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "envBytes32(string)"(
      name: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    envExists(
      name: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "envInt(string,string)"(
      name: string,
      delim: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "envInt(string)"(
      name: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "envOr(string,string,bytes32[])"(
      name: string,
      delim: string,
      defaultValue: BytesLike[],
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "envOr(string,string,int256[])"(
      name: string,
      delim: string,
      defaultValue: BigNumberish[],
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "envOr(string,bool)"(
      name: string,
      defaultValue: boolean,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "envOr(string,address)"(
      name: string,
      defaultValue: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "envOr(string,uint256)"(
      name: string,
      defaultValue: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "envOr(string,string,bytes[])"(
      name: string,
      delim: string,
      defaultValue: BytesLike[],
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "envOr(string,string,uint256[])"(
      name: string,
      delim: string,
      defaultValue: BigNumberish[],
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "envOr(string,string,string[])"(
      name: string,
      delim: string,
      defaultValue: string[],
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "envOr(string,bytes)"(
      name: string,
      defaultValue: BytesLike,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "envOr(string,bytes32)"(
      name: string,
      defaultValue: BytesLike,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "envOr(string,int256)"(
      name: string,
      defaultValue: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "envOr(string,string,address[])"(
      name: string,
      delim: string,
      defaultValue: string[],
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "envOr(string,string)"(
      name: string,
      defaultValue: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "envOr(string,string,bool[])"(
      name: string,
      delim: string,
      defaultValue: boolean[],
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "envString(string,string)"(
      name: string,
      delim: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "envString(string)"(
      name: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "envUint(string)"(
      name: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "envUint(string,string)"(
      name: string,
      delim: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    eth_getLogs(
      fromBlock: BigNumberish,
      toBlock: BigNumberish,
      target: string,
      topics: BytesLike[],
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    exists(
      path: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    ffi(
      commandInput: string[],
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    foundryVersionAtLeast(
      version: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    foundryVersionCmp(
      version: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    fsMetadata(
      path: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    getArtifactPathByCode(
      code: BytesLike,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    getArtifactPathByDeployedCode(
      deployedCode: BytesLike,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    getBlobBaseFee(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    getBlockNumber(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    getBlockTimestamp(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    getBroadcast(
      contractName: string,
      chainId: BigNumberish,
      txType: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "getBroadcasts(string,uint64)"(
      contractName: string,
      chainId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "getBroadcasts(string,uint64,uint8)"(
      contractName: string,
      chainId: BigNumberish,
      txType: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    getCode(
      artifactPath: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    getDeployedCode(
      artifactPath: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "getDeployment(string,uint64)"(
      contractName: string,
      chainId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "getDeployment(string)"(
      contractName: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    getDeployments(
      contractName: string,
      chainId: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    getFoundryVersion(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    getLabel(
      account: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    getMappingKeyAndParentOf(
      target: string,
      elementSlot: BytesLike,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    getMappingLength(
      target: string,
      mappingSlot: BytesLike,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    getMappingSlotAt(
      target: string,
      mappingSlot: BytesLike,
      idx: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    "getNonce(address)"(
      account: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "getNonce((address,uint256,uint256,uint256))"(
      wallet: VmSafe.WalletStruct,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    getRecordedLogs(
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    getStateDiff(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    getStateDiffJson(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    getWallets(
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    indexOf(
      input: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    isContext(
      context: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    isDir(
      path: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    isFile(
      path: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    keyExists(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    keyExistsJson(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    keyExistsToml(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    label(
      account: string,
      newLabel: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    lastCallGas(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    load(
      target: string,
      slot: BytesLike,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    parseAddress(
      stringifiedValue: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    parseBool(
      stringifiedValue: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    parseBytes(
      stringifiedValue: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    parseBytes32(
      stringifiedValue: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    parseInt(
      stringifiedValue: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "parseJson(string)"(
      json: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "parseJson(string,string)"(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    parseJsonAddress(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    parseJsonAddressArray(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    parseJsonBool(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    parseJsonBoolArray(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    parseJsonBytes(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    parseJsonBytes32(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    parseJsonBytes32Array(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    parseJsonBytesArray(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    parseJsonInt(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    parseJsonIntArray(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    parseJsonKeys(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    parseJsonString(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    parseJsonStringArray(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "parseJsonType(string,string)"(
      json: string,
      typeDescription: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "parseJsonType(string,string,string)"(
      json: string,
      key: string,
      typeDescription: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    parseJsonTypeArray(
      json: string,
      key: string,
      typeDescription: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    parseJsonUint(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    parseJsonUintArray(
      json: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "parseToml(string,string)"(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "parseToml(string)"(
      toml: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    parseTomlAddress(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    parseTomlAddressArray(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    parseTomlBool(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    parseTomlBoolArray(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    parseTomlBytes(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    parseTomlBytes32(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    parseTomlBytes32Array(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    parseTomlBytesArray(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    parseTomlInt(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    parseTomlIntArray(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    parseTomlKeys(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    parseTomlString(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    parseTomlStringArray(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "parseTomlType(string,string)"(
      toml: string,
      typeDescription: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "parseTomlType(string,string,string)"(
      toml: string,
      key: string,
      typeDescription: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    parseTomlTypeArray(
      toml: string,
      key: string,
      typeDescription: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    parseTomlUint(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    parseTomlUintArray(
      toml: string,
      key: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    parseUint(
      stringifiedValue: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    pauseGasMetering(
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    pauseTracing(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    projectRoot(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    prompt(
      promptText: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    promptAddress(
      promptText: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    promptSecret(
      promptText: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    promptSecretUint(
      promptText: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    promptUint(
      promptText: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    publicKeyP256(
      privateKey: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    randomAddress(
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    randomBool(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    randomBytes(
      len: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    randomBytes4(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    randomBytes8(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    "randomInt()"(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    "randomInt(uint256)"(
      bits: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "randomUint()"(
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    "randomUint(uint256)"(
      bits: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "randomUint(uint256,uint256)"(
      min: BigNumberish,
      max: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    "readDir(string,uint64)"(
      path: string,
      maxDepth: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "readDir(string,uint64,bool)"(
      path: string,
      maxDepth: BigNumberish,
      followLinks: boolean,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "readDir(string)"(
      path: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    readFile(
      path: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    readFileBinary(
      path: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    readLine(
      path: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    readLink(
      linkPath: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    record(
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    recordLogs(
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    rememberKey(
      privateKey: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    "rememberKeys(string,string,uint32)"(
      mnemonic: string,
      derivationPath: string,
      count: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    "rememberKeys(string,string,string,uint32)"(
      mnemonic: string,
      derivationPath: string,
      language: string,
      count: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    removeDir(
      path: string,
      recursive: boolean,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    removeFile(
      path: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    replace(
      input: string,
      from: string,
      to: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    resetGasMetering(
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    resumeGasMetering(
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    resumeTracing(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    "rpc(string,string,string)"(
      urlOrAlias: string,
      method: string,
      params: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    "rpc(string,string)"(
      method: string,
      params: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    rpcUrl(
      rpcAlias: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    rpcUrlStructs(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    rpcUrls(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    "serializeAddress(string,string,address[])"(
      objectKey: string,
      valueKey: string,
      values: string[],
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    "serializeAddress(string,string,address)"(
      objectKey: string,
      valueKey: string,
      value: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    "serializeBool(string,string,bool[])"(
      objectKey: string,
      valueKey: string,
      values: boolean[],
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    "serializeBool(string,string,bool)"(
      objectKey: string,
      valueKey: string,
      value: boolean,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    "serializeBytes(string,string,bytes[])"(
      objectKey: string,
      valueKey: string,
      values: BytesLike[],
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    "serializeBytes(string,string,bytes)"(
      objectKey: string,
      valueKey: string,
      value: BytesLike,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    "serializeBytes32(string,string,bytes32[])"(
      objectKey: string,
      valueKey: string,
      values: BytesLike[],
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    "serializeBytes32(string,string,bytes32)"(
      objectKey: string,
      valueKey: string,
      value: BytesLike,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    "serializeInt(string,string,int256)"(
      objectKey: string,
      valueKey: string,
      value: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    "serializeInt(string,string,int256[])"(
      objectKey: string,
      valueKey: string,
      values: BigNumberish[],
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    serializeJson(
      objectKey: string,
      value: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    "serializeJsonType(string,bytes)"(
      typeDescription: string,
      value: BytesLike,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "serializeJsonType(string,string,string,bytes)"(
      objectKey: string,
      valueKey: string,
      typeDescription: string,
      value: BytesLike,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    "serializeString(string,string,string[])"(
      objectKey: string,
      valueKey: string,
      values: string[],
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    "serializeString(string,string,string)"(
      objectKey: string,
      valueKey: string,
      value: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    "serializeUint(string,string,uint256)"(
      objectKey: string,
      valueKey: string,
      value: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    "serializeUint(string,string,uint256[])"(
      objectKey: string,
      valueKey: string,
      values: BigNumberish[],
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    serializeUintToHex(
      objectKey: string,
      valueKey: string,
      value: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    setArbitraryStorage(
      target: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    setEnv(
      name: string,
      value: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    "sign(bytes32)"(
      digest: BytesLike,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "sign(address,bytes32)"(
      signer: string,
      digest: BytesLike,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "sign((address,uint256,uint256,uint256),bytes32)"(
      wallet: VmSafe.WalletStruct,
      digest: BytesLike,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    "sign(uint256,bytes32)"(
      privateKey: BigNumberish,
      digest: BytesLike,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    signAndAttachDelegation(
      implementation: string,
      privateKey: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    "signCompact((address,uint256,uint256,uint256),bytes32)"(
      wallet: VmSafe.WalletStruct,
      digest: BytesLike,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    "signCompact(address,bytes32)"(
      signer: string,
      digest: BytesLike,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "signCompact(bytes32)"(
      digest: BytesLike,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "signCompact(uint256,bytes32)"(
      privateKey: BigNumberish,
      digest: BytesLike,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    signDelegation(
      implementation: string,
      privateKey: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    signP256(
      privateKey: BigNumberish,
      digest: BytesLike,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    sleep(
      duration: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    split(
      input: string,
      delimiter: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "startBroadcast()"(
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    "startBroadcast(address)"(
      signer: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    "startBroadcast(uint256)"(
      privateKey: BigNumberish,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    startDebugTraceRecording(
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    startMappingRecording(
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    startStateDiffRecording(
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    stopAndReturnDebugTraceRecording(
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    stopAndReturnStateDiff(
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    stopBroadcast(
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    stopMappingRecording(
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    "toBase64(string)"(
      data: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "toBase64(bytes)"(
      data: BytesLike,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "toBase64URL(string)"(
      data: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "toBase64URL(bytes)"(
      data: BytesLike,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    toLowercase(
      input: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "toString(address)"(
      value: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "toString(uint256)"(
      value: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "toString(bytes)"(
      value: BytesLike,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "toString(bool)"(
      value: boolean,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "toString(int256)"(
      value: BigNumberish,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    "toString(bytes32)"(
      value: BytesLike,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    toUppercase(
      input: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    trim(
      input: string,
      overrides?: CallOverrides
    ): Promise<PopulatedTransaction>;

    tryFfi(
      commandInput: string[],
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    unixTime(overrides?: CallOverrides): Promise<PopulatedTransaction>;

    writeFile(
      path: string,
      data: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    writeFileBinary(
      path: string,
      data: BytesLike,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    "writeJson(string,string,string)"(
      json: string,
      path: string,
      valueKey: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    "writeJson(string,string)"(
      json: string,
      path: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    writeLine(
      path: string,
      data: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    "writeToml(string,string,string)"(
      json: string,
      path: string,
      valueKey: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;

    "writeToml(string,string)"(
      json: string,
      path: string,
      overrides?: Overrides & { from?: string }
    ): Promise<PopulatedTransaction>;
  };
}
