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
#![deny(missing_docs)]
#![deny(rustdoc::all)]
#![allow(rustdoc::missing_doc_code_examples)]
pub mod assert;
mod keyref;
pub mod validate;
use anchor_lang::prelude::*;
pub use keyref::AsKeyRef;
pub use spl_associated_token_account as ata;
pub use validate::Validate;
declare_id!("VipersTest111111111111111111111111111111111");
pub fn validate_derived_address(
derived_address: &Pubkey,
program_id: &Pubkey,
seeds: &[&[u8]],
) -> bool {
match Pubkey::create_program_address(seeds, program_id) {
Ok(ref key) => derived_address == key,
_ => false,
}
}
pub mod prelude {
pub use super::{
assert_is_zero_token_account, assert_keys_eq, assert_keys_neq, invariant, try_or_err,
unwrap_checked, unwrap_int, unwrap_opt, unwrap_opt_block, unwrap_or_err, AsKeyRef,
Validate, VipersError,
};
}
#[allow(missing_docs)]
#[error(offset = 1100)]
pub enum VipersError {
#[msg("Keys do not match.")]
KeyMismatch,
#[msg("Associated token account does not match.")]
ATAMismatch,
#[msg("Program ID does not match.")]
ProgramIDMismatch,
#[msg("Integer overflow.")]
IntegerOverflow,
#[msg("The provided account is not owned by the specified program.")]
OwnerMismatch,
#[msg("The provided token account is not an associated token account.")]
InvalidATA,
#[msg("Invariant failed.")]
InvariantFailed,
#[msg("Option unwrap failed.")]
OptionUnwrapFailed,
#[msg("Keys must not match.")]
KeysMustNotMatch,
#[msg("The provided token account is non-zero: amount must be zero, it should not have a delegate, and it should not have a close authority.")]
TokenAccountIsNonZero,
}