1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
use clap::ArgMatches;

use crate::command::{CliCommand, CliCommandInfo, CliError, ProcessResult};
use crate::math::{get_sqrt_price_at_tick, get_tick_at_sqrt_price};

pub fn parse_tick_to_sqrt_price<'a>(matches: &'a ArgMatches) -> Result<CliCommandInfo<'a>, CliError> {
    let tick = matches.value_of("tick");
    Ok(CliCommandInfo {
        command: CliCommand::MathTickToSqrtPrice {
            tick: tick.unwrap().parse::<i32>().unwrap(),
        },
        signers: vec![],
    })
}

pub fn parse_sqrt_price_to_tick<'a>(matches: &'a ArgMatches) -> Result<CliCommandInfo<'a>, CliError> {
    let price = matches.value_of("price");
    Ok(CliCommandInfo {
        command: CliCommand::MathSqrtPriceToTick {
            price: price.unwrap().parse::<u128>().unwrap(),
        },
        signers: vec![],
    })
}

pub fn process_tick_to_sqrt_price(tick: i32) -> ProcessResult {
    Ok(get_sqrt_price_at_tick(tick).to_string())
}

pub fn process_sqrt_price_to_tick(price: u128) -> ProcessResult {
    Ok(get_tick_at_sqrt_price(price).to_string())
}