Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: hook allowlist #951

Merged
merged 25 commits into from
Jun 24, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
1ed5763
refactor: delete sender withdraw hooks
PaulRBerg Jun 20, 2024
3a0605c
refactor: rename hooks
PaulRBerg Jun 20, 2024
1f1c7ed
refactor: get rid of "hooks" directory
PaulRBerg Jun 20, 2024
d62418a
feat: add marker "IS_SABLIER_RECIPIENT"
PaulRBerg Jun 20, 2024
b874a18
feat: hook allowlist
PaulRBerg Jun 20, 2024
667fbad
feat: check allowlist when running hooks
PaulRBerg Jun 21, 2024
e86cc45
build: update precompiles
PaulRBerg Jun 21, 2024
e100b44
fix: remove stale dir in prepare-artifacts script
PaulRBerg Jun 21, 2024
fb1ac18
docs: update withdraw natspec
andreivladbrg Jun 21, 2024
4016182
chore: address PR feedback
PaulRBerg Jun 21, 2024
0007953
feat: include function selector in the return value of hook calls
smol-ninja Jun 22, 2024
ff20356
fix: redundant dev notes, use interface selector
smol-ninja Jun 22, 2024
02fcc7e
test: fix bugs
smol-ninja Jun 22, 2024
8eae44a
feat: replace IS_SABLIER_RECIPIENT with IERC165-supportsInterface
smol-ninja Jun 22, 2024
c71ad18
refactor: remove local import from Errors
smol-ninja Jun 23, 2024
7fbc53f
docs: polish natspec
PaulRBerg Jun 24, 2024
016894a
refactor: rename recipient interface
PaulRBerg Jun 24, 2024
44c56da
refactor: change param type to "address"
PaulRBerg Jun 24, 2024
6e7320d
build: update precompiles
PaulRBerg Jun 24, 2024
4d5703c
refactor: remove unneeded address casting
andreivladbrg Jun 24, 2024
630094d
docs: polish natspec
smol-ninja Jun 24, 2024
850c6b7
chore: update count map in Base script
smol-ninja Jun 24, 2024
3cd95d4
chore: update benchmarks
smol-ninja Jun 24, 2024
b07166d
docs: mention allowlist contract in Security doc
smol-ninja Jun 24, 2024
293dddc
docs: update wording
PaulRBerg Jun 24, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,8 @@ vulnerability, it must adhere to these assumptions as well:
an approved address. This excludes rebase tokens and interest-bearing tokens.
- The token contract does not allow callbacks (e.g. ERC-777 is not supported).
- There is no need for exponents greater than ~18.44 in `LockupDynamic` segments.
- Recipient contracts on the hook allowlist have gone through due diligence and are assumed to expose no risk to the
Sablier protocol.

### Rewards

Expand Down
54 changes: 27 additions & 27 deletions benchmark/results/SablierV2LockupDynamic.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,30 +2,30 @@

