-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
update interfaces, dispenser and invest providers
- Loading branch information
1 parent
55f6102
commit 2becbe6
Showing
7 changed files
with
87 additions
and
118 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,46 +1,83 @@ | ||
// SPDX-License-Identifier: MIT | ||
pragma solidity ^0.8.0; | ||
|
||
import "./IInvestedProvider.sol"; | ||
import "./IProvider.sol"; | ||
|
||
/** | ||
* @title IInvestProvider | ||
* @dev Interface for managing investment pools, including investment actions and pool creation. | ||
* It extends the IProvider interface and defines additional functionality specific to investment pools. | ||
*/ | ||
interface IInvestProvider is IProvider { | ||
/// @notice Invest in a IDO pool | ||
/// @param poolId - the ID of the pool | ||
/// @param amount - the amount of tokens to invest | ||
function invest(uint256 poolId, uint256 amount, bytes calldata data) external; | ||
/** | ||
* @notice Allows an address to invest in a specific IDO (Initial DEX Offering) pool. | ||
* @dev The function is used to transfer a specified amount of tokens into the pool. | ||
* @param poolId The ID of the pool where the investment will occur. | ||
* @param amount The amount of tokens to be invested in the pool. | ||
*/ | ||
function invest(uint256 poolId, uint256 amount, uint256 validUntil, bytes calldata signature) external; | ||
|
||
/** | ||
* @notice Creates a new investment pool. | ||
* @dev This function is used to create a new pool with the specified parameters, copying the settings of an existing source pool. | ||
* It will initialize the new pool with the given details and return its poolId. | ||
* @param poolAmount The maximum amount of tokens that can be invested in the pool. | ||
* @param investSigner The address of the signer for investments. | ||
* @param dispenserSigner The address of the signer for dispenses. | ||
* @param sourcePoolId The ID of the source pool to copy settings from. | ||
* @return poolId The ID of the newly created pool. | ||
*/ | ||
function createNewPool( | ||
Pool calldata pool, | ||
bytes calldata data, | ||
uint256 poolAmount, | ||
address investSigner, | ||
address dispenserSigner, | ||
uint256 sourcePoolId | ||
) external returns (uint256 poolId); | ||
|
||
struct IDO { | ||
Pool pool; | ||
uint256 leftAmount; | ||
} | ||
/** | ||
* @notice Creates a new investment pool. | ||
* @dev This function is used to create a new pool with the specified parameters, copying the settings of an existing source pool. | ||
* It will initialize the new pool with the given details and return its poolId. | ||
* @param poolAmount The maximum amount of tokens that can be invested in the pool. | ||
* @param sourcePoolId The ID of the source pool to copy settings from. | ||
* @return poolId The ID of the newly created pool. | ||
*/ | ||
function createNewPool(uint256 poolAmount, uint256 sourcePoolId) external returns (uint256 poolId); | ||
|
||
/** | ||
* @dev Struct that represents an IDO pool, which contains the pool's configuration and the remaining investment amount. | ||
*/ | ||
struct Pool { | ||
uint256 maxAmount; | ||
uint256 whiteListId; | ||
IInvestedProvider investedProvider; | ||
uint256 maxAmount; // The maximum amount of tokens that can be invested in the pool | ||
uint256 leftAmount; // The amount of tokens left to invest in the pool | ||
} | ||
|
||
event Invested( | ||
uint256 indexed poolId, | ||
address indexed user, | ||
uint256 amount | ||
); | ||
event NewPoolCreated(uint256 indexed poolId, IDO pool); | ||
/** | ||
* @notice Emitted when a user successfully invests in a pool. | ||
* @param poolId The ID of the pool where the investment was made. | ||
* @param user The address of the user who made the investment. | ||
* @param amount The amount of tokens that were invested. | ||
*/ | ||
event Invested(uint256 indexed poolId, address indexed user, uint256 amount); | ||
|
||
/** | ||
* @notice Emitted when a new pool is created. | ||
* @param poolId The ID of the newly created pool. | ||
* @param owner The address of the user who created the pool. | ||
* @param poolAmount The maximum amount of tokens that can be invested in the pool. | ||
*/ | ||
event NewPoolCreated(uint256 indexed poolId, address indexed owner, uint256 poolAmount); | ||
|
||
error InvalidLockDealNFT(); | ||
error InvalidInvestedProvider(); | ||
error InvalidProvider(); | ||
error InvalidPoolId(); | ||
error OnlyLockDealNFT(); | ||
error NoZeroAddress(); | ||
error InvalidParams(); | ||
error NoZeroAmount(); | ||
error ExceededLeftAmount(); | ||
/// @dev Error thrown when the length of parameters is invalid | ||
error InvalidParamsLength(uint256 paramsLength, uint256 minLength); | ||
error InvalidSignature(uint256 poolId, address owner); | ||
error InvalidTime(uint256 currentTime, uint256 validUntil); | ||
error InvalidSourcePoolId(uint256 sourcePoolId); | ||
} |
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters