// file: crates/ksp-raw-transaction-lib/src/error.rs // version: 2 /// Error code used when RAW v1 canonical payload construction cannot preserve the frozen format contract. pub const ERROR_CODE_RAW_TRANSACTION_CANONICALIZATION_INVALID: ksp_core_lib::ErrorCode = ksp_core_lib::ErrorCode::new("raw_transaction", "canonicalization_invalid"); /// Error code used when source-neutral RAW transaction material violates a bounded semantic invariant. pub const ERROR_CODE_RAW_TRANSACTION_MATERIAL_INVALID: ksp_core_lib::ErrorCode = ksp_core_lib::ErrorCode::new("raw_transaction", "material_invalid"); /// Error code used when Solana transaction signature material cannot resolve to exactly 64 canonical bytes. pub const ERROR_CODE_RAW_TRANSACTION_SIGNATURE_INVALID: ksp_core_lib::ErrorCode = ksp_core_lib::ErrorCode::new("raw_transaction", "signature_invalid"); /// Creates a safe canonicalization error without copying source payload material. pub(crate) fn canonicalization_error(field: &'static str) -> ksp_core_lib::Error { return ksp_core_lib::Error::new(crate::ERROR_CODE_RAW_TRANSACTION_CANONICALIZATION_INVALID, "invalid canonical RAW transaction representation") .with_context("field", field); } /// Creates a safe source-material error without copying source payload material. pub(crate) fn material_error(field: &'static str) -> ksp_core_lib::Error { return ksp_core_lib::Error::new(crate::ERROR_CODE_RAW_TRANSACTION_MATERIAL_INVALID, "invalid source-neutral RAW transaction material") .with_context("field", field); } /// Creates a safe signature error without copying source signature or transaction material. pub(crate) fn signature_error() -> ksp_core_lib::Error { return ksp_core_lib::Error::new(crate::ERROR_CODE_RAW_TRANSACTION_SIGNATURE_INVALID, "invalid canonical Solana transaction signature"); }