intent_transfer/
lib.rs

1#![allow(unexpected_cfgs)] // warning: unexpected `cfg` condition value: `anchor-debug`
2
3declare_id!("Xfry4dW9m42ncAqm8LyEnyS5V6xu5DSJTMRQLiGkARD");
4
5use anchor_lang::prelude::*;
6
7pub mod bridge;
8pub mod config;
9mod error;
10mod fees;
11mod intrachain;
12mod nonce;
13mod verify;
14
15use crate::config::state::fee_config::FeeConfig;
16use bridge::processor::bridge_ntt_tokens::*;
17use config::processor::register_fee_config::*;
18use config::processor::register_ntt_config::*;
19use intrachain::processor::send_tokens::*;
20
21const INTENT_TRANSFER_SEED: &[u8] = b"intent_transfer";
22
23#[program]
24pub mod intent_transfer {
25    use super::*;
26
27    #[instruction(discriminator = [0])]
28    pub fn send_tokens<'info>(ctx: Context<'_, '_, '_, 'info, SendTokens<'info>>) -> Result<()> {
29        ctx.accounts
30            .verify_and_send(&[&[INTENT_TRANSFER_SEED, &[ctx.bumps.intent_transfer_setter]]])
31    }
32
33    #[instruction(discriminator = [1])]
34    pub fn bridge_ntt_tokens<'info>(
35        ctx: Context<'_, '_, '_, 'info, BridgeNttTokens<'info>>,
36        args: BridgeNttTokensArgs,
37    ) -> Result<()> {
38        ctx.accounts.verify_and_initiate_bridge(
39            &[&[INTENT_TRANSFER_SEED, &[ctx.bumps.intent_transfer_setter]]],
40            args,
41        )
42    }
43
44    #[instruction(discriminator = [2])]
45    pub fn register_ntt_config<'info>(
46        ctx: Context<'_, '_, '_, 'info, RegisterNttConfig<'info>>,
47    ) -> Result<()> {
48        ctx.accounts.process()
49    }
50
51    #[instruction(discriminator = [3])]
52    pub fn register_fee_config<'info>(
53        ctx: Context<'_, '_, '_, 'info, RegisterFeeConfig<'info>>,
54        fee_config: FeeConfig,
55    ) -> Result<()> {
56        ctx.accounts.process(fee_config)
57    }
58}
59
60#[cfg(test)]
61mod tests {
62    use super::*;
63    use std::str::FromStr;
64
65    #[test]
66    fn test_session_setter_pda_derivation() {
67        assert_eq!(
68            Pubkey::from_str("EkYeW6iAtp2XsxsFZ2pDryf54qSND4RkGFCgMmX55vBL").unwrap(),
69            Pubkey::find_program_address(&[INTENT_TRANSFER_SEED], &ID).0
70        );
71    }
72}