safe_token_2022/extension/
permanent_delegate.rs1use {
2 crate::{
3 extension::{BaseState, BaseStateWithExtensions, Extension, ExtensionType},
4 pod::*,
5 },
6 bytemuck::{Pod, Zeroable},
7 solana_program::pubkey::Pubkey,
8};
9
10#[repr(C)]
12#[derive(Clone, Copy, Debug, Default, PartialEq, Pod, Zeroable)]
13pub struct PermanentDelegate {
14 pub delegate: OptionalNonZeroPubkey,
16}
17impl Extension for PermanentDelegate {
18 const TYPE: ExtensionType = ExtensionType::PermanentDelegate;
19}
20
21pub fn get_permanent_delegate<S: BaseState, BSE: BaseStateWithExtensions<S>>(
24 state: &BSE,
25) -> Option<Pubkey> {
26 state
27 .get_extension::<PermanentDelegate>()
28 .ok()
29 .and_then(|e| Option::<Pubkey>::from(e.delegate))
30}