{
  "contractName": "IDepositWithdrawalProxy",
  "abi": [
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address payable",
          "name": "_payableToken",
          "type": "address"
        }
      ],
      "name": "initializePayableMarket",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_toAccountNumber",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_marketId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_amountWei",
          "type": "uint256"
        }
      ],
      "name": "depositWei",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_toAccountNumber",
          "type": "uint256"
        }
      ],
      "name": "depositPayable",
      "outputs": [],
      "payable": true,
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_marketId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_amountWei",
          "type": "uint256"
        }
      ],
      "name": "depositWeiIntoDefaultAccount",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "depositPayableIntoDefaultAccount",
      "outputs": [],
      "payable": true,
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_fromAccountNumber",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_marketId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_amountWei",
          "type": "uint256"
        },
        {
          "internalType": "enum AccountBalanceLib.BalanceCheckFlag",
          "name": "_balanceCheckFlag",
          "type": "uint8"
        }
      ],
      "name": "withdrawWei",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_fromAccountNumber",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_amountWei",
          "type": "uint256"
        },
        {
          "internalType": "enum AccountBalanceLib.BalanceCheckFlag",
          "name": "_balanceCheckFlag",
          "type": "uint8"
        }
      ],
      "name": "withdrawPayable",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_marketId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_amountWei",
          "type": "uint256"
        },
        {
          "internalType": "enum AccountBalanceLib.BalanceCheckFlag",
          "name": "_balanceCheckFlag",
          "type": "uint8"
        }
      ],
      "name": "withdrawWeiFromDefaultAccount",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amountWei",
          "type": "uint256"
        },
        {
          "internalType": "enum AccountBalanceLib.BalanceCheckFlag",
          "name": "_balanceCheckFlag",
          "type": "uint8"
        }
      ],
      "name": "withdrawPayableFromDefaultAccount",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_toAccountNumber",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_marketId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_amountPar",
          "type": "uint256"
        }
      ],
      "name": "depositPar",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_marketId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_amountPar",
          "type": "uint256"
        }
      ],
      "name": "depositParIntoDefaultAccount",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_fromAccountNumber",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_marketId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_amountPar",
          "type": "uint256"
        },
        {
          "internalType": "enum AccountBalanceLib.BalanceCheckFlag",
          "name": "_balanceCheckFlag",
          "type": "uint8"
        }
      ],
      "name": "withdrawPar",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_marketId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_amountPar",
          "type": "uint256"
        },
        {
          "internalType": "enum AccountBalanceLib.BalanceCheckFlag",
          "name": "_balanceCheckFlag",
          "type": "uint8"
        }
      ],
      "name": "withdrawParFromDefaultAccount",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_toAccountNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_marketId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountPar\",\"type\":\"uint256\"}],\"name\":\"depositPar\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_marketId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountPar\",\"type\":\"uint256\"}],\"name\":\"depositParIntoDefaultAccount\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_toAccountNumber\",\"type\":\"uint256\"}],\"name\":\"depositPayable\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"depositPayableIntoDefaultAccount\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_toAccountNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_marketId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountWei\",\"type\":\"uint256\"}],\"name\":\"depositWei\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_marketId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountWei\",\"type\":\"uint256\"}],\"name\":\"depositWeiIntoDefaultAccount\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"_payableToken\",\"type\":\"address\"}],\"name\":\"initializePayableMarket\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_fromAccountNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_marketId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountPar\",\"type\":\"uint256\"},{\"internalType\":\"enum AccountBalanceLib.BalanceCheckFlag\",\"name\":\"_balanceCheckFlag\",\"type\":\"uint8\"}],\"name\":\"withdrawPar\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_marketId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountPar\",\"type\":\"uint256\"},{\"internalType\":\"enum AccountBalanceLib.BalanceCheckFlag\",\"name\":\"_balanceCheckFlag\",\"type\":\"uint8\"}],\"name\":\"withdrawParFromDefaultAccount\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_fromAccountNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountWei\",\"type\":\"uint256\"},{\"internalType\":\"enum AccountBalanceLib.BalanceCheckFlag\",\"name\":\"_balanceCheckFlag\",\"type\":\"uint8\"}],\"name\":\"withdrawPayable\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amountWei\",\"type\":\"uint256\"},{\"internalType\":\"enum AccountBalanceLib.BalanceCheckFlag\",\"name\":\"_balanceCheckFlag\",\"type\":\"uint8\"}],\"name\":\"withdrawPayableFromDefaultAccount\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_fromAccountNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_marketId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountWei\",\"type\":\"uint256\"},{\"internalType\":\"enum AccountBalanceLib.BalanceCheckFlag\",\"name\":\"_balanceCheckFlag\",\"type\":\"uint8\"}],\"name\":\"withdrawWei\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_marketId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountWei\",\"type\":\"uint256\"},{\"internalType\":\"enum AccountBalanceLib.BalanceCheckFlag\",\"name\":\"_balanceCheckFlag\",\"type\":\"uint8\"}],\"name\":\"withdrawWeiFromDefaultAccount\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"depositPar(uint256,uint256,uint256)\":{\"params\":{\"_amountPar\":\"The amount, in Par, to deposit.\",\"_marketId\":\"The ID of the market being deposited\",\"_toAccountNumber\":\"The account number into which `msg.sender` will be depositing\"}},\"depositParIntoDefaultAccount(uint256,uint256)\":{\"details\":\"Same as `depositPar` but defaults to account number 0 to save additional call data\",\"params\":{\"_amountPar\":\"The amount, in Par, to deposit.\",\"_marketId\":\"The ID of the market being deposited\"}},\"depositPayable(uint256)\":{\"params\":{\"_toAccountNumber\":\"The account number into which `msg.sender` will be depositing\"}},\"depositWei(uint256,uint256,uint256)\":{\"params\":{\"_amountWei\":\"The amount, in Wei, to deposit. Use `uint(-1)` to deposit `msg.sender`'s entire balance\",\"_marketId\":\"The ID of the market being deposited\",\"_toAccountNumber\":\"The account number into which `msg.sender` will be depositing\"}},\"depositWeiIntoDefaultAccount(uint256,uint256)\":{\"details\":\"Same as `depositWei` but defaults to account number 0 to save additional call data\",\"params\":{\"_amountWei\":\"The amount, in Wei, to deposit. Use `uint(-1)` to deposit `msg.sender`'s entire balance\",\"_marketId\":\"The ID of the market being deposited\"}},\"initializePayableMarket(address)\":{\"params\":{\"_payableToken\":\"The wrapped payable token of the network. For example, WETH on Arbitrum.\"}},\"withdrawPar(uint256,uint256,uint256,uint8)\":{\"params\":{\"_amountPar\":\"The amount, in Par, to withdraw. Use `uint(-1)` to withdraw `msg.sender`'s entire                             balance\",\"_balanceCheckFlag\":\"Use `BalanceCheckFlag.Both` or `BalanceCheckFlag.From` to check that                             `_fromAccountNumber` balance is non-negative after the withdrawal settles.\",\"_fromAccountNumber\":\"The account number from which `msg.sender` will be withdrawing\",\"_marketId\":\"The ID of the market being withdrawn\"}},\"withdrawParFromDefaultAccount(uint256,uint256,uint8)\":{\"details\":\"Same as `withdrawPar` but defaults to account number 0 to save additional call data\",\"params\":{\"_amountPar\":\"The amount, in Par, to withdraw. Use `uint(-1)` to withdraw `msg.sender`'s entire balance\",\"_balanceCheckFlag\":\"Use `BalanceCheckFlag.Both` or `BalanceCheckFlag.From` to check that `_fromAccountNumber`                         balance is non-negative after the withdrawal settles.\",\"_marketId\":\"The ID of the market being withdrawn\"}},\"withdrawPayable(uint256,uint256,uint8)\":{\"params\":{\"_amountWei\":\"The amount, in Wei, to withdraw. Use `uint(-1)` to withdraw `msg.sender`'s entire                             balance.\",\"_balanceCheckFlag\":\"Use `BalanceCheckFlag.Both` or `BalanceCheckFlag.From` to check that                             `_fromAccountNumber` balance is non-negative after the withdrawal settles.\",\"_fromAccountNumber\":\"The account number from which `msg.sender` will be withdrawing\"}},\"withdrawPayableFromDefaultAccount(uint256,uint8)\":{\"params\":{\"_amountWei\":\"The amount, in Wei, to withdraw. Use `uint(-1)` to withdraw `msg.sender`'s entire                         balance\",\"_balanceCheckFlag\":\"Use `BalanceCheckFlag.Both` or `BalanceCheckFlag.From` to check that `_fromAccountNumber`                         balance is non-negative after the withdrawal settles.\"}},\"withdrawWei(uint256,uint256,uint256,uint8)\":{\"params\":{\"_amountWei\":\"The amount, in Wei, to withdraw. Use `uint(-1)` to withdraw `msg.sender`'s entire                             balance\",\"_balanceCheckFlag\":\"Use `BalanceCheckFlag.Both` or `BalanceCheckFlag.From` to check that                             `_fromAccountNumber` balance is non-negative after the withdrawal settles.\",\"_fromAccountNumber\":\"The account number from which `msg.sender` will be withdrawing\",\"_marketId\":\"The ID of the market being withdrawn\"}},\"withdrawWeiFromDefaultAccount(uint256,uint256,uint8)\":{\"details\":\"Same as `withdrawWei` but defaults to account number 0 to save additional call data\",\"params\":{\"_amountWei\":\"The amount, in Wei, to withdraw. Use `uint(-1)` to withdraw `msg.sender`'s entire                         balance\",\"_balanceCheckFlag\":\"Use `BalanceCheckFlag.Both` or `BalanceCheckFlag.From` to check that `_fromAccountNumber`                         balance is non-negative after the withdrawal settles.\",\"_marketId\":\"The ID of the market being withdrawn\"}}}},\"userdoc\":{\"methods\":{\"depositPayable(uint256)\":{\"notice\":\"Same as `depositWei` but converts the `msg.sender`'s sent Payable Currency into Wrapped Payable Token before depositing into `DolomiteMargin`.\"},\"depositPayableIntoDefaultAccount()\":{\"notice\":\"Same as `depositWeiIntoDefaultAccount` but converts the `msg.sender`'s sent Payable Currency into wrapped Payable Token before depositing into `DolomiteMargin`.\"},\"withdrawPayable(uint256,uint256,uint8)\":{\"notice\":\"Same as `withdrawWei` but for withdrawing the Payable Token of the network. The user will receive unwrapped Payable Token from DolomiteMargin.\"},\"withdrawPayableFromDefaultAccount(uint256,uint8)\":{\"notice\":\"Same as `withdrawWeiFromDefaultAccount` but for withdrawing the Payable Token for the network. The user will receive unwrapped Payable Token from DolomiteMargin.\"}}}},\"settings\":{\"compilationTarget\":{\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/interfaces/IDepositWithdrawalProxy.sol\":\"IDepositWithdrawalProxy\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/interfaces/IDepositWithdrawalProxy.sol\":{\"keccak256\":\"0x3602a42de25e379b39e1d4d1fbe5b65ffbbf119c8657350189e627bbcab6bbfd\",\"urls\":[\"bzz-raw://d2e4c68fe59712bd13ebb64e600035c7da3cbfb76d1600892ee6e5cf16900421\",\"dweb:/ipfs/QmYFTa5BTJtVMg7QCtXtRxm2aD1cK6bA2pCpUghahNUGz9\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/lib/AccountBalanceLib.sol\":{\"keccak256\":\"0x76fd16d615fe7cfceaf775b4e6524fd0462606c802b082498c768a7a4ca01a20\",\"urls\":[\"bzz-raw://56068145e300cde1c77c22e38cb753378abf2f0d4613dcb203e33ff101f169e2\",\"dweb:/ipfs/QmXvMzr9n7vzMHdUPgnc58KX4mrbQAqkq4kDETaj5Y55ZY\"]},\"/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/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 2021 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;\n\nimport { AccountBalanceLib } from \"../lib/AccountBalanceLib.sol\";\n\n\ninterface IDepositWithdrawalProxy {\n\n    /**\n     * @param _payableToken The wrapped payable token of the network. For example, WETH on Arbitrum.\n     */\n    function initializePayableMarket(\n        address payable _payableToken\n    ) external;\n\n    /**\n     * @param _toAccountNumber  The account number into which `msg.sender` will be depositing\n     * @param _marketId         The ID of the market being deposited\n     * @param _amountWei        The amount, in Wei, to deposit. Use `uint(-1)` to deposit `msg.sender`'s entire balance\n     */\n    function depositWei(\n        uint256 _toAccountNumber,\n        uint256 _marketId,\n        uint256 _amountWei\n    ) external;\n\n    /**\n     * Same as `depositWei` but converts the `msg.sender`'s sent Payable Currency into Wrapped Payable Token before depositing into `DolomiteMargin`.\n     *\n     * @param _toAccountNumber The account number into which `msg.sender` will be depositing\n     */\n    function depositPayable(\n        uint256 _toAccountNumber\n    ) external payable;\n\n    /**\n     * @dev Same as `depositWei` but defaults to account number 0 to save additional call data\n     *\n     * @param _marketId     The ID of the market being deposited\n     * @param _amountWei    The amount, in Wei, to deposit. Use `uint(-1)` to deposit `msg.sender`'s entire balance\n     */\n    function depositWeiIntoDefaultAccount(\n        uint256 _marketId,\n        uint256 _amountWei\n    ) external;\n\n    /**\n     * Same as `depositWeiIntoDefaultAccount` but converts the `msg.sender`'s sent Payable Currency into wrapped Payable Token before depositing into\n     * `DolomiteMargin`.\n     */\n    function depositPayableIntoDefaultAccount() external payable;\n\n    /**\n     * @param _fromAccountNumber    The account number from which `msg.sender` will be withdrawing\n     * @param _marketId             The ID of the market being withdrawn\n     * @param _amountWei            The amount, in Wei, to withdraw. Use `uint(-1)` to withdraw `msg.sender`'s entire\n     *                              balance\n     * @param _balanceCheckFlag     Use `BalanceCheckFlag.Both` or `BalanceCheckFlag.From` to check that\n     *                              `_fromAccountNumber` balance is non-negative after the withdrawal settles.\n     */\n    function withdrawWei(\n        uint256 _fromAccountNumber,\n        uint256 _marketId,\n        uint256 _amountWei,\n        AccountBalanceLib.BalanceCheckFlag _balanceCheckFlag\n    ) external;\n\n    /**\n     * Same as `withdrawWei` but for withdrawing the Payable Token of the network. The user will receive unwrapped\n     * Payable Token from DolomiteMargin.\n     *\n     * @param _fromAccountNumber    The account number from which `msg.sender` will be withdrawing\n     * @param _amountWei            The amount, in Wei, to withdraw. Use `uint(-1)` to withdraw `msg.sender`'s entire\n     *                              balance.\n     * @param _balanceCheckFlag     Use `BalanceCheckFlag.Both` or `BalanceCheckFlag.From` to check that\n     *                              `_fromAccountNumber` balance is non-negative after the withdrawal settles.\n     */\n    function withdrawPayable(\n        uint256 _fromAccountNumber,\n        uint256 _amountWei,\n        AccountBalanceLib.BalanceCheckFlag _balanceCheckFlag\n    ) external;\n\n    /**\n     * @dev Same as `withdrawWei` but defaults to account number 0 to save additional call data\n     *\n     * @param _marketId         The ID of the market being withdrawn\n     * @param _amountWei        The amount, in Wei, to withdraw. Use `uint(-1)` to withdraw `msg.sender`'s entire\n     *                          balance\n     * @param _balanceCheckFlag Use `BalanceCheckFlag.Both` or `BalanceCheckFlag.From` to check that `_fromAccountNumber`\n     *                          balance is non-negative after the withdrawal settles.\n     */\n    function withdrawWeiFromDefaultAccount(\n        uint256 _marketId,\n        uint256 _amountWei,\n        AccountBalanceLib.BalanceCheckFlag _balanceCheckFlag\n    ) external;\n\n    /**\n     * Same as `withdrawWeiFromDefaultAccount` but for withdrawing the Payable Token for the network. The user will\n     * receive unwrapped Payable Token from\n     * DolomiteMargin.\n     *\n     * @param _amountWei        The amount, in Wei, to withdraw. Use `uint(-1)` to withdraw `msg.sender`'s entire\n     *                          balance\n     * @param _balanceCheckFlag Use `BalanceCheckFlag.Both` or `BalanceCheckFlag.From` to check that `_fromAccountNumber`\n     *                          balance is non-negative after the withdrawal settles.\n     */\n    function withdrawPayableFromDefaultAccount(\n        uint256 _amountWei,\n        AccountBalanceLib.BalanceCheckFlag _balanceCheckFlag\n    ) external;\n\n    /**\n     * @param _toAccountNumber  The account number into which `msg.sender` will be depositing\n     * @param _marketId         The ID of the market being deposited\n     * @param _amountPar        The amount, in Par, to deposit.\n     */\n    function depositPar(\n        uint256 _toAccountNumber,\n        uint256 _marketId,\n        uint256 _amountPar\n    ) external;\n\n    /**\n     * @dev Same as `depositPar` but defaults to account number 0 to save additional call data\n     *\n     * @param _marketId     The ID of the market being deposited\n     * @param _amountPar    The amount, in Par, to deposit.\n     */\n    function depositParIntoDefaultAccount(\n        uint256 _marketId,\n        uint256 _amountPar\n    ) external;\n\n    /**\n     * @param _fromAccountNumber    The account number from which `msg.sender` will be withdrawing\n     * @param _marketId             The ID of the market being withdrawn\n     * @param _amountPar            The amount, in Par, to withdraw. Use `uint(-1)` to withdraw `msg.sender`'s entire\n     *                              balance\n     * @param _balanceCheckFlag     Use `BalanceCheckFlag.Both` or `BalanceCheckFlag.From` to check that\n     *                              `_fromAccountNumber` balance is non-negative after the withdrawal settles.\n     */\n    function withdrawPar(\n        uint256 _fromAccountNumber,\n        uint256 _marketId,\n        uint256 _amountPar,\n        AccountBalanceLib.BalanceCheckFlag _balanceCheckFlag\n    ) external;\n\n    /**\n     * @dev Same as `withdrawPar` but defaults to account number 0 to save additional call data\n     *\n     * @param _marketId         The ID of the market being withdrawn\n     * @param _amountPar        The amount, in Par, to withdraw. Use `uint(-1)` to withdraw `msg.sender`'s entire balance\n     * @param _balanceCheckFlag Use `BalanceCheckFlag.Both` or `BalanceCheckFlag.From` to check that `_fromAccountNumber`\n     *                          balance is non-negative after the withdrawal settles.\n     */\n    function withdrawParFromDefaultAccount(\n        uint256 _marketId,\n        uint256 _amountPar,\n        AccountBalanceLib.BalanceCheckFlag _balanceCheckFlag\n    ) external;\n}\n",
  "sourcePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/external/interfaces/IDepositWithdrawalProxy.sol",
  "ast": {
    "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/external/interfaces/IDepositWithdrawalProxy.sol",
    "exportedSymbols": {
      "IDepositWithdrawalProxy": [
        4378
      ]
    },
    "id": 4379,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 4274,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".7"
        ],
        "nodeType": "PragmaDirective",
        "src": "595:23:22"
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/external/lib/AccountBalanceLib.sol",
        "file": "../lib/AccountBalanceLib.sol",
        "id": 4276,
        "nodeType": "ImportDirective",
        "scope": 4379,
        "sourceUnit": 5892,
        "src": "620:65:22",
        "symbolAliases": [
          {
            "foreign": 4275,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "interface",
        "documentation": null,
        "fullyImplemented": false,
        "id": 4378,
        "linearizedBaseContracts": [
          4378
        ],
        "name": "IDepositWithdrawalProxy",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": null,
            "documentation": "@param _payableToken The wrapped payable token of the network. For example, WETH on Arbitrum.",
            "id": 4281,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "initializePayableMarket",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4279,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4278,
                  "name": "_payableToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 4281,
                  "src": "888:29:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address_payable",
                    "typeString": "address payable"
                  },
                  "typeName": {
                    "id": 4277,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "888:15:22",
                    "stateMutability": "payable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "878:45:22"
            },
            "returnParameters": {
              "id": 4280,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "932:0:22"
            },
            "scope": 4378,
            "src": "846:87:22",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "@param _toAccountNumber  The account number into which `msg.sender` will be depositing\n@param _marketId         The ID of the market being deposited\n@param _amountWei        The amount, in Wei, to deposit. Use `uint(-1)` to deposit `msg.sender`'s entire balance",
            "id": 4290,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "depositWei",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4288,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4283,
                  "name": "_toAccountNumber",
                  "nodeType": "VariableDeclaration",
                  "scope": 4290,
                  "src": "1267:24:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4282,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1267:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4285,
                  "name": "_marketId",
                  "nodeType": "VariableDeclaration",
                  "scope": 4290,
                  "src": "1301:17:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4284,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1301:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4287,
                  "name": "_amountWei",
                  "nodeType": "VariableDeclaration",
                  "scope": 4290,
                  "src": "1328:18:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4286,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1328:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1257:95:22"
            },
            "returnParameters": {
              "id": 4289,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1361:0:22"
            },
            "scope": 4378,
            "src": "1238:124:22",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "Same as `depositWei` but converts the `msg.sender`'s sent Payable Currency into Wrapped Payable Token before depositing into `DolomiteMargin`.\n     * @param _toAccountNumber The account number into which `msg.sender` will be depositing",
            "id": 4295,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "depositPayable",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4293,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4292,
                  "name": "_toAccountNumber",
                  "nodeType": "VariableDeclaration",
                  "scope": 4295,
                  "src": "1667:24:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4291,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1667:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1657:40:22"
            },
            "returnParameters": {
              "id": 4294,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1714:0:22"
            },
            "scope": 4378,
            "src": "1634:81:22",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "@dev Same as `depositWei` but defaults to account number 0 to save additional call data\n     * @param _marketId     The ID of the market being deposited\n@param _amountWei    The amount, in Wei, to deposit. Use `uint(-1)` to deposit `msg.sender`'s entire balance",
            "id": 4302,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "depositWeiIntoDefaultAccount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4300,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4297,
                  "name": "_marketId",
                  "nodeType": "VariableDeclaration",
                  "scope": 4302,
                  "src": "2067:17:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4296,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2067:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4299,
                  "name": "_amountWei",
                  "nodeType": "VariableDeclaration",
                  "scope": 4302,
                  "src": "2094:18:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4298,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2094:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2057:61:22"
            },
            "returnParameters": {
              "id": 4301,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2127:0:22"
            },
            "scope": 4378,
            "src": "2020:108:22",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "Same as `depositWeiIntoDefaultAccount` but converts the `msg.sender`'s sent Payable Currency into wrapped Payable Token before depositing into\n`DolomiteMargin`.",
            "id": 4305,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "depositPayableIntoDefaultAccount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4303,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2366:2:22"
            },
            "returnParameters": {
              "id": 4304,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2385:0:22"
            },
            "scope": 4378,
            "src": "2325:61:22",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "@param _fromAccountNumber    The account number from which `msg.sender` will be withdrawing\n@param _marketId             The ID of the market being withdrawn\n@param _amountWei            The amount, in Wei, to withdraw. Use `uint(-1)` to withdraw `msg.sender`'s entire\n                             balance\n@param _balanceCheckFlag     Use `BalanceCheckFlag.Both` or `BalanceCheckFlag.From` to check that\n                             `_fromAccountNumber` balance is non-negative after the withdrawal settles.",
            "id": 4316,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "withdrawWei",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4314,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4307,
                  "name": "_fromAccountNumber",
                  "nodeType": "VariableDeclaration",
                  "scope": 4316,
                  "src": "2988:26:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4306,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2988:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4309,
                  "name": "_marketId",
                  "nodeType": "VariableDeclaration",
                  "scope": 4316,
                  "src": "3024:17:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4308,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3024:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4311,
                  "name": "_amountWei",
                  "nodeType": "VariableDeclaration",
                  "scope": 4316,
                  "src": "3051:18:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4310,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3051:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4313,
                  "name": "_balanceCheckFlag",
                  "nodeType": "VariableDeclaration",
                  "scope": 4316,
                  "src": "3079:52:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                    "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4312,
                    "name": "AccountBalanceLib.BalanceCheckFlag",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5841,
                    "src": "3079:34:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                      "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2978:159:22"
            },
            "returnParameters": {
              "id": 4315,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3146:0:22"
            },
            "scope": 4378,
            "src": "2958:189:22",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "Same as `withdrawWei` but for withdrawing the Payable Token of the network. The user will receive unwrapped\nPayable Token from DolomiteMargin.\n     * @param _fromAccountNumber    The account number from which `msg.sender` will be withdrawing\n@param _amountWei            The amount, in Wei, to withdraw. Use `uint(-1)` to withdraw `msg.sender`'s entire\n                             balance.\n@param _balanceCheckFlag     Use `BalanceCheckFlag.Both` or `BalanceCheckFlag.From` to check that\n                             `_fromAccountNumber` balance is non-negative after the withdrawal settles.",
            "id": 4325,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "withdrawPayable",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4323,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4318,
                  "name": "_fromAccountNumber",
                  "nodeType": "VariableDeclaration",
                  "scope": 4325,
                  "src": "3845:26:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4317,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3845:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4320,
                  "name": "_amountWei",
                  "nodeType": "VariableDeclaration",
                  "scope": 4325,
                  "src": "3881:18:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4319,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3881:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4322,
                  "name": "_balanceCheckFlag",
                  "nodeType": "VariableDeclaration",
                  "scope": 4325,
                  "src": "3909:52:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                    "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4321,
                    "name": "AccountBalanceLib.BalanceCheckFlag",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5841,
                    "src": "3909:34:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                      "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3835:132:22"
            },
            "returnParameters": {
              "id": 4324,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3976:0:22"
            },
            "scope": 4378,
            "src": "3811:166:22",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "@dev Same as `withdrawWei` but defaults to account number 0 to save additional call data\n     * @param _marketId         The ID of the market being withdrawn\n@param _amountWei        The amount, in Wei, to withdraw. Use `uint(-1)` to withdraw `msg.sender`'s entire\n                         balance\n@param _balanceCheckFlag Use `BalanceCheckFlag.Both` or `BalanceCheckFlag.From` to check that `_fromAccountNumber`\n                         balance is non-negative after the withdrawal settles.",
            "id": 4334,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "withdrawWeiFromDefaultAccount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4332,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4327,
                  "name": "_marketId",
                  "nodeType": "VariableDeclaration",
                  "scope": 4334,
                  "src": "4581:17:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4326,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4581:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4329,
                  "name": "_amountWei",
                  "nodeType": "VariableDeclaration",
                  "scope": 4334,
                  "src": "4608:18:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4328,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4608:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4331,
                  "name": "_balanceCheckFlag",
                  "nodeType": "VariableDeclaration",
                  "scope": 4334,
                  "src": "4636:52:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                    "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4330,
                    "name": "AccountBalanceLib.BalanceCheckFlag",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5841,
                    "src": "4636:34:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                      "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4571:123:22"
            },
            "returnParameters": {
              "id": 4333,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4703:0:22"
            },
            "scope": 4378,
            "src": "4533:171:22",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "Same as `withdrawWeiFromDefaultAccount` but for withdrawing the Payable Token for the network. The user will\nreceive unwrapped Payable Token from\nDolomiteMargin.\n     * @param _amountWei        The amount, in Wei, to withdraw. Use `uint(-1)` to withdraw `msg.sender`'s entire\n                         balance\n@param _balanceCheckFlag Use `BalanceCheckFlag.Both` or `BalanceCheckFlag.From` to check that `_fromAccountNumber`\n                         balance is non-negative after the withdrawal settles.",
            "id": 4341,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "withdrawPayableFromDefaultAccount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4339,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4336,
                  "name": "_amountWei",
                  "nodeType": "VariableDeclaration",
                  "scope": 4341,
                  "src": "5330:18:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4335,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5330:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4338,
                  "name": "_balanceCheckFlag",
                  "nodeType": "VariableDeclaration",
                  "scope": 4341,
                  "src": "5358:52:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                    "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4337,
                    "name": "AccountBalanceLib.BalanceCheckFlag",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5841,
                    "src": "5358:34:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                      "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5320:96:22"
            },
            "returnParameters": {
              "id": 4340,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5425:0:22"
            },
            "scope": 4378,
            "src": "5278:148:22",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "@param _toAccountNumber  The account number into which `msg.sender` will be depositing\n@param _marketId         The ID of the market being deposited\n@param _amountPar        The amount, in Par, to deposit.",
            "id": 4350,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "depositPar",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4348,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4343,
                  "name": "_toAccountNumber",
                  "nodeType": "VariableDeclaration",
                  "scope": 4350,
                  "src": "5704:24:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4342,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5704:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4345,
                  "name": "_marketId",
                  "nodeType": "VariableDeclaration",
                  "scope": 4350,
                  "src": "5738:17:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4344,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5738:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4347,
                  "name": "_amountPar",
                  "nodeType": "VariableDeclaration",
                  "scope": 4350,
                  "src": "5765:18:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4346,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5765:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5694:95:22"
            },
            "returnParameters": {
              "id": 4349,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5798:0:22"
            },
            "scope": 4378,
            "src": "5675:124:22",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "@dev Same as `depositPar` but defaults to account number 0 to save additional call data\n     * @param _marketId     The ID of the market being deposited\n@param _amountPar    The amount, in Par, to deposit.",
            "id": 4357,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "depositParIntoDefaultAccount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4355,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4352,
                  "name": "_marketId",
                  "nodeType": "VariableDeclaration",
                  "scope": 4357,
                  "src": "6095:17:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4351,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6095:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4354,
                  "name": "_amountPar",
                  "nodeType": "VariableDeclaration",
                  "scope": 4357,
                  "src": "6122:18:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4353,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6122:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6085:61:22"
            },
            "returnParameters": {
              "id": 4356,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6155:0:22"
            },
            "scope": 4378,
            "src": "6048:108:22",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "@param _fromAccountNumber    The account number from which `msg.sender` will be withdrawing\n@param _marketId             The ID of the market being withdrawn\n@param _amountPar            The amount, in Par, to withdraw. Use `uint(-1)` to withdraw `msg.sender`'s entire\n                             balance\n@param _balanceCheckFlag     Use `BalanceCheckFlag.Both` or `BalanceCheckFlag.From` to check that\n                             `_fromAccountNumber` balance is non-negative after the withdrawal settles.",
            "id": 4368,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "withdrawPar",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4366,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4359,
                  "name": "_fromAccountNumber",
                  "nodeType": "VariableDeclaration",
                  "scope": 4368,
                  "src": "6758:26:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4358,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6758:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4361,
                  "name": "_marketId",
                  "nodeType": "VariableDeclaration",
                  "scope": 4368,
                  "src": "6794:17:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4360,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6794:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4363,
                  "name": "_amountPar",
                  "nodeType": "VariableDeclaration",
                  "scope": 4368,
                  "src": "6821:18:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4362,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6821:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4365,
                  "name": "_balanceCheckFlag",
                  "nodeType": "VariableDeclaration",
                  "scope": 4368,
                  "src": "6849:52:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                    "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4364,
                    "name": "AccountBalanceLib.BalanceCheckFlag",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5841,
                    "src": "6849:34:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                      "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6748:159:22"
            },
            "returnParameters": {
              "id": 4367,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6916:0:22"
            },
            "scope": 4378,
            "src": "6728:189:22",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "@dev Same as `withdrawPar` but defaults to account number 0 to save additional call data\n     * @param _marketId         The ID of the market being withdrawn\n@param _amountPar        The amount, in Par, to withdraw. Use `uint(-1)` to withdraw `msg.sender`'s entire balance\n@param _balanceCheckFlag Use `BalanceCheckFlag.Both` or `BalanceCheckFlag.From` to check that `_fromAccountNumber`\n                         balance is non-negative after the withdrawal settles.",
            "id": 4377,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "withdrawParFromDefaultAccount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4375,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4370,
                  "name": "_marketId",
                  "nodeType": "VariableDeclaration",
                  "scope": 4377,
                  "src": "7489:17:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4369,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7489:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4372,
                  "name": "_amountPar",
                  "nodeType": "VariableDeclaration",
                  "scope": 4377,
                  "src": "7516:18:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4371,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7516:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4374,
                  "name": "_balanceCheckFlag",
                  "nodeType": "VariableDeclaration",
                  "scope": 4377,
                  "src": "7544:52:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                    "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4373,
                    "name": "AccountBalanceLib.BalanceCheckFlag",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5841,
                    "src": "7544:34:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                      "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7479:123:22"
            },
            "returnParameters": {
              "id": 4376,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7611:0:22"
            },
            "scope": 4378,
            "src": "7441:171:22",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          }
        ],
        "scope": 4379,
        "src": "688:6926:22"
      }
    ],
    "src": "595:7020:22"
  },
  "legacyAST": {
    "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/external/interfaces/IDepositWithdrawalProxy.sol",
    "exportedSymbols": {
      "IDepositWithdrawalProxy": [
        4378
      ]
    },
    "id": 4379,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 4274,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".7"
        ],
        "nodeType": "PragmaDirective",
        "src": "595:23:22"
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/external/lib/AccountBalanceLib.sol",
        "file": "../lib/AccountBalanceLib.sol",
        "id": 4276,
        "nodeType": "ImportDirective",
        "scope": 4379,
        "sourceUnit": 5892,
        "src": "620:65:22",
        "symbolAliases": [
          {
            "foreign": 4275,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "interface",
        "documentation": null,
        "fullyImplemented": false,
        "id": 4378,
        "linearizedBaseContracts": [
          4378
        ],
        "name": "IDepositWithdrawalProxy",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": null,
            "documentation": "@param _payableToken The wrapped payable token of the network. For example, WETH on Arbitrum.",
            "id": 4281,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "initializePayableMarket",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4279,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4278,
                  "name": "_payableToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 4281,
                  "src": "888:29:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address_payable",
                    "typeString": "address payable"
                  },
                  "typeName": {
                    "id": 4277,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "888:15:22",
                    "stateMutability": "payable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "878:45:22"
            },
            "returnParameters": {
              "id": 4280,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "932:0:22"
            },
            "scope": 4378,
            "src": "846:87:22",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "@param _toAccountNumber  The account number into which `msg.sender` will be depositing\n@param _marketId         The ID of the market being deposited\n@param _amountWei        The amount, in Wei, to deposit. Use `uint(-1)` to deposit `msg.sender`'s entire balance",
            "id": 4290,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "depositWei",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4288,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4283,
                  "name": "_toAccountNumber",
                  "nodeType": "VariableDeclaration",
                  "scope": 4290,
                  "src": "1267:24:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4282,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1267:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4285,
                  "name": "_marketId",
                  "nodeType": "VariableDeclaration",
                  "scope": 4290,
                  "src": "1301:17:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4284,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1301:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4287,
                  "name": "_amountWei",
                  "nodeType": "VariableDeclaration",
                  "scope": 4290,
                  "src": "1328:18:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4286,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1328:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1257:95:22"
            },
            "returnParameters": {
              "id": 4289,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1361:0:22"
            },
            "scope": 4378,
            "src": "1238:124:22",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "Same as `depositWei` but converts the `msg.sender`'s sent Payable Currency into Wrapped Payable Token before depositing into `DolomiteMargin`.\n     * @param _toAccountNumber The account number into which `msg.sender` will be depositing",
            "id": 4295,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "depositPayable",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4293,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4292,
                  "name": "_toAccountNumber",
                  "nodeType": "VariableDeclaration",
                  "scope": 4295,
                  "src": "1667:24:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4291,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1667:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1657:40:22"
            },
            "returnParameters": {
              "id": 4294,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1714:0:22"
            },
            "scope": 4378,
            "src": "1634:81:22",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "@dev Same as `depositWei` but defaults to account number 0 to save additional call data\n     * @param _marketId     The ID of the market being deposited\n@param _amountWei    The amount, in Wei, to deposit. Use `uint(-1)` to deposit `msg.sender`'s entire balance",
            "id": 4302,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "depositWeiIntoDefaultAccount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4300,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4297,
                  "name": "_marketId",
                  "nodeType": "VariableDeclaration",
                  "scope": 4302,
                  "src": "2067:17:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4296,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2067:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4299,
                  "name": "_amountWei",
                  "nodeType": "VariableDeclaration",
                  "scope": 4302,
                  "src": "2094:18:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4298,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2094:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2057:61:22"
            },
            "returnParameters": {
              "id": 4301,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2127:0:22"
            },
            "scope": 4378,
            "src": "2020:108:22",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "Same as `depositWeiIntoDefaultAccount` but converts the `msg.sender`'s sent Payable Currency into wrapped Payable Token before depositing into\n`DolomiteMargin`.",
            "id": 4305,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "depositPayableIntoDefaultAccount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4303,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2366:2:22"
            },
            "returnParameters": {
              "id": 4304,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2385:0:22"
            },
            "scope": 4378,
            "src": "2325:61:22",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "@param _fromAccountNumber    The account number from which `msg.sender` will be withdrawing\n@param _marketId             The ID of the market being withdrawn\n@param _amountWei            The amount, in Wei, to withdraw. Use `uint(-1)` to withdraw `msg.sender`'s entire\n                             balance\n@param _balanceCheckFlag     Use `BalanceCheckFlag.Both` or `BalanceCheckFlag.From` to check that\n                             `_fromAccountNumber` balance is non-negative after the withdrawal settles.",
            "id": 4316,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "withdrawWei",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4314,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4307,
                  "name": "_fromAccountNumber",
                  "nodeType": "VariableDeclaration",
                  "scope": 4316,
                  "src": "2988:26:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4306,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2988:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4309,
                  "name": "_marketId",
                  "nodeType": "VariableDeclaration",
                  "scope": 4316,
                  "src": "3024:17:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4308,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3024:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4311,
                  "name": "_amountWei",
                  "nodeType": "VariableDeclaration",
                  "scope": 4316,
                  "src": "3051:18:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4310,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3051:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4313,
                  "name": "_balanceCheckFlag",
                  "nodeType": "VariableDeclaration",
                  "scope": 4316,
                  "src": "3079:52:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                    "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4312,
                    "name": "AccountBalanceLib.BalanceCheckFlag",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5841,
                    "src": "3079:34:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                      "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2978:159:22"
            },
            "returnParameters": {
              "id": 4315,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3146:0:22"
            },
            "scope": 4378,
            "src": "2958:189:22",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "Same as `withdrawWei` but for withdrawing the Payable Token of the network. The user will receive unwrapped\nPayable Token from DolomiteMargin.\n     * @param _fromAccountNumber    The account number from which `msg.sender` will be withdrawing\n@param _amountWei            The amount, in Wei, to withdraw. Use `uint(-1)` to withdraw `msg.sender`'s entire\n                             balance.\n@param _balanceCheckFlag     Use `BalanceCheckFlag.Both` or `BalanceCheckFlag.From` to check that\n                             `_fromAccountNumber` balance is non-negative after the withdrawal settles.",
            "id": 4325,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "withdrawPayable",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4323,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4318,
                  "name": "_fromAccountNumber",
                  "nodeType": "VariableDeclaration",
                  "scope": 4325,
                  "src": "3845:26:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4317,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3845:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4320,
                  "name": "_amountWei",
                  "nodeType": "VariableDeclaration",
                  "scope": 4325,
                  "src": "3881:18:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4319,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3881:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4322,
                  "name": "_balanceCheckFlag",
                  "nodeType": "VariableDeclaration",
                  "scope": 4325,
                  "src": "3909:52:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                    "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4321,
                    "name": "AccountBalanceLib.BalanceCheckFlag",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5841,
                    "src": "3909:34:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                      "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3835:132:22"
            },
            "returnParameters": {
              "id": 4324,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3976:0:22"
            },
            "scope": 4378,
            "src": "3811:166:22",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "@dev Same as `withdrawWei` but defaults to account number 0 to save additional call data\n     * @param _marketId         The ID of the market being withdrawn\n@param _amountWei        The amount, in Wei, to withdraw. Use `uint(-1)` to withdraw `msg.sender`'s entire\n                         balance\n@param _balanceCheckFlag Use `BalanceCheckFlag.Both` or `BalanceCheckFlag.From` to check that `_fromAccountNumber`\n                         balance is non-negative after the withdrawal settles.",
            "id": 4334,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "withdrawWeiFromDefaultAccount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4332,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4327,
                  "name": "_marketId",
                  "nodeType": "VariableDeclaration",
                  "scope": 4334,
                  "src": "4581:17:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4326,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4581:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4329,
                  "name": "_amountWei",
                  "nodeType": "VariableDeclaration",
                  "scope": 4334,
                  "src": "4608:18:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4328,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4608:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4331,
                  "name": "_balanceCheckFlag",
                  "nodeType": "VariableDeclaration",
                  "scope": 4334,
                  "src": "4636:52:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                    "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4330,
                    "name": "AccountBalanceLib.BalanceCheckFlag",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5841,
                    "src": "4636:34:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                      "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4571:123:22"
            },
            "returnParameters": {
              "id": 4333,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4703:0:22"
            },
            "scope": 4378,
            "src": "4533:171:22",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "Same as `withdrawWeiFromDefaultAccount` but for withdrawing the Payable Token for the network. The user will\nreceive unwrapped Payable Token from\nDolomiteMargin.\n     * @param _amountWei        The amount, in Wei, to withdraw. Use `uint(-1)` to withdraw `msg.sender`'s entire\n                         balance\n@param _balanceCheckFlag Use `BalanceCheckFlag.Both` or `BalanceCheckFlag.From` to check that `_fromAccountNumber`\n                         balance is non-negative after the withdrawal settles.",
            "id": 4341,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "withdrawPayableFromDefaultAccount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4339,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4336,
                  "name": "_amountWei",
                  "nodeType": "VariableDeclaration",
                  "scope": 4341,
                  "src": "5330:18:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4335,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5330:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4338,
                  "name": "_balanceCheckFlag",
                  "nodeType": "VariableDeclaration",
                  "scope": 4341,
                  "src": "5358:52:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                    "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4337,
                    "name": "AccountBalanceLib.BalanceCheckFlag",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5841,
                    "src": "5358:34:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                      "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5320:96:22"
            },
            "returnParameters": {
              "id": 4340,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5425:0:22"
            },
            "scope": 4378,
            "src": "5278:148:22",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "@param _toAccountNumber  The account number into which `msg.sender` will be depositing\n@param _marketId         The ID of the market being deposited\n@param _amountPar        The amount, in Par, to deposit.",
            "id": 4350,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "depositPar",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4348,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4343,
                  "name": "_toAccountNumber",
                  "nodeType": "VariableDeclaration",
                  "scope": 4350,
                  "src": "5704:24:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4342,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5704:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4345,
                  "name": "_marketId",
                  "nodeType": "VariableDeclaration",
                  "scope": 4350,
                  "src": "5738:17:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4344,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5738:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4347,
                  "name": "_amountPar",
                  "nodeType": "VariableDeclaration",
                  "scope": 4350,
                  "src": "5765:18:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4346,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5765:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5694:95:22"
            },
            "returnParameters": {
              "id": 4349,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5798:0:22"
            },
            "scope": 4378,
            "src": "5675:124:22",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "@dev Same as `depositPar` but defaults to account number 0 to save additional call data\n     * @param _marketId     The ID of the market being deposited\n@param _amountPar    The amount, in Par, to deposit.",
            "id": 4357,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "depositParIntoDefaultAccount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4355,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4352,
                  "name": "_marketId",
                  "nodeType": "VariableDeclaration",
                  "scope": 4357,
                  "src": "6095:17:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4351,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6095:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4354,
                  "name": "_amountPar",
                  "nodeType": "VariableDeclaration",
                  "scope": 4357,
                  "src": "6122:18:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4353,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6122:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6085:61:22"
            },
            "returnParameters": {
              "id": 4356,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6155:0:22"
            },
            "scope": 4378,
            "src": "6048:108:22",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "@param _fromAccountNumber    The account number from which `msg.sender` will be withdrawing\n@param _marketId             The ID of the market being withdrawn\n@param _amountPar            The amount, in Par, to withdraw. Use `uint(-1)` to withdraw `msg.sender`'s entire\n                             balance\n@param _balanceCheckFlag     Use `BalanceCheckFlag.Both` or `BalanceCheckFlag.From` to check that\n                             `_fromAccountNumber` balance is non-negative after the withdrawal settles.",
            "id": 4368,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "withdrawPar",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4366,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4359,
                  "name": "_fromAccountNumber",
                  "nodeType": "VariableDeclaration",
                  "scope": 4368,
                  "src": "6758:26:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4358,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6758:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4361,
                  "name": "_marketId",
                  "nodeType": "VariableDeclaration",
                  "scope": 4368,
                  "src": "6794:17:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4360,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6794:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4363,
                  "name": "_amountPar",
                  "nodeType": "VariableDeclaration",
                  "scope": 4368,
                  "src": "6821:18:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4362,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6821:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4365,
                  "name": "_balanceCheckFlag",
                  "nodeType": "VariableDeclaration",
                  "scope": 4368,
                  "src": "6849:52:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                    "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4364,
                    "name": "AccountBalanceLib.BalanceCheckFlag",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5841,
                    "src": "6849:34:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                      "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6748:159:22"
            },
            "returnParameters": {
              "id": 4367,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6916:0:22"
            },
            "scope": 4378,
            "src": "6728:189:22",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": "@dev Same as `withdrawPar` but defaults to account number 0 to save additional call data\n     * @param _marketId         The ID of the market being withdrawn\n@param _amountPar        The amount, in Par, to withdraw. Use `uint(-1)` to withdraw `msg.sender`'s entire balance\n@param _balanceCheckFlag Use `BalanceCheckFlag.Both` or `BalanceCheckFlag.From` to check that `_fromAccountNumber`\n                         balance is non-negative after the withdrawal settles.",
            "id": 4377,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "withdrawParFromDefaultAccount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4375,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4370,
                  "name": "_marketId",
                  "nodeType": "VariableDeclaration",
                  "scope": 4377,
                  "src": "7489:17:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4369,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7489:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4372,
                  "name": "_amountPar",
                  "nodeType": "VariableDeclaration",
                  "scope": 4377,
                  "src": "7516:18:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4371,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7516:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4374,
                  "name": "_balanceCheckFlag",
                  "nodeType": "VariableDeclaration",
                  "scope": 4377,
                  "src": "7544:52:22",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                    "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 4373,
                    "name": "AccountBalanceLib.BalanceCheckFlag",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5841,
                    "src": "7544:34:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                      "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7479:123:22"
            },
            "returnParameters": {
              "id": 4376,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7611:0:22"
            },
            "scope": 4378,
            "src": "7441:171:22",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          }
        ],
        "scope": 4379,
        "src": "688:6926:22"
      }
    ],
    "src": "595:7020:22"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.16+commit.9c3226ce.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.0.23",
  "updatedAt": "2025-06-22T04:01:53.520Z",
  "devdoc": {
    "methods": {
      "depositPar(uint256,uint256,uint256)": {
        "params": {
          "_amountPar": "The amount, in Par, to deposit.",
          "_marketId": "The ID of the market being deposited",
          "_toAccountNumber": "The account number into which `msg.sender` will be depositing"
        }
      },
      "depositParIntoDefaultAccount(uint256,uint256)": {
        "details": "Same as `depositPar` but defaults to account number 0 to save additional call data",
        "params": {
          "_amountPar": "The amount, in Par, to deposit.",
          "_marketId": "The ID of the market being deposited"
        }
      },
      "depositPayable(uint256)": {
        "params": {
          "_toAccountNumber": "The account number into which `msg.sender` will be depositing"
        }
      },
      "depositWei(uint256,uint256,uint256)": {
        "params": {
          "_amountWei": "The amount, in Wei, to deposit. Use `uint(-1)` to deposit `msg.sender`'s entire balance",
          "_marketId": "The ID of the market being deposited",
          "_toAccountNumber": "The account number into which `msg.sender` will be depositing"
        }
      },
      "depositWeiIntoDefaultAccount(uint256,uint256)": {
        "details": "Same as `depositWei` but defaults to account number 0 to save additional call data",
        "params": {
          "_amountWei": "The amount, in Wei, to deposit. Use `uint(-1)` to deposit `msg.sender`'s entire balance",
          "_marketId": "The ID of the market being deposited"
        }
      },
      "initializePayableMarket(address)": {
        "params": {
          "_payableToken": "The wrapped payable token of the network. For example, WETH on Arbitrum."
        }
      },
      "withdrawPar(uint256,uint256,uint256,uint8)": {
        "params": {
          "_amountPar": "The amount, in Par, to withdraw. Use `uint(-1)` to withdraw `msg.sender`'s entire                             balance",
          "_balanceCheckFlag": "Use `BalanceCheckFlag.Both` or `BalanceCheckFlag.From` to check that                             `_fromAccountNumber` balance is non-negative after the withdrawal settles.",
          "_fromAccountNumber": "The account number from which `msg.sender` will be withdrawing",
          "_marketId": "The ID of the market being withdrawn"
        }
      },
      "withdrawParFromDefaultAccount(uint256,uint256,uint8)": {
        "details": "Same as `withdrawPar` but defaults to account number 0 to save additional call data",
        "params": {
          "_amountPar": "The amount, in Par, to withdraw. Use `uint(-1)` to withdraw `msg.sender`'s entire balance",
          "_balanceCheckFlag": "Use `BalanceCheckFlag.Both` or `BalanceCheckFlag.From` to check that `_fromAccountNumber`                         balance is non-negative after the withdrawal settles.",
          "_marketId": "The ID of the market being withdrawn"
        }
      },
      "withdrawPayable(uint256,uint256,uint8)": {
        "params": {
          "_amountWei": "The amount, in Wei, to withdraw. Use `uint(-1)` to withdraw `msg.sender`'s entire                             balance.",
          "_balanceCheckFlag": "Use `BalanceCheckFlag.Both` or `BalanceCheckFlag.From` to check that                             `_fromAccountNumber` balance is non-negative after the withdrawal settles.",
          "_fromAccountNumber": "The account number from which `msg.sender` will be withdrawing"
        }
      },
      "withdrawPayableFromDefaultAccount(uint256,uint8)": {
        "params": {
          "_amountWei": "The amount, in Wei, to withdraw. Use `uint(-1)` to withdraw `msg.sender`'s entire                         balance",
          "_balanceCheckFlag": "Use `BalanceCheckFlag.Both` or `BalanceCheckFlag.From` to check that `_fromAccountNumber`                         balance is non-negative after the withdrawal settles."
        }
      },
      "withdrawWei(uint256,uint256,uint256,uint8)": {
        "params": {
          "_amountWei": "The amount, in Wei, to withdraw. Use `uint(-1)` to withdraw `msg.sender`'s entire                             balance",
          "_balanceCheckFlag": "Use `BalanceCheckFlag.Both` or `BalanceCheckFlag.From` to check that                             `_fromAccountNumber` balance is non-negative after the withdrawal settles.",
          "_fromAccountNumber": "The account number from which `msg.sender` will be withdrawing",
          "_marketId": "The ID of the market being withdrawn"
        }
      },
      "withdrawWeiFromDefaultAccount(uint256,uint256,uint8)": {
        "details": "Same as `withdrawWei` but defaults to account number 0 to save additional call data",
        "params": {
          "_amountWei": "The amount, in Wei, to withdraw. Use `uint(-1)` to withdraw `msg.sender`'s entire                         balance",
          "_balanceCheckFlag": "Use `BalanceCheckFlag.Both` or `BalanceCheckFlag.From` to check that `_fromAccountNumber`                         balance is non-negative after the withdrawal settles.",
          "_marketId": "The ID of the market being withdrawn"
        }
      }
    }
  },
  "userdoc": {
    "methods": {
      "depositPayable(uint256)": {
        "notice": "Same as `depositWei` but converts the `msg.sender`'s sent Payable Currency into Wrapped Payable Token before depositing into `DolomiteMargin`."
      },
      "depositPayableIntoDefaultAccount()": {
        "notice": "Same as `depositWeiIntoDefaultAccount` but converts the `msg.sender`'s sent Payable Currency into wrapped Payable Token before depositing into `DolomiteMargin`."
      },
      "withdrawPayable(uint256,uint256,uint8)": {
        "notice": "Same as `withdrawWei` but for withdrawing the Payable Token of the network. The user will receive unwrapped Payable Token from DolomiteMargin."
      },
      "withdrawPayableFromDefaultAccount(uint256,uint8)": {
        "notice": "Same as `withdrawWeiFromDefaultAccount` but for withdrawing the Payable Token for the network. The user will receive unwrapped Payable Token from DolomiteMargin."
      }
    }
  }
}