dlp_api/instruction_builder/
finalize.rs1use dlp::{
2 discriminator::DlpDiscriminator,
3 pda::{
4 commit_record_pda_from_delegated_account,
5 commit_state_pda_from_delegated_account,
6 delegation_metadata_pda_from_delegated_account,
7 delegation_record_pda_from_delegated_account,
8 validator_fees_vault_pda_from_validator,
9 },
10 total_size_budget, AccountSizeClass, DLP_PROGRAM_DATA_SIZE_CLASS,
11};
12use solana_program::{
13 instruction::{AccountMeta, Instruction},
14 pubkey::Pubkey,
15 system_program,
16};
17
18pub fn finalize(validator: Pubkey, delegated_account: Pubkey) -> Instruction {
21 let commit_state_pda =
22 commit_state_pda_from_delegated_account(&delegated_account);
23 let commit_record_pda =
24 commit_record_pda_from_delegated_account(&delegated_account);
25 let delegation_record_pda =
26 delegation_record_pda_from_delegated_account(&delegated_account);
27 let delegation_metadata_pda =
28 delegation_metadata_pda_from_delegated_account(&delegated_account);
29 let validator_fees_vault_pda =
30 validator_fees_vault_pda_from_validator(&validator);
31 Instruction {
32 program_id: dlp::id(),
33 accounts: vec![
34 AccountMeta::new(validator, true),
35 AccountMeta::new(delegated_account, false),
36 AccountMeta::new(commit_state_pda, false),
37 AccountMeta::new(commit_record_pda, false),
38 AccountMeta::new(delegation_record_pda, false),
39 AccountMeta::new(delegation_metadata_pda, false),
40 AccountMeta::new(validator_fees_vault_pda, false),
41 AccountMeta::new_readonly(system_program::id(), false),
42 ],
43 data: DlpDiscriminator::Finalize.to_vec(),
44 }
45}
46
47pub fn finalize_size_budget(delegated_account: AccountSizeClass) -> u32 {
53 total_size_budget(&[
54 DLP_PROGRAM_DATA_SIZE_CLASS,
55 AccountSizeClass::Tiny, delegated_account, delegated_account, AccountSizeClass::Tiny, AccountSizeClass::Tiny, AccountSizeClass::Tiny, AccountSizeClass::Tiny, AccountSizeClass::Tiny, ])
64}