use crate::traits::pool_infuser::{
AddBatchLiquidityParams, AddLiquidityOptions, AddLiquidityParams, AddLiquiditySpecificOptions,
CollectOptions, CollectParams, RemoveBatchLiquidityParams, RemoveLiquidityOptions,
RemoveLiquidityParams,
};
pub fn convert_add_liquidity_params(
params: AddLiquidityParams,
) -> waterpump_evm_uniswap_v3_client::AddLiquidityParams {
waterpump_evm_uniswap_v3_client::AddLiquidityParams {
amount0: params.amount0,
amount1: params.amount1,
tick_upper: params.tick_upper,
tick_lower: params.tick_lower,
token0_price: params.token0_price,
specific_opts: convert_add_liquidity_specific_options(params.specific_opts),
}
}
pub fn convert_add_liquidity_options(
options: AddLiquidityOptions,
) -> waterpump_evm_uniswap_v3_client::AddLiquidityOptions {
waterpump_evm_uniswap_v3_client::AddLiquidityOptions {
slippage_tolerance: options.slippage_tolerance,
deadline: options.deadline,
use_native: options.use_native,
token0_permit: options.token0_permit,
token1_permit: options.token1_permit,
}
}
pub fn convert_add_liquidity_specific_options(
opts: AddLiquiditySpecificOptions,
) -> waterpump_evm_uniswap_v3_client::AddLiquiditySpecificOptions {
match opts {
AddLiquiditySpecificOptions::Mint(mint_opts) => {
waterpump_evm_uniswap_v3_client::AddLiquiditySpecificOptions::Mint(
waterpump_evm_uniswap_v3_client::MintSpecificOptions {
recipient: mint_opts.recipient,
create_pool: mint_opts.create_pool,
},
)
}
AddLiquiditySpecificOptions::Increase(inc_opts) => {
waterpump_evm_uniswap_v3_client::AddLiquiditySpecificOptions::Increase(
waterpump_evm_uniswap_v3_client::IncreaseSpecificOptions {
token_id: inc_opts.token_id,
},
)
}
}
}
pub fn convert_add_batch_liquidity_params(
params: AddBatchLiquidityParams,
) -> waterpump_evm_uniswap_v3_client::AddBatchLiquidityParams {
waterpump_evm_uniswap_v3_client::AddBatchLiquidityParams {
token0_price: params.token0_price,
items: params
.items
.into_iter()
.map(|item| waterpump_evm_uniswap_v3_client::AddBatchLiquidityItem {
amount0: item.amount0,
amount1: item.amount1,
tick_upper: item.tick_upper,
tick_lower: item.tick_lower,
specific_opts: convert_add_liquidity_specific_options(item.specific_opts),
})
.collect(),
}
}
pub fn convert_remove_liquidity_params(
params: RemoveLiquidityParams,
) -> waterpump_evm_uniswap_v3_client::RemoveLiquidityParams {
waterpump_evm_uniswap_v3_client::RemoveLiquidityParams {
token_id: params.token_id,
liquidity: params.liquidity,
recipient: params.recipient,
deadline: params.deadline,
token0_price: params.token0_price,
tick_lower: params.tick_lower,
tick_upper: params.tick_upper,
}
}
pub fn convert_remove_liquidity_options(
options: RemoveLiquidityOptions,
) -> waterpump_evm_uniswap_v3_client::RemoveLiquidityOptions {
waterpump_evm_uniswap_v3_client::RemoveLiquidityOptions {
slippage_tolerance: options.slippage_tolerance,
burn_token: options.burn_token,
permit: options.permit.map(|p| waterpump_evm_uniswap_v3_client::NFTPermitOptions {
signature: p.signature,
deadline: p.deadline,
spender: p.spender,
nonce: p.nonce,
}),
collect_options: convert_collect_options(options.collect_options),
}
}
pub fn convert_remove_batch_liquidity_params(
params: RemoveBatchLiquidityParams,
) -> waterpump_evm_uniswap_v3_client::RemoveBatchLiquidityParams {
waterpump_evm_uniswap_v3_client::RemoveBatchLiquidityParams {
token0_price: params.token0_price,
recipient: params.recipient,
deadline: params.deadline,
items: params
.items
.into_iter()
.map(|item| waterpump_evm_uniswap_v3_client::RemoveBatchLiquidityItem {
token_id: item.token_id,
liquidity: item.liquidity,
tick_lower: item.tick_lower,
tick_upper: item.tick_upper,
burn_token: item.burn_token,
})
.collect(),
}
}
pub fn convert_collect_params(
params: CollectParams,
) -> waterpump_evm_uniswap_v3_client::CollectParams {
waterpump_evm_uniswap_v3_client::CollectParams {
token_id: params.token_id,
recipient: params.recipient,
}
}
pub fn convert_collect_options(
options: CollectOptions,
) -> waterpump_evm_uniswap_v3_client::CollectOptions {
waterpump_evm_uniswap_v3_client::CollectOptions {
expected_currency_owed0: options.expected_currency_owed0,
expected_currency_owed1: options.expected_currency_owed1,
}
}
pub fn convert_method_parameters(
params: waterpump_evm_uniswap_v3_client::MethodParameters,
) -> crate::pool_swappers::common::MethodParameters {
crate::pool_swappers::common::MethodParameters {
calldata: params.calldata,
value: params.value,
}
}