This repository contains a collection of utility smart contracts used across various Sablier Solidity projects. The motivation behind this repository is to reduce code duplication.
The following projects imports this repo:
In-depth documentation is available at docs.sablier.com.
This repo contains the following subdirectories:
src/interfaces
: Interfaces to be used by external projects.src/mocks
: Mock contracts used by external projects in tests.src/tests
: Helper contracts used by external projects in tests and deployment scripts.
This is the recommended approach.
Install using your favorite package manager, e.g., with Bun:
bun add @sablier/evm-utils
This installation method is not recommended, but it is available for those who prefer it.
First, install the submodule using Forge:
forge install --no-commit sablier-labs/evm-utils
import { Adminable } from "@sablier/evm-utils/src/Adminable.sol";
import { Batch } from "@sablier/evm-utils/src/Batch.sol";
import { NoDelegateCall } from "@sablier/evm-utils/src/NoDelegateCall.sol";
contract MyContract is Adminable, Batch, NoDelegateCall {
constructor(address initialAdmin) Adminable(initialAdmin) { }
// Use the `noDelegateCall` modifier to prevent delegate calls.
function foo() public noDelegateCall { }
// Use the `onlyAdmin` modifier to restrict access to the admin.
function editFee(uint256 newFee) public onlyAdmin { }
}
This repo is licensed under the GNU General Public License.