[
  {
    "constant":true,
    "inputs":[],
    "name":"transferProxyInstance",
    "outputs":[{"name":"","type":"address"}],
    "payable":false,
    "stateMutability":"view",
    "type":"function"
  },
  {
    "constant":true,
    "inputs":[],
    "name":"exchangeIssuanceModuleInstance",
    "outputs":[{"name":"","type":"address"}],
    "payable":false,
    "stateMutability":"view",
    "type":"function"
  },
  {
    "constant":true,
    "inputs":[],
    "name":"vaultInstance",
    "outputs":[{"name":"","type":"address"}],
    "payable":false,
    "stateMutability":"view",
    "type":"function"
  },
  {
    "constant":true,
    "inputs":[],
    "name":"wethInstance",
    "outputs":[{"name":"","type":"address"}],
    "payable":false,
    "stateMutability":"view",
    "type":"function"
  },
  {
    "constant":true,
    "inputs":[],
    "name":"coreInstance",
    "outputs":[{"name":"","type":"address"}],
    "payable":false,
    "stateMutability":"view",
    "type":"function"
  },
  {
    "inputs":[
      {"name":"_core","type":"address"},
      {"name":"_transferProxy","type":"address"},
      {"name":"_exchangeIssuanceModule","type":"address"},
      {"name":"_wrappedEther","type":"address"},
      {"name":"_vault","type":"address"}
    ],
    "payable":false,
    "stateMutability":"nonpayable",
    "type":"constructor"
  },
  {"payable":true,"stateMutability":"payable","type":"fallback"},
  {
    "anonymous":false,
    "inputs":[
      {"indexed":true,"name":"rebalancingSetAddress","type":"address"},
      {"indexed":true,"name":"callerAddress","type":"address"},
      {"indexed":false,"name":"paymentTokenAddress","type":"address"},
      {"indexed":false,"name":"rebalancingSetQuantity","type":"uint256"},
      {"indexed":false,"name":"paymentTokenReturned","type":"uint256"}
    ],
    "name":"LogPayableExchangeIssue",
    "type":"event"
  },
  {
    "anonymous":false,
    "inputs":[
      {"indexed":true,"name":"rebalancingSetAddress","type":"address"},
      {"indexed":true,"name":"callerAddress","type":"address"},
      {"indexed":false,"name":"outputTokenAddress","type":"address"},
      {"indexed":false,"name":"rebalancingSetQuantity","type":"uint256"},
      {"indexed":false,"name":"outputTokenQuantity","type":"uint256"}
    ],
    "name":"LogPayableExchangeRedeem",
    "type":"event"
  },
  {
    "constant":false,
    "inputs":[
      {"name":"_rebalancingSetAddress","type":"address"},
      {"name":"_rebalancingSetQuantity","type":"uint256"},
      {
        "components":[
          {"name":"setAddress","type":"address"},
          {"name":"quantity","type":"uint256"},
          {"name":"sendTokenExchangeIds","type":"uint8[]"},
          {"name":"sendTokens","type":"address[]"},
          {"name":"sendTokenAmounts","type":"uint256[]"},
          {"name":"receiveTokens","type":"address[]"},
          {"name":"receiveTokenAmounts","type":"uint256[]"}
        ],
        "name":"_exchangeIssuanceParams",
        "type":"tuple"
      },
      {"name":"_orderData","type":"bytes"},
      {"name":"_keepChangeInVault","type":"bool"}
    ],
    "name":"issueRebalancingSetWithEther",
    "outputs":[],
    "payable":true,
    "stateMutability":"payable",
    "type":"function"
  },
  {
    "constant":false,
    "inputs":[
      {"name":"_rebalancingSetAddress","type":"address"},
      {"name":"_rebalancingSetQuantity","type":"uint256"},
      {"name":"_paymentTokenAddress","type":"address"},
      {"name":"_paymentTokenQuantity","type":"uint256"},
      {
        "components":[
          {"name":"setAddress","type":"address"},
          {"name":"quantity","type":"uint256"},
          {"name":"sendTokenExchangeIds","type":"uint8[]"},
          {"name":"sendTokens","type":"address[]"},
          {"name":"sendTokenAmounts","type":"uint256[]"},
          {"name":"receiveTokens","type":"address[]"},
          {"name":"receiveTokenAmounts","type":"uint256[]"}
        ],
        "name":"_exchangeIssuanceParams",
        "type":"tuple"
      },
      {"name":"_orderData","type":"bytes"},
      {"name":"_keepChangeInVault","type":"bool"}
    ],
    "name":"issueRebalancingSetWithERC20",
    "outputs":[],
    "payable":false,
    "stateMutability":"nonpayable",
    "type":"function"
  },
  {
    "constant":false,
    "inputs":[
      {"name":"_rebalancingSetAddress","type":"address"},
      {"name":"_rebalancingSetQuantity","type":"uint256"},
      {
        "components":[
          {"name":"setAddress","type":"address"},
          {"name":"quantity","type":"uint256"},
          {"name":"sendTokenExchangeIds","type":"uint8[]"},
          {"name":"sendTokens","type":"address[]"},
          {"name":"sendTokenAmounts","type":"uint256[]"},
          {"name":"receiveTokens","type":"address[]"},
          {"name":"receiveTokenAmounts","type":"uint256[]"}
        ],
        "name":"_exchangeIssuanceParams",
        "type":"tuple"
      },
      {"name":"_orderData","type":"bytes"},
      {"name":"_keepChangeInVault","type":"bool"}
    ],
    "name":"redeemRebalancingSetIntoEther",
    "outputs":[],
    "payable":false,
    "stateMutability":"nonpayable",
    "type":"function"
  },
  {
    "constant":false,
    "inputs":[
      {"name":"_rebalancingSetAddress","type":"address"},
      {"name":"_rebalancingSetQuantity","type":"uint256"},
      {"name":"_outputTokenAddress","type":"address"},
      {
        "components":[
          {"name":"setAddress","type":"address"},
          {"name":"quantity","type":"uint256"},
          {"name":"sendTokenExchangeIds","type":"uint8[]"},
          {"name":"sendTokens","type":"address[]"},
          {"name":"sendTokenAmounts","type":"uint256[]"},
          {"name":"receiveTokens","type":"address[]"},
          {"name":"receiveTokenAmounts","type":"uint256[]"}
        ],
        "name":"_exchangeIssuanceParams",
        "type":"tuple"
      },
      {"name":"_orderData","type":"bytes"},
      {"name":"_keepChangeInVault","type":"bool"}
    ],
    "name":"redeemRebalancingSetIntoERC20",
    "outputs":[],
    "payable":false,
    "stateMutability":"nonpayable",
    "type":"function"
  }
]
