intent_transfer/config/processor/
register_ntt_config.rs

1use crate::config::access_control::*;
2use crate::config::state::ntt_config::{ExpectedNttConfig, EXPECTED_NTT_CONFIG_SEED};
3use anchor_lang::prelude::*;
4use anchor_spl::token::Mint;
5
6#[derive(Accounts)]
7pub struct RegisterNttConfig<'info> {
8    pub upgrade_authority: UpgradeAuthority<'info>,
9
10    pub mint: Account<'info, Mint>,
11
12    #[account(
13        init_if_needed,
14        payer = upgrade_authority.signer,
15        space = ExpectedNttConfig::DISCRIMINATOR.len() + ExpectedNttConfig::INIT_SPACE,
16        seeds = [EXPECTED_NTT_CONFIG_SEED, mint.key().as_ref()],
17        bump
18    )]
19    pub expected_ntt_config: Account<'info, ExpectedNttConfig>,
20
21    /// CHECK: this is the address of the Ntt Manager program to register
22    pub ntt_manager: UncheckedAccount<'info>,
23
24    pub system_program: Program<'info, System>,
25}
26
27impl<'info> RegisterNttConfig<'info> {
28    pub fn process(&mut self) -> Result<()> {
29        self.expected_ntt_config.manager = self.ntt_manager.key();
30        Ok(())
31    }
32}