From 340e8112fd657a7d5d53931cc99ed8746a52a4f7 Mon Sep 17 00:00:00 2001 From: Hardhat Chad Date: Mon, 16 Jun 2025 10:14:20 -0700 Subject: [PATCH] close event --- README.md | 2 ++ api/src/event.rs | 20 ++++++++++++++++++++ program/src/close.rs | 16 ++++++++++++++-- 3 files changed, 36 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c46aa61..f9ff2a8 100644 --- a/README.md +++ b/README.md @@ -38,3 +38,5 @@ For line coverage, use llvm-cov: ``` cargo llvm-cov ``` + +Congrats on the child. That's great news. diff --git a/api/src/event.rs b/api/src/event.rs index 1d89984..8e74d04 100644 --- a/api/src/event.rs +++ b/api/src/event.rs @@ -97,6 +97,25 @@ pub struct OpenEvent { pub ts: i64, } +#[repr(C)] +#[derive(Clone, Copy, Debug, Default, PartialEq, Pod, Zeroable)] +pub struct CloseEvent { + /// The authority of the close transaction. + pub authority: Pubkey, + + /// The id of the block. + pub id: u64, + + /// The amount of base (hashpower) liquidity burned. + pub burned_base: u64, + + /// The amount of quote (ORE) liquidity burned. + pub burned_quote: u64, + + /// The timestamp of the event. + pub ts: i64, +} + #[repr(C)] #[derive(Clone, Copy, Debug, Default, PartialEq, Pod, Zeroable)] pub struct CommitEvent { @@ -180,3 +199,4 @@ event!(CommitEvent); event!(DepositEvent); event!(WithdrawEvent); event!(UncommitEvent); +event!(CloseEvent); diff --git a/program/src/close.rs b/program/src/close.rs index 3aa36ae..4942701 100644 --- a/program/src/close.rs +++ b/program/src/close.rs @@ -82,22 +82,24 @@ pub fn process_close(accounts: &[AccountInfo<'_>], _data: &[u8]) -> ProgramResul } // Burn base liquidity. + let base_burned = vault_base.amount(); burn_signed( vault_base_info, mint_base_info, market_info, token_program, - vault_base.amount(), + base_burned, &[MARKET, &market.id.to_le_bytes()], )?; // Burn quote liquidity. + let quote_burned = vault_quote.amount(); burn_signed( vault_quote_info, mint_quote_info, market_info, token_program, - vault_quote.amount(), + quote_burned, &[MARKET, &market.id.to_le_bytes()], )?; @@ -107,5 +109,15 @@ pub fn process_close(accounts: &[AccountInfo<'_>], _data: &[u8]) -> ProgramResul // Close market. market_info.close(signer_info)?; + // Emit event. + CloseEvent { + authority: *signer_info.key, + id: block.id, + burned_base: base_burned, + burned_quote: quote_burned, + ts: clock.unix_timestamp, + } + .log_return(); + Ok(()) }