UNPKG

@dolomite-exchange/dolomite-margin

Version:

Ethereum Smart Contracts and TypeScript library used for the DolomiteMargin trading protocol

796 lines 181 kB
{ "contractName": "IEventEmitterRegistry", "abi": [ { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "borrower", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "borrowAccountNumber", "type": "uint256" } ], "name": "BorrowPositionOpen", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "accountOwner", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "accountNumber", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "inputToken", "type": "address" }, { "indexed": false, "internalType": "address", "name": "outputToken", "type": "address" }, { "indexed": false, "internalType": "address", "name": "withdrawalToken", "type": "address" }, { "components": [ { "components": [ { "internalType": "bool", "name": "sign", "type": "bool" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "internalType": "struct Types.Wei", "name": "deltaWei", "type": "tuple" }, { "components": [ { "internalType": "bool", "name": "sign", "type": "bool" }, { "internalType": "uint128", "name": "value", "type": "uint128" } ], "internalType": "struct Types.Par", "name": "newPar", "type": "tuple" } ], "indexed": false, "internalType": "struct Events.BalanceUpdate", "name": "inputBalanceUpdate", "type": "tuple" }, { "components": [ { "components": [ { "internalType": "bool", "name": "sign", "type": "bool" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "internalType": "struct Types.Wei", "name": "deltaWei", "type": "tuple" }, { "components": [ { "internalType": "bool", "name": "sign", "type": "bool" }, { "internalType": "uint128", "name": "value", "type": "uint128" } ], "internalType": "struct Types.Par", "name": "newPar", "type": "tuple" } ], "indexed": false, "internalType": "struct Events.BalanceUpdate", "name": "outputBalanceUpdate", "type": "tuple" }, { "components": [ { "components": [ { "internalType": "bool", "name": "sign", "type": "bool" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "internalType": "struct Types.Wei", "name": "deltaWei", "type": "tuple" }, { "components": [ { "internalType": "bool", "name": "sign", "type": "bool" }, { "internalType": "uint128", "name": "value", "type": "uint128" } ], "internalType": "struct Types.Par", "name": "newPar", "type": "tuple" } ], "indexed": false, "internalType": "struct Events.BalanceUpdate", "name": "marginWithdrawalUpdate", "type": "tuple" } ], "name": "MarginPositionClose", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "accountOwner", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "accountNumber", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "inputToken", "type": "address" }, { "indexed": false, "internalType": "address", "name": "outputToken", "type": "address" }, { "indexed": false, "internalType": "address", "name": "depositToken", "type": "address" }, { "components": [ { "components": [ { "internalType": "bool", "name": "sign", "type": "bool" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "internalType": "struct Types.Wei", "name": "deltaWei", "type": "tuple" }, { "components": [ { "internalType": "bool", "name": "sign", "type": "bool" }, { "internalType": "uint128", "name": "value", "type": "uint128" } ], "internalType": "struct Types.Par", "name": "newPar", "type": "tuple" } ], "indexed": false, "internalType": "struct Events.BalanceUpdate", "name": "inputBalanceUpdate", "type": "tuple" }, { "components": [ { "components": [ { "internalType": "bool", "name": "sign", "type": "bool" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "internalType": "struct Types.Wei", "name": "deltaWei", "type": "tuple" }, { "components": [ { "internalType": "bool", "name": "sign", "type": "bool" }, { "internalType": "uint128", "name": "value", "type": "uint128" } ], "internalType": "struct Types.Par", "name": "newPar", "type": "tuple" } ], "indexed": false, "internalType": "struct Events.BalanceUpdate", "name": "outputBalanceUpdate", "type": "tuple" }, { "components": [ { "components": [ { "internalType": "bool", "name": "sign", "type": "bool" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "internalType": "struct Types.Wei", "name": "deltaWei", "type": "tuple" }, { "components": [ { "internalType": "bool", "name": "sign", "type": "bool" }, { "internalType": "uint128", "name": "value", "type": "uint128" } ], "internalType": "struct Types.Par", "name": "newPar", "type": "tuple" } ], "indexed": false, "internalType": "struct Events.BalanceUpdate", "name": "marginDepositUpdate", "type": "tuple" } ], "name": "MarginPositionOpen", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "accountOwner", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "accountNumber", "type": "uint256" }, { "indexed": false, "internalType": "uint256[]", "name": "marketIdsPath", "type": "uint256[]" }, { "components": [ { "internalType": "enum IGenericTraderProxyBase.TraderType", "name": "traderType", "type": "uint8" }, { "internalType": "uint256", "name": "makerAccountIndex", "type": "uint256" }, { "internalType": "address", "name": "trader", "type": "address" }, { "internalType": "bytes", "name": "tradeData", "type": "bytes" } ], "indexed": false, "internalType": "struct IGenericTraderProxyBase.TraderParam[]", "name": "tradersPath", "type": "tuple[]" } ], "name": "ZapExecuted", "type": "event" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "_accountOwner", "type": "address" }, { "internalType": "uint256", "name": "_accountNumber", "type": "uint256" }, { "internalType": "uint256[]", "name": "_marketIdsPath", "type": "uint256[]" }, { "components": [ { "internalType": "enum IGenericTraderProxyBase.TraderType", "name": "traderType", "type": "uint8" }, { "internalType": "uint256", "name": "makerAccountIndex", "type": "uint256" }, { "internalType": "address", "name": "trader", "type": "address" }, { "internalType": "bytes", "name": "tradeData", "type": "bytes" } ], "internalType": "struct IGenericTraderProxyBase.TraderParam[]", "name": "_tradersPath", "type": "tuple[]" } ], "name": "emitZapExecuted", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "_accountOwner", "type": "address" }, { "internalType": "uint256", "name": "_accountNumber", "type": "uint256" } ], "name": "emitBorrowPositionOpen", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "_accountOwner", "type": "address" }, { "internalType": "uint256", "name": "_accountNumber", "type": "uint256" }, { "internalType": "address", "name": "_inputToken", "type": "address" }, { "internalType": "address", "name": "_outputToken", "type": "address" }, { "internalType": "address", "name": "_depositToken", "type": "address" }, { "components": [ { "components": [ { "internalType": "bool", "name": "sign", "type": "bool" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "internalType": "struct Types.Wei", "name": "deltaWei", "type": "tuple" }, { "components": [ { "internalType": "bool", "name": "sign", "type": "bool" }, { "internalType": "uint128", "name": "value", "type": "uint128" } ], "internalType": "struct Types.Par", "name": "newPar", "type": "tuple" } ], "internalType": "struct Events.BalanceUpdate", "name": "_inputBalanceUpdate", "type": "tuple" }, { "components": [ { "components": [ { "internalType": "bool", "name": "sign", "type": "bool" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "internalType": "struct Types.Wei", "name": "deltaWei", "type": "tuple" }, { "components": [ { "internalType": "bool", "name": "sign", "type": "bool" }, { "internalType": "uint128", "name": "value", "type": "uint128" } ], "internalType": "struct Types.Par", "name": "newPar", "type": "tuple" } ], "internalType": "struct Events.BalanceUpdate", "name": "_outputBalanceUpdate", "type": "tuple" }, { "components": [ { "components": [ { "internalType": "bool", "name": "sign", "type": "bool" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "internalType": "struct Types.Wei", "name": "deltaWei", "type": "tuple" }, { "components": [ { "internalType": "bool", "name": "sign", "type": "bool" }, { "internalType": "uint128", "name": "value", "type": "uint128" } ], "internalType": "struct Types.Par", "name": "newPar", "type": "tuple" } ], "internalType": "struct Events.BalanceUpdate", "name": "_marginDepositUpdate", "type": "tuple" } ], "name": "emitMarginPositionOpen", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "_accountOwner", "type": "address" }, { "internalType": "uint256", "name": "_accountNumber", "type": "uint256" }, { "internalType": "address", "name": "_inputToken", "type": "address" }, { "internalType": "address", "name": "_outputToken", "type": "address" }, { "internalType": "address", "name": "_withdrawalToken", "type": "address" }, { "components": [ { "components": [ { "internalType": "bool", "name": "sign", "type": "bool" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "internalType": "struct Types.Wei", "name": "deltaWei", "type": "tuple" }, { "components": [ { "internalType": "bool", "name": "sign", "type": "bool" }, { "internalType": "uint128", "name": "value", "type": "uint128" } ], "internalType": "struct Types.Par", "name": "newPar", "type": "tuple" } ], "internalType": "struct Events.BalanceUpdate", "name": "_inputBalanceUpdate", "type": "tuple" }, { "components": [ { "components": [ { "internalType": "bool", "name": "sign", "type": "bool" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "internalType": "struct Types.Wei", "name": "deltaWei", "type": "tuple" }, { "components": [ { "internalType": "bool", "name": "sign", "type": "bool" }, { "internalType": "uint128", "name": "value", "type": "uint128" } ], "internalType": "struct Types.Par", "name": "newPar", "type": "tuple" } ], "internalType": "struct Events.BalanceUpdate", "name": "_outputBalanceUpdate", "type": "tuple" }, { "components": [ { "components": [ { "internalType": "bool", "name": "sign", "type": "bool" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "internalType": "struct Types.Wei", "name": "deltaWei", "type": "tuple" }, { "components": [ { "internalType": "bool", "name": "sign", "type": "bool" }, { "internalType": "uint128", "name": "value", "type": "uint128" } ], "internalType": "struct Types.Par", "name": "newPar", "type": "tuple" } ], "internalType": "struct Events.BalanceUpdate", "name": "_marginWithdrawalUpdate", "type": "tuple" } ], "name": "emitMarginPositionClose", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" } ], "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"borrowAccountNumber\",\"type\":\"uint256\"}],\"name\":\"BorrowPositionOpen\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"accountOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"accountNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"inputToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"outputToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"withdrawalToken\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei\",\"name\":\"deltaWei\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.Par\",\"name\":\"newPar\",\"type\":\"tuple\"}],\"indexed\":false,\"internalType\":\"struct Events.BalanceUpdate\",\"name\":\"inputBalanceUpdate\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei\",\"name\":\"deltaWei\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.Par\",\"name\":\"newPar\",\"type\":\"tuple\"}],\"indexed\":false,\"internalType\":\"struct Events.BalanceUpdate\",\"name\":\"outputBalanceUpdate\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei\",\"name\":\"deltaWei\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.Par\",\"name\":\"newPar\",\"type\":\"tuple\"}],\"indexed\":false,\"internalType\":\"struct Events.BalanceUpdate\",\"name\":\"marginWithdrawalUpdate\",\"type\":\"tuple\"}],\"name\":\"MarginPositionClose\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"accountOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"accountNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"inputToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"outputToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"depositToken\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei\",\"name\":\"deltaWei\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.Par\",\"name\":\"newPar\",\"type\":\"tuple\"}],\"indexed\":false,\"internalType\":\"struct Events.BalanceUpdate\",\"name\":\"inputBalanceUpdate\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei\",\"name\":\"deltaWei\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.Par\",\"name\":\"newPar\",\"type\":\"tuple\"}],\"indexed\":false,\"internalType\":\"struct Events.BalanceUpdate\",\"name\":\"outputBalanceUpdate\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei\",\"name\":\"deltaWei\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.Par\",\"name\":\"newPar\",\"type\":\"tuple\"}],\"indexed\":false,\"internalType\":\"struct Events.BalanceUpdate\",\"name\":\"marginDepositUpdate\",\"type\":\"tuple\"}],\"name\":\"MarginPositionOpen\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"accountOwner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"accountNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"marketIdsPath\",\"type\":\"uint256[]\"},{\"components\":[{\"internalType\":\"enum IGenericTraderProxyBase.TraderType\",\"name\":\"traderType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"makerAccountIndex\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"tradeData\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct IGenericTraderProxyBase.TraderParam[]\",\"name\":\"tradersPath\",\"type\":\"tuple[]\"}],\"name\":\"ZapExecuted\",\"type\":\"event\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_accountOwner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_accountNumber\",\"type\":\"uint256\"}],\"name\":\"emitBorrowPositionOpen\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_accountOwner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_accountNumber\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_inputToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_outputToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_withdrawalToken\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei\",\"name\":\"deltaWei\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.Par\",\"name\":\"newPar\",\"type\":\"tuple\"}],\"internalType\":\"struct Events.BalanceUpdate\",\"name\":\"_inputBalanceUpdate\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei\",\"name\":\"deltaWei\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.Par\",\"name\":\"newPar\",\"type\":\"tuple\"}],\"internalType\":\"struct Events.BalanceUpdate\",\"name\":\"_outputBalanceUpdate\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei\",\"name\":\"deltaWei\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.Par\",\"name\":\"newPar\",\"type\":\"tuple\"}],\"internalType\":\"struct Events.BalanceUpdate\",\"name\":\"_marginWithdrawalUpdate\",\"type\":\"tuple\"}],\"name\":\"emitMarginPositionClose\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_accountOwner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_accountNumber\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_inputToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_outputToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_depositToken\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei\",\"name\":\"deltaWei\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.Par\",\"name\":\"newPar\",\"type\":\"tuple\"}],\"internalType\":\"struct Events.BalanceUpdate\",\"name\":\"_inputBalanceUpdate\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei\",\"name\":\"deltaWei\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.Par\",\"name\":\"newPar\",\"type\":\"tuple\"}],\"internalType\":\"struct Events.BalanceUpdate\",\"name\":\"_outputBalanceUpdate\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei\",\"name\":\"deltaWei\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.Par\",\"name\":\"newPar\",\"type\":\"tuple\"}],\"internalType\":\"struct Events.BalanceUpdate\",\"name\":\"_marginDepositUpdate\",\"type\":\"tuple\"}],\"name\":\"emitMarginPositionOpen\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_accountOwner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_accountNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"_marketIdsPath\",\"type\":\"uint256[]\"},{\"components\":[{\"internalType\":\"enum IGenericTraderProxyBase.TraderType\",\"name\":\"traderType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"makerAccountIndex\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"tradeData\",\"type\":\"bytes\"}],\"internalType\":\"struct IGenericTraderProxyBase.TraderParam[]\",\"name\":\"_tradersPath\",\"type\":\"tuple[]\"}],\"name\":\"emitZapExecuted\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Dolomite * An implementation for an upgradeable proxy for emitting margin position-related events. Useful for indexing margin positions from a singular address.\",\"methods\":{\"emitBorrowPositionOpen(address,uint256)\":{\"params\":{\"_accountNumber\":\"The account number of the account that opened the position\",\"_accountOwner\":\"The address of the account that opened the position\"}},\"emitMarginPositionClose(address,uint256,address,address,address,((bool,uint256),(bool,uint128)),((bool,uint256),(bool,uint128)),((bool,uint256),(bool,uint128)))\":{\"params\":{\"_accountNumber\":\"The account number of the account that opened the position\",\"_accountOwner\":\"The address of the account that opened the position\",\"_inputBalanceUpdate\":\"The amount of inputToken that was sold to purchase the outputToken\",\"_inputToken\":\"The token that was sold to purchase the debt. This should be the held token\",\"_marginWithdrawalUpdate\":\"The amount of withdrawalToken that was deposited as collateral\",\"_outputBalanceUpdate\":\"The amount of outputToken that was purchased with the inputToken\",\"_outputToken\":\"The token that was purchased with the collateral. This should be the owed token\",\"_withdrawalToken\":\"The token that was withdrawn as collateral. This should be the held token\"}},\"emitMarginPositionOpen(address,uint256,address,address,address,((bool,uint256),(bool,uint128)),((bool,uint256),(bool,uint128)),((bool,uint256),(bool,uint128)))\":{\"params\":{\"_accountNumber\":\"The account number of the account that opened the position\",\"_accountOwner\":\"The address of the account that opened the position\",\"_depositToken\":\"The token that was deposited as collateral. This should be the held token\",\"_inputBalanceUpdate\":\"The amount of inputToken that was sold to purchase the outputToken\",\"_inputToken\":\"The token that was sold to purchase the collateral. This should be the owed token\",\"_marginDepositUpdate\":\"The amount of depositToken that was deposited as collateral\",\"_outputBalanceUpdate\":\"The amount of outputToken that was purchased with the inputToken\",\"_outputToken\":\"The token that was purchased with the debt. This should be the held token\"}},\"emitZapExecuted(address,uint256,uint256[],(uint8,uint256,address,bytes)[])\":{\"params\":{\"_accountNumber\":\"The sub account of the address that executed the zap\",\"_accountOwner\":\"The address of the account that executed the zap\",\"_marketIdsPath\":\"The path of market IDs that was executed\",\"_tradersPath\":\"The path of traders that was executed\"}}},\"title\":\"IEventEmitterRegistry\"},\"userdoc\":{\"methods\":{\"emitBorrowPositionOpen(address,uint256)\":{\"notice\":\"Emits a MarginPositionOpen event\"},\"emitMarginPositionClose(address,uint256,address,address,address,((bool,uint256),(bool,uint128)),((bool,uint256),(bool,uint128)),((bool,uint256),(bool,uint128)))\":{\"notice\":\"Emits a MarginPositionClose event\"},\"emitMarginPositionOpen(address,uint256,address,address,address,((bool,uint256),(bool,uint128)),((bool,uint256),(bool,uint128)),((bool,uint256),(bool,uint128)))\":{\"notice\":\"Emits a MarginPositionOpen event\"},\"emitZapExecuted(address,uint256,uint256[],(uint8,uint256,address,bytes)[])\":{\"notice\":\"Emits a ZapExecuted event\"}}}},\"settings\":{\"compilationTarget\":{\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/interfaces/IEventEmitterRegistry.sol\":\"IEventEmitterRegistry\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/interfaces/IEventEmitterRegistry.sol\":{\"keccak256\":\"0x51ae058dafa3850ba14ea352c637af48e213c4b4e69e4d398b84ec6fed91d309\",\"urls\":[\"bzz-raw://974dda23508e2d7428433db7fb280c1bc82e197fd68f9d425c57f7bf57fdf82f\",\"dweb:/ipfs/QmeTteQN1tMXChaQ4nzBvLpndVfghaoznsQDM8kAqgDeF9\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/interfaces/IGenericTraderProxyBase.sol\":{\"keccak256\":\"0x2ac2830618b13f412f53c803cb8c5e79f1ea1a7da0767fb0c6430a3435153f6f\",\"urls\":[\"bzz-raw://5e128520cdac823bc7dbe5331708c650d9a4ad6a18ec3bb7d9e8739f8360cfc0\",\"dweb:/ipfs/QmcDcrnMcXUGm7NT3q6Z4idFzqcNZukrwHn5GjX44u5Win\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IAccountRiskOverrideSetter.sol\":{\"keccak256\":\"0x5b9fde139ddfdaae7b650b3c3f6699e0e44605f0d9d3daadc1622eb06ad4c3f8\",\"urls\":[\"bzz-raw://2dfd5af24b6de63f94519c99fd8777a264d7cd11266fa2d525c7d72d96a9c7cf\",\"dweb:/ipfs/QmPg9fjhbnmBayZMh6yTG79xsK1PWSoAHA5pfwSXfnKKjF\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IDolomiteMargin.sol\":{\"keccak256\":\"0x7e86ed1ed04dc205245db9f4e7cf7cca60c3bfc46c57ade8129a463780647967\",\"urls\":[\"bzz-raw://f8fbd85afd334c12bdccbb6523ebea9172b27b7b4b132c4a48b4b4dd03ceeb2b\",\"dweb:/ipfs/QmU1srfSqBTz3kw7oz1KEzfTUJvphZiE4K8MRZcy9uJjv1\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IERC20Detailed.sol\":{\"keccak256\":\"0x22a62e2a8155e70300773721902f4b9118e17aa0bb5d9d1b046050a014cfb223\",\"urls\":[\"bzz-raw://03af737a33c552fbe58f6f1fbd5496854fdc28dd57be4365d56663725c083a18\",\"dweb:/ipfs/QmbgLqGAQEd6tXsZB8QaPNCAMiU6nNzP75wNbKdS65BuUF\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IInterestSetter.sol\":{\"keccak256\":\"0x546825f65490a30e29d0f6446acec49c1e895ce6b33d48ca5c05092725a63a57\",\"urls\":[\"bzz-raw://6ad3013aed985bdf6e6234ae0f7f37e6bba76c3470c33bfa24678cf19b3b412c\",\"dweb:/ipfs/QmfYaSBzxGpgiHoR7ontMJY66S5L26XwkLYoEuzsEjpbQH\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IOracleSentinel.sol\":{\"keccak256\":\"0xa94499fda55ef112640daed2cb1d06062e72c51c7b925c323b4e0ffa9b456ce5\",\"urls\":[\"bzz-raw://18b4a16acac577590a57f34f7ec6583e3cb35f575c948abb928b308d29cac1ab\",\"dweb:/ipfs/QmR1jLkzj6w7SjrdZ7GVW4V2vofSdMJwzjTqKpeUKABvxu\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IPriceOracle.sol\":{\"keccak256\":\"0x3f7c3d1397390ea44c6d5e5730d49476431c3df3b28334fe38218de5edc31138\",\"urls\":[\"bzz-raw://63ebf926fca9ce33aaabaf93805686acc25daded1648d6dab59c8c4d05116918\",\"dweb:/ipfs/QmeGkDp7ycYstpfqCYBiqoCYwy876gabx8r42o5koj3H5A\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Account.sol\":{\"keccak256\":\"0x2059276ea5e478bd5ac7f2712e7b1b6c85d291c647a54b264909044844828e67\",\"urls\":[\"bzz-raw://f153777051d12131b13a57e5c3af10a2670927cfc7d22c9519ab20c9b4b9bc89\",\"dweb:/ipfs/QmQMP3qS5xDAVGYKDfNkbkSqBKozQGQsGqX4e8VyjRtxPS\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Actions.sol\":{\"keccak256\":\"0x7b2fcf441c034952dd042b6c8b20b148359db771e7c9ac07d06369560a9f0301\",\"urls\":[\"bzz-raw://84665ee4a780360fe6160d197ba98f0bf0ab0d7c6ad87bfed6226bf2f88d8d30\",\"dweb:/ipfs/QmRDfRdAd8hSXeu4SAeeYKkKoXBhStu7n4uReYBce2JD5Z\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Bits.sol\":{\"keccak256\":\"0x6d9a641163b2dd25e648c65f5d9e4949a57938e29ddc4c9dddefd74a9964aeef\",\"urls\":[\"bzz-raw://67e5a04ed4055faafbc100d6ccca9c54448ed378a1a8c71171562edda7bcbf7c\",\"dweb:/ipfs/QmYRikK3Xbgiq3UBJkgoo2zNUSSrShVabpRHmQj6iQHhrc\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Cache.sol\":{\"keccak256\":\"0xe57c80a7621a77fcb2acb9f883fb5248e71a6dce03bc2db56df0db3fee332950\",\"urls\":[\"bzz-raw://28e221c04629674490b9a0041d4f9a5f15e669dc0cc192a5df6e2c701c36369f\",\"dweb:/ipfs/QmaL3oh8c7v9cx91pB175pyCEuzxnhNTab4UxmBMsDYfUx\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Decimal.sol\":{\"keccak256\":\"0xd9a348c2b1eec076609ba12bbec6b9c2e4ea135790a7ef4f5411feb050af2144\",\"urls\":[\"bzz-raw://d5bcff29e47d5cd02d7a9966e9f44c46ccbb4f0e4adfc4b0b86646880677db39\",\"dweb:/ipfs/QmRKfJD4FFM1AvTynSFNx1NcDg94o9SAcjz7dvMaJCfecp\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/DolomiteMarginMath.sol\":{\"keccak256\":\"0x53f205f6a779d579be29faa9412c806a892b3e605fff092dfd9d14d936fa019f\",\"urls\":[\"bzz-raw://0ff936f89602a63b8e6a4eb4ce8f87673c0f45b7ce29694920905a3f0b5a6a69\",\"dweb:/ipfs/QmbYME9BeEvPC1ndV8EaUDX5fDMghLc3rocNUxFtgHmg8m\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/EnumerableSet.sol\":{\"keccak256\":\"0x41a3460e34b7b8635d936e35e6568ceb5354b638f53b884530e0d4875fa0f151\",\"urls\":[\"bzz-raw://d1a5ba866ee95d455afe5075dadd91fc71c2806371f2c1b358a1f67c632bb0df\",\"dweb:/ipfs/QmW4qCjmsG8J3UJv97GwDLDM7wt1K4yLDKAwzWMY7TFYi5\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Events.sol\":{\"keccak256\":\"0x2345dcc1ebf53a3d5449dab083b1fb90b5362dae692f8ff3ad00078862894e9b\",\"urls\":[\"bzz-raw://ebd34c557c06caf0696774844f0ca9746412ecc452bdd978b3bca0fd71aefbde\",\"dweb:/ipfs/QmcwXXKgv77DqfhxABRg85WR6RBPTLmge5vJGp99o9kFf8\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Interest.sol\":{\"keccak256\":\"0x141a0ecb4a746f0e5767df4b99dbe33c6362df507ae9d5c02da1c1c17bc26df3\",\"urls\":[\"bzz-raw://9ff03e64a8ce5231acde07788624bf8c7a8ff55d90b157fa32f62fa887a0eff0\",\"dweb:/ipfs/QmUVxxWeE954RDXbmHJAYnHsXcit6rSXGqZUigu8t9oH2z\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Monetary.sol\":{\"keccak256\":\"0x5257274f2d4d3605f3e97ec45fb902111fe9a22506f0b4cf308ea933bc81bfe2\",\"urls\":[\"bzz-raw://85b8023b78805063a2ec8d376f1f5983994eabd96efd8ceadb0224dbb71c5678\",\"dweb:/ipfs/QmaDhzCzRqsuHuJfhToEC4pATQHwhh7yWWsjwfuRzFT1kG\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Require.sol\":{\"keccak256\":\"0x05a2a90b41b6a5f42f0a72da63d015fb0b406a9ba2172823352e522e8bf3a606\",\"urls\":[\"bzz-raw://19883f0c6d33266f756ec5c3d17539524aa24b993c46c33f8400801d09373a6c\",\"dweb:/ipfs/QmYX2fwK3vQQDSZLMrc5wMfeb8RWrcC9CGX8XECLty8QDk\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Storage.sol\":{\"keccak256\":\"0x9c27f3cd52af28c9b6bca18097b1793f114d08284d78417467d0d05f67e9e2a9\",\"urls\":[\"bzz-raw://d1ed0e7a7f76d59f30572996d4e164ab8fb5b2ec4bfca127983f9e936b904813\",\"dweb:/ipfs/QmePVYbgrY8Yw3Vf76pmEvE9pX916Jaa9we4kjM8tGM4J1\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Time.sol\":{\"keccak256\":\"0x87ee8d3c1d6e315a116426d8c8fc6f083e220fd14dda27fad4e8d7cab3dc7305\",\"urls\":[\"bzz-raw://7c20f2c52da682c3b5917fb6a19e81f43699b1d13c62b569ed723f34da72e766\",\"dweb:/ipfs/QmbXWYXi67nHBVNDKYUpo2E9ZaEVcHLvmXQkpYLMm1d5Vm\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Token.sol\":{\"keccak256\":\"0x095b5f8eb3665f6e246200311efc8a654fa3e90f9a1a522e27a4d089e8ab3917\",\"urls\":[\"bzz-raw://5db812b752a03d601d424e6e21be38153477082af0acf51b5c98eefa5553ed18\",\"dweb:/ipfs/QmbE549QUXYTurpx8hSMLBJvuBpfYqyNE6FBCgHJDY8PLf\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Types.sol\":{\"keccak256\":\"0xe1bab8c8799d83e86c7a49aaf815d8e3bc8d09562d46d44d921500db5e98de0e\",\"urls\":[\"bzz-raw://8ea3d0cc4fdab6dd9bba545a792170f939b342d8d1a7051c1c6365009af72658\",\"dweb:/ipfs/QmaLJgbavu88eEit6JPqfWnw6NmGBDZfveMXxumgWywBFG\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\",\"urls\":[\"bzz-raw://59fd025151435da35faa8093a5c7a17de02de9d08ad27275c5cdf05050820d91\",\"dweb:/ipfs/QmQMvwEcPhoRXzbXyrdoeRtvLoifUW9Qh7Luho7bmUPRkc\"]}},\"version\":1}", "bytecode": "0x", "deployedBytecode": "0x", "sourceMap": "", "deployedSourceMap": "", "source": "/*\n\n Copyright 2023 Dolomite.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.7;\npragma experimental ABIEncoderV2;\n\nimport { IGenericTraderProxyBase } from \"./IGenericTraderProxyBase.sol\";\nimport { Events } from \"../../protocol/lib/Events.sol\";\n\n\n/**\n * @title IEventEmitterRegistry\n * @author Dolomite\n *\n * An implementation for an upgradeable proxy for emitting margin position-related events. Useful for indexing margin\n * positions from a singular address.\n */\ninterface IEventEmitterRegistry {\n\n // ============ Events ============\n\n /**\n * @notice This is emitted when a zap is executed\n *\n * @param accountOwner The address of the account that executed the zap\n * @param accountNumber The sub account of the address that executed the zap\n * @param marketIdsPath The path of market IDs that was executed\n * @param tradersPath The path of traders that was executed\n */\n event ZapExecuted(\n address indexed accountOwner,\n uint256 accountNumber,\n uint256[] marketIdsPath,\n IGenericTraderProxyBase.TraderParam[] tradersPath\n );\n\n /**\n * @notice This is emitted when a borrow position is initially opened\n *\n * @param borrower The address of the account that opened the position\n * @param borrowAccountNumber The account number of the account that opened the position\n */\n event BorrowPositionOpen(\n address indexed borrower,\n uint256 indexed borrowAccountNumber\n );\n\n /**\n * @notice This is emitted when a margin position is initially opened\n *\n * @param accountOwner The address of the account that opened the position\n * @param accountNumber The account number of the account that opened the position\n * @param inputToken The token that was sold to purchase the collateral. This should be the owed token\n * @param outputToken The token that was purchased with the debt. This should be the held token\n * @param depositToken The token that was deposited as collateral. This should be the held token\n * @param inputBalanceUpdate The amount of inputToken that was sold to purchase the outputToken\n * @param outputBalanceUpdate The amount of outputToken that was purchased with the inputToken\n * @param marginDepositUpdate The amount of depositToken that was deposited as collateral\n */\n event MarginPositionOpen(\n address indexed accountOwner,\n uint256 indexed accountNumber,\n address inputToken,\n address outputToken,\n address depositToken,\n Events.BalanceUpdate inputBalanceUpdate,\n Events.BalanceUpdate outputBalanceUpdate,\n Events.BalanceUpdate marginDepositUpdate\n );\n\n /**\n * @notice This is emitted when a margin position is (partially) closed\n *\n * @param accountOwner The address of the account that opened the position\n * @param accountNumber The account number of the account that opened the position\n * @param inputToken The token that was sold to purchase the debt. This should be the held token\n * @param outputToken The token that was purchased with the collateral. This should be the owed token\n * @param withdrawalToken The token that was withdrawn as collateral. This should be the held token\n * @param inputBalanceUpdate The amount of inputToken that was sold to purchase the outputToken\n * @param outputBalanceUpdate The amount of outputToken that was purchased with the inputToken\n * @param marginWithdrawalUpdate The amount of withdrawalToken that was deposited as collateral\n */\n event MarginPositionClose(\n address indexed accountOwner,\n uint256 indexed accountNumber,\n address inputToken,\n address outputToken,\n address withdrawalToken,\n Events.BalanceUpdate inputBalanceUpdate,\n Events.BalanceUpdate outputBalanceUpdate,\n Events.BalanceUpdate marginWithdrawalUpdate\n );\n\n // ============ Functions ============\n\n /**\n * @notice Emits a ZapExecuted event\n *\n * @param _accountOwner The address of the account that executed the zap\n * @param _accountNumber The sub account of the address that executed the zap\n * @param _marketIdsPath The path of market IDs that was executed\n * @param _tradersPath The path of traders that was executed\n */\n function emitZapExecuted(\n address _accountOwner,\n uint256 _accountNumber,\n uint256[] calldata _marketIdsPath,\n