use crate::{cpu::builder::CpuProverBuilder, cuda::builder::CudaProverBuilder, env::EnvProver};
#[cfg(feature = "network")]
use crate::network::{builder::NetworkProverBuilder, NetworkMode};
pub struct ProverClient;
impl ProverClient {
#[must_use]
pub async fn from_env() -> EnvProver {
EnvProver::new().await
}
#[must_use]
pub fn builder() -> ProverClientBuilder {
ProverClientBuilder
}
}
pub struct ProverClientBuilder;
impl ProverClientBuilder {
#[must_use]
pub fn cpu(&self) -> CpuProverBuilder {
CpuProverBuilder::new()
}
#[must_use]
pub fn cuda(&self) -> CudaProverBuilder {
CudaProverBuilder::default()
}
#[cfg(feature = "network")]
#[must_use]
pub fn network(&self) -> NetworkProverBuilder {
NetworkProverBuilder::new()
}
#[cfg(feature = "network")]
#[must_use]
pub fn network_for(&self, mode: NetworkMode) -> NetworkProverBuilder {
NetworkProverBuilder {
private_key: None,
signer: None,
rpc_url: None,
tee_signers: None,
network_mode: Some(mode),
}
}
}