simple_voter/
token_cpi.rs1use crate::token_record_signer_seeds;
2use crate::TokenContext;
3use anchor_lang::prelude::*;
4use anchor_spl::token;
5
6impl TokenContext<'_> {
7 pub fn transfer_to_vault(&self, amount: u64) -> Result<()> {
8 let cpi_ctx = CpiContext::new(
9 self.token_program.to_account_info(),
10 token::Transfer {
11 from: self.gov_token_account.to_account_info().clone(),
12 to: self.gov_token_vault.to_account_info().clone(),
13 authority: self.authority.to_account_info().clone(),
14 },
15 );
16 token::transfer(cpi_ctx, amount)
17 }
18
19 pub fn transfer_from_vault(&self, amount: u64) -> Result<()> {
20 let seeds = token_record_signer_seeds!(self.token_record);
21 let signer_seeds = &[&seeds[..]];
22 let cpi_ctx = CpiContext::new_with_signer(
23 self.token_program.to_account_info(),
24 token::Transfer {
25 from: self.gov_token_vault.to_account_info().clone(),
26 to: self.gov_token_account.to_account_info().clone(),
27 authority: self.token_record.to_account_info().clone(),
28 },
29 signer_seeds,
30 );
31 token::transfer(cpi_ctx, amount)
32 }
33}