clockwork_http/instructions/
admin_fee_claim.rs

1use {
2    crate::state::{Config, Fee, FeeAccount, SEED_CONFIG, SEED_FEE},
3    anchor_lang::prelude::*,
4};
5
6#[derive(Accounts)]
7#[instruction(amount: u64)]
8pub struct AdminFeeClaim<'info> {
9    #[account(mut)]
10    pub admin: Signer<'info>,
11
12    #[account(seeds = [SEED_CONFIG], bump, has_one = admin)]
13    pub config: Account<'info, Config>,
14
15    #[account(mut)]
16    pub pay_to: SystemAccount<'info>,
17
18    #[account(
19        mut,
20        seeds = [
21            SEED_FEE,
22            fee.authority.as_ref(),
23        ],
24        bump,
25    )]
26    pub fee: Account<'info, Fee>,
27}
28
29pub fn handler<'info>(ctx: Context<AdminFeeClaim>, amount: u64) -> Result<()> {
30    // Get accounts
31    let pay_to = &mut ctx.accounts.pay_to;
32    let fee = &mut ctx.accounts.fee;
33
34    // Claim the fee funds
35    fee.claim_admin_balance(amount, pay_to)?;
36
37    Ok(())
38}