@@ -5,6 +5,7 @@ import { IDataServiceFees } from "../interfaces/IDataServiceFees.sol";
55
66import { ProvisionTracker } from "../libraries/ProvisionTracker.sol " ;
77import { LinkedList } from "../../libraries/LinkedList.sol " ;
8+ import { StakeClaims } from "../libraries/StakeClaims.sol " ;
89
910import { DataService } from "../DataService.sol " ;
1011import { DataServiceFeesV1Storage } from "./DataServiceFeesStorage.sol " ;
@@ -41,23 +42,17 @@ abstract contract DataServiceFees is DataService, DataServiceFeesV1Storage, IDat
4142 * @param _unlockTimestamp The timestamp when the tokens can be released
4243 */
4344 function _lockStake (address _serviceProvider , uint256 _tokens , uint256 _unlockTimestamp ) internal {
44- require (_tokens != 0 , DataServiceFeesZeroTokens ());
45- feesProvisionTracker.lock (_graphStaking (), _serviceProvider, _tokens, _delegationRatio);
46-
47- LinkedList.List storage claimsList = claimsLists[_serviceProvider];
48-
49- // Save item and add to list
50- bytes32 claimId = _buildStakeClaimId (_serviceProvider, claimsList.nonce);
51- claims[claimId] = StakeClaim ({
52- tokens: _tokens,
53- createdAt: block .timestamp ,
54- releasableAt: _unlockTimestamp,
55- nextClaim: bytes32 (0 )
56- });
57- if (claimsList.count != 0 ) claims[claimsList.tail].nextClaim = claimId;
58- claimsList.addTail (claimId);
59-
60- emit StakeClaimLocked (_serviceProvider, claimId, _tokens, _unlockTimestamp);
45+ StakeClaims.lockStake (
46+ feesProvisionTracker,
47+ claims,
48+ claimsLists,
49+ _graphStaking (),
50+ address (this ),
51+ _delegationRatio,
52+ _serviceProvider,
53+ _tokens,
54+ _unlockTimestamp
55+ );
6156 }
6257
6358 /**
@@ -80,7 +75,7 @@ abstract contract DataServiceFees is DataService, DataServiceFeesV1Storage, IDat
8075 _numClaimsToRelease
8176 );
8277
83- emit StakeClaimsReleased (_serviceProvider, claimsReleased, abi.decode (data, (uint256 )));
78+ emit StakeClaims. StakeClaimsReleased (_serviceProvider, claimsReleased, abi.decode (data, (uint256 )));
8479 }
8580
8681 /**
@@ -92,23 +87,7 @@ abstract contract DataServiceFees is DataService, DataServiceFeesV1Storage, IDat
9287 * @return The updated accumulator data
9388 */
9489 function _processStakeClaim (bytes32 _claimId , bytes memory _acc ) private returns (bool , bytes memory ) {
95- StakeClaim memory claim = _getStakeClaim (_claimId);
96-
97- // early exit
98- if (claim.releasableAt > block .timestamp ) {
99- return (true , LinkedList.NULL_BYTES);
100- }
101-
102- // decode
103- (uint256 tokensClaimed , address serviceProvider ) = abi.decode (_acc, (uint256 , address ));
104-
105- // process
106- feesProvisionTracker.release (serviceProvider, claim.tokens);
107- emit StakeClaimReleased (serviceProvider, _claimId, claim.tokens, claim.releasableAt);
108-
109- // encode
110- _acc = abi.encode (tokensClaimed + claim.tokens, serviceProvider);
111- return (false , _acc);
90+ return StakeClaims.processStakeClaim (feesProvisionTracker, claims, _claimId, _acc);
11291 }
11392
11493 /**
@@ -117,18 +96,7 @@ abstract contract DataServiceFees is DataService, DataServiceFeesV1Storage, IDat
11796 * @param _claimId The ID of the stake claim to delete
11897 */
11998 function _deleteStakeClaim (bytes32 _claimId ) private {
120- delete claims[_claimId];
121- }
122-
123- /**
124- * @notice Gets the details of a stake claim
125- * @param _claimId The ID of the stake claim
126- * @return The stake claim details
127- */
128- function _getStakeClaim (bytes32 _claimId ) private view returns (StakeClaim memory ) {
129- StakeClaim memory claim = claims[_claimId];
130- require (claim.createdAt != 0 , DataServiceFeesClaimNotFound (_claimId));
131- return claim;
99+ StakeClaims.deleteStakeClaim (claims, _claimId);
132100 }
133101
134102 /**
@@ -138,16 +106,6 @@ abstract contract DataServiceFees is DataService, DataServiceFeesV1Storage, IDat
138106 * @return The next stake claim ID
139107 */
140108 function _getNextStakeClaim (bytes32 _claimId ) private view returns (bytes32 ) {
141- return claims[_claimId].nextClaim;
142- }
143-
144- /**
145- * @notice Builds a stake claim ID
146- * @param _serviceProvider The address of the service provider
147- * @param _nonce A nonce of the stake claim
148- * @return The stake claim ID
149- */
150- function _buildStakeClaimId (address _serviceProvider , uint256 _nonce ) private view returns (bytes32 ) {
151- return keccak256 (abi.encodePacked (address (this ), _serviceProvider, _nonce));
109+ return StakeClaims.getNextStakeClaim (claims, _claimId);
152110 }
153111}
0 commit comments