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}