Skip to content

maxme/abi2solidity

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

abi2solidity

Convert an ABI to a Solidity interface

Install

$ npm install --save abi2solidity
# OR
$ yarn add abi2solidity

If you want to use the cli, you can install it globally:

$ npm install --global abi2solidity
# OR
$ yarn global add abi2solidity

CLI Usage

$ abi2solidity -h
Usage: abi2solidity [options]

Options:
  -V, --version                  output the version number
  -i, --input <file>             JSON ABI Input file (default: "")
  -o, --output <file>            Solidity output file (default: "")
  -e, --header <string>          Set the header (default: "")
  -n, --interface-name <string>  Set the interface name (default: "GeneratedInterface")
  -h, --help                     display help for command

# Examples
$ abi2solidity -i abi.json -o export.sol
$ abi2solidity --header "" --interface-name McNulty < test/abi/SmolTest.abi
$ abi2solidity --header "" --interface-name McNulty < test/abi/SmolTest.abi
$ abi2solidity --header "`printf "// SPDX-License-Identifier: MIT\\npragma solidity >=0.1.0 <0.9.0;\n "`" --interface-name McNulty < test/abi/SmolTest.abi

Code Usage

import ABI2solidity from "abi2solidity";

const ABI = `
[
  {
    "constant": false,
    "inputs": [],
    "name": "f",
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "payable": false,
    "stateMutability": "nonpayable",
    "type": "function"
  }
]
`;

const solidity = ABI2solidity(ABI);
console.log(solidity);
// Will print out:
// interface GeneratedInterface {
//   function f (  ) external returns ( uint256 );
// }

Alternative usage with files:

import { ABI2solidityFiles } from "abi2solidity";

ABI2solidityFiles(inputFileABI, outputFileSolidity);

Development

Run tests

$ yarn test

License

MIT

About

Convert an ABI to a solidity interface

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published