diff --git a/markets/perps-market/contracts/interfaces/IMarketEvents.sol b/markets/perps-market/contracts/interfaces/IMarketEvents.sol index 4e34731757..adf02e7144 100644 --- a/markets/perps-market/contracts/interfaces/IMarketEvents.sol +++ b/markets/perps-market/contracts/interfaces/IMarketEvents.sol @@ -2,8 +2,19 @@ pragma solidity >=0.8.11 <0.9.0; interface IMarketEvents { + /** + * @notice Gets fired when the size of a market is updated by new orders or liquidations. + * @param marketId Id of the market used for the trade. + * @param price Price at the time of this event. + * @param skew Market skew at the time of the trade. Positive values mean more longs. + * @param size Size of the entire market after settlement. + * @param sizeDelta Change in market size during this update. + * @param currentFundingRate The current funding rate of this market (0.001 = 0.1% per day) + * @param currentFundingVelocity The current rate of change of the funding rate (0.001 = +0.1% per day) + */ event MarketUpdated( uint128 marketId, + uint256 price, int256 skew, uint256 size, int256 sizeDelta, diff --git a/markets/perps-market/contracts/modules/AsyncOrderSettlementModule.sol b/markets/perps-market/contracts/modules/AsyncOrderSettlementModule.sol index bab8c6b9ba..a3ec05046e 100644 --- a/markets/perps-market/contracts/modules/AsyncOrderSettlementModule.sol +++ b/markets/perps-market/contracts/modules/AsyncOrderSettlementModule.sol @@ -157,6 +157,7 @@ contract AsyncOrderSettlementModule is IAsyncOrderSettlementModule, IMarketEvent .updatePositionData(runtime.accountId, newPosition); emit MarketUpdated( updateData.marketId, + price, updateData.skew, updateData.size, runtime.sizeDelta, diff --git a/markets/perps-market/test/integration/Orders/OffchainAsyncOrder.settle.test.ts b/markets/perps-market/test/integration/Orders/OffchainAsyncOrder.settle.test.ts index 596494958c..e628bc8a96 100644 --- a/markets/perps-market/test/integration/Orders/OffchainAsyncOrder.settle.test.ts +++ b/markets/perps-market/test/integration/Orders/OffchainAsyncOrder.settle.test.ts @@ -410,6 +410,7 @@ describe('Settle Offchain Async Order test', () => { }); it('emits market updated event', async () => { + const price = bn(1000); const marketSize = bn(1); const marketSkew = bn(1); const sizeDelta = bn(1); @@ -421,6 +422,7 @@ describe('Settle Offchain Async Order test', () => { }); const params = [ ethMarketId, + price, marketSkew, marketSize, sizeDelta,