diff --git a/staking/cli/src/cli.rs b/staking/cli/src/cli.rs index df57b68c..294dd485 100644 --- a/staking/cli/src/cli.rs +++ b/staking/cli/src/cli.rs @@ -67,4 +67,8 @@ pub enum Action { wormhole: Pubkey, }, InitializePoolRewardCustody {}, + UpdateDelegationFee { + #[clap(long, help = "New fee")] + delegation_fee: u64, + }, } diff --git a/staking/cli/src/instructions.rs b/staking/cli/src/instructions.rs index 100e3c2e..945f24a1 100644 --- a/staking/cli/src/instructions.rs +++ b/staking/cli/src/instructions.rs @@ -458,3 +458,32 @@ pub fn fetch_publisher_caps_and_advance( advance(rpc_client, payer, publisher_caps); } + +pub fn update_delegation_fee(rpc_client: &RpcClient, payer: &Keypair, delegation_fee: u64) { + let pool_config = get_pool_config_address(); + + let PoolConfig { pool_data, .. } = PoolConfig::try_deserialize( + &mut rpc_client + .get_account_data(&pool_config) + .unwrap() + .as_slice(), + ) + .unwrap(); + + let accounts = integrity_pool::accounts::UpdateDelegationFee { + reward_program_authority: payer.pubkey(), + pool_config, + pool_data, + system_program: system_program::ID, + }; + + let instruction_data = integrity_pool::instruction::UpdateDelegationFee { delegation_fee }; + + let instruction = Instruction { + program_id: integrity_pool::ID, + accounts: accounts.to_account_metas(None), + data: instruction_data.data(), + }; + + process_transaction(rpc_client, &[instruction], &[payer]); +} diff --git a/staking/cli/src/main.rs b/staking/cli/src/main.rs index 8bcd564c..8ef6e954 100644 --- a/staking/cli/src/main.rs +++ b/staking/cli/src/main.rs @@ -11,6 +11,7 @@ use { fetch_publisher_caps_and_advance, initialize_pool, initialize_reward_custody, + update_delegation_fee, }, solana_client::rpc_client::RpcClient, solana_sdk::commitment_config::CommitmentConfig, @@ -50,5 +51,8 @@ fn main() { Action::InitializePoolRewardCustody {} => { initialize_reward_custody(&rpc_client, &keypair); } + Action::UpdateDelegationFee { delegation_fee } => { + update_delegation_fee(&rpc_client, &keypair, delegation_fee) + } } }