NC061 - Library declarations should have Natspec @notice annotations:
Explain to an end user what this does
File: v2-core/src/libraries/NFTSVG.sol
9 library NFTSVG {
https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/libraries/NFTSVG.sol#L0:0
File: v2-core/src/libraries/SVGElements.sol
8 library SVGElements {
https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/libraries/SVGElements.sol#L0:0
File: v2-periphery/src/types/DataTypes.sol
9 library BatchLockup {
91 library MerkleLockup {
113 library MerkleLT {
https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-periphery/src/types/DataTypes.sol#L0:0
NC062 - Library declarations should have Natspec @dev annotations:
Explain to a developer any extra details
Click to show 7 findings
File: v2-core/src/libraries/Errors.sol
9 library Errors {
https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/libraries/Errors.sol#L0:0
File: v2-core/src/libraries/Helpers.sol
11 library Helpers {
https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/libraries/Helpers.sol#L0:0
File: v2-core/src/libraries/NFTSVG.sol
9 library NFTSVG {
https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/libraries/NFTSVG.sol#L0:0
File: v2-core/src/libraries/SVGElements.sol
8 library SVGElements {
https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/libraries/SVGElements.sol#L0:0
File: v2-core/src/types/DataTypes.sol
30 library Lockup {
100 library LockupDynamic {
198 library LockupLinear {
283 library LockupTranched {
https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/types/DataTypes.sol#L0:0
File: v2-periphery/src/libraries/Errors.sol
6 library Errors {
https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-periphery/src/libraries/Errors.sol#L0:0
File: v2-periphery/src/types/DataTypes.sol
9 library BatchLockup {
91 library MerkleLockup {
113 library MerkleLT {
https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-periphery/src/types/DataTypes.sol#L0:0
NC063 - Modifier definitions should have Natspec @notice annotations:
Explain to an end user what this does
File: v2-core/src/abstracts/SablierV2Lockup.sol
65 modifier notNull(uint256 streamId) {
73 modifier updateMetadata(uint256 streamId) {
https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/abstracts/SablierV2Lockup.sol#L0:0
NC064 - Modifier definitions should have Natspec @dev annotations:
Explain to a developer any extra details
File: v2-core/src/abstracts/Adminable.sol
22 modifier onlyAdmin() {
https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/abstracts/Adminable.sol#L0:0
File: v2-core/src/abstracts/NoDelegateCall.sol
18 modifier noDelegateCall() {
https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/abstracts/NoDelegateCall.sol#L0:0
NC065 - Contract definitions should have Natspec @author annotations:
The name of the author
Click to show 8 findings
File: v2-core/src/SablierV2LockupDynamic.sol
37 contract SablierV2LockupDynamic is
https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/SablierV2LockupDynamic.sol#L0:0
File: v2-core/src/SablierV2LockupLinear.sol
36 contract SablierV2LockupLinear is
https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/SablierV2LockupLinear.sol#L0:0
File: v2-core/src/SablierV2LockupTranched.sol
34 contract SablierV2LockupTranched is
https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/SablierV2LockupTranched.sol#L0:0
File: v2-core/src/SablierV2NFTDescriptor.sol
20 contract SablierV2NFTDescriptor is ISablierV2NFTDescriptor {
https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/SablierV2NFTDescriptor.sol#L0:0
File: v2-periphery/src/SablierV2BatchLockup.sol
17 contract SablierV2BatchLockup is ISablierV2BatchLockup {
https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/SablierV2BatchLockup.sol#L0:0
File: v2-periphery/src/SablierV2MerkleLL.sol
17 contract SablierV2MerkleLL is
https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-periphery/src/SablierV2MerkleLL.sol#L0:0
File: v2-periphery/src/SablierV2MerkleLT.sol
17 contract SablierV2MerkleLT is
https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-periphery/src/SablierV2MerkleLT.sol#L0:0
File: v2-periphery/src/SablierV2MerkleLockupFactory.sol
19 contract SablierV2MerkleLockupFactory is ISablierV2MerkleLockupFactory {
https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-periphery/src/SablierV2MerkleLockupFactory.sol#L0:0
NC066 - Contract definitions should have Natspec @dev annotations:
Explain to a developer any extra details
Click to show 8 findings
File: v2-core/src/SablierV2LockupDynamic.sol
37 contract SablierV2LockupDynamic is
https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/SablierV2LockupDynamic.sol#L0:0
File: v2-core/src/SablierV2LockupLinear.sol
36 contract SablierV2LockupLinear is
https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/SablierV2LockupLinear.sol#L0:0
File: v2-core/src/SablierV2LockupTranched.sol
34 contract SablierV2LockupTranched is
https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/SablierV2LockupTranched.sol#L0:0
File: v2-core/src/SablierV2NFTDescriptor.sol
20 contract SablierV2NFTDescriptor is ISablierV2NFTDescriptor {
https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/SablierV2NFTDescriptor.sol#L0:0
File: v2-periphery/src/SablierV2BatchLockup.sol
17 contract SablierV2BatchLockup is ISablierV2BatchLockup {
https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-periphery/src/SablierV2BatchLockup.sol#L0:0
File: v2-periphery/src/SablierV2MerkleLL.sol
17 contract SablierV2MerkleLL is
https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-periphery/src/SablierV2MerkleLL.sol#L0:0
File: v2-periphery/src/SablierV2MerkleLT.sol
17 contract SablierV2MerkleLT is
https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-periphery/src/SablierV2MerkleLT.sol#L0:0
File: v2-periphery/src/SablierV2MerkleLockupFactory.sol
19 contract SablierV2MerkleLockupFactory is ISablierV2MerkleLockupFactory {
https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-periphery/src/SablierV2MerkleLockupFactory.sol#L0:0
NC067 - State variable declarations should have Natspec @notice annotations:
Explain to an end user what this does
Click to show 11 findings
File: v2-core/src/SablierV2LockupDynamic.sol
50 uint256 public immutable override MAX_SEGMENT_COUNT;
53 mapping(uint256 id => LockupDynamic.Segment[] segments) internal _segments;
https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/SablierV2LockupDynamic.sol#L0:0
File: v2-core/src/SablierV2LockupLinear.sol
47 mapping(uint256 id => uint40 cliff) internal _cliffs;
https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/SablierV2LockupLinear.sol#L0:0
File: v2-core/src/SablierV2LockupTranched.sol
45 uint256 public immutable override MAX_TRANCHE_COUNT;
48 mapping(uint256 id => LockupTranched.Tranche[] tranches) internal _tranches;
https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/SablierV2LockupTranched.sol#L0:0
File: v2-core/src/abstracts/Adminable.sol
15 address public override admin;
https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/abstracts/Adminable.sol#L0:0
File: v2-core/src/abstracts/NoDelegateCall.sol
10 address private immutable ORIGINAL;
https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/abstracts/NoDelegateCall.sol#L0:0
File: v2-core/src/abstracts/SablierV2Lockup.sol
36 UD60x18 public constant override MAX_BROKER_FEE = UD60x18.wrap(0.1e18);
39 uint256 public override nextStreamId;
42 ISablierV2NFTDescriptor public override nftDescriptor;
45 mapping(uint256 id => Lockup.Stream stream) internal _streams;
https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/abstracts/SablierV2Lockup.sol#L0:0
File: v2-core/src/libraries/NFTSVG.sol
12 uint256 internal constant CARD_MARGIN = 16;
https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/libraries/NFTSVG.sol#L0:0
File: v2-core/src/libraries/SVGElements.sol
16 string internal constant BACKGROUND =
19 string internal constant BACKGROUND_COLOR = "hsl(230,21%,11%)";
21 string internal constant FLOATING_TEXT =
24 string internal constant GLOW = '<circle id="Glow" r="500" fill="url(#RadialGlow)"/>';
26 string internal constant LOGO =
29 string internal constant HOURGLASS_BACKGROUND_CIRCLE =
32 string internal constant HOURGLASS_FILL =
35 string internal constant HOURGLASS_STROKE =
38 string internal constant HOURGLASS_LOWER_BULB_LARGE =
41 string internal constant HOURGLASS_LOWER_BULB_SMALL =
44 string internal constant HOURGLASS_UPPER_BULB =
47 string internal constant NOISE =
51 string internal constant SIGN_GE = "≥";
54 string internal constant SIGN_GT = ">";
57 string internal constant SIGN_LT = "<";
https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/libraries/SVGElements.sol#L0:0
File: v2-periphery/src/SablierV2MerkleLL.sol
29 ISablierV2LockupLinear public immutable override LOCKUP_LINEAR;
32 LockupLinear.Durations public override streamDurations;
https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-periphery/src/SablierV2MerkleLL.sol#L0:0
File: v2-periphery/src/SablierV2MerkleLT.sol
29 ISablierV2LockupTranched public immutable override LOCKUP_TRANCHED;
32 MerkleLT.TrancheWithPercentage[] internal _tranchesWithPercentages;
https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-periphery/src/SablierV2MerkleLT.sol#L0:0
File: v2-periphery/src/abstracts/SablierV2MerkleLockup.sol
28 IERC20 public immutable override ASSET;
31 bool public immutable override CANCELABLE;
34 uint40 public immutable override EXPIRATION;
37 bytes32 public immutable override MERKLE_ROOT;
40 bytes32 internal immutable NAME;
43 bool public immutable override TRANSFERABLE;
46 string public ipfsCID;
49 BitMaps.BitMap internal _claimedBitMap;
52 uint40 internal _firstClaimTime;
https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-periphery/src/abstracts/SablierV2MerkleLockup.sol#L0:0
NC068 - State variable declarations should have Natspec @dev annotations:
Explain to a developer any extra details
Click to show 9 findings
File: v2-core/src/SablierV2LockupDynamic.sol
50 uint256 public immutable override MAX_SEGMENT_COUNT;
https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/SablierV2LockupDynamic.sol#L0:0
File: v2-core/src/SablierV2LockupTranched.sol
45 uint256 public immutable override MAX_TRANCHE_COUNT;
https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/SablierV2LockupTranched.sol#L0:0
File: v2-core/src/abstracts/Adminable.sol
15 address public override admin;
https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/abstracts/Adminable.sol#L0:0
File: v2-core/src/abstracts/SablierV2Lockup.sol
36 UD60x18 public constant override MAX_BROKER_FEE = UD60x18.wrap(0.1e18);
39 uint256 public override nextStreamId;
42 ISablierV2NFTDescriptor public override nftDescriptor;
https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/abstracts/SablierV2Lockup.sol#L0:0
File: v2-core/src/libraries/NFTSVG.sol
12 uint256 internal constant CARD_MARGIN = 16;
https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/libraries/NFTSVG.sol#L0:0
File: v2-core/src/libraries/SVGElements.sol
16 string internal constant BACKGROUND =
19 string internal constant BACKGROUND_COLOR = "hsl(230,21%,11%)";
21 string internal constant FLOATING_TEXT =
24 string internal constant GLOW = '<circle id="Glow" r="500" fill="url(#RadialGlow)"/>';
26 string internal constant LOGO =
29 string internal constant HOURGLASS_BACKGROUND_CIRCLE =
32 string internal constant HOURGLASS_FILL =
35 string internal constant HOURGLASS_STROKE =
38 string internal constant HOURGLASS_LOWER_BULB_LARGE =
41 string internal constant HOURGLASS_LOWER_BULB_SMALL =
44 string internal constant HOURGLASS_UPPER_BULB =
47 string internal constant NOISE =
https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/libraries/SVGElements.sol#L0:0
File: v2-periphery/src/SablierV2MerkleLL.sol
29 ISablierV2LockupLinear public immutable override LOCKUP_LINEAR;
32 LockupLinear.Durations public override streamDurations;
https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/SablierV2MerkleLL.sol#L0:0
File: v2-periphery/src/SablierV2MerkleLT.sol
29 ISablierV2LockupTranched public immutable override LOCKUP_TRANCHED;
https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-periphery/src/SablierV2MerkleLT.sol#L0:0
File: v2-periphery/src/abstracts/SablierV2MerkleLockup.sol
28 IERC20 public immutable override ASSET;
31 bool public immutable override CANCELABLE;
34 uint40 public immutable override EXPIRATION;
37 bytes32 public immutable override MERKLE_ROOT;
43 bool public immutable override TRANSFERABLE;
46 string public ipfsCID;
https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-periphery/src/abstracts/SablierV2MerkleLockup.sol#L0:0