Skip to main content

ISablierFactoryMerkleVCA

Git Source

Inherits: ISablierFactoryMerkleBase

A factory that deploys MerkleVCA campaign contracts.

See the documentation in ISablierMerkleVCA.

Functions

computeMerkleVCA

Computes the deterministic address where SablierMerkleVCA campaign will be deployed.

Reverts if the requirements from createMerkleVCA are not met.

function computeMerkleVCA(
address campaignCreator,
MerkleVCA.ConstructorParams memory params
)
external
view
returns (address merkleVCA);

createMerkleVCA

Creates a new MerkleVCA campaign for variable distribution of tokens.

Emits a CreateMerkleVCA event. Notes:

  • The contract is created with CREATE2.
  • The campaign's fee will be set to the min USD fee unless a custom fee is set for msg.sender.
  • Users interested into funding the campaign before its deployment must meet the below requirements, otherwise the campaign deployment will revert. Requirements:
  • params.token must not be the forbidden native token.
  • params.expiration must be greater than 0.
  • params.expiration must be at least 1 week beyond the end time to ensure loyal recipients have enough time to claim.
  • params.vestingEndTime must be greater than params.vestingStartTime.
  • Both params.vestingStartTime and params.vestingEndTime must be greater than 0.
  • params.unlockPercentage must not be greater than 1e18, equivalent to 100%.
function createMerkleVCA(
MerkleVCA.ConstructorParams memory params,
uint256 aggregateAmount,
uint256 recipientCount
)
external
returns (ISablierMerkleVCA merkleVCA);

Parameters

NameTypeDescription
paramsMerkleVCA.ConstructorParamsStruct encapsulating the SablierMerkleVCA parameters, which are documented in {DataTypes}.
aggregateAmountuint256The total amount of ERC-20 tokens to be distributed to all recipients.
recipientCountuint256The total number of recipient addresses eligible for the airdrop.

Returns

NameTypeDescription
merkleVCAISablierMerkleVCAThe address of the newly created MerkleVCA campaign.

Events

CreateMerkleVCA

Emitted when a SablierMerkleVCA campaign is created.

event CreateMerkleVCA(
ISablierMerkleVCA indexed merkleVCA,
MerkleVCA.ConstructorParams params,
uint256 aggregateAmount,
uint256 recipientCount,
address comptroller,
uint256 minFeeUSD
);