use solana_client::rpc_client::RpcClient;
use solana_program::pubkey::Pubkey;
use common::command::{CliConfig, ProcessResult};
use common::contract::instructions::farming::quarry_mine::create_quarry_v2::new_create_quarry_v2;
use common::contract::instructions::farming::quarry_mine::set_famine::new_set_famine;
use common::contract::instructions::farming::quarry_mine::set_rewards_share::new_set_rewards_share;
use common::contract::state::farming::mine::Rewarder;
use common::program::MINE_PROGRAM_ID;
use common::utils::send::send_tx;
pub fn process_farming_quarry_mine_new(
rpc_client: &RpcClient,
config: &CliConfig,
rewarder: Pubkey,
mint: Pubkey,
famine_ts: u64,
share: u64,
) -> ProcessResult {
let rewarder_account = Rewarder::get_account(rpc_client, &rewarder);
let quarry = Pubkey::find_program_address(
&[
b"Quarry",
rewarder.as_ref(),
mint.as_ref(),
],
&MINE_PROGRAM_ID,
);
let ixs = [
new_create_quarry_v2(
quarry.0,
rewarder,
mint,
config.pubkey().unwrap(),
),
new_set_rewards_share(
rewarder,
quarry.0,
config.pubkey().unwrap(),
share
),
new_set_famine(
rewarder,
rewarder_account.owner,
quarry.0,
famine_ts,
),
];
let res = send_tx(rpc_client, config, &ixs)?;
Ok("signers : ".to_owned() + res.to_string().as_str())
}