tensor_eigen/commands/pool/
create.rs1use 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}