-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathIOpdexMinedToken.cs
More file actions
82 lines (68 loc) · 2.57 KB
/
IOpdexMinedToken.cs
File metadata and controls
82 lines (68 loc) · 2.57 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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
using Stratis.SmartContracts;
using Stratis.SmartContracts.Standards;
public interface IOpdexMinedToken : IStandardToken256
{
/// <summary>
/// The address of the contract creator.
/// </summary>
/// <remarks>
/// The creator's privileges include the ability to distribute the genesis tokens.
/// </remarks>
Address Creator { get; }
/// <summary>
/// The address of the mining governance contract.
/// </summary>
Address MiningGovernance { get; }
/// <summary>
/// The address of the vault contract.
/// </summary>
Address Vault { get; }
/// <summary>
/// The scheduled amounts to mint to the vault contract.
/// </summary>
UInt256[] VaultSchedule { get; }
/// <summary>
/// The scheduled amounts to mint to the mining governance contract.
/// </summary>
UInt256[] MiningSchedule { get; }
/// <summary>
/// The initial block the token was first distributed at.
/// </summary>
ulong Genesis { get; }
/// <summary>
/// The number of periods that have been distributed.
/// </summary>
uint PeriodIndex { get; }
/// <summary>
/// The number of blocks between token distribution periods.
/// </summary>
ulong PeriodDuration { get; }
/// <summary>
/// The token symbol.
/// </summary>
string Symbol { get; }
/// <summary>
/// The token name.
/// </summary>
string Name { get; }
/// <summary>
/// The next block that distribution is available.
/// </summary>
ulong NextDistributionBlock { get; }
/// <summary>
/// Mints and distributes tokens according to the vault and mining period schedules.
/// </summary>
void Distribute();
/// <summary>
/// Mints and distributions genesis tokens while also nominating the first four liquidity pools to have liquidity mining enabled.
/// </summary>
/// <param name="firstNomination">The first nomination's liquidity pool address.</param>
/// <param name="secondNomination">The second nomination's liquidity pool address.</param>
/// <param name="thirdNomination">The third nomination's liquidity pool address.</param>
/// <param name="fourthNomination">The fourth nomination's liquidity pool address.</param>
void DistributeGenesis(Address firstNomination, Address secondNomination, Address thirdNomination, Address fourthNomination);
/// <summary>
/// Nominates a liquidity pool by its staking weight for liquidity mining. The caller must be a smart contract and must have a balance.
/// </summary>
void NominateLiquidityPool();
}