diff --git a/contracts/interfaces/IInsuranceFund.sol b/contracts/interfaces/IInsuranceFund.sol index 1778529..3b77dbe 100644 --- a/contracts/interfaces/IInsuranceFund.sol +++ b/contracts/interfaces/IInsuranceFund.sol @@ -24,4 +24,6 @@ interface IInsuranceFund { address trader, uint256 amountFee ) external; + + function clearBonus(address _positionManager, address _trader) external; } diff --git a/contracts/protocol/InsuranceFund.sol b/contracts/protocol/InsuranceFund.sol index 770d758..6a518a8 100644 --- a/contracts/protocol/InsuranceFund.sol +++ b/contracts/protocol/InsuranceFund.sol @@ -106,7 +106,7 @@ contract InsuranceFund is } if (depositedBonusAmount > 0) { - busdBonusBalances[_trader][_positionManager] += depositedBonusAmount; + busdBonusBalances[_positionManager][_trader] += depositedBonusAmount; } busdAmount = collectableBUSDAmount; @@ -133,10 +133,11 @@ contract InsuranceFund is IPositionManager(_positionManager).getQuoteAsset() ); - if (acceptBonus) { - uint256 bonusBalance = busdBonusBalances[_trader][_positionManager]; + if (acceptBonus && _oldMargin > 0) { + uint256 bonusBalance = busdBonusBalances[_positionManager][_trader]; if (bonusBalance > 0) { uint256 oldBUSDBalance = _oldMargin - bonusBalance; + uint256 withdrawMargin = uint256(int256(_amount) - _pnl); ( uint256 withdrawBUSDAmount, @@ -152,14 +153,16 @@ contract InsuranceFund is : calcAmountWhenMarginOnlyHaveBonus( _amount, bonusBalance, - _pnl + _pnl, + withdrawMargin ); if (withdrawBonusAmount > 0) { busdBonus.safeTransfer(_trader, withdrawBonusAmount); } - busdBonusBalances[_trader][_positionManager] = remainingBonusAmount; + // If withdraw all margin, clear bonus + busdBonusBalances[_positionManager][_trader] = withdrawMargin == _oldMargin ? 0 : remainingBonusAmount; _amount = withdrawBUSDAmount; if (_amount == 0) { @@ -194,16 +197,9 @@ contract InsuranceFund is function clearBonus( address _positionManager, - address _trader, - uint256 _amount - ) public onlyCounterParty { - // Use when liquidated - if (busdBonusBalances[_trader][_positionManager] > _amount) { - busdBonusBalances[_trader][_positionManager] -= _amount; - return; - } - - busdBonusBalances[_trader][_positionManager] = 0; + address _trader + ) external onlyCounterParty { + busdBonusBalances[_positionManager][_trader] = 0; emit BonusBalanceCleared(_positionManager, _trader); } @@ -350,7 +346,8 @@ contract InsuranceFund is function calcAmountWhenMarginOnlyHaveBonus( uint256 _withdrawAmount, uint256 _bonusBalance, - int256 _pnl + int256 _pnl, + uint256 _withdrawMargin ) private view @@ -364,11 +361,10 @@ contract InsuranceFund is * If PnL >= 0, return PnL in BUSD and requested withdraw margin in bonus * If Pnl < 0, only return requested withdraw amount in bonus */ - uint256 withdrawMargin = uint256(int256(_withdrawAmount) - _pnl); return _pnl >= 0 - ? (uint256(_pnl), withdrawMargin, _bonusBalance - withdrawMargin) - : (0, _withdrawAmount, _bonusBalance - withdrawMargin); + ? (uint256(_pnl), _withdrawMargin, _bonusBalance - _withdrawMargin) + : (0, _withdrawAmount, _bonusBalance - _withdrawMargin); } function calcAmountWhenMarginHaveBUSD( @@ -427,7 +423,8 @@ contract InsuranceFund is */ uint256[49] private __gap; IERC20Upgradeable public busdBonus; - // Trader => (PositionManager => (BonusBalance)) + // PositionManager => (Trader => (BonusBalance)) mapping(address => mapping(address => uint256)) public busdBonusBalances; bool public acceptBonus; + mapping(address => mapping(address => uint256)) public busdBalances; } diff --git a/contracts/protocol/bases/PositionHouseBase.sol b/contracts/protocol/bases/PositionHouseBase.sol index 091efc2..b1f7f4c 100644 --- a/contracts/protocol/bases/PositionHouseBase.sol +++ b/contracts/protocol/bases/PositionHouseBase.sol @@ -175,20 +175,20 @@ contract PositionHouseBase is nonReentrant onlyPositionStrategyOrder { - address _pmAddress = address(_positionManager); - Position.Data memory _positionDataWithManualMargin = getPositionWithManualMargin(_pmAddress, _trader, getPosition(_pmAddress, _trader)); - _internalCancelAllPendingOrder(_positionManager, _trader); -// must reuse this code instead of using function _internalCloseMarketPosition - _internalOpenMarketPosition( - _positionManager, - _positionDataWithManualMargin.quantity > 0 - ? Position.Side.SHORT - : Position.Side.LONG, - _positionDataWithManualMargin.quantity.abs(), - _positionDataWithManualMargin.leverage, - _positionDataWithManualMargin, - _trader - ); +// address _pmAddress = address(_positionManager); +// Position.Data memory _positionDataWithManualMargin = getPositionWithManualMargin(_pmAddress, _trader, getPosition(_pmAddress, _trader)); +// _internalCancelAllPendingOrder(_positionManager, _trader); +//// must reuse this code instead of using function _internalCloseMarketPosition +// _internalOpenMarketPosition( +// _positionManager, +// _positionDataWithManualMargin.quantity > 0 +// ? Position.Side.SHORT +// : Position.Side.LONG, +// _positionDataWithManualMargin.quantity.abs(), +// _positionDataWithManualMargin.leverage, +// _positionDataWithManualMargin, +// _trader +// ); } function _internalCloseMarketPosition(address _pmAddress, address _trader, uint256 _quantity) internal { @@ -263,10 +263,11 @@ contract PositionHouseBase is _positionData ); } + uint256 oldMargin = _positionData.margin; clearPosition(_pmAddress, _trader); int256 totalClaimableAmount = _claimableMargin + _claimablePnl; if (_claimableMargin + _claimablePnl > 0) { - _withdraw(_pmAddress, _trader, totalClaimableAmount.abs(), _claimableMargin.abs(), _claimablePnl); + _withdraw(_pmAddress, _trader, totalClaimableAmount.abs(), uint256(_claimableMargin), _claimablePnl); // emit FundClaimed(_pmAddress, _trader, totalRealizedPnl.abs()); } } @@ -326,6 +327,7 @@ contract PositionHouseBase is bool _liquidateOrderIsBuy = positionDataWithManualMargin.quantity > 0 ? false : true; liquidationPenalty = positionDataWithManualMargin.margin ; clearPosition(_pmAddress, _trader); + _clearBonus(_pmAddress, _trader); // after clear position, create an opposite market order of old position _positionManager.openMarketPosition(positionDataWithManualMargin.quantity.abs(), _liquidateOrderIsBuy); feeToLiquidator = @@ -360,7 +362,7 @@ contract PositionHouseBase is _deposit(_pmAddress, _trader, _amount, 0); - emit MarginAdded(_trader, _amount, _positionManager); +// emit MarginAdded(_trader, _amount, _positionManager); } /** @@ -376,14 +378,14 @@ contract PositionHouseBase is address _pmAddress = address(_positionManager); address _trader = _msgSender(); - uint256 removableMargin = getRemovableMargin(_positionManager, _trader); - require(_amount <= removableMargin, Errors.VL_INVALID_REMOVE_MARGIN); + uint256 _oldMargin = getTotalMargin(_pmAddress, _trader); + require(_amount <= getRemovableMargin(_positionManager, _trader), Errors.VL_INVALID_REMOVE_MARGIN); manualMargin[_pmAddress][_trader] -= int256(_amount); - _withdraw(_pmAddress, _trader, _amount, _amount, 0); + _withdraw(_pmAddress, _trader, _amount, _oldMargin, 0); - emit MarginRemoved(_trader, _amount, _positionManager); +// emit MarginRemoved(_trader, _amount, _positionManager); } // OWNER UPDATE VARIABLE STORAGE @@ -476,6 +478,16 @@ contract PositionHouseBase is } } + function getTotalMargin(address _pmAddress, address _trader) + public + override + returns (uint256) { + uint256 pendingMargin = PositionHouseFunction.getTotalPendingLimitOrderMargin(IPositionManager(_pmAddress), _getLimitOrders(_pmAddress, _trader), false); + uint256 margin = getPositionWithManualMargin(_pmAddress, _trader, getPosition(_pmAddress, _trader)).margin; + + return pendingMargin + margin; + } + function getPositionWithManualMargin( address _pmAddress, address _trader, @@ -618,7 +630,8 @@ contract PositionHouseBase is _deposit(_pmAddress, _trader, pResp.marginToVault.abs(), pResp.fee); } else if (pResp.marginToVault < 0) { // withdraw from vault to user - _withdraw(_pmAddress, _trader, pResp.marginToVault.abs(), oldPosition.margin, pResp.realizedPnl); + uint256 pendingMargin = PositionHouseFunction.getTotalPendingLimitOrderMargin(_positionManager, _getLimitOrders(_pmAddress, _trader), false); + _withdraw(_pmAddress, _trader, pResp.marginToVault.abs(), oldPosition.margin + pendingMargin, pResp.realizedPnl); } emit OpenMarket( _trader, @@ -854,6 +867,14 @@ contract PositionHouseBase is insuranceFund.withdraw(_positionManager, _trader, _amount, _margin, _pnl); } + function _clearBonus( + address _positionManager, + address _trader + ) internal + { + insuranceFund.clearBonus(_positionManager, _trader); + } + modifier onlyPositionStrategyOrder() { require(msg.sender == address(positionStrategyOrder), Errors.VL_ONLY_POSITION_STRATEGY_ORDER); _; diff --git a/contracts/protocol/libraries/position/PositionHouseFunction.sol b/contracts/protocol/libraries/position/PositionHouseFunction.sol index 43a2a2b..3717127 100644 --- a/contracts/protocol/libraries/position/PositionHouseFunction.sol +++ b/contracts/protocol/libraries/position/PositionHouseFunction.sol @@ -293,21 +293,28 @@ library PositionHouseFunction { function getTotalPendingLimitOrderMargin( IPositionManager _positionManager, - PositionLimitOrder.Data[] memory _limitOrder + PositionLimitOrder.Data[] memory _limitOrder, + bool shouldCancel ) external returns (uint256 totalMargin) { for (uint i = 0; i < _limitOrder.length; i++) { ( bool isFilled, , - , + uint256 size, + uint256 partialFilled ) = _positionManager.getPendingOrderDetail( _limitOrder[i].pip, _limitOrder[i].orderId ); if (!isFilled) { - (uint256 refundQuantity, ) = _positionManager.cancelLimitOrder(_limitOrder[i].pip, _limitOrder[i].orderId); - (, uint256 refundMargin, ) = _positionManager.getNotionalMarginAndFee(refundQuantity, _limitOrder[i].pip, _limitOrder[i].leverage); - totalMargin += refundMargin; + if (shouldCancel) { + (uint256 refundQuantity, ) = _positionManager.cancelLimitOrder(_limitOrder[i].pip, _limitOrder[i].orderId); + (, uint256 refundMargin, ) = _positionManager.getNotionalMarginAndFee(refundQuantity, _limitOrder[i].pip, _limitOrder[i].leverage); + totalMargin += refundMargin; + } else { + (, uint256 pendingMargin,) = _positionManager.getNotionalMarginAndFee(size - partialFilled, _limitOrder[i].pip, _limitOrder[i].leverage); + totalMargin += pendingMargin; + } } } return totalMargin; diff --git a/contracts/protocol/modules/LimitOrder.sol b/contracts/protocol/modules/LimitOrder.sol index f92fdbf..7e6bfaf 100644 --- a/contracts/protocol/modules/LimitOrder.sol +++ b/contracts/protocol/modules/LimitOrder.sol @@ -51,6 +51,7 @@ abstract contract LimitOrderManager is ClaimableAmountManager, PositionHouseStor ) internal { address _trader = msg.sender; address _pmAddress = address(_positionManager); + uint256 _oldMargin = getTotalMargin(_pmAddress, _trader); // declare a pointer to reduceLimitOrders or limitOrders PositionLimitOrder.Data[] storage _orders = _getLimitOrderPointer( _pmAddress, @@ -75,7 +76,7 @@ abstract contract LimitOrderManager is ClaimableAmountManager, PositionHouseStor _order.pip, _order.leverage ); - _withdraw(_pmAddress, _trader, _refundMargin, _refundMargin, 0); + _withdraw(_pmAddress, _trader, _refundMargin, _oldMargin, 0); } emit CancelLimitOrder(_trader, _pmAddress, _order.pip, _order.orderId); } @@ -86,14 +87,15 @@ abstract contract LimitOrderManager is ClaimableAmountManager, PositionHouseStor ) internal { address _pmAddress = address(_positionManager); PositionLimitOrder.Data[] memory _increaseOrders = limitOrders[_pmAddress][_trader]; + uint256 _oldMargin = getTotalMargin(_pmAddress, _trader); uint256 totalRefundMargin; if (_increaseOrders.length != 0) { - totalRefundMargin = PositionHouseFunction.getTotalPendingLimitOrderMargin(_positionManager, _increaseOrders); + totalRefundMargin = PositionHouseFunction.getTotalPendingLimitOrderMargin(_positionManager, _increaseOrders, true); } _emptyLimitOrders(_pmAddress, _trader); _emptyReduceLimitOrders(_pmAddress, _trader); if (totalRefundMargin != 0) { - _withdraw(_pmAddress, _trader, totalRefundMargin, totalRefundMargin, 0); + _withdraw(_pmAddress, _trader, totalRefundMargin, _oldMargin, 0); } } @@ -227,8 +229,9 @@ abstract contract LimitOrderManager is ClaimableAmountManager, PositionHouseStor // if new limit order is not same side with old position, sizeOut == oldPosition.quantity // => close all position and clear position, return sizeOut + 1 mean closed position { + uint256 pendingMargin = PositionHouseFunction.getTotalPendingLimitOrderMargin(_positionManager, _getLimitOrders(_pmAddress, _trader), false); (int256 totalReturn, int256 realizedPnl) = PositionHouseFunction.calcReturnWhenOpenReverse(_pmAddress, _trader, sizeOut, openNotional, oldPosition); - _withdraw(_pmAddress, _trader, totalReturn.abs(), oldPosition.margin, realizedPnl); + _withdraw(_pmAddress, _trader, totalReturn.abs(), oldPosition.margin + pendingMargin, realizedPnl); } if (sizeOut == oldPosition.quantity.abs()) { clearPosition(_pmAddress, _trader); @@ -415,6 +418,11 @@ abstract contract LimitOrderManager is ClaimableAmountManager, PositionHouseStor virtual returns (Position.Data memory); + function getTotalMargin(address _pmAddress, address _trader) + public + virtual + returns (uint256); + // function _internalClosePosition( // IPositionManager _positionManager, // address _trader, diff --git a/contracts/test/InsurranceFundMock.sol b/contracts/test/InsurranceFundMock.sol index 19c94f8..af6f2fb 100644 --- a/contracts/test/InsurranceFundMock.sol +++ b/contracts/test/InsurranceFundMock.sol @@ -10,6 +10,6 @@ contract InsuranceFundTest is InsuranceFund { } function setBonusBalance(address _pm, address _trader, uint256 _amount) public { - busdBonusBalances[_trader][_pm] = _amount; + busdBonusBalances[_pm][_trader] = _amount; } } \ No newline at end of file diff --git a/deploy/ContractWrapperFactory.ts b/deploy/ContractWrapperFactory.ts index 8ccd3a9..f553e90 100644 --- a/deploy/ContractWrapperFactory.ts +++ b/deploy/ContractWrapperFactory.ts @@ -51,7 +51,8 @@ export class ContractWrapperFactory { async createPositionManager(args: CreatePositionManagerInput) { const PositionMathAddress = await this.db.findAddressByKey('PositionMath'); - const symbol = `${args.priceFeedKey}_${args.quote}`; + // const symbol = `${args.priceFeedKey}_${args.quote}`; + const symbol = args.symbol; const saveKey = `PositionManager:${symbol}` const PositionManager = await this.hre.ethers.getContractFactory("PositionManager", { diff --git a/deploy/types.ts b/deploy/types.ts index f72ced8..f92a6f0 100644 --- a/deploy/types.ts +++ b/deploy/types.ts @@ -44,6 +44,7 @@ export interface CreatePositionManagerInput { counterParty : string leverage?: number isCoinM?: boolean + symbol?: string } diff --git a/deployData_develop_qc.db b/deployData_develop_qc.db index c7eb8b4..6777706 100644 --- a/deployData_develop_qc.db +++ b/deployData_develop_qc.db @@ -1,24 +1,44 @@ -{"address":"0x629719e4861ec07e05ef2c263079580b3efc2fc5","key":"PositionMath","_id":"2KtMpXBxjVCUrK0e"} +{"address":"yes","key":"0x773C18E253412E4e6F332955a20E4Ac3F34dD833:verified","_id":"0Ort462CEiSNlhkq"} +{"address":"0x5bee5b8918708295047f8fd6f77928d6ed854da6","key":"PositionMath","_id":"2KtMpXBxjVCUrK0e"} {"address":"0x61365378235d45C9e1F5D8A86a144c4baBA14D80","key":"Mock:BUSDBonus","_id":"2V1INGx7sTWIUAfg"} -{"address":"0xf898271cb1e728d5c4d19812a53c361ab9008bc7","key":"PositionHouseFunction","_id":"75XABegnfFqJiDzR"} +{"address":"0x759c656df785ecbd61924d63c3160c5694d04b20","key":"PositionHouseFunction","_id":"75XABegnfFqJiDzR"} +{"address":"yes","key":"0x573b29eb9091d434670050891FEea3fA6aAb4A65:verified","_id":"8wxEmltPey5m0Yi1"} +{"address":"yes","key":"0x3C95e04CdFe3E85Ca35c0e8ef8Bd87246A577F72:verified","_id":"BjADD4UHwsTfZgFa"} +{"address":"yes","key":"0x0AE189a9b64b1E7DFfd1059e20923C2F41a0DD99:verified","_id":"CbLLAMMMF2uXtW3j"} {"address":"0xdb824ad722b220890d1ce63e9e44b27ce44ba57f","key":"PositionHouse","_id":"CjAtnBKtjePmBv0B"} {"address":"0xcc593a496d50f2f5820e9024821f1cdfa83be480","key":"PositionNotionalConfigProxy","_id":"EHwLRCnuCnynPEFF"} +{"address":"yes","key":"0xe0859eB726D3F1cf9396fF03f651fBE401e2c8Df:verified","_id":"FLloGj7YyPY64UsV"} +{"address":"yes","key":"0x5D4673ce08F06C1e687218f6B6A44Dc532a83165:verified","_id":"G1k7tRlo9GVa64lf"} {"address":"0x0727dc362aefaa3fc65a495a9e6d2f1890d93608","key":"PositionHouseViewer","_id":"Gz1rY93zipvY0FQW"} +{"address":"yes","key":"0xD3824C669D2AC9265D490b00e26Ee2cd717d065B:verified","_id":"HXkUOgIt5yJ0Woch"} {"address":"0x30d9F3D9BBe1d95c2F3b618DE8d71745D856218E","key":"Mock:BUSD","_id":"KONcXvKmbiCkGBhN"} -{"address":"0xe305cabaa644fb2a63f9da2504f5c68c62998fd5","key":"USDMargin","_id":"NSNnjK7G7AuU2Vht"} +{"address":"yes","key":"0x0795FE3A2359EC460F91317F76f737f482702f93:verified","_id":"KfTzesvm1fQyWTsy"} +{"address":"yes","key":"0x2422baDBFA056A72fd70722B572fD8EbFeAE5472:verified","_id":"LZCghWM97WHZaehb"} +{"address":"0xbd3d68d7eb3065db61629a72264d995cea5e5852","key":"PositionManager:BNB2BUSD","_id":"MPBOV1OwGwDgPxZC"} +{"address":"0xffe13ce6a8762c186871550315f0c1582f17e032","key":"USDMargin","_id":"NSNnjK7G7AuU2Vht"} +{"address":"yes","key":"0x81Ed2ed0ac9c39DA7502059498C3bb94786388D7:verified","_id":"Nyhl7daMUQi9WaBN"} +{"address":"yes","key":"0x8B7A9c7ACef5b5A5F80c3B910375811123EFc73e:verified","_id":"PSuLkOYVrt7rYagS"} +{"address":"yes","key":"0x0855328FD0a2A9161ba0d528ee79F76cA2BA4C00:verified","_id":"QrgnaNIrlOzNI8BQ"} +{"address":"yes","key":"0xdddAA6a7d7ac3F68d6fFa40b2dE34ff85c293B69:verified","_id":"UZOaKdpcy74MB5xb"} {"address":"0xa433f15ad64304582f702ff4cb080f99c6d077d8","key":"InsuranceFund","_id":"ZJzqokVHxX5jKtDA"} {"address":"0xb39328b25ef839484cd959a96df2a89859e79f3c","key":"PositionManager:BNB_BUSD","_id":"Zb6Y2KXS2jN5Qrx3"} +{"address":"yes","key":"0x2D5df37aBeFF5942aa3206E64aAfd6dD24B58ad6:verified","_id":"bDLHzUV97bDkbMRc"} +{"address":"yes","key":"0x1a348BBC4D2E7bf59fc9A986D08E7A53D15ececa:verified","_id":"bL5REG6Z6PQZiw7D"} {"address":"0x12bd44c48bde6a56f1f56f44629782edf6309667","key":"PositionHouseConfigurationProxy","_id":"eGJV8MWZbLVzRSEk"} +{"address":"yes","key":"0x2e204Dfaf892A04E1Ed676E36919b1023714bd6A:verified","_id":"eM4gtloeri6dbDOY"} +{"address":"yes","key":"0xFEFa0345d8668c8A82C29E92a6E259a2242e4D5e:verified","_id":"eah2hTqIrdWRnjG9"} +{"address":"yes","key":"0x6eE2139E83443fAEC693E0A5d28fDD8F4977940c:verified","_id":"euvkzHNRcCTyXo9V"} +{"address":"yes","key":"0xd4dc0a79EbFd84d126b2988dc1F1ddFaE6d81f26:verified","_id":"fNj8XIGfTC8E8bNt"} {"address":"0x9bf985efbd02c401618cc73c08dc83bcd18887bb","key":"PositionManager:BTC_BUSD","_id":"fsp9Rk1ku9FOgJjb"} -{"address":"0xe5863d1773327c2941002546a1fe6720ae17d199","key":"PositionStrategyOrder","_id":"sLZHeZVhxJ2IPrfD"} -{"address":"0x50291f36185086bc666762ada69dc943763fa264","key":"ChainLinkPriceFeed","_id":"toJHDX6Y846kYLBc"} -{"address":"0x4d82ba5291ce93393d6c6dbc6d49f8954f86a544","key":"USDMargin","_id":"NSNnjK7G7AuU2Vht"} -{"address":"0xf49fce961aaba020ed0fdc1591724a53b152feed","key":"PositionMath","_id":"2KtMpXBxjVCUrK0e"} -{"address":"0x34d27f4e6b16729a6cc40a7ef4e34faaac033da5","key":"PositionHouseFunction","_id":"75XABegnfFqJiDzR"} -{"address":"yes","key":"0x573b29eb9091d434670050891FEea3fA6aAb4A65:verified","_id":"8wxEmltPey5m0Yi1"} -{"address":"yes","key":"0x3C95e04CdFe3E85Ca35c0e8ef8Bd87246A577F72:verified","_id":"BjADD4UHwsTfZgFa"} {"address":"yes","key":"0x1AfdeB747772b7C991Dd17c5e0b3b4BEA0a71066:verified","_id":"jEBnY54dFbeEUEBc"} -{"address":"yes","key":"0xdddAA6a7d7ac3F68d6fFa40b2dE34ff85c293B69:verified","_id":"UZOaKdpcy74MB5xb"} +{"address":"yes","key":"0xB814B3e5cBb6a666955575e1FAa7e0d558EF4eae:verified","_id":"ldPXlJ7h0nWcodLP"} {"address":"yes","key":"0x809201EB3b774F5FA8d886b3d93d8521e9fb9244:verified","_id":"p1sKPDvrG1xsJgY6"} -{"address":"yes","key":"0x8B7A9c7ACef5b5A5F80c3B910375811123EFc73e:verified","_id":"PSuLkOYVrt7rYagS"} {"address":"yes","key":"0x6f23FC223D95FFb5b6aFf69d6236a8130713A453:verified","_id":"pTkPbfTdpM6gMIw9"} +{"address":"0xe5863d1773327c2941002546a1fe6720ae17d199","key":"PositionStrategyOrder","_id":"sLZHeZVhxJ2IPrfD"} +{"address":"0x50291f36185086bc666762ada69dc943763fa264","key":"ChainLinkPriceFeed","_id":"toJHDX6Y846kYLBc"} +{"address":"yes","key":"0xF28fC10388d74b8141E1B973E1a8162d3726a0d2:verified","_id":"xOFBmeLdNTutqlCZ"} +{"address":"yes","key":"0x25bD35C643373670944E4A2CD643f8e697fa3F6F:verified","_id":"yinJ77O7y2bGgkxn"} +{"address":"0x7fdb190bdaef7fb205cab4dac9b93ef27d6eb27b","key":"USDMargin","_id":"NSNnjK7G7AuU2Vht"} +{"address":"0x1f1469d64e41b53ec610509d24228243facd4270","key":"PositionMath","_id":"2KtMpXBxjVCUrK0e"} +{"address":"0x5f9a0d8331e675fdc3aec32ed76c44bcc77c27b8","key":"PositionHouseFunction","_id":"75XABegnfFqJiDzR"} +{"address":"yes","key":"0x3C7e4c914b8b87f58c21AAEf0FDE1e32Cf79335d:verified","_id":"SIeBObuuuZum4fM9"} diff --git a/test/unit/InsurranceFund.spec.ts b/test/unit/InsurranceFund.spec.ts index a84a0a2..e5aedb8 100644 --- a/test/unit/InsurranceFund.spec.ts +++ b/test/unit/InsurranceFund.spec.ts @@ -20,7 +20,20 @@ describe('Insurance Fund', async function () { // Deploy mock credit contract busdBonusToken = (await bep20MintableFactory.deploy('BUSD Bonus Mock', 'BUSDBONUS')) as unknown as BEP20Mintable - const pmFactory = await ethers.getContractFactory("PositionManagerTest") + const USDMarginFactory = await ethers.getContractFactory('USDMargin') + const USDMargin = await USDMarginFactory.deploy(); + + const PositionMath = await ethers.getContractFactory('PositionMath', { + libraries: { + USDMargin: USDMargin.address + } + }) + const positionMath = await PositionMath.deploy() + const pmFactory = await ethers.getContractFactory("PositionManagerTest", { + libraries: { + PositionMath: positionMath.address + } + }) positionManager = (await pmFactory.deploy()) as unknown as PositionManager await positionManager.initialize(BigNumber.from(200), busdToken.address, ethers.utils.formatBytes32String('BTC'), BigNumber.from(100), BigNumber.from(10000), BigNumber.from(10000), BigNumber.from(3000), BigNumber.from(1000), '0x5741306c21795FdCBb9b265Ea0255F499DFe515C'.toLowerCase(), deployer.address); @@ -30,6 +43,7 @@ describe('Insurance Fund', async function () { await insuranceFund.setBonusAddress(busdBonusToken.address) await insuranceFund.setCounterParty(deployer.address) await insuranceFund.updateWhitelistManager(positionManager.address, true) + await insuranceFund.shouldAcceptBonus( true) await busdToken.connect(trader).increaseAllowance(insuranceFund.address, BigNumber.from('100000000000000000000000000')) await busdBonusToken.connect(trader).increaseAllowance(insuranceFund.address, BigNumber.from('100000000000000000000000000')) @@ -82,7 +96,7 @@ describe('Insurance Fund', async function () { const traderBUSDBalanceAfterDeposit = await busdToken.balanceOf(trader.getAddress()) const traderBonusBalanceAfterDeposit = await busdBonusToken.balanceOf(trader.getAddress()) - const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(trader.getAddress(), positionManager.address) + const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(positionManager.address, trader.getAddress()) expect(traderBUSDBalanceAfterDeposit).eq("1000"); expect(traderBonusBalanceAfterDeposit).eq("3"); @@ -109,7 +123,7 @@ describe('Insurance Fund', async function () { const traderBUSDBalanceAfterDeposit = await busdToken.balanceOf(trader.getAddress()) const traderBonusBalanceAfterDeposit = await busdBonusToken.balanceOf(trader.getAddress()) - const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(trader.getAddress(), positionManager.address) + const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(positionManager.address, trader.getAddress()) expect(traderBUSDBalanceAfterDeposit).eq("1000"); expect(traderBonusBalanceAfterDeposit).eq("0"); @@ -136,7 +150,7 @@ describe('Insurance Fund', async function () { const traderBUSDBalanceAfterDeposit = await busdToken.balanceOf(trader.getAddress()) const traderBonusBalanceAfterDeposit = await busdBonusToken.balanceOf(trader.getAddress()) - const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(trader.getAddress(), positionManager.address) + const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(positionManager.address, trader.getAddress()) expect(traderBUSDBalanceAfterDeposit).eq("905"); expect(traderBonusBalanceAfterDeposit).eq("0"); @@ -163,7 +177,7 @@ describe('Insurance Fund', async function () { const traderBUSDBalanceAfterDeposit = await busdToken.balanceOf(trader.getAddress()) const traderBonusBalanceAfterDeposit = await busdBonusToken.balanceOf(trader.getAddress()) - const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(trader.getAddress(), positionManager.address) + const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(positionManager.address, trader.getAddress()) expect(traderBUSDBalanceAfterDeposit).eq("900"); expect(traderBonusBalanceAfterDeposit).eq("0"); @@ -188,7 +202,7 @@ describe('Insurance Fund', async function () { const traderBUSDBalanceAfterDeposit = await busdToken.balanceOf(trader.getAddress()) const traderBonusBalanceAfterDeposit = await busdBonusToken.balanceOf(trader.getAddress()) - const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(trader.getAddress(), positionManager.address) + const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(positionManager.address, trader.getAddress()) expect(traderBUSDBalanceAfterDeposit).eq("0"); expect(traderBonusBalanceAfterDeposit).eq("0"); @@ -213,7 +227,7 @@ describe('Insurance Fund', async function () { const traderBUSDBalanceAfterDeposit = await busdToken.balanceOf(trader.getAddress()) const traderBonusBalanceAfterDeposit = await busdBonusToken.balanceOf(trader.getAddress()) - const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(trader.getAddress(), positionManager.address) + const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(positionManager.address, trader.getAddress()) expect(traderBUSDBalanceAfterDeposit).eq("0"); expect(traderBonusBalanceAfterDeposit).eq("80"); @@ -238,7 +252,7 @@ describe('Insurance Fund', async function () { const traderBUSDBalanceAfterDeposit = await busdToken.balanceOf(trader.getAddress()) const traderBonusBalanceAfterDeposit = await busdBonusToken.balanceOf(trader.getAddress()) - const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(trader.getAddress(), positionManager.address) + const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(positionManager.address, trader.getAddress()) expect(traderBUSDBalanceAfterDeposit).eq("0"); expect(traderBonusBalanceAfterDeposit).eq("80"); @@ -265,7 +279,7 @@ describe('Insurance Fund', async function () { const traderBUSDBalanceAfterDeposit = await busdToken.balanceOf(trader.getAddress()) const traderBonusBalanceAfterDeposit = await busdBonusToken.balanceOf(trader.getAddress()) - const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(trader.getAddress(), positionManager.address) + const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(positionManager.address, trader.getAddress()) expect(traderBUSDBalanceAfterDeposit).eq("998"); expect(traderBonusBalanceAfterDeposit).eq("0"); @@ -292,7 +306,7 @@ describe('Insurance Fund', async function () { const traderBUSDBalanceAfterDeposit = await busdToken.balanceOf(trader.getAddress()) const traderBonusBalanceAfterDeposit = await busdBonusToken.balanceOf(trader.getAddress()) - const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(trader.getAddress(), positionManager.address) + const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(positionManager.address, trader.getAddress()) expect(traderBUSDBalanceAfterDeposit).eq("998"); expect(traderBonusBalanceAfterDeposit).eq("0"); @@ -319,7 +333,7 @@ describe('Insurance Fund', async function () { const traderBUSDBalanceAfterDeposit = await busdToken.balanceOf(trader.getAddress()) const traderBonusBalanceAfterDeposit = await busdBonusToken.balanceOf(trader.getAddress()) - const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(trader.getAddress(), positionManager.address) + const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(positionManager.address, trader.getAddress()) expect(traderBUSDBalanceAfterDeposit).eq("905"); expect(traderBonusBalanceAfterDeposit).eq("0"); @@ -343,7 +357,7 @@ describe('Insurance Fund', async function () { const traderBUSDBalanceAfterWithdraw = await busdToken.balanceOf(trader.getAddress()) const traderBonusBalanceAfterWithdraw = await busdBonusToken.balanceOf(trader.getAddress()) - const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(trader.getAddress(), positionManager.address) + const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(positionManager.address, trader.getAddress()) expect(traderBUSDBalanceAfterWithdraw).eq("4"); expect(traderBonusBalanceAfterWithdraw).eq("1"); @@ -364,7 +378,7 @@ describe('Insurance Fund', async function () { const traderBUSDBalanceAfterWithdraw = await busdToken.balanceOf(trader.getAddress()) const traderBonusBalanceAfterWithdraw = await busdBonusToken.balanceOf(trader.getAddress()) - const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(trader.getAddress(), positionManager.address) + const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(positionManager.address, trader.getAddress()) expect(traderBUSDBalanceAfterWithdraw).eq("2"); expect(traderBonusBalanceAfterWithdraw).eq("3"); @@ -385,7 +399,7 @@ describe('Insurance Fund', async function () { const traderBUSDBalanceAfterWithdraw = await busdToken.balanceOf(trader.getAddress()) const traderBonusBalanceAfterWithdraw = await busdBonusToken.balanceOf(trader.getAddress()) - const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(trader.getAddress(), positionManager.address) + const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(positionManager.address, trader.getAddress()) expect(traderBUSDBalanceAfterWithdraw).eq("0"); expect(traderBonusBalanceAfterWithdraw).eq("5"); @@ -406,7 +420,7 @@ describe('Insurance Fund', async function () { const traderBUSDBalanceAfterWithdraw = await busdToken.balanceOf(trader.getAddress()) const traderBonusBalanceAfterWithdraw = await busdBonusToken.balanceOf(trader.getAddress()) - const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(trader.getAddress(), positionManager.address) + const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(positionManager.address, trader.getAddress()) expect(traderBUSDBalanceAfterWithdraw).eq("0"); expect(traderBonusBalanceAfterWithdraw).eq("5"); @@ -426,7 +440,7 @@ describe('Insurance Fund', async function () { const traderBUSDBalanceAfterWithdraw = await busdToken.balanceOf(trader.getAddress()) const traderBonusBalanceAfterWithdraw = await busdBonusToken.balanceOf(trader.getAddress()) - const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(trader.getAddress(), positionManager.address) + const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(positionManager.address, trader.getAddress()) expect(traderBUSDBalanceAfterWithdraw).eq("0"); expect(traderBonusBalanceAfterWithdraw).eq("7"); @@ -446,7 +460,7 @@ describe('Insurance Fund', async function () { const traderBUSDBalanceAfterWithdraw = await busdToken.balanceOf(trader.getAddress()) const traderBonusBalanceAfterWithdraw = await busdBonusToken.balanceOf(trader.getAddress()) - const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(trader.getAddress(), positionManager.address) + const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(positionManager.address, trader.getAddress()) expect(traderBUSDBalanceAfterWithdraw).eq("0"); expect(traderBonusBalanceAfterWithdraw).eq("1"); @@ -469,7 +483,7 @@ describe('Insurance Fund', async function () { const traderBUSDBalanceAfterWithdraw = await busdToken.balanceOf(trader.getAddress()) const traderBonusBalanceAfterWithdraw = await busdBonusToken.balanceOf(trader.getAddress()) - const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(trader.getAddress(), positionManager.address) + const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(positionManager.address, trader.getAddress()) expect(traderBUSDBalanceAfterWithdraw).eq("90"); expect(traderBonusBalanceAfterWithdraw).eq("8"); @@ -489,7 +503,7 @@ describe('Insurance Fund', async function () { const traderBUSDBalanceAfterWithdraw = await busdToken.balanceOf(trader.getAddress()) const traderBonusBalanceAfterWithdraw = await busdBonusToken.balanceOf(trader.getAddress()) - const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(trader.getAddress(), positionManager.address) + const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(positionManager.address, trader.getAddress()) expect(traderBUSDBalanceAfterWithdraw).eq("90"); expect(traderBonusBalanceAfterWithdraw).eq("5"); @@ -509,7 +523,7 @@ describe('Insurance Fund', async function () { const traderBUSDBalanceAfterWithdraw = await busdToken.balanceOf(trader.getAddress()) const traderBonusBalanceAfterWithdraw = await busdBonusToken.balanceOf(trader.getAddress()) - const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(trader.getAddress(), positionManager.address) + const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(positionManager.address, trader.getAddress()) expect(traderBUSDBalanceAfterWithdraw).eq("90"); expect(traderBonusBalanceAfterWithdraw).eq("0"); @@ -529,7 +543,7 @@ describe('Insurance Fund', async function () { const traderBUSDBalanceAfterWithdraw = await busdToken.balanceOf(trader.getAddress()) const traderBonusBalanceAfterWithdraw = await busdBonusToken.balanceOf(trader.getAddress()) - const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(trader.getAddress(), positionManager.address) + const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(positionManager.address, trader.getAddress()) expect(traderBUSDBalanceAfterWithdraw).eq("80"); expect(traderBonusBalanceAfterWithdraw).eq("0"); @@ -549,7 +563,7 @@ describe('Insurance Fund', async function () { const traderBUSDBalanceAfterWithdraw = await busdToken.balanceOf(trader.getAddress()) const traderBonusBalanceAfterWithdraw = await busdBonusToken.balanceOf(trader.getAddress()) - const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(trader.getAddress(), positionManager.address) + const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(positionManager.address, trader.getAddress()) expect(traderBUSDBalanceAfterWithdraw).eq("70"); expect(traderBonusBalanceAfterWithdraw).eq("0"); @@ -569,7 +583,7 @@ describe('Insurance Fund', async function () { const traderBUSDBalanceAfterWithdraw = await busdToken.balanceOf(trader.getAddress()) const traderBonusBalanceAfterWithdraw = await busdBonusToken.balanceOf(trader.getAddress()) - const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(trader.getAddress(), positionManager.address) + const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(positionManager.address, trader.getAddress()) expect(traderBUSDBalanceAfterWithdraw).eq("5"); expect(traderBonusBalanceAfterWithdraw).eq("10"); @@ -589,7 +603,7 @@ describe('Insurance Fund', async function () { const traderBUSDBalanceAfterWithdraw = await busdToken.balanceOf(trader.getAddress()) const traderBonusBalanceAfterWithdraw = await busdBonusToken.balanceOf(trader.getAddress()) - const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(trader.getAddress(), positionManager.address) + const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(positionManager.address, trader.getAddress()) expect(traderBUSDBalanceAfterWithdraw).eq("20"); expect(traderBonusBalanceAfterWithdraw).eq("10"); @@ -609,7 +623,7 @@ describe('Insurance Fund', async function () { const traderBUSDBalanceAfterWithdraw = await busdToken.balanceOf(trader.getAddress()) const traderBonusBalanceAfterWithdraw = await busdBonusToken.balanceOf(trader.getAddress()) - const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(trader.getAddress(), positionManager.address) + const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(positionManager.address, trader.getAddress()) expect(traderBUSDBalanceAfterWithdraw).eq("30"); expect(traderBonusBalanceAfterWithdraw).eq("10"); @@ -629,7 +643,7 @@ describe('Insurance Fund', async function () { const traderBUSDBalanceAfterWithdraw = await busdToken.balanceOf(trader.getAddress()) const traderBonusBalanceAfterWithdraw = await busdBonusToken.balanceOf(trader.getAddress()) - const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(trader.getAddress(), positionManager.address) + const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(positionManager.address, trader.getAddress()) expect(traderBUSDBalanceAfterWithdraw).eq("10"); expect(traderBonusBalanceAfterWithdraw).eq("0"); @@ -649,7 +663,7 @@ describe('Insurance Fund', async function () { const traderBUSDBalanceAfterWithdraw = await busdToken.balanceOf(trader.getAddress()) const traderBonusBalanceAfterWithdraw = await busdBonusToken.balanceOf(trader.getAddress()) - const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(trader.getAddress(), positionManager.address) + const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(positionManager.address, trader.getAddress()) expect(traderBUSDBalanceAfterWithdraw).eq("1"); expect(traderBonusBalanceAfterWithdraw).eq("0"); @@ -671,7 +685,7 @@ describe('Insurance Fund', async function () { const traderBUSDBalanceAfterWithdraw = await busdToken.balanceOf(trader.getAddress()) const traderBonusBalanceAfterWithdraw = await busdBonusToken.balanceOf(trader.getAddress()) - const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(trader.getAddress(), positionManager.address) + const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(positionManager.address, trader.getAddress()) expect(traderBUSDBalanceAfterWithdraw).eq("98"); expect(traderBonusBalanceAfterWithdraw).eq("0"); @@ -691,7 +705,7 @@ describe('Insurance Fund', async function () { const traderBUSDBalanceAfterWithdraw = await busdToken.balanceOf(trader.getAddress()) const traderBonusBalanceAfterWithdraw = await busdBonusToken.balanceOf(trader.getAddress()) - const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(trader.getAddress(), positionManager.address) + const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(positionManager.address, trader.getAddress()) expect(traderBUSDBalanceAfterWithdraw).eq("50"); expect(traderBonusBalanceAfterWithdraw).eq("0"); @@ -711,7 +725,7 @@ describe('Insurance Fund', async function () { const traderBUSDBalanceAfterWithdraw = await busdToken.balanceOf(trader.getAddress()) const traderBonusBalanceAfterWithdraw = await busdBonusToken.balanceOf(trader.getAddress()) - const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(trader.getAddress(), positionManager.address) + const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(positionManager.address, trader.getAddress()) expect(traderBUSDBalanceAfterWithdraw).eq("50"); expect(traderBonusBalanceAfterWithdraw).eq("0"); @@ -732,7 +746,7 @@ describe('Insurance Fund', async function () { const traderBUSDBalanceAfterWithdraw = await busdToken.balanceOf(trader.getAddress()) const traderBonusBalanceAfterWithdraw = await busdBonusToken.balanceOf(trader.getAddress()) - const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(trader.getAddress(), positionManager.address) + const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(positionManager.address, trader.getAddress()) expect(traderBUSDBalanceAfterWithdraw).eq("10"); expect(traderBonusBalanceAfterWithdraw).eq("0"); @@ -753,7 +767,7 @@ describe('Insurance Fund', async function () { const traderBUSDBalanceAfterWithdraw = await busdToken.balanceOf(trader.getAddress()) const traderBonusBalanceAfterWithdraw = await busdBonusToken.balanceOf(trader.getAddress()) - const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(trader.getAddress(), positionManager.address) + const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(positionManager.address, trader.getAddress()) expect(traderBUSDBalanceAfterWithdraw).eq("10"); expect(traderBonusBalanceAfterWithdraw).eq("0"); @@ -775,7 +789,7 @@ describe('Insurance Fund', async function () { const traderBUSDBalanceAfterWithdraw = await busdToken.balanceOf(trader.getAddress()) const traderBonusBalanceAfterWithdraw = await busdBonusToken.balanceOf(trader.getAddress()) - const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(trader.getAddress(), positionManager.address) + const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(positionManager.address, trader.getAddress()) expect(traderBUSDBalanceAfterWithdraw).eq("10"); expect(traderBonusBalanceAfterWithdraw).eq("0"); @@ -797,7 +811,7 @@ describe('Insurance Fund', async function () { const traderBUSDBalanceAfterWithdraw = await busdToken.balanceOf(trader.getAddress()) const traderBonusBalanceAfterWithdraw = await busdBonusToken.balanceOf(trader.getAddress()) - const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(trader.getAddress(), positionManager.address) + const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(positionManager.address, trader.getAddress()) expect(traderBUSDBalanceAfterWithdraw).eq("50"); expect(traderBonusBalanceAfterWithdraw).eq("0"); @@ -819,7 +833,7 @@ describe('Insurance Fund', async function () { const traderBUSDBalanceAfterWithdraw = await busdToken.balanceOf(trader.getAddress()) const traderBonusBalanceAfterWithdraw = await busdBonusToken.balanceOf(trader.getAddress()) - const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(trader.getAddress(), positionManager.address) + const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(positionManager.address, trader.getAddress()) expect(traderBUSDBalanceAfterWithdraw).eq("30"); expect(traderBonusBalanceAfterWithdraw).eq("20"); @@ -841,7 +855,7 @@ describe('Insurance Fund', async function () { const traderBUSDBalanceAfterWithdraw = await busdToken.balanceOf(trader.getAddress()) const traderBonusBalanceAfterWithdraw = await busdBonusToken.balanceOf(trader.getAddress()) - const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(trader.getAddress(), positionManager.address) + const traderBonusBalanceInInsuranceFund = await insuranceFund.busdBonusBalances(positionManager.address, trader.getAddress()) expect(traderBUSDBalanceAfterWithdraw).eq("10"); expect(traderBonusBalanceAfterWithdraw).eq("40");