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
/*!
Access protocol
## Overview
## Central state
The [`CentralState`][`state::CentralState`] contains the information about:
- ACCESS token mint
- ACCESS token inflation
The inflation schedule can be modified by the `authority` key contained in the [`CentralState`][`state::CentralState`] by using the [`change_inflation`][`fn@instruction::change_inflation`] instruction.
The [`CentralState`][`state::CentralState`] is the mint authority of the ACCESS token.
## Stake pool
[`Stake pools`][`state::StakePool`] are created by content publishers. In order to get access to the publisher's content users need to stake ACCESS tokens in the [`StakePool`][`state::StakePool`] of the publisher.
A [`Stake pools`][`state::StakePool`] is made of a header ([`StakePoolHeader`][`state::StakePoolHeader`]) and circular buffer that contains the pool balances multiplied by the current inflation at each crank time.
The circular buffer is updated using a permissionless [`crank`][`fn@instruction::crank`].
## Stake accounts
[`Stake accounts`][`state::StakeAccount`] are used to deposit funds in a stake pool. Stake accounts allow users to access the content of the publisher and earn yield in ACCESS tokens at the same time.
## Bonds
[`Bonds`][`state::Bonds`] represent locked ACCESS tokens sold by the ACCESS DAO. The lifecycle of a bond is as follow:
- [`create_bond`][`fn@instruction::create_bond`]: This instruction creates an inactive bond. The bond account contains the information about the price of the bond, the buyer, the unlock schedule and the sellers.
- [`sign_bond`][`fn@instruction::sign_bond`]: This instruction allows DAO members to approve the sell.
- [`claim_bond`][`fn@instruction::claim_bond`]: Once the bond has been signed by enough DAO members, the buyer can claim the bond.
Bond tokens can be staked like regular ACCESS tokens.
*/
use declare_id;
/// Program instructions and their CPI-compatible bindings
/// Describes the different data structres that the program uses to encode state
pub
declare_id!;