@@ -7,7 +7,8 @@ use std::io::{self, Write};
77use cairo_lang_starknet_classes:: contract_class:: ContractEntryPoints ;
88use cairo_lang_utils:: bigint:: BigUintAsHex ;
99use katana_primitives:: class:: {
10- compute_sierra_class_hash, ClassHash , ContractClass , LegacyContractClass , SierraContractClass ,
10+ compute_legacy_class_hash, compute_sierra_class_hash, ClassHash , ComputeClassHashError ,
11+ ContractClass , LegacyContractClass , SierraContractClass ,
1112} ;
1213use katana_primitives:: {
1314 Felt , { self } ,
@@ -34,6 +35,15 @@ pub enum Class {
3435 Legacy ( RpcLegacyContractClass ) ,
3536}
3637
38+ impl Class {
39+ pub fn hash ( & self ) -> ClassHash {
40+ match self {
41+ Class :: Sierra ( class) => class. hash ( ) ,
42+ Class :: Legacy ( class) => class. hash ( ) . unwrap ( ) ,
43+ }
44+ }
45+ }
46+
3747#[ derive( Debug , thiserror:: Error ) ]
3848pub enum ConversionError {
3949 #[ error( transparent) ]
@@ -119,6 +129,12 @@ pub struct RpcLegacyContractClass {
119129 pub abi : Option < Vec < ContractClassAbiEntry > > ,
120130}
121131
132+ impl RpcLegacyContractClass {
133+ pub fn hash ( & self ) -> Result < ClassHash , ComputeClassHashError > {
134+ compute_legacy_class_hash ( & LegacyContractClass :: try_from ( self . clone ( ) ) . unwrap ( ) )
135+ }
136+ }
137+
122138//////////////////////////////////////////////////
123139// LegacyClass implementations
124140//////////////////////////////////////////////////
0 commit comments