Skip to content

Commit c29d1d1

Browse files
authored
Merge pull request #68 from derivexyz/auction-util-pm2
Add support for PMRM2 in auction utils
2 parents 4eee5c5 + 9bcfc88 commit c29d1d1

File tree

3 files changed

+17
-7
lines changed

3 files changed

+17
-7
lines changed

deployments/901/matching.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"auctionUtil": "0x36c3B2a149754a56C16307758032A1d17bf58618",
2+
"auctionUtil": "0xA4895392467de708F8BA46a13e7BC50E1AFA9346",
33
"deposit-new": "0x65bf02FB74e722654c6d2a5103aBC9bd520f185f",
44
"settlementUtil": "0xbc75340f9354aE4293D16C691A6961B3e6B972F4",
55
"deposit": "0x43223Db33AdA0575D2E100829543f8B04A37a1ec",

deployments/957/matching.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"auctionUtil": "0x0831AAfC564E307b9c93fe45716c5dacF30D9a9d",
2+
"auctionUtil": "0xec46b1b4090Ffcf6FF6298138A53ab3C77927170",
33
"deposit": "0x9B3FE5E5a3bcEa5df4E08c41Ce89C4e3Ff01Ace3",
44
"matching": "0xeB8d770ec18DB98Db922E9D83260A585b9F0DeAD",
55
"settlementUtil": "0x7E1d17b580dD4F89037DB331430eAEe8B8e50c91",

src/periphery/LyraAuctionUtils.sol

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ import {IBaseManager} from "v2-core/src/interfaces/IBaseManager.sol";
77
import {ISubAccounts} from "v2-core/src/interfaces/ISubAccounts.sol";
88
import {IAsset} from "v2-core/src/interfaces/IAsset.sol";
99
import {DutchAuction} from "v2-core/src/liquidation/DutchAuction.sol";
10+
import {IPMRM_2} from "v2-core/src/interfaces/IPMRM_2.sol";
11+
import {PMRM_2} from "v2-core/src/risk-managers/PMRM_2.sol";
12+
import {ISpotFeed} from "v2-core/src/interfaces/ISpotFeed.sol";
1013

1114
/**
1215
* @title LyraAuctionUtils
@@ -42,11 +45,18 @@ contract LyraAuctionUtils {
4245
return (manager, mm, mtm, 0);
4346
}
4447

45-
// Otherwise we assume it is a PMRM, so we need to work out the worst scenario by getting the portfolio and
46-
// calculating margin in the lib
47-
IPMRM.Portfolio memory portfolio = PMRM(manager).arrangePortfolio(subId);
48-
(mm, mtm, worstScenario) =
49-
PMRM(manager).lib().getMarginAndMarkToMarket(portfolio, false, PMRM(manager).getScenarios());
48+
try PMRM_2(manager).collateralSpotFeeds(address(0)) returns (ISpotFeed) {
49+
IPMRM_2.Portfolio memory p2 = PMRM_2(manager).arrangePortfolio(subId);
50+
(mm, mtm, worstScenario) =
51+
PMRM_2(manager).lib().getMarginAndMarkToMarket(p2, false, PMRM_2(manager).getScenarios());
52+
return (manager, mm, mtm, worstScenario);
53+
} catch {
54+
// Fall back to PMRM
55+
IPMRM.Portfolio memory p = PMRM(manager).arrangePortfolio(subId);
56+
(mm, mtm, worstScenario) = PMRM(manager).lib().getMarginAndMarkToMarket(p, false, PMRM(manager).getScenarios());
57+
}
58+
59+
return (manager, mm, mtm, worstScenario);
5060
}
5161

5262
function startInsolventAuction(uint accountId, uint worstScenario) external {

0 commit comments

Comments
 (0)