Skip to content
This repository was archived by the owner on Mar 11, 2025. It is now read-only.

Commit 5d8e76d

Browse files
authored
remove solana-program from token-group-interface (#7430)
* remove solana-program from token-group-interface * remove now-unused dep * missed a spot
1 parent b0e553f commit 5d8e76d

File tree

5 files changed

+83
-21
lines changed

5 files changed

+83
-21
lines changed

Cargo.lock

Lines changed: 9 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

token-group/interface/Cargo.toml

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,19 @@ edition = "2021"
99

1010
[dependencies]
1111
bytemuck = "1.19.0"
12-
solana-program = "2.1.0"
12+
num-derive = "0.4"
13+
num-traits = "0.2"
14+
solana-decode-error = "2.1.0"
15+
solana-instruction = "2.1.0"
16+
solana-msg = "2.1.0"
17+
solana-program-error = "2.1.0"
18+
solana-pubkey = "2.1.0"
1319
spl-discriminator = { version = "0.3.0" , path = "../../libraries/discriminator" }
1420
spl-pod = { version = "0.4.0", path = "../../libraries/pod", features = ["borsh"] }
15-
spl-program-error = { version = "0.5.0" , path = "../../libraries/program-error" }
21+
thiserror = "1.0"
1622

1723
[dev-dependencies]
24+
solana-sha256-hasher = "2.1.0"
1825
spl-type-length-value = { version = "0.6.0", path = "../../libraries/type-length-value", features = ["derive"] }
1926

2027
[lib]

token-group/interface/src/error.rs

Lines changed: 52 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
11
//! Interface error types
22
3-
use spl_program_error::*;
3+
use {
4+
solana_decode_error::DecodeError,
5+
solana_msg::msg,
6+
solana_program_error::{PrintProgramError, ProgramError},
7+
};
48

59
/// Errors that may be returned by the interface.
6-
#[spl_program_error(hash_error_code_start = 3_406_457_176)]
10+
#[repr(u32)]
11+
#[derive(Clone, Debug, Eq, thiserror::Error, num_derive::FromPrimitive, PartialEq)]
712
pub enum TokenGroupError {
813
/// Size is greater than proposed max size
914
#[error("Size is greater than proposed max size")]
10-
SizeExceedsNewMaxSize,
15+
SizeExceedsNewMaxSize = 3_406_457_176,
1116
/// Size is greater than max size
1217
#[error("Size is greater than max size")]
1318
SizeExceedsMaxSize,
@@ -24,3 +29,47 @@ pub enum TokenGroupError {
2429
#[error("Member account should not be the same as the group account")]
2530
MemberAccountIsGroupAccount,
2631
}
32+
33+
impl From<TokenGroupError> for ProgramError {
34+
fn from(e: TokenGroupError) -> Self {
35+
ProgramError::Custom(e as u32)
36+
}
37+
}
38+
39+
impl<T> DecodeError<T> for TokenGroupError {
40+
fn type_of() -> &'static str {
41+
"TokenGroupError"
42+
}
43+
}
44+
45+
impl PrintProgramError for TokenGroupError {
46+
fn print<E>(&self)
47+
where
48+
E: 'static
49+
+ std::error::Error
50+
+ DecodeError<E>
51+
+ PrintProgramError
52+
+ num_traits::FromPrimitive,
53+
{
54+
match self {
55+
TokenGroupError::SizeExceedsNewMaxSize => {
56+
msg!("Size is greater than proposed max size")
57+
}
58+
TokenGroupError::SizeExceedsMaxSize => {
59+
msg!("Size is greater than max size")
60+
}
61+
TokenGroupError::ImmutableGroup => {
62+
msg!("Group is immutable")
63+
}
64+
TokenGroupError::IncorrectMintAuthority => {
65+
msg!("Incorrect mint authority has signed the instruction",)
66+
}
67+
TokenGroupError::IncorrectUpdateAuthority => {
68+
msg!("Incorrect update authority has signed the instruction",)
69+
}
70+
TokenGroupError::MemberAccountIsGroupAccount => {
71+
msg!("Member account should not be the same as the group account",)
72+
}
73+
}
74+
}
75+
}

token-group/interface/src/instruction.rs

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,9 @@
22
33
use {
44
bytemuck::{Pod, Zeroable},
5-
solana_program::{
6-
instruction::{AccountMeta, Instruction},
7-
program_error::ProgramError,
8-
pubkey::Pubkey,
9-
},
5+
solana_instruction::{AccountMeta, Instruction},
6+
solana_program_error::ProgramError,
7+
solana_pubkey::Pubkey,
108
spl_discriminator::{ArrayDiscriminator, SplDiscriminate},
119
spl_pod::{
1210
bytemuck::{pod_bytes_of, pod_from_bytes},
@@ -243,7 +241,7 @@ pub fn initialize_member(
243241

244242
#[cfg(test)]
245243
mod test {
246-
use {super::*, crate::NAMESPACE, solana_program::hash};
244+
use {super::*, crate::NAMESPACE, solana_sha256_hasher::hashv};
247245

248246
fn instruction_pack_unpack<I>(instruction: TokenGroupInstruction, discriminator: &[u8], data: I)
249247
where
@@ -265,7 +263,7 @@ mod test {
265263
max_size: 100.into(),
266264
};
267265
let instruction = TokenGroupInstruction::InitializeGroup(data);
268-
let preimage = hash::hashv(&[format!("{NAMESPACE}:initialize_token_group").as_bytes()]);
266+
let preimage = hashv(&[format!("{NAMESPACE}:initialize_token_group").as_bytes()]);
269267
let discriminator = &preimage.as_ref()[..ArrayDiscriminator::LENGTH];
270268
instruction_pack_unpack::<InitializeGroup>(instruction, discriminator, data);
271269
}
@@ -276,7 +274,7 @@ mod test {
276274
max_size: 200.into(),
277275
};
278276
let instruction = TokenGroupInstruction::UpdateGroupMaxSize(data);
279-
let preimage = hash::hashv(&[format!("{NAMESPACE}:update_group_max_size").as_bytes()]);
277+
let preimage = hashv(&[format!("{NAMESPACE}:update_group_max_size").as_bytes()]);
280278
let discriminator = &preimage.as_ref()[..ArrayDiscriminator::LENGTH];
281279
instruction_pack_unpack::<UpdateGroupMaxSize>(instruction, discriminator, data);
282280
}
@@ -287,7 +285,7 @@ mod test {
287285
new_authority: OptionalNonZeroPubkey::default(),
288286
};
289287
let instruction = TokenGroupInstruction::UpdateGroupAuthority(data);
290-
let preimage = hash::hashv(&[format!("{NAMESPACE}:update_authority").as_bytes()]);
288+
let preimage = hashv(&[format!("{NAMESPACE}:update_authority").as_bytes()]);
291289
let discriminator = &preimage.as_ref()[..ArrayDiscriminator::LENGTH];
292290
instruction_pack_unpack::<UpdateGroupAuthority>(instruction, discriminator, data);
293291
}
@@ -296,7 +294,7 @@ mod test {
296294
fn initialize_member_pack() {
297295
let data = InitializeMember {};
298296
let instruction = TokenGroupInstruction::InitializeMember(data);
299-
let preimage = hash::hashv(&[format!("{NAMESPACE}:initialize_member").as_bytes()]);
297+
let preimage = hashv(&[format!("{NAMESPACE}:initialize_member").as_bytes()]);
300298
let discriminator = &preimage.as_ref()[..ArrayDiscriminator::LENGTH];
301299
instruction_pack_unpack::<InitializeMember>(instruction, discriminator, data);
302300
}

token-group/interface/src/state.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
use {
44
crate::error::TokenGroupError,
55
bytemuck::{Pod, Zeroable},
6-
solana_program::{program_error::ProgramError, pubkey::Pubkey},
6+
solana_program_error::ProgramError,
7+
solana_pubkey::Pubkey,
78
spl_discriminator::SplDiscriminate,
89
spl_pod::{error::PodSliceError, optional_keys::OptionalNonZeroPubkey, primitives::PodU64},
910
};
@@ -88,20 +89,20 @@ mod tests {
8889
use {
8990
super::*,
9091
crate::NAMESPACE,
91-
solana_program::hash,
92+
solana_sha256_hasher::hashv,
9293
spl_discriminator::ArrayDiscriminator,
9394
spl_type_length_value::state::{TlvState, TlvStateBorrowed, TlvStateMut},
9495
std::mem::size_of,
9596
};
9697

9798
#[test]
9899
fn discriminators() {
99-
let preimage = hash::hashv(&[format!("{NAMESPACE}:group").as_bytes()]);
100+
let preimage = hashv(&[format!("{NAMESPACE}:group").as_bytes()]);
100101
let discriminator =
101102
ArrayDiscriminator::try_from(&preimage.as_ref()[..ArrayDiscriminator::LENGTH]).unwrap();
102103
assert_eq!(TokenGroup::SPL_DISCRIMINATOR, discriminator);
103104

104-
let preimage = hash::hashv(&[format!("{NAMESPACE}:member").as_bytes()]);
105+
let preimage = hashv(&[format!("{NAMESPACE}:member").as_bytes()]);
105106
let discriminator =
106107
ArrayDiscriminator::try_from(&preimage.as_ref()[..ArrayDiscriminator::LENGTH]).unwrap();
107108
assert_eq!(TokenGroupMember::SPL_DISCRIMINATOR, discriminator);

0 commit comments

Comments
 (0)