hdp_primitives/processed_types/
module.rs

1use alloy::primitives::{Bytes, B256};
2use cairo_lang_starknet_classes::casm_contract_class::CasmContractClass;
3use serde::{Deserialize, Serialize};
4use serde_with::serde_as;
5use starknet::core::serde::unsigned_field_element::UfeHex;
6use starknet_crypto::FieldElement;
7
8#[serde_as]
9#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
10pub struct ProcessedModule {
11    /// encoded computational task
12    pub encoded_task: Bytes,
13    pub task_commitment: B256,
14    pub result_commitment: B256,
15    pub task_proof: Vec<B256>,
16    pub result_proof: Vec<B256>,
17
18    #[serde_as(as = "Vec<UfeHex>")]
19    pub inputs: Vec<FieldElement>,
20    /// Detail class code of the module.
21    /// This will be loaded to bootloader.
22    pub module_class: CasmContractClass,
23}
24
25impl ProcessedModule {
26    pub fn new(
27        encoded_task: Bytes,
28        task_commitment: B256,
29        result_commitment: B256,
30        task_proof: Vec<B256>,
31        result_proof: Vec<B256>,
32        inputs: Vec<FieldElement>,
33        module_class: CasmContractClass,
34    ) -> Self {
35        ProcessedModule {
36            encoded_task,
37            task_commitment,
38            result_commitment,
39            task_proof,
40            result_proof,
41            inputs,
42            module_class,
43        }
44    }
45}