Expand description

Generated by the following Solidity interface…

interface ZeroXTransformERC20Feature {
    struct TransformERC20Args {
        address payable taker;
        address inputToken;
        address outputToken;
        uint256 inputTokenAmount;
        uint256 minOutputTokenAmount;
        Transformation[] transformations;
        bool useSelfBalance;
        address payable recipient;
    }
    struct Transformation {
        uint32 deploymentNonce;
        bytes data;
    }

    event QuoteSignerUpdated(address quoteSigner);
    event TransformedERC20(address indexed taker, address inputToken, address outputToken, uint256 inputTokenAmount, uint256 outputTokenAmount);
    event TransformerDeployerUpdated(address transformerDeployer);

    function FEATURE_NAME() external view returns (string memory);
    function FEATURE_VERSION() external view returns (uint256);
    function _transformERC20(TransformERC20Args memory args) external payable returns (uint256 outputTokenAmount);
    function createTransformWallet() external returns (address wallet);
    function getQuoteSigner() external view returns (address signer);
    function getTransformWallet() external view returns (address wallet);
    function getTransformerDeployer() external view returns (address deployer);
    function migrate(address transformerDeployer) external returns (bytes4 success);
    function setQuoteSigner(address quoteSigner) external;
    function setTransformerDeployer(address transformerDeployer) external;
    function transformERC20(address inputToken, address outputToken, uint256 inputTokenAmount, uint256 minOutputTokenAmount, Transformation[] memory transformations) external payable returns (uint256 outputTokenAmount);
}

…which was generated by the following JSON ABI:

[
  {
    "type": "function",
    "name": "FEATURE_NAME",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "string",
        "internalType": "string"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "FEATURE_VERSION",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "_transformERC20",
    "inputs": [
      {
        "name": "args",
        "type": "tuple",
        "internalType": "struct ITransformERC20Feature.TransformERC20Args",
        "components": [
          {
            "name": "taker",
            "type": "address",
            "internalType": "address payable"
          },
          {
            "name": "inputToken",
            "type": "address",
            "internalType": "contract IERC20Token"
          },
          {
            "name": "outputToken",
            "type": "address",
            "internalType": "contract IERC20Token"
          },
          {
            "name": "inputTokenAmount",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "minOutputTokenAmount",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "transformations",
            "type": "tuple[]",
            "internalType": "struct ITransformERC20Feature.Transformation[]",
            "components": [
              {
                "name": "deploymentNonce",
                "type": "uint32",
                "internalType": "uint32"
              },
              {
                "name": "data",
                "type": "bytes",
                "internalType": "bytes"
              }
            ]
          },
          {
            "name": "useSelfBalance",
            "type": "bool",
            "internalType": "bool"
          },
          {
            "name": "recipient",
            "type": "address",
            "internalType": "address payable"
          }
        ]
      }
    ],
    "outputs": [
      {
        "name": "outputTokenAmount",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "createTransformWallet",
    "inputs": [],
    "outputs": [
      {
        "name": "wallet",
        "type": "address",
        "internalType": "contract IFlashWallet"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "getQuoteSigner",
    "inputs": [],
    "outputs": [
      {
        "name": "signer",
        "type": "address",
        "internalType": "address"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "getTransformWallet",
    "inputs": [],
    "outputs": [
      {
        "name": "wallet",
        "type": "address",
        "internalType": "contract IFlashWallet"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "getTransformerDeployer",
    "inputs": [],
    "outputs": [
      {
        "name": "deployer",
        "type": "address",
        "internalType": "address"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "migrate",
    "inputs": [
      {
        "name": "transformerDeployer",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [
      {
        "name": "success",
        "type": "bytes4",
        "internalType": "bytes4"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "setQuoteSigner",
    "inputs": [
      {
        "name": "quoteSigner",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "setTransformerDeployer",
    "inputs": [
      {
        "name": "transformerDeployer",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "transformERC20",
    "inputs": [
      {
        "name": "inputToken",
        "type": "address",
        "internalType": "contract IERC20Token"
      },
      {
        "name": "outputToken",
        "type": "address",
        "internalType": "contract IERC20Token"
      },
      {
        "name": "inputTokenAmount",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "minOutputTokenAmount",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "transformations",
        "type": "tuple[]",
        "internalType": "struct ITransformERC20Feature.Transformation[]",
        "components": [
          {
            "name": "deploymentNonce",
            "type": "uint32",
            "internalType": "uint32"
          },
          {
            "name": "data",
            "type": "bytes",
            "internalType": "bytes"
          }
        ]
      }
    ],
    "outputs": [
      {
        "name": "outputTokenAmount",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "payable"
  },
  {
    "type": "event",
    "name": "QuoteSignerUpdated",
    "inputs": [
      {
        "name": "quoteSigner",
        "type": "address",
        "indexed": false,
        "internalType": "address"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "TransformedERC20",
    "inputs": [
      {
        "name": "taker",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "inputToken",
        "type": "address",
        "indexed": false,
        "internalType": "address"
      },
      {
        "name": "outputToken",
        "type": "address",
        "indexed": false,
        "internalType": "address"
      },
      {
        "name": "inputTokenAmount",
        "type": "uint256",
        "indexed": false,
        "internalType": "uint256"
      },
      {
        "name": "outputTokenAmount",
        "type": "uint256",
        "indexed": false,
        "internalType": "uint256"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "TransformerDeployerUpdated",
    "inputs": [
      {
        "name": "transformerDeployer",
        "type": "address",
        "indexed": false,
        "internalType": "address"
      }
    ],
    "anonymous": false
  }
]

Structs§

Enums§