Skip to main content

tensor_eigen/commands/pool/
create.rs

1use super::*;
2
3use tensor_amm::instructions::{CreatePool, CreatePoolInstructionArgs};
4
5pub struct CreatePoolParams {
6    pub keypair_path: Option<PathBuf>,
7    pub rpc_url: Option<String>,
8    pub pool_config_path: PathBuf,
9    pub whitelist: Pubkey,
10}
11
12pub fn create_pool(args: CreatePoolParams) -> Result<()> {
13    let config = CliConfig::new(args.keypair_path, args.rpc_url)?;
14
15    let payer = config.keypair.pubkey();
16    let owner = config.keypair.pubkey();
17
18    let create_pool_args: CreatePoolInstructionArgs =
19        serde_json::from_reader(std::fs::File::open(args.pool_config_path)?)?;
20
21    let pool = Pool::find_pda(&owner, create_pool_args.pool_id).0;
22
23    let ix = CreatePool {
24        rent_payer: payer,
25        owner,
26        pool,
27        shared_escrow: None,
28        whitelist: args.whitelist,
29        system_program: solana_sdk::system_program::id(),
30    }
31    .instruction(create_pool_args);
32
33    let tx = transaction!(&[&config.keypair], &[ix], &config.client);
34
35    config.client.send_and_confirm_transaction(&tx)?;
36
37    println!("Pool created: {}", pool);
38
39    Ok(())
40}