openvm_sdk/
error.rs

1use openvm_circuit::arch::{VirtualMachineError, VmVerificationError};
2use openvm_transpiler::transpiler::TranspilerError;
3use thiserror::Error;
4
5use crate::commit::CommitBytes;
6
7#[derive(Error, Debug)]
8pub enum SdkError {
9    #[error("I/O error: {0}")]
10    Io(#[from] std::io::Error),
11    #[error("Failed to build guest: code = {0}")]
12    BuildFailedWithCode(i32),
13    #[error("Failed to build guest (OPENVM_SKIP_BUILD is set)")]
14    BuildFailed,
15    #[error("SDK must set a transpiler")]
16    TranspilerNotAvailable,
17    #[error("Transpiler error: {0}")]
18    Transpiler(#[from] TranspilerError),
19    #[error("VM error: {0}")]
20    Vm(#[from] VirtualMachineError),
21    #[error("Invalid app exe commit: expected {expected}, actual {actual}")]
22    InvalidAppExeCommit {
23        expected: CommitBytes,
24        actual: CommitBytes,
25    },
26    #[error("Invalid app vm commit: expected {expected}, actual {actual}")]
27    InvalidAppVmCommit {
28        expected: CommitBytes,
29        actual: CommitBytes,
30    },
31    #[error("Other error: {0}")]
32    Other(eyre::Error),
33}
34
35impl From<VmVerificationError> for SdkError {
36    fn from(error: VmVerificationError) -> Self {
37        SdkError::Vm(error.into())
38    }
39}