-
Notifications
You must be signed in to change notification settings - Fork 34
Expand file tree
/
Copy pathIBondPool.sol
More file actions
45 lines (36 loc) · 1.27 KB
/
IBondPool.sol
File metadata and controls
45 lines (36 loc) · 1.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
// Neptune Mutual Protocol (https://neptunemutual.com)
// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.0;
import "./IMember.sol";
interface IBondPool is IMember {
struct BondPoolInfoType {
address lpToken;
uint256 marketPrice;
uint256 discountRate;
uint256 vestingTerm;
uint256 maxBond;
uint256 totalNpmAllocated;
uint256 totalNpmDistributed;
uint256 npmAvailable;
uint256 bondContribution;
uint256 claimable;
uint256 unlockDate;
}
struct SetupBondPoolArgs {
address lpToken;
address treasury;
uint256 bondDiscountRate;
uint256 maxBondAmount;
uint256 vestingTerm;
uint256 npmToTopUpNow;
}
event BondPoolSetup(SetupBondPoolArgs args);
event BondCreated(address indexed account, uint256 lpTokens, uint256 npmToVest, uint256 unlockDate);
event BondClaimed(address indexed account, uint256 amount);
function setup(SetupBondPoolArgs calldata args) external;
function createBond(uint256 lpTokens, uint256 minNpmDesired) external;
function claimBond() external;
function getNpmMarketPrice() external view returns (uint256);
function calculateTokensForLp(uint256 lpTokens) external view returns (uint256);
function getInfo(address forAccount) external view returns (BondPoolInfoType memory info);
}