@@ -9,6 +9,7 @@ use crate::pda::{
99 fees_vault_pda, undelegate_buffer_pda_from_delegated_account,
1010 validator_fees_vault_pda_from_validator,
1111} ;
12+ use crate :: { total_size_budget, AccountSizeClass } ;
1213
1314/// Builds an undelegate instruction.
1415/// See [crate::processor::process_undelegate] for docs.
@@ -46,3 +47,25 @@ pub fn undelegate(
4647 data : DlpDiscriminator :: Undelegate . to_vec ( ) ,
4748 }
4849}
50+
51+ ///
52+ /// Returns accounts-data-size budget for undelegate instruction.
53+ ///
54+ /// This value can be used with ComputeBudgetInstruction::SetLoadedAccountsDataSizeLimit
55+ ///
56+ pub fn undelegate_size_budget ( delegated_account : AccountSizeClass ) -> u32 {
57+ total_size_budget ( & [
58+ AccountSizeClass :: Tiny , // validator
59+ delegated_account, // delegated_account
60+ AccountSizeClass :: Tiny , // owner_program
61+ delegated_account, // undelegate_buffer_pda
62+ delegated_account, // commit_state_pda
63+ AccountSizeClass :: Tiny , // commit_record_pda
64+ AccountSizeClass :: Tiny , // delegation_record_pda
65+ AccountSizeClass :: Tiny , // delegation_metadata_pda
66+ AccountSizeClass :: Tiny , // rent_reimbursement
67+ AccountSizeClass :: Tiny , // fees_vault_pda
68+ AccountSizeClass :: Tiny , // validator_fees_vault_pda
69+ AccountSizeClass :: Tiny , // system_program
70+ ] )
71+ }
0 commit comments