| Implementation | Gas Usage |
| ---------------------------------------------------------- | --------- |
| `burn` | 15675 |
| `cancel` | 71687 |
| `renounce` | 40893 |
| `createWithDurations` (2 segments) (Broker fee set) | 198964 |
| `createWithDurations` (2 segments) (Broker fee not set) | 183487 |
| `createWithTimestamps` (2 segments) (Broker fee set) | 183160 |
| `createWithTimestamps` (2 segments) (Broker fee not set) | 178483 |
| `withdraw` (2 segments) (After End Time) (by Recipient) | 19001 |
| `withdraw` (2 segments) (Before End Time) (by Recipient) | 27557 |
| `withdraw` (2 segments) (After End Time) (by Anyone) | 13904 |
| `withdraw` (2 segments) (Before End Time) (by Anyone) | 27260 |
| `createWithDurations` (10 segments) (Broker fee set) | 390614 |
| `createWithDurations` (10 segments) (Broker fee not set) | 385944 |
| `createWithTimestamps` (10 segments) (Broker fee set) | 380649 |
| `createWithTimestamps` (10 segments) (Broker fee not set) | 375987 |
| `withdraw` (10 segments) (After End Time) (by Recipient) | 14188 |
| `withdraw` (10 segments) (Before End Time) (by Recipient) | 32500 |
| `withdraw` (10 segments) (After End Time) (by Anyone) | 13911 |
| `withdraw` (10 segments) (Before End Time) (by Anyone) | 32203 |
| `createWithDurations` (100 segments) (Broker fee set) | 2704451 |
| `createWithDurations` (100 segments) (Broker fee not set) | 2700745 |
| `createWithTimestamps` (100 segments) (Broker fee set) | 2606340 |
| `createWithTimestamps` (100 segments) (Broker fee not set) | 2602667 |
| `withdraw` (100 segments) (After End Time) (by Recipient) | 14188 |
| `withdraw` (100 segments) (Before End Time) (by Recipient) | 88383 |
| `withdraw` (100 segments) (After End Time) (by Anyone) | 13891 |
| `withdraw` (100 segments) (Before End Time) (by Anyone) | 88086 |
| `burn` | 15716 |
| `cancel` | 74341 |
| `renounce` | 39007 |
| `createWithDurations` (2 segments) (Broker fee set) | 200602 |
| `createWithDurations` (2 segments) (Broker fee not set) | 185037 |
| `createWithTimestamps` (2 segments) (Broker fee set) | 184780 |
| `createWithTimestamps` (2 segments) (Broker fee not set) | 180015 |
| `withdraw` (2 segments) (After End Time) (by Recipient) | 19108 |
| `withdraw` (2 segments) (Before End Time) (by Recipient) | 27554 |
| `withdraw` (2 segments) (After End Time) (by Anyone) | 14239 |
| `withdraw` (2 segments) (Before End Time) (by Anyone) | 27485 |
| `createWithDurations` (10 segments) (Broker fee set) | 395084 |
| `createWithDurations` (10 segments) (Broker fee not set) | 390326 |
| `createWithTimestamps` (10 segments) (Broker fee set) | 385125 |
| `createWithTimestamps` (10 segments) (Broker fee not set) | 380375 |
| `withdraw` (10 segments) (After End Time) (by Recipient) | 14295 |
| `withdraw` (10 segments) (Before End Time) (by Recipient) | 32545 |
| `withdraw` (10 segments) (After End Time) (by Anyone) | 14246 |
| `withdraw` (10 segments) (Before End Time) (by Anyone) | 32476 |
| `createWithDurations` (100 segments) (Broker fee set) | 2740781 |
| `createWithDurations` (100 segments) (Broker fee not set) | 2736987 |
| `createWithTimestamps` (100 segments) (Broker fee set) | 2642946 |
| `createWithTimestamps` (100 segments) (Broker fee not set) | 2639185 |
| `withdraw` (100 segments) (After End Time) (by Recipient) | 14295 |
| `withdraw` (100 segments) (Before End Time) (by Recipient) | 88968 |
| `withdraw` (100 segments) (After End Time) (by Anyone) | 14226 |
| `withdraw` (100 segments) (Before End Time) (by Anyone) | 88899 |
30 changes: 15 additions & 15 deletions benchmark/results/SablierV2LockupLinear.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,18 @@

