mirror of
https://github.com/lux-amm/v4-periphery.git
synced 2026-10-30 20:54:39 +00:00
54 lines
1.6 KiB
Solidity
54 lines
1.6 KiB
Solidity
// SPDX-License-Identifier: MIT
|
|
pragma solidity ^0.8.20;
|
|
|
|
import {ISubscriber} from "../../src/interfaces/ISubscriber.sol";
|
|
import {IPositionManager} from "../../src/interfaces/IPositionManager.sol";
|
|
import {BalanceDelta} from "@luxamm/v4-core/src/types/BalanceDelta.sol";
|
|
import {PositionInfo} from "../../src/libraries/PositionInfoLibrary.sol";
|
|
|
|
/// @notice A subscriber contract that ingests updates from the v4 position manager
|
|
contract MockSubscriber is ISubscriber {
|
|
IPositionManager posm;
|
|
|
|
uint256 public notifySubscribeCount;
|
|
uint256 public notifyUnsubscribeCount;
|
|
uint256 public notifyModifyLiquidityCount;
|
|
uint256 public notifyBurnCount;
|
|
int256 public liquidityChange;
|
|
BalanceDelta public feesAccrued;
|
|
|
|
bytes public subscribeData;
|
|
|
|
error NotAuthorizedNotifer(address sender);
|
|
|
|
error NotImplemented();
|
|
|
|
constructor(IPositionManager _posm) {
|
|
posm = _posm;
|
|
}
|
|
|
|
modifier onlyByPosm() {
|
|
if (msg.sender != address(posm)) revert NotAuthorizedNotifer(msg.sender);
|
|
_;
|
|
}
|
|
|
|
function notifySubscribe(uint256, bytes memory data) external onlyByPosm {
|
|
notifySubscribeCount++;
|
|
subscribeData = data;
|
|
}
|
|
|
|
function notifyUnsubscribe(uint256) external onlyByPosm {
|
|
notifyUnsubscribeCount++;
|
|
}
|
|
|
|
function notifyModifyLiquidity(uint256, int256 _liquidityChange, BalanceDelta _feesAccrued) external onlyByPosm {
|
|
notifyModifyLiquidityCount++;
|
|
liquidityChange = _liquidityChange;
|
|
feesAccrued = _feesAccrued;
|
|
}
|
|
|
|
function notifyBurn(uint256, address, PositionInfo, uint256, BalanceDelta) external onlyByPosm {
|
|
notifyBurnCount++;
|
|
}
|
|
}
|