spl_token_2022_interface/extension/pausable/
mod.rs1use {
2 crate::extension::{Extension, ExtensionType},
3 bytemuck::{Pod, Zeroable},
4 solana_address::Address,
5 solana_nullable::MaybeNull,
6 solana_zero_copy::unaligned::Bool,
7};
8#[cfg(feature = "serde")]
9use {
10 serde::{Deserialize, Serialize},
11 serde_with::{As, DisplayFromStr},
12};
13
14pub mod instruction;
16
17#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
19#[cfg_attr(feature = "serde", serde(rename_all = "camelCase"))]
20#[derive(Clone, Copy, Debug, Default, PartialEq, Pod, Zeroable)]
21#[repr(C)]
22pub struct PausableConfig {
23 #[cfg_attr(feature = "serde", serde(with = "As::<Option<DisplayFromStr>>"))]
25 pub authority: MaybeNull<Address>,
26 pub paused: Bool,
28}
29
30#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
32#[cfg_attr(feature = "serde", serde(rename_all = "camelCase"))]
33#[derive(Clone, Copy, Debug, Default, PartialEq, Pod, Zeroable)]
34#[repr(transparent)]
35pub struct PausableAccount;
36
37impl Extension for PausableConfig {
38 const TYPE: ExtensionType = ExtensionType::Pausable;
39}
40
41impl Extension for PausableAccount {
42 const TYPE: ExtensionType = ExtensionType::PausableAccount;
43}