| Implementation | Gas Usage |
| ----------------------------------------------------------- | --------- |
| `burn` | 15669 |
| `cancel` | 54116 |
| `renounce` | 21338 |
| `createWithDurations` (Broker fee set) (cliff not set) | 127727 |
| `createWithDurations` (Broker fee not set) (cliff not set) | 112219 |
| `createWithDurations` (Broker fee set) (cliff set) | 136514 |
| `createWithDurations` (Broker fee not set) (cliff set) | 131804 |
| `createWithTimestamps` (Broker fee set) (cliff not set) | 113830 |
| `createWithTimestamps` (Broker fee not set) (cliff not set) | 109114 |
| `createWithTimestamps` (Broker fee set) (cliff set) | 136117 |
| `createWithTimestamps` (Broker fee not set) (cliff set) | 131403 |
| `withdraw` (After End Time) (by Recipient) | 29557 |
| `withdraw` (Before End Time) (by Recipient) | 19032 |
| `withdraw` (After End Time) (by Anyone) | 24460 |
| `withdraw` (Before End Time) (by Anyone) | 18735 |
| `burn` | 15694 |
| `cancel` | 56829 |
| `renounce` | 19381 |
| `createWithDurations` (Broker fee set) (cliff not set) | 129276 |
| `createWithDurations` (Broker fee not set) (cliff not set) | 113680 |
| `createWithDurations` (Broker fee set) (cliff set) | 138071 |
| `createWithDurations` (Broker fee not set) (cliff set) | 133273 |
| `createWithTimestamps` (Broker fee set) (cliff not set) | 115334 |
| `createWithTimestamps` (Broker fee not set) (cliff not set) | 110530 |
| `createWithTimestamps` (Broker fee set) (cliff set) | 137629 |
| `createWithTimestamps` (Broker fee not set) (cliff set) | 132827 |
| `withdraw` (After End Time) (by Recipient) | 29701 |
| `withdraw` (Before End Time) (by Recipient) | 19104 |
| `withdraw` (After End Time) (by Anyone) | 24799 |
| `withdraw` (Before End Time) (by Anyone) | 19002 |
54 changes: 27 additions & 27 deletions benchmark/results/SablierV2LockupTranched.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,30 +2,30 @@

| Implementation | Gas Usage |
| ---------------------------------------------------------- | --------- |
| `burn` | 15713 |
| `cancel` | 61537 |
| `renounce` | 28738 |
| `createWithDurations` (2 tranches) (Broker fee set) | 198066 |
| `createWithDurations` (2 tranches) (Broker fee not set) | 182587 |
| `createWithTimestamps` (2 tranches) (Broker fee set) | 187974 |
| `createWithTimestamps` (2 tranches) (Broker fee not set) | 182597 |
| `withdraw` (2 tranches) (After End Time) (by Recipient) | 20204 |
| `withdraw` (2 tranches) (Before End Time) (by Recipient) | 15009 |
| `withdraw` (2 tranches) (After End Time) (by Anyone) | 15108 |
| `withdraw` (2 tranches) (Before End Time) (by Anyone) | 14712 |
| `createWithDurations` (10 tranches) (Broker fee set) | 385207 |
| `createWithDurations` (10 tranches) (Broker fee not set) | 380536 |
| `createWithTimestamps` (10 tranches) (Broker fee set) | 393650 |
| `createWithTimestamps` (10 tranches) (Broker fee not set) | 388386 |
| `withdraw` (10 tranches) (After End Time) (by Recipient) | 17959 |
| `withdraw` (10 tranches) (Before End Time) (by Recipient) | 19892 |
| `withdraw` (10 tranches) (After End Time) (by Anyone) | 17669 |
| `withdraw` (10 tranches) (Before End Time) (by Anyone) | 19595 |
| `createWithDurations` (100 tranches) (Broker fee set) | 2645968 |
| `createWithDurations` (100 tranches) (Broker fee not set) | 2641781 |
| `createWithTimestamps` (100 tranches) (Broker fee set) | 2712165 |
| `createWithTimestamps` (100 tranches) (Broker fee not set) | 2708591 |
| `withdraw` (100 tranches) (After End Time) (by Recipient) | 46850 |
| `withdraw` (100 tranches) (Before End Time) (by Recipient) | 74985 |
| `withdraw` (100 tranches) (After End Time) (by Anyone) | 46553 |
| `withdraw` (100 tranches) (Before End Time) (by Anyone) | 74688 |
| `burn` | 15738 |
| `cancel` | 63994 |
| `renounce` | 26501 |
| `createWithDurations` (2 tranches) (Broker fee set) | 199536 |
| `createWithDurations` (2 tranches) (Broker fee not set) | 183969 |
| `createWithTimestamps` (2 tranches) (Broker fee set) | 189410 |
| `createWithTimestamps` (2 tranches) (Broker fee not set) | 183945 |
| `withdraw` (2 tranches) (After End Time) (by Recipient) | 20100 |
| `withdraw` (2 tranches) (Before End Time) (by Recipient) | 14797 |
| `withdraw` (2 tranches) (After End Time) (by Anyone) | 15199 |
| `withdraw` (2 tranches) (Before End Time) (by Anyone) | 14695 |
| `createWithDurations` (10 tranches) (Broker fee set) | 388757 |
| `createWithDurations` (10 tranches) (Broker fee not set) | 383998 |
| `createWithTimestamps` (10 tranches) (Broker fee set) | 397102 |
| `createWithTimestamps` (10 tranches) (Broker fee not set) | 391750 |
| `withdraw` (10 tranches) (After End Time) (by Recipient) | 17855 |
| `withdraw` (10 tranches) (Before End Time) (by Recipient) | 19616 |
| `withdraw` (10 tranches) (After End Time) (by Anyone) | 17760 |
| `withdraw` (10 tranches) (Before End Time) (by Anyone) | 19514 |
| `createWithDurations` (100 tranches) (Broker fee set) | 2672918 |
| `createWithDurations` (100 tranches) (Broker fee not set) | 2668643 |
| `createWithTimestamps` (100 tranches) (Broker fee set) | 2738297 |
| `createWithTimestamps` (100 tranches) (Broker fee not set) | 2734635 |
| `withdraw` (100 tranches) (After End Time) (by Recipient) | 46746 |
| `withdraw` (100 tranches) (Before End Time) (by Recipient) | 73989 |
| `withdraw` (100 tranches) (After End Time) (by Anyone) | 46644 |
| `withdraw` (100 tranches) (Before End Time) (by Anyone) | 73887 |
13 changes: 4 additions & 9 deletions precompiles/Precompiles.sol

