_section: Fragments Explain an ABI. _subsection: Formats _heading: JSON String ABI (Solidity Output JSON) The **JSON ABI Format** is the format that is [output from the Solidity compiler](link-solc-output). A JSON serialized object is always a string, which represents an Array of Objects, where each Object has various properties describing the [[abi-fragment]] of the ABI. The deserialied JSON string (which is a normal JavaScript Object) may also be passed into any function which accepts a JSON String ABI. _heading: Humanb-Readable ABI The Human-Readable ABI was [article](link-ricmoo-humanreadableabi) _heading: Output Formats @ @SRC Each [[abi-fragment]] and [[abi-paramtype]] may be output using its ``format`` method. _property: ethers.utils.FragmentTypes.full => string This is a full human-readable string, including all parameter names, any optional modifiers (e.g. ``indexed``, ``public``, etc) and white-space to aid in human readabiliy. _property: ethers.utils.FragmentTypes.minimal => string This is similar to ``full``, except with no unnecessary whitespace or parameter names. This is useful for storing a minimal string which can still fully reconstruct the original Fragment using [Fragment . from](abi-fragment-from). _property: ethers.utils.FragmentTypes.json => string This returns a JavaScript Object which is safe to call ``JSON.stringify`` on to create a JSON string. _property: ethers.utils.FragmentTypes.sighash => string This is a minimal output format, which is used by Solidity when computing a signature hash or an event topic hash. _warning: Note The ``sighash`` format is **insufficient** to re-create the original [[abi-fragment]], since it discards modifiers such as indexed, anonymous, stateMutability, etc. _subsection: Fragment @ @SRC An ABI is a collection of **Fragments**, where each fragment specifies: - An [Event](abi-eventfragment) - A [Function](abi-functionfragment) - A [Constructor](abi-constructorfragment) _heading: Properties _property: fragment.name => string This is the name of the Event or Function. This will be null for a [[abi-constructorfragment]]. _property: fragment.type => string This is a string which indicates the type of the [[abi-fragment]]. This will be one of: - ``constructor`` - ``event`` - ``function`` _property: fragment.inputs => Array<[[abi-paramtype]]> This is an array of of each [[abi-paramtype]] for the input parameters to the Constructor, Event of Function. _heading: Methods _property: ethers.utils.Fragment.from(objectOrString) => [[abi-fragment]] @ @SRC Returns a _property: ethers.utils.Fragment.isFragment(object) => boolean @ @SRC Tra lal al _subsection: ConstructorFragment @ @INHERIT<[[abi-fragment]]> @SRC _heading: Properties _property: fragment.gas => [[bignumber]] This is the gas limit that should be used during deployment. It may be null. _property: fragment.payable => boolean This is whether the constructor may receive ether during deployment as an endowment (i.e. msg.value != 0). _property: fragment.stateMutability => string This is the state mutability of the constructor. It can be any of: - ``nonpayable`` - ``payable`` _heading: Methods _property: ethers.utils.ConstructorFragment.from(objectOrString) => [[abi-constructorfragment]] @ @SRC Tra la la... _property: ethers.utils.ConstructorFragment.isConstructorFragment(object) => boolean @ @SRC Tra lal al _subsection: EventFragment @ @INHERIT<[[abi-fragment]]> @SRC _heading: Properties _property: fragment.anonymous => boolean This is whether the event is anonymous. An anonymous Event does not inject its topic hash as topic0 when creating a log. _heading: Methods _property: ethers.utils.EventFragment.from(objectOrString) => [[abi-eventfragment]] @ @SRC Tra la la... _property: ethers.utils.EventFragment.isEventFragment(object) => boolean @ @SRC Tra lal al _subsection: FunctionFragment @ @INHERIT<[[abi-constructorfragment]]> @SRC _heading: Properties _property: fragment.constant => boolean This is whether the function is constant (i.e. does not change state). This is true if the state mutability is ``pure`` or ``view``. _property: fragment.stateMutability => string This is the state mutability of the constructor. It can be any of: - ``nonpayable`` - ``payable`` - ``pure`` - ``view`` _property: fragment.outputs => Array<[[abi-paramtype]]> A list of the Function output parameters. _heading: Method _property: ethers.utils.FunctionFragment.from(objectOrString) => [[abi-functionfragment]] @ @SRC Tra la la... _property: ethers.utils.FunctionFragment.isFunctionFragment(object) => boolean @ @SRC Tra lal al _subsection: ParamType @ @SRC The following examples will represent the Solidity parameter: ``string foobar`` _heading: Properties _property: paramType.name => string @ The local parameter name. This may be null for unnamed parameters. For example, the parameter definition ``string foobar`` would be ``foobar``. _property: paramType.type => string @ The full type of the parameter, including tuple and array symbols. This may be null for unnamed parameters. For the above example, this would be ``foobar``. _property: paramType.basetype => string @ The base type of the parameter. For primitive types (e.g. ``address``, ``uint256``, etc) this is equal to [type](abi-paramtype-type). For arrays, it will be the string ``array`` and for a tuple, it will be the string ``tuple``. _property: paramType.indexed => boolean @ Whether the parameter has been marked as indexed. This **only** applies to parameters which are part of an [[abi-eventfragment]]. _property: paramType.arrayChildren => [[abi-paramtype]] @ The type of children of the array. This is null for for any parameter wjhich is not an array. _property: paramType.arrayLength => number @ The length of the array, or ``-1`` for dynamic-length arrays. This is null for parameters which is not arrays. _property: paramType.components => Array<[[abi-paramtype]]> @ The components of a tuple. This is null for non-tuple parameters. _heading: Methods Tra la la... _property: paramType.format([ outputType = sighash ]) Tra la la... _property: ethers.utils.ParamType.from(objectOrString) => [[abi-paramtype]] @ @SRC Tra la la... _property: ethers.utils.ParamType.isParamType(object) => boolean @ @SRC Tra la la...