clockwork_scheduler/instructions/
queue_deposit.rs1
2
3use {
4 crate::state::*,
5 anchor_lang::{prelude::*, system_program::{transfer, Transfer}, solana_program::system_program},
6};
7
8#[derive(Accounts)]
9#[instruction(amount: u64)]
10pub struct QueueDeposit<'info> {
11 #[account(mut)]
12 pub payer: Signer<'info>,
13
14 #[account(
15 mut,
16 seeds = [
17 SEED_QUEUE,
18 queue.authority.key().as_ref(),
19 queue.name.as_bytes(),
20 ],
21 bump,
22 )]
23 pub queue: Account<'info, Queue>,
24
25 #[account()]
26 pub signer: Signer<'info>,
27
28 #[account(address = system_program::ID)]
29 pub system_program: Program<'info, System>,
30}
31
32pub fn handler(ctx: Context<QueueDeposit>, amount: u64) -> Result<()> {
33 let payer = &mut ctx.accounts.payer;
35 let queue = &mut ctx.accounts.queue;
36 let system_program = &ctx.accounts.system_program;
37
38 transfer(
40 CpiContext::new(
41 system_program.to_account_info(),
42 Transfer {
43 from: payer.to_account_info(),
44 to: queue.to_account_info(),
45 },
46 ),
47 amount,
48 )?;
49
50 Ok(())
51}