use {
clone_agave_feature_set::FeatureSet, clone_solana_account::AccountSharedData,
clone_solana_fee_structure::FeeDetails, clone_solana_pubkey::Pubkey,
clone_solana_svm_transaction::svm_message::SVMMessage,
};
pub trait TransactionProcessingCallback {
fn account_matches_owners(&self, account: &Pubkey, owners: &[Pubkey]) -> Option<usize>;
fn get_account_shared_data(&self, pubkey: &Pubkey) -> Option<AccountSharedData>;
fn add_builtin_account(&self, _name: &str, _program_id: &Pubkey) {}
fn inspect_account(&self, _address: &Pubkey, _account_state: AccountState, _is_writable: bool) {
}
fn get_current_epoch_vote_account_stake(&self, _vote_address: &Pubkey) -> u64 {
0
}
fn calculate_fee(
&self,
_message: &impl SVMMessage,
_lamports_per_signature: u64,
_prioritization_fee: u64,
_feature_set: &FeatureSet,
) -> FeeDetails {
FeeDetails::default()
}
}
#[derive(Debug)]
pub enum AccountState<'a> {
Dead,
Alive(&'a AccountSharedData),
}