diff --git a/api/src/event.rs b/api/src/event.rs index 63c9f94..a6b7bf4 100644 --- a/api/src/event.rs +++ b/api/src/event.rs @@ -49,6 +49,12 @@ pub struct SwapEvent { /// Amount of quote tokens taken in fees. pub quote_fee: u64, + /// Amount of base tokens in the market. + pub base_liquidity: u64, + + /// Amount of quote tokens in the market. + pub quote_liquidity: u64, + /// The timestamp of the event. pub ts: i64, } diff --git a/api/src/state/market/buy_exact_in.rs b/api/src/state/market/buy_exact_in.rs index 3fb21dd..db7b341 100644 --- a/api/src/state/market/buy_exact_in.rs +++ b/api/src/state/market/buy_exact_in.rs @@ -65,6 +65,8 @@ impl Market { base_via_curve: base_via_curve as u64, quote_via_curve: quote_via_curve as u64, quote_fee: quote_fee as u64, + base_liquidity: self.base.liquidity() as u64, + quote_liquidity: self.quote.liquidity() as u64, ts: 0, }; diff --git a/api/src/state/market/buy_exact_out.rs b/api/src/state/market/buy_exact_out.rs index 6bfd2d6..14b24bb 100644 --- a/api/src/state/market/buy_exact_out.rs +++ b/api/src/state/market/buy_exact_out.rs @@ -70,6 +70,8 @@ impl Market { base_via_curve: base_via_curve as u64, quote_via_curve: quote_via_curve as u64, quote_fee: quote_fee as u64, + base_liquidity: self.base.liquidity() as u64, + quote_liquidity: self.quote.liquidity() as u64, ts: 0, }; diff --git a/api/src/state/market/sell_exact_in.rs b/api/src/state/market/sell_exact_in.rs index 41961a4..d68a3d6 100644 --- a/api/src/state/market/sell_exact_in.rs +++ b/api/src/state/market/sell_exact_in.rs @@ -74,6 +74,8 @@ impl Market { base_via_curve: base_via_curve as u64, quote_via_curve: quote_via_curve as u64, quote_fee: quote_fee as u64, + base_liquidity: self.base.liquidity() as u64, + quote_liquidity: self.quote.liquidity() as u64, ts: 0, }; diff --git a/api/src/state/market/sell_exact_out.rs b/api/src/state/market/sell_exact_out.rs index 8ce4eba..7ee84cd 100644 --- a/api/src/state/market/sell_exact_out.rs +++ b/api/src/state/market/sell_exact_out.rs @@ -72,6 +72,8 @@ impl Market { base_via_curve: base_via_curve as u64, quote_via_curve: quote_via_curve as u64, quote_fee: quote_fee as u64, + base_liquidity: self.base.liquidity() as u64, + quote_liquidity: self.quote.liquidity() as u64, ts: 0, }; diff --git a/cli/src/main.rs b/cli/src/main.rs index fdb79c9..9192f0a 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -33,6 +33,9 @@ async fn main() { "close" => { close(&rpc, &payer).await.unwrap(); } + "close_all" => { + close_all(&rpc, &payer).await.unwrap(); + } "clock" => { log_clock(&rpc).await.unwrap(); } @@ -94,6 +97,28 @@ async fn close( Ok(()) } +async fn close_all( + rpc: &RpcClient, + payer: &solana_sdk::signer::keypair::Keypair, +) -> Result<(), anyhow::Error> { + let config = get_config(rpc).await?; + let clock = get_clock(rpc).await?; + let blocks = get_blocks(rpc).await?; + for (_, block) in blocks { + if clock.slot > block.start_slot + 1500 { + let ix = ore_api::sdk::close( + payer.pubkey(), + config.fee_collector, + block.opener, + payer.pubkey(), + block.id, + ); + submit_transaction(rpc, payer, &[ix]).await?; + } + } + Ok(()) +} + async fn commit( rpc: &RpcClient, payer: &solana_sdk::signer::keypair::Keypair,