forge bind-json

Generate bindings for serialization/deserialization of project structs via JSON cheatcodes

$ forge bind-json --help
Usage: forge bind-json [OPTIONS] [PATH]

Arguments:
  [PATH]
          The path to write bindings to

Options:
  -h, --help
          Print help (see a summary with '-h')

Cache options:
      --force
          Clear the cache and artifacts folder and recompile

Build options:
      --no-cache
          Disable the cache

      --skip <SKIP>...
          Skip building files whose names contain the given filter.
          
          `test` and `script` are aliases for `.t.sol` and `.s.sol`.

Linker options:
      --libraries <LIBRARIES>
          Set pre-linked libraries
          
          [env: DAPP_LIBRARIES=]

Compiler options:
      --ignored-error-codes <ERROR_CODES>
          Ignore solc warnings by error code

      --deny-warnings
          Warnings will trigger a compiler error

      --no-auto-detect
          Do not auto-detect the `solc` version

      --use <SOLC_VERSION>
          Specify the solc version, or a path to a local solc, to build with.
          
          Valid values are in the format `x.y.z`, `solc:x.y.z` or `path/to/solc`.

      --offline
          Do not access the network.
          
          Missing solc versions will not be installed.

      --via-ir
          Use the Yul intermediate representation compilation pipeline

      --no-metadata
          Do not append any metadata to the bytecode.
          
          This is equivalent to setting `bytecode_hash` to `none` and `cbor_metadata` to `false`.

      --silent
          Don't print anything on startup

      --ast
          Includes the AST as JSON in the compiler output

      --evm-version <VERSION>
          The target EVM version

      --optimize
          Activate the Solidity optimizer

      --optimizer-runs <RUNS>
          The number of optimizer runs

      --extra-output <SELECTOR>...
          Extra output to include in the contract's artifact.
          
          Example keys: evm.assembly, ewasm, ir, irOptimized, metadata
          
          For a full description, see <https://docs.soliditylang.org/en/v0.8.13/using-the-compiler.html#input-description>

      --extra-output-files <SELECTOR>...
          Extra output to write to separate files.
          
          Valid values: metadata, ir, irOptimized, ewasm, evm.assembly

Project options:
  -o, --out <PATH>
          The path to the contract artifacts folder

      --revert-strings <REVERT>
          Revert string configuration.
          
          Possible values are "default", "strip" (remove), "debug" (Solidity-generated revert strings) and "verboseDebug"

      --build-info
          Generate build info files

      --build-info-path <PATH>
          Output path to directory that build info files will be written to

      --root <PATH>
          The project's root path.
          
          By default root of the Git repository, if in one, or the current working directory.

  -C, --contracts <PATH>
          The contracts source directory

  -R, --remappings <REMAPPINGS>
          The project's remappings

      --remappings-env <ENV>
          The project's remappings from the environment

      --cache-path <PATH>
          The path to the compiler cache

      --lib-paths <PATH>
          The path to the library folder

      --hardhat
          Use the Hardhat-style project layout.
          
          This is the same as using: `--contracts contracts --lib-paths node_modules`.
          
          [aliases: hh]

      --config-path <FILE>
          Path to the config file

ZKSync configuration:
      --zk-startup[=<ENABLE_ZKVM_AT_STARTUP>]
          Enable zkVM at startup
          
          [aliases: zksync]
          [possible values: true, false]

      --zk-compile[=<COMPILE_FOR_ZKVM>]
          Compile for zkVM
          
          [possible values: true, false]

      --zk-solc-path <ZK_SOLC_PATH>
          Solc compiler path to use when compiling with zksolc

      --zk-enable-eravm-extensions[=<ENABLE_ERAVM_EXTENSIONS>]
          Enable the system contract compilation mode.
          
          [aliases: enable-eravm-extensions, system-mode]
          [possible values: true, false]

      --zk-force-evmla[=<FORCE_EVMLA>]
          Forcibly switch to the EVM legacy assembly pipeline.
          
          [aliases: force-evmla]
          [possible values: true, false]

      --zk-llvm-options <LLVM_OPTIONS>
          ZkSolc extra LLVM options

      --zk-fallback-oz[=<FALLBACK_OZ>]
          Try to recompile with -Oz if the bytecode is too large
          
          [aliases: fallback-oz]
          [possible values: true, false]

      --zk-detect-missing-libraries
          Detect missing libraries, instead of erroring
          
          Currently unused

  -O, --zk-optimizer-mode <LEVEL>
          Set the LLVM optimization parameter `-O[0 | 1 | 2 | 3 | s | z]`. Use `3` for best performance and `z` for minimal size
          
          [aliases: zk-optimization]

      --zk-optimizer
          Enables optimizations

      --zk-avoid-contracts <AVOID_CONTRACTS>
          Contracts to avoid compiling on zkSync
          
          [aliases: avoid-contracts]