SablierV2Batch
Inherits: ISablierV2Batch
See the documentation in ISablierV2Batch.
User Facing Functions
createMerkleStreamerLL
Creates a batch of Lockup Linear streams using createWithDurations.
Requirements:
- There must be at least one element in 
batch. - All requirements from ISablierV2LockupLinear.createWithDurations must be met for each stream.
 
function createWithDurations(
    ISablierV2LockupLinear lockupLinear,
    IERC20 asset,
    Batch.CreateWithDurations[] calldata batch
)
    external
    returns (uint256[] memory streamIds);
Parameters
| Name | Type | Description | 
|---|---|---|
lockupLinear | ISablierV2LockupLinear | The address of the {SablierV2LockupLinear} contract. | 
asset | IERC20 | The address of the ERC-20 asset. | 
batch | Batch.CreateWithDurations[] | An array of structs, each encapsulating a subset of the parameters of SablierV2LockupLinear.createWithDurations. | 
createWithRange
Creates a batch of Lockup Linear streams using createWithRange.
Requirements:
- There must be at least one element in 
batch. - All requirements from ISablierV2LockupLinear.createWithRange must be met for each stream.
 
function createWithRange(
    ISablierV2LockupLinear lockupLinear,
    IERC20 asset,
    Batch.createWithRange[] calldata batch
)
    external
    returns (uint256[] memory streamIds);
Parameters
| Name | Type | Description | 
|---|---|---|
lockupLinear | ISablierV2LockupLinear | The address of the {SablierV2LockupLinear} contract. | 
asset | IERC20 | The address of the ERC-20 asset. | 
batch | Batch.CreateWithRange[] | An array of structs, each encapsulating a subset of the parameters of SablierV2LockupLinear.createWithRange. | 
createWithDeltas
Creates a batch of Lockup Dynamic streams using createWithDeltas.
Requirements:
- There must be at least one element in 
batch. - All requirements from ISablierV2LockupDynamic.createWithDeltas must be met for each stream.
 
function createWithDeltas(
    ISablierV2LockupDynamic lockupDynamic,
    IERC20 asset,
    Batch.CreateWithDeltas[] calldata batch
)
    external
    returns (uint256[] memory streamIds);
Parameters
| Name | Type | Description | 
|---|---|---|
lockupDynamic | ISablierV2LockupDynamic | The address of the {SablierV2LockupDynamic} contract. | 
asset | IERC20 | The address of the ERC-20 asset. | 
batch | Batch.CreateWithDeltas[] | An array of structs, each encapsulating a subset of the parameters of SablierV2LockupDynamic.createWithDeltas. | 
createWithMilestones
Creates a batch of Lockup Dynamic streams using createWithMilestones.
Requirements:
- There must be at least one element in 
batch. - All requirements from ISablierV2LockupDynamic.createWithMilestones must be met for each stream.
 
function createWithMilestones(
    ISablierV2LockupDynamic lockupDynamic,
    IERC20 asset,
    Batch.CreateWithMilestones[] calldata batch
)
    external
    returns (uint256[] memory streamIds);
Parameters
| Name | Type | Description | 
|---|---|---|
lockupDynamic | ISablierV2LockupDynamic | The address of the {SablierV2LockupDynamic} contract. | 
asset | IERC20 | The address of the ERC-20 asset. | 
batch | Batch.CreateWithMilestones[] | An array of structs, each encapsulating a subset of the parameters of SablierV2LockupDynamic.createWithMilestones. | 
Internal Functions
_approve
Helper function to approve a Sablier contract to spend funds from the batch. If the current allowance is insufficient,
this function approves Sablier to spend the exact amount. The {SafeERC20.forceApprove} function is used to handle
special ERC-20 assets (e.g. USDT) that require the current allowance to be zero before setting it to a non-zero value.
function _approve(address sablierContract, IERC20 asset, uint256 amount) internal;
Parameters
| Name | Type | Description | 
|---|---|---|
sablierContract | address | The address of the Sablier contract to approve. | 
asset | IERC20 | The address of the ERC-20 asset. | 
amount | uint256 | The amount of tokens to approve. | 
_handleTransfer
Helper function to transfer assets from the caller to the batch contract and approve the Sablier contract.
function _handleTransfer(address sablierContract, IERC20 asset, uint256 amount) internal;
Parameters
| Name | Type | Description | 
|---|---|---|
sablierContract | address | The address of the Sablier contract to transfer from. | 
asset | IERC20 | The address of the ERC-20 asset. | 
amount | uint256 | The amount of tokens to transfer. |