miden_client/transaction/
prover.rs1use alloc::boxed::Box;
2
3use miden_objects::transaction::{ProvenTransaction, TransactionInputs};
4use miden_remote_prover_client::remote_prover::tx_prover::RemoteTransactionProver;
5use miden_tx::{LocalTransactionProver, TransactionProverError};
6
7#[cfg_attr(target_arch = "wasm32", async_trait::async_trait(?Send))]
8#[cfg_attr(not(target_arch = "wasm32"), async_trait::async_trait)]
9pub trait TransactionProver {
10 async fn prove(
11 &self,
12 tx_result: TransactionInputs,
13 ) -> Result<ProvenTransaction, TransactionProverError>;
14}
15
16#[cfg_attr(target_arch = "wasm32", async_trait::async_trait(?Send))]
17#[cfg_attr(not(target_arch = "wasm32"), async_trait::async_trait)]
18impl TransactionProver for LocalTransactionProver {
19 async fn prove(
20 &self,
21 witness: TransactionInputs,
22 ) -> Result<ProvenTransaction, TransactionProverError> {
23 LocalTransactionProver::prove(self, witness)
24 }
25}
26
27#[cfg_attr(target_arch = "wasm32", async_trait::async_trait(?Send))]
28#[cfg_attr(not(target_arch = "wasm32"), async_trait::async_trait)]
29impl TransactionProver for RemoteTransactionProver {
30 async fn prove(
31 &self,
32 witness: TransactionInputs,
33 ) -> Result<ProvenTransaction, TransactionProverError> {
34 let fut = RemoteTransactionProver::prove(self, witness);
35 fut.await
36 }
37}