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

Commit 5988b6b

Browse files
author
Nikhil Acharya
authored
token-2022(feat): add serialisation option for the extensions (#5437)
1 parent 1d7c526 commit 5988b6b

File tree

11 files changed

+46
-0
lines changed

11 files changed

+46
-0
lines changed

token/program-2022/src/extension/cpi_guard/mod.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ use {
88
spl_pod::primitives::PodBool,
99
};
1010

11+
#[cfg(feature = "serde-traits")]
12+
use serde::{Deserialize, Serialize};
13+
1114
/// CPI Guard extension instructions
1215
pub mod instruction;
1316

@@ -16,6 +19,7 @@ pub mod processor;
1619

1720
/// CPI Guard extension for Accounts
1821
#[repr(C)]
22+
#[cfg_attr(feature = "serde-traits", derive(Serialize, Deserialize))]
1923
#[derive(Clone, Copy, Debug, Default, PartialEq, Pod, Zeroable)]
2024
pub struct CpiGuard {
2125
/// Lock privileged token operations from happening via CPI

token/program-2022/src/extension/default_account_state/mod.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@ use {
33
bytemuck::{Pod, Zeroable},
44
};
55

6+
#[cfg(feature = "serde-traits")]
7+
use serde::{Deserialize, Serialize};
8+
69
/// Default Account state extension instructions
710
pub mod instruction;
811

@@ -11,6 +14,7 @@ pub mod processor;
1114

1215
/// Default Account::state extension data for mints.
1316
#[repr(C)]
17+
#[cfg_attr(feature = "serde-traits", derive(Serialize, Deserialize))]
1418
#[derive(Clone, Copy, Debug, Default, PartialEq, Pod, Zeroable)]
1519
pub struct DefaultAccountState {
1620
/// Default Account::state in which new Accounts should be initialized

token/program-2022/src/extension/immutable_owner.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,11 @@ use {
33
bytemuck::{Pod, Zeroable},
44
};
55

6+
#[cfg(feature = "serde-traits")]
7+
use serde::{Deserialize, Serialize};
8+
69
/// Indicates that the Account owner authority cannot be changed
10+
#[cfg_attr(feature = "serde-traits", derive(Serialize, Deserialize))]
711
#[derive(Clone, Copy, Debug, Default, PartialEq, Pod, Zeroable)]
812
#[repr(transparent)]
913
pub struct ImmutableOwner;

token/program-2022/src/extension/interest_bearing_mint/mod.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ use {
99
std::convert::TryInto,
1010
};
1111

12+
#[cfg(feature = "serde-traits")]
13+
use serde::{Deserialize, Serialize};
14+
1215
/// Interest-bearing mint extension instructions
1316
pub mod instruction;
1417

@@ -32,6 +35,7 @@ pub type UnixTimestamp = PodI64;
3235
/// To support changing the rate, the config also maintains state for the previous
3336
/// rate.
3437
#[repr(C)]
38+
#[cfg_attr(feature = "serde-traits", derive(Serialize, Deserialize))]
3539
#[derive(Clone, Copy, Debug, Default, PartialEq, Pod, Zeroable)]
3640
pub struct InterestBearingConfig {
3741
/// Authority that can set the interest rate and authority

token/program-2022/src/extension/memo_transfer/mod.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ use {
1111
spl_pod::primitives::PodBool,
1212
};
1313

14+
#[cfg(feature = "serde-traits")]
15+
use serde::{Deserialize, Serialize};
16+
1417
/// Memo Transfer extension instructions
1518
pub mod instruction;
1619

@@ -19,6 +22,7 @@ pub mod processor;
1922

2023
/// Memo Transfer extension for Accounts
2124
#[repr(C)]
25+
#[cfg_attr(feature = "serde-traits", derive(Serialize, Deserialize))]
2226
#[derive(Clone, Copy, Debug, Default, PartialEq, Pod, Zeroable)]
2327
pub struct MemoTransfer {
2428
/// Require transfers into this account to be accompanied by a memo

token/program-2022/src/extension/metadata_pointer/mod.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,17 @@ use {
44
spl_pod::optional_keys::OptionalNonZeroPubkey,
55
};
66

7+
#[cfg(feature = "serde-traits")]
8+
use serde::{Deserialize, Serialize};
9+
710
/// Instructions for the MetadataPointer extension
811
pub mod instruction;
912
/// Instruction processor for the MetadataPointer extension
1013
pub mod processor;
1114

1215
/// Metadata pointer extension data for mints.
1316
#[repr(C)]
17+
#[cfg_attr(feature = "serde-traits", derive(Serialize, Deserialize))]
1418
#[derive(Clone, Copy, Debug, Default, PartialEq, Pod, Zeroable)]
1519
pub struct MetadataPointer {
1620
/// Authority that can set the metadata address

token/program-2022/src/extension/mint_close_authority.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,12 @@ use {
44
spl_pod::optional_keys::OptionalNonZeroPubkey,
55
};
66

7+
#[cfg(feature = "serde-traits")]
8+
use serde::{Deserialize, Serialize};
9+
710
/// Close authority extension data for mints.
811
#[repr(C)]
12+
#[cfg_attr(feature = "serde-traits", derive(Serialize, Deserialize))]
913
#[derive(Clone, Copy, Debug, Default, PartialEq, Pod, Zeroable)]
1014
pub struct MintCloseAuthority {
1115
/// Optional authority to close the mint

token/program-2022/src/extension/non_transferable.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,17 @@ use {
33
bytemuck::{Pod, Zeroable},
44
};
55

6+
#[cfg(feature = "serde-traits")]
7+
use serde::{Deserialize, Serialize};
8+
69
/// Indicates that the tokens from this mint can't be transfered
10+
#[cfg_attr(feature = "serde-traits", derive(Serialize, Deserialize))]
711
#[derive(Clone, Copy, Debug, Default, PartialEq, Pod, Zeroable)]
812
#[repr(transparent)]
913
pub struct NonTransferable;
1014

1115
/// Indicates that the tokens from this account belong to a non-transferable mint
16+
#[cfg_attr(feature = "serde-traits", derive(Serialize, Deserialize))]
1217
#[derive(Clone, Copy, Debug, Default, PartialEq, Pod, Zeroable)]
1318
#[repr(transparent)]
1419
pub struct NonTransferableAccount;

token/program-2022/src/extension/permanent_delegate.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,12 @@ use {
55
spl_pod::optional_keys::OptionalNonZeroPubkey,
66
};
77

8+
#[cfg(feature = "serde-traits")]
9+
use serde::{Deserialize, Serialize};
10+
811
/// Permanent delegate extension data for mints.
912
#[repr(C)]
13+
#[cfg_attr(feature = "serde-traits", derive(Serialize, Deserialize))]
1014
#[derive(Clone, Copy, Debug, Default, PartialEq, Pod, Zeroable)]
1115
pub struct PermanentDelegate {
1216
/// Optional permanent delegate for transferring or burning tokens

token/program-2022/src/extension/transfer_fee/mod.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ use {
1515
},
1616
};
1717

18+
#[cfg(feature = "serde-traits")]
19+
use serde::{Deserialize, Serialize};
20+
1821
/// Transfer fee extension instructions
1922
pub mod instruction;
2023

@@ -27,6 +30,7 @@ const ONE_IN_BASIS_POINTS: u128 = MAX_FEE_BASIS_POINTS as u128;
2730

2831
/// Transfer fee information
2932
#[repr(C)]
33+
#[cfg_attr(feature = "serde-traits", derive(Serialize, Deserialize))]
3034
#[derive(Clone, Copy, Debug, Default, PartialEq, Pod, Zeroable)]
3135
pub struct TransferFee {
3236
/// First epoch where the transfer fee takes effect

0 commit comments

Comments
 (0)