sablier_network_program/instructions/
delegation_claim.rs1use {
2 crate::{constants::*, state::*},
3 anchor_lang::prelude::*,
4};
5
6#[derive(Accounts)]
7#[instruction(amount: u64)]
8pub struct DelegationClaim<'info> {
9 pub authority: Signer<'info>,
10
11 #[account(mut)]
12 pub pay_to: SystemAccount<'info>,
13
14 #[account(
15 mut,
16 seeds = [
17 SEED_DELEGATION,
18 delegation.worker.as_ref(),
19 delegation.id.to_be_bytes().as_ref(),
20 ],
21 bump,
22 has_one = authority,
23 )]
24 pub delegation: Account<'info, Delegation>,
25}
26
27pub fn handler(ctx: Context<DelegationClaim>, amount: u64) -> Result<()> {
28 let pay_to = &mut ctx.accounts.pay_to;
30 let delegation = &mut ctx.accounts.delegation;
31
32 delegation.yield_balance -= amount;
34
35 delegation.sub_lamports(amount)?;
37 pay_to.add_lamports(amount)?;
38
39 Ok(())
40}