use derivative::Derivative;

#[derive(Derivative, serde::Serialize, serde::Deserialize)]
#[derivative(Clone, Copy, Debug, Default, Hash, PartialEq)]
pub struct GeometryConfig {
    pub cycles_per_vm_snapshot: u32,
    pub cycles_per_log_demuxer: u32,
    pub cycles_per_storage_sorter: u32,
    pub cycles_per_events_or_l1_messages_sorter: u32,
    pub cycles_per_ram_permutation: u32,
    pub cycles_code_decommitter_sorter: u32,
    pub cycles_per_code_decommitter: u32,
    pub cycles_per_storage_application: u32,
    pub cycles_per_keccak256_circuit: u32,
    pub cycles_per_sha256_circuit: u32,
    pub cycles_per_ecrecover_circuit: u32,
    pub cycles_per_secp256r1_verify_circuit: u32,
    pub cycles_per_transient_storage_sorter: u32,
    pub cycles_per_modexp_circuit: u32,
    pub cycles_per_ecadd_circuit: u32,
    pub cycles_per_ecmul_circuit: u32,
    pub cycles_per_ecpairing_circuit: u32,

    pub limit_for_l1_messages_pudata_hasher: u32,
}
