use zksync_dal::{transactions_dal::L2TxSubmissionResult, Connection, Core};
use zksync_multivm::interface::tracer::ValidationTraces;
use zksync_types::{
api::{Transaction, TransactionDetails, TransactionId},
l2::L2Tx,
Address, Nonce, H256,
};
use zksync_web3_decl::error::Web3Error;
use super::SubmitTxError;
use crate::execution_sandbox::SandboxExecutionOutput;
#[async_trait::async_trait]
pub trait TxSink: std::fmt::Debug + Send + Sync + 'static {
async fn submit_tx(
&self,
tx: &L2Tx,
execution_output: &SandboxExecutionOutput,
validation_traces: ValidationTraces,
) -> Result<L2TxSubmissionResult, SubmitTxError>;
async fn lookup_pending_nonce(
&self,
_account_address: Address,
_last_known_nonce: u32,
) -> Result<Option<Nonce>, Web3Error> {
Ok(None)
}
async fn lookup_tx(
&self,
_storage: &mut Connection<'_, Core>,
_id: TransactionId,
) -> Result<Option<Transaction>, Web3Error> {
Ok(None)
}
async fn lookup_tx_details(
&self,
_storage: &mut Connection<'_, Core>,
_hash: H256,
) -> Result<Option<TransactionDetails>, Web3Error> {
Ok(None)
}
}