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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
//! Permalock: Tribeca vote escrows with infinite lockup durations.
//!
//! # About
//!
//! The Permalock program allows the creation of *permalocks*: vote escrows which are always locked to the maximum duration.
//!
//! It works by allowing any user to refresh the lockup period of the vote escrow to the maximum period,
//! ensuring that the owner of the Permalock can never unstake the tokens. Since the Tribeca DAO holds the program
//! upgrade keys, a DAO can be certain that a permalock will never be unlocked, ever.
//!
//! # Documentation
//!
//! Detailed documentation may be found on the [Tribeca Documentation site.](https://docs.tribeca.so)
//!
//! # Usage
//!
//! ## Locking tokens
//!
//! First, transfer tokens to the Permalock's `pending_tokens` account. The `pending_tokens` account holds all tokens that
//! are ready to be max-locked.
//!
//! Next, refresh the Permalock with [`permalock::refresh_lock`]. This refreshes the Permalock's escrow
//! to max lock the tokens that have been deposited, plus refreshes the lock period of all existing Escrow tokens.
//!
//! # Address
//!
//! Program addresses are the same on devnet, testnet, and mainnet-beta.
//!
//! - Permalock: [`PLKZAXAYmZSfQv61tL2XALX4c14fcEhJj2CJhU1KcKd`](https://explorer.solana.com/address/PLKZAXAYmZSfQv61tL2XALX4c14fcEhJj2CJhU1KcKd)
//!
//! # Contribution
//!
//! Thank you for your interest in contributing to Tribeca Protocol! All contributions are welcome no matter how big or small. This includes
//! (but is not limited to) filing issues, adding documentation, fixing bugs, creating examples, and implementing features.
//!
//! When contributing, please make sure your code adheres to some basic coding guidlines:
//!
//! - Code must be formatted with the configured formatters (e.g. `rustfmt` and `prettier`).
//! - Comment lines should be no longer than 80 characters and written with proper grammar and punctuation.
//!
//! # License
//!
//! The Tribeca Permalock program is licensed under the Affero General Public License, version 3.0.
use *;
use *;
use *;
pub use *;
declare_id!;
/// The [permalock] program.
/// Errors.