```\nfunction reward(\n    uint8 subjectType,\n    uint256 subjectId,\n    uint256 amount,\n    uint256 epochNumber\n) external onlyRole(REWARDER\_ROLE) {\n    if (subjectType != NODE\_RUNNER\_SUBJECT) revert InvalidSubjectType(subjectType);\n    if (!\_subjectGateway.isRegistered(subjectType, subjectId)) revert RewardingNonRegisteredSubject(subjectType, subjectId);\n    uint256 shareId = FortaStakingUtils.subjectToActive(getDelegatorSubjectType(subjectType), subjectId);\n    \_rewardsPerEpoch[shareId][epochNumber] = amount;\n    totalRewardsDistributed += amount;\n    emit Rewarded(subjectType, subjectId, amount, epochNumber);\n}\n```\n