// SPDX-License-Identifier: MIT
pragma solidity >=0.8.4 <0.9.0;
import '@openzeppelin/contracts/utils/structs/EnumerableSet.sol';
import '../../interfaces/peripherals/IKeep3rAccountance.sol';
abstract contract Keep3rAccountance is IKeep3rAccountance {
using EnumerableSet for EnumerableSet.AddressSet;
/// @notice List of all enabled keepers
EnumerableSet.AddressSet internal _keepers;
/// @inheritdoc IKeep3rAccountance
mapping(address => uint256) public override workCompleted;
/// @inheritdoc IKeep3rAccountance
mapping(address => uint256) public override firstSeen;
/// @inheritdoc IKeep3rAccountance
mapping(address => bool) public override disputes;
/// @inheritdoc IKeep3rAccountance
/// @notice Mapping (job => bonding => amount)
mapping(address => mapping(address => uint256)) public override bonds;
/// @inheritdoc IKeep3rAccountance
mapping(address => mapping(address => uint256)) public override jobTokenCredits;
/// @notice The current liquidity credits available for a job
mapping(address => uint256) internal _jobLiquidityCredits;
/// @notice Map the address of a job to its correspondent periodCredits
mapping(address => uint256) internal _jobPeriodCredits;
/// @notice Enumerable array of Job Tokens for Credits
mapping(address => EnumerableSet.AddressSet) internal _jobTokens;
/// @notice List of liquidities that a job has (job => liquidities)
mapping(address => EnumerableSet.AddressSet) internal _jobLiquidities;
/// @notice Liquidity pool to observe
mapping(address => address) internal _liquidityPool;
/// @notice Tracks if a pool has KP3R as token0
mapping(address => bool) internal _isKP3RToken0;
/// @inheritdoc IKeep3rAccountance
mapping(address => mapping(address => uint256)) public override pendingBonds;
/// @inheritdoc IKeep3rAccountance
mapping(address => mapping(address => uint256)) public override canActivateAfter;
/// @inheritdoc IKeep3rAccountance
mapping(address => mapping(address => uint256)) public override canWithdrawAfter;
/// @inheritdoc IKeep3rAccountance
mapping(address => mapping(address => uint256)) public override pendingUnbonds;
/// @inheritdoc IKeep3rAccountance
mapping(address => bool) public override hasBonded;
/// @notice List of all enabled jobs
EnumerableSet.AddressSet internal _jobs;
/// @inheritdoc IKeep3rAccountance
function jobs() external view override returns (address[] memory _list) {
_list = _jobs.values();
}
/// @inheritdoc IKeep3rAccountance
function keepers() external view override returns (address[] memory _list) {
_list = _keepers.values();
}
}
|