Large diffs are not rendered by default.

40 changes: 20 additions & 20 deletions script/Base.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -87,48 +87,48 @@ contract BaseScript is Script {
// forgefmt: disable-start

// Arbitrum chain ID
segmentCountMap[42161] = 1170;
trancheCountMap[42161] = 1210;
segmentCountMap[42161] = 1160;
trancheCountMap[42161] = 1200;

// Avalanche chain ID.
segmentCountMap[43114] = 530;
segmentCountMap[43114] = 520;
trancheCountMap[43114] = 540;

// Base chain ID.
segmentCountMap[8453] = 2200;
trancheCountMap[8453] = 2290;
segmentCountMap[8453] = 2170;
trancheCountMap[8453] = 2270;

// Blast chain ID.
segmentCountMap[238] = 1100;
trancheCountMap[238] = 1130;
segmentCountMap[238] = 1080;
trancheCountMap[238] = 1120;

// BNB chain ID.
segmentCountMap[56] = 4870;
trancheCountMap[56] = 5180;
segmentCountMap[56] = 4820;
trancheCountMap[56] = 5130;

// Ethereum chain ID.
segmentCountMap[1] = 1100;
trancheCountMap[1] = 1130;
segmentCountMap[1] = 1080;
trancheCountMap[1] = 1120;

// Gnosis chain ID.
segmentCountMap[100] = 610;
segmentCountMap[100] = 600;
trancheCountMap[100] = 620;

// Optimism chain ID.
segmentCountMap[10] = 1100;
trancheCountMap[10] = 1130;
segmentCountMap[10] = 1080;
trancheCountMap[10] = 1120;

// Polygon chain ID.
segmentCountMap[137] = 1100;
trancheCountMap[137] = 1130;
segmentCountMap[137] = 1080;
trancheCountMap[137] = 1120;

// Scroll chain ID.
segmentCountMap[534352] = 340;
trancheCountMap[534352] = 350;
segmentCountMap[534352] = 330;
trancheCountMap[534352] = 340;

// Sepolia chain ID.
segmentCountMap[11155111] = 1100;
trancheCountMap[11155111] = 1130;
segmentCountMap[11155111] = 1080;
trancheCountMap[11155111] = 1120;

// forgefmt: disable-end
}
Expand Down
8 changes: 1 addition & 7 deletions script/DeployCore.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,8 @@ import { SablierV2NFTDescriptor } from "../src/SablierV2NFTDescriptor.sol";

