@@ -11,13 +11,21 @@ use ethers::types::transaction::eip712::Eip712;
1111use ethers:: types:: transaction:: eip712:: Eip712Error ;
1212use ethers:: types:: Address ;
1313use ethers:: types:: Signature ;
14+ use ethers:: types:: H160 ;
1415use ethers:: types:: U256 ;
1516use lambdaworks_crypto:: merkle_tree:: {
1617 merkle:: MerkleTree , proof:: Proof , traits:: IsMerkleTreeBackend ,
1718} ;
1819use serde:: { Deserialize , Serialize } ;
1920use sha3:: { Digest , Keccak256 } ;
2021
22+ use super :: constants:: {
23+ ALIGNED_SERVICE_MANAGER_DEVNET , ALIGNED_SERVICE_MANAGER_HOLESKY ,
24+ ALIGNED_SERVICE_MANAGER_HOLESKY_STAGE , ALIGNED_SERVICE_MANAGER_MAINNET ,
25+ BATCHER_PAYMENT_SERVICE_ADDRESS_DEVNET , BATCHER_PAYMENT_SERVICE_ADDRESS_HOLESKY ,
26+ BATCHER_PAYMENT_SERVICE_ADDRESS_HOLESKY_STAGE , BATCHER_PAYMENT_SERVICE_ADDRESS_MAINNET ,
27+ BATCHER_URL_DEVNET , BATCHER_URL_HOLESKY , BATCHER_URL_HOLESKY_STAGE , BATCHER_URL_MAINNET ,
28+ } ;
2129use super :: errors:: VerifySignatureError ;
2230
2331// VerificationData is a bytes32 instead of a VerificationData struct because in the BatcherPaymentService contract
@@ -396,27 +404,45 @@ pub enum GetNonceResponseMessage {
396404 InvalidRequest ( String ) ,
397405}
398406
399- #[ derive( Debug , Clone , Copy ) ]
407+ #[ derive( Debug , Clone ) ]
400408pub enum Network {
401409 Devnet ,
402410 Holesky ,
403411 HoleskyStage ,
404412 Mainnet ,
413+ Custom ( String , String , String ) ,
405414}
406415
407- impl FromStr for Network {
408- type Err = String ;
409-
410- fn from_str ( s : & str ) -> Result < Self , Self :: Err > {
411- match s. to_lowercase ( ) . as_str ( ) {
412- "holesky" => Ok ( Network :: Holesky ) ,
413- "holesky-stage" => Ok ( Network :: HoleskyStage ) ,
414- "devnet" => Ok ( Network :: Devnet ) ,
415- "mainnet" => Ok ( Network :: Mainnet ) ,
416- _ => Err (
417- "Invalid network, possible values are: \" holesky\" , \" holesky-stage\" , \" devnet\" , \" mainnet\" "
418- . to_string ( ) ,
419- ) ,
416+ impl Network {
417+ pub fn get_aligned_service_manager_address ( & self ) -> ethers:: types:: H160 {
418+ match self {
419+ Self :: Devnet => H160 :: from_str ( ALIGNED_SERVICE_MANAGER_DEVNET ) . unwrap ( ) ,
420+ Self :: Holesky => H160 :: from_str ( ALIGNED_SERVICE_MANAGER_HOLESKY ) . unwrap ( ) ,
421+ Self :: HoleskyStage => H160 :: from_str ( ALIGNED_SERVICE_MANAGER_HOLESKY_STAGE ) . unwrap ( ) ,
422+ Self :: Mainnet => H160 :: from_str ( ALIGNED_SERVICE_MANAGER_MAINNET ) . unwrap ( ) ,
423+ Self :: Custom ( s, _, _) => H160 :: from_str ( s. as_str ( ) ) . unwrap ( ) ,
424+ }
425+ }
426+
427+ pub fn get_batcher_payment_service_address ( & self ) -> ethers:: types:: H160 {
428+ match self {
429+ Self :: Devnet => H160 :: from_str ( BATCHER_PAYMENT_SERVICE_ADDRESS_DEVNET ) . unwrap ( ) ,
430+ Self :: Holesky => H160 :: from_str ( BATCHER_PAYMENT_SERVICE_ADDRESS_HOLESKY ) . unwrap ( ) ,
431+ Self :: HoleskyStage => {
432+ H160 :: from_str ( BATCHER_PAYMENT_SERVICE_ADDRESS_HOLESKY_STAGE ) . unwrap ( )
433+ }
434+ Self :: Mainnet => H160 :: from_str ( BATCHER_PAYMENT_SERVICE_ADDRESS_MAINNET ) . unwrap ( ) ,
435+ Self :: Custom ( _, s, _) => H160 :: from_str ( s. as_str ( ) ) . unwrap ( ) ,
436+ }
437+ }
438+
439+ pub fn get_batcher_url ( & self ) -> & str {
440+ match self {
441+ Self :: Devnet => BATCHER_URL_DEVNET ,
442+ Self :: Holesky => BATCHER_URL_HOLESKY ,
443+ Self :: HoleskyStage => BATCHER_URL_HOLESKY_STAGE ,
444+ Self :: Mainnet => BATCHER_URL_MAINNET ,
445+ Self :: Custom ( _, _, s) => s. as_str ( ) ,
420446 }
421447 }
422448}
0 commit comments