diff --git a/crates/cheatnet/src/runtime_extensions/forge_runtime_extension/mod.rs b/crates/cheatnet/src/runtime_extensions/forge_runtime_extension/mod.rs index 8d854afdb2..92fb7949e5 100644 --- a/crates/cheatnet/src/runtime_extensions/forge_runtime_extension/mod.rs +++ b/crates/cheatnet/src/runtime_extensions/forge_runtime_extension/mod.rs @@ -35,8 +35,9 @@ use cairo_vm::vm::{ }; use conversions::byte_array::ByteArray; use conversions::felt::{ToShortString, TryInferFormat}; +use conversions::serde::NoLengthFeltVec; use conversions::serde::deserialize::BufferReader; -use conversions::serde::serialize::CairoSerialize; +use conversions::serde::serialize::{CairoSerialize, SerializeToFeltVec}; use data_transformer::cairo_types::CairoU256; use rand::prelude::StdRng; use runtime::{ @@ -97,7 +98,13 @@ impl<'a> ExtensionLogic for ForgeExtension<'a> { let output = self .oracle_hint_service .execute_cheatcode(oracle_selector, input_reader.into_remaining()); - return Ok(CheatcodeHandlingResult::Handled(output)); + let mut reader = BufferReader::new(&output); + let deserialized: Result, ByteArray> = reader.read()?; + let converted = deserialized + .map_err(|error| EnhancedHintError::OracleError { error }) + .map(|r| r.serialize_to_vec()); + + return Ok(CheatcodeHandlingResult::Handled(converted?)); } match selector { diff --git a/crates/runtime/src/lib.rs b/crates/runtime/src/lib.rs index 1080d459ef..baf04bbb29 100644 --- a/crates/runtime/src/lib.rs +++ b/crates/runtime/src/lib.rs @@ -470,6 +470,8 @@ pub enum EnhancedHintError { StarknetApi(#[from] StarknetApiError), #[error("Failed to parse {path} file")] FileParsing { path: String }, + #[error("{error}")] + OracleError { error: ByteArray }, } impl From for EnhancedHintError {