import { BaseScript } from "./Base.s.sol";

/// @notice Deploys all V2 Core contract in the following order:
///
/// 1. {SablierV2NFTDescriptor}
/// 2. {SablierV2LockupDynamic}
/// 3. {SablierV2LockupLinear}
/// 4. {SablierV2LockupTranched}
/// @notice Deploys all V2 Core contracts.
contract DeployCore is BaseScript {
/// @dev Deploy via Forge.
function run(address initialAdmin)
public
virtual
Expand Down
6 changes: 0 additions & 6 deletions script/DeployCore2.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,7 @@ import { SablierV2LockupTranched } from "../src/SablierV2LockupTranched.sol";

import { BaseScript } from "./Base.s.sol";

/// @notice Deploys these contracts in the following order:
///
/// 1. {SablierV2LockupDynamic}
/// 2. {SablierV2LockupLinear}
/// 3. {SablierV2LockupTranched}
contract DeployCore2 is BaseScript {
/// @dev Deploy via Forge.
function run(
address initialAdmin,
ISablierV2NFTDescriptor nftDescriptor
Expand Down
9 changes: 1 addition & 8 deletions script/DeployDeterministicCore.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,9 @@ import { SablierV2NFTDescriptor } from "../src/SablierV2NFTDescriptor.sol";

import { BaseScript } from "./Base.s.sol";

/// @notice Deploys all V2 Core contracts at deterministic addresses across chains, in the following order:
///
/// 1. {SablierV2NFTDescriptor}
/// 2. {SablierV2LockupDynamic}
/// 3. {SablierV2LockupLinear}
/// 4. {SablierV2LockupTranched}
///
/// @notice Deploys all V2 Core contracts at deterministic addresses across chains.
/// @dev Reverts if any contract has already been deployed.
contract DeployDeterministicCore is BaseScript {
/// @dev Deploy via Forge.
function run(address initialAdmin)
public
virtual
Expand Down
7 changes: 0 additions & 7 deletions script/DeployDeterministicCore2.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,8 @@ import { SablierV2LockupTranched } from "../src/SablierV2LockupTranched.sol";

import { BaseScript } from "./Base.s.sol";

/// @notice Deploys these contracts at deterministic addresses across chains, in the following order:
///
/// 1. {SablierV2LockupDynamic}
/// 2. {SablierV2LockupLinear}
/// 3. {SablierV2LockupTranched}
///
/// @dev Reverts if any contract has already been deployed.
contract DeployDeterministicCore2 is BaseScript {
/// @dev Deploy via Forge.
function run(
address initialAdmin,
ISablierV2NFTDescriptor nftDescriptor
Expand Down
1 change: 0 additions & 1 deletion script/DeployDeterministicLockupDynamic.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import { BaseScript } from "./Base.s.sol";
/// @notice Deploys {SablierV2LockupDynamic} at a deterministic address across chains.
/// @dev Reverts if the contract has already been deployed.
contract DeployDeterministicLockupDynamic is BaseScript {
/// @dev Deploy via Forge.
function run(
address initialAdmin,
ISablierV2NFTDescriptor initialNFTDescriptor
Expand Down
1 change: 0 additions & 1 deletion script/DeployDeterministicLockupLinear.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import { BaseScript } from "./Base.s.sol";
/// @dev Deploys {SablierV2LockupLinear} at a deterministic address across chains.
/// @dev Reverts if the contract has already been deployed.
contract DeployDeterministicLockupLinear is BaseScript {
/// @dev Deploy via Forge.
function run(
address initialAdmin,
ISablierV2NFTDescriptor initialNFTDescriptor
Expand Down
1 change: 0 additions & 1 deletion script/DeployDeterministicLockupTranched.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import { BaseScript } from "./Base.s.sol";
/// @dev Deploys {SablierV2LockupTranched} at a deterministic address across chains.
/// @dev Reverts if the contract has already been deployed.
contract DeployDeterministicLockupTranched is BaseScript {
/// @dev Deploy via Forge.
function run(
address initialAdmin,
ISablierV2NFTDescriptor initialNFTDescriptor
Expand Down
1 change: 0 additions & 1 deletion script/DeployDeterministicNFTDescriptor.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import { BaseScript } from "./Base.s.sol";
/// @dev Deploys {SablierV2NFTDescriptor} at a deterministic address across chains.
/// @dev Reverts if the contract has already been deployed.
contract DeployDeterministicNFTDescriptor is BaseScript {
/// @dev Deploy via Forge.
function run() public virtual broadcast returns (SablierV2NFTDescriptor nftDescriptor) {
bytes32 salt = constructCreate2Salt();
nftDescriptor = new SablierV2NFTDescriptor{ salt: salt }();
Expand Down
1 change: 0 additions & 1 deletion script/DeployLockupDynamic.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import { SablierV2LockupDynamic } from "../src/SablierV2LockupDynamic.sol";
import { BaseScript } from "./Base.s.sol";

contract DeployLockupDynamic is BaseScript {
/// @dev Deploy via Forge.
function run(
address initialAdmin,
ISablierV2NFTDescriptor initialNFTDescriptor
Expand Down
1 change: 0 additions & 1 deletion script/DeployLockupLinear.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import { SablierV2LockupLinear } from "../src/SablierV2LockupLinear.sol";
import { BaseScript } from "./Base.s.sol";

contract DeployLockupLinear is BaseScript {
/// @dev Deploy via Forge.
function run(
address initialAdmin,
ISablierV2NFTDescriptor initialNFTDescriptor
Expand Down
1 change: 0 additions & 1 deletion script/DeployLockupTranched.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import { SablierV2LockupTranched } from "../src/SablierV2LockupTranched.sol";
import { BaseScript } from "./Base.s.sol";

contract DeployLockupTranched is BaseScript {
/// @dev Deploy via Forge.
function run(
address initialAdmin,
ISablierV2NFTDescriptor initialNFTDescriptor
Expand Down
1 change: 0 additions & 1 deletion script/DeployNFTDescriptor.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import { SablierV2NFTDescriptor } from "../src/SablierV2NFTDescriptor.sol";
import { BaseScript } from "./Base.s.sol";

contract DeployNFTDescriptor is BaseScript {
/// @dev Deploy via Forge.
function run() public virtual broadcast returns (SablierV2NFTDescriptor nftDescriptor) {
nftDescriptor = new SablierV2NFTDescriptor();
}
Expand Down
6 changes: 1 addition & 5 deletions shell/prepare-artifacts.sh
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ mkdir $artifacts \
"$artifacts/interfaces" \
"$artifacts/interfaces/erc20" \
"$artifacts/interfaces/erc721" \
"$artifacts/interfaces/hooks" \
"$artifacts/libraries"

# Generate the artifacts with Forge
Expand All @@ -29,6 +28,7 @@ cp out-optimized/SablierV2LockupTranched.sol/SablierV2LockupTranched.json $artif
cp out-optimized/SablierV2NFTDescriptor.sol/SablierV2NFTDescriptor.json $artifacts

interfaces=./artifacts/interfaces
cp out-optimized/ISablierLockupRecipient.sol/ISablierLockupRecipient.json $interfaces
cp out-optimized/ISablierV2Lockup.sol/ISablierV2Lockup.json $interfaces
cp out-optimized/ISablierV2LockupDynamic.sol/ISablierV2LockupDynamic.json $interfaces
cp out-optimized/ISablierV2LockupLinear.sol/ISablierV2LockupLinear.json $interfaces
Expand All @@ -42,10 +42,6 @@ erc721=./artifacts/interfaces/erc721
cp out-optimized/IERC721.sol/IERC721.json $erc721
cp out-optimized/IERC721Metadata.sol/IERC721Metadata.json $erc721

hooks=./artifacts/interfaces/hooks
cp out-optimized/ISablierV2Recipient.sol/ISablierV2Recipient.json $hooks
cp out-optimized/ISablierV2Sender.sol/ISablierV2Sender.json $hooks

libraries=./artifacts/libraries
cp out-optimized/Errors.sol/Errors.json $libraries

Expand Down
Loading