Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions contracts/FuturesMarketData.sol
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,11 @@ import "./interfaces/IAddressResolver.sol";
contract FuturesMarketData {
/* ========== TYPES ========== */

struct FuturesGlobals {
uint minInitialMargin;
uint liquidationFee;
}

struct MarketSummary {
address market;
bytes32 asset;
Expand Down Expand Up @@ -111,6 +116,11 @@ contract FuturesMarketData {
);
}

function globals() external view returns (FuturesGlobals memory) {
IFuturesMarketSettings settings = _futuresMarketSettings();
return FuturesGlobals(settings.minInitialMargin(), settings.liquidationFee());
}

function parameters(bytes32 baseAsset) external view returns (IFuturesMarketSettings.Parameters memory) {
return _parameters(baseAsset);
}
Expand Down
11 changes: 11 additions & 0 deletions test/contracts/FuturesMarketData.js
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,17 @@ contract('FuturesMarketData', accounts => {
assert.equal(await futuresMarketData.resolverProxy(), addressResolver.address);
});

describe('Globals', () => {
it('Global futures settings are properly fetched', async () => {
const globals = await futuresMarketData.globals();

assert.bnEqual(await futuresMarketSettings.minInitialMargin(), globals.minInitialMargin);
assert.bnEqual(globals.minInitialMargin, toUnit('100'));
assert.bnEqual(await futuresMarketSettings.liquidationFee(), globals.liquidationFee);
assert.bnEqual(globals.liquidationFee, toUnit('20'));
});
});

describe('Market details', () => {
it('By address', async () => {
const details = await futuresMarketData.marketDetails(futuresMarket.address);
Expand Down