sablier_network_program/instructions/
worker_claim.rs1use {
2 crate::{constants::*, state::*},
3 anchor_lang::prelude::*,
4};
5
6#[derive(Accounts)]
7#[instruction(amount: u64)]
8pub struct WorkerClaim<'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_WORKER,
18 worker.id.to_be_bytes().as_ref()
19 ],
20 bump,
21 has_one = authority
22 )]
23 pub worker: Account<'info, Worker>,
24}
25
26pub fn handler(ctx: Context<WorkerClaim>, amount: u64) -> Result<()> {
27 let pay_to = &mut ctx.accounts.pay_to;
29 let worker = &mut ctx.accounts.worker;
30
31 worker.commission_balance -= amount;
33
34 worker.sub_lamports(amount)?;
36 pay_to.add_lamports(amount)?;
37
38 Ok(())
39}