@@ -30,7 +30,8 @@ use rundler_types::{
3030 } ,
3131 v0_6, v0_7, BundlerSponsorship as RundlerBundlerSponsorship , Entity as RundlerEntity ,
3232 EntityInfos , EntityType as RundlerEntityType , EntityUpdate as RundlerEntityUpdate ,
33- EntityUpdateType as RundlerEntityUpdateType , StakeInfo as RundlerStakeInfo , UserOperation as _,
33+ EntityUpdateType as RundlerEntityUpdateType , EntryPointVersion as RundlerEntryPointVersion ,
34+ StakeInfo as RundlerStakeInfo , UserOperation as _,
3435 UserOperationPermissions as RundlerUserOperationPermissions , UserOperationVariant ,
3536 ValidTimeRange ,
3637} ;
@@ -173,6 +174,7 @@ impl From<&v0_7::UserOperation> for UserOperation {
173174 . aggregator ( )
174175 . map ( |a| a. to_proto_bytes ( ) )
175176 . unwrap_or_default ( ) ,
177+ entry_point_version : EntryPointVersion :: from ( op. entry_point_version ( ) ) . into ( ) ,
176178 } ;
177179 UserOperation {
178180 uo : Some ( user_operation:: Uo :: V07 ( op) ) ,
@@ -190,8 +192,12 @@ impl TryUoFromProto<UserOperationV07> for v0_7::UserOperation {
190192 . as_ref ( )
191193 . map ( |authorization| Eip7702Auth :: from ( authorization. clone ( ) ) ) ;
192194
195+ let ep_version = EntryPointVersion :: try_from ( op. entry_point_version )
196+ . map_err ( |_| ConversionError :: InvalidEnumValue ( op. entry_point_version ) ) ?;
197+
193198 let mut builder = v0_7:: UserOperationBuilder :: new (
194199 chain_spec,
200+ ep_version. try_into ( ) ?,
195201 v0_7:: UserOperationRequiredFields {
196202 sender : from_bytes ( & op. sender ) ?,
197203 nonce : from_bytes ( & op. nonce ) ?,
@@ -718,3 +724,30 @@ impl TryFrom<PoolOperationSummary> for RundlerPoolOperationSummary {
718724 } )
719725 }
720726}
727+
728+ impl From < RundlerEntryPointVersion > for EntryPointVersion {
729+ fn from ( version : RundlerEntryPointVersion ) -> Self {
730+ match version {
731+ RundlerEntryPointVersion :: V0_6 => EntryPointVersion :: V06 ,
732+ RundlerEntryPointVersion :: V0_7 => EntryPointVersion :: V07 ,
733+ RundlerEntryPointVersion :: V0_8 => EntryPointVersion :: V08 ,
734+ RundlerEntryPointVersion :: V0_9 => EntryPointVersion :: V09 ,
735+ }
736+ }
737+ }
738+
739+ impl TryFrom < EntryPointVersion > for RundlerEntryPointVersion {
740+ type Error = ConversionError ;
741+
742+ fn try_from ( version : EntryPointVersion ) -> Result < Self , Self :: Error > {
743+ match version {
744+ EntryPointVersion :: V06 => Ok ( RundlerEntryPointVersion :: V0_6 ) ,
745+ EntryPointVersion :: V07 => Ok ( RundlerEntryPointVersion :: V0_7 ) ,
746+ EntryPointVersion :: V08 => Ok ( RundlerEntryPointVersion :: V0_8 ) ,
747+ EntryPointVersion :: V09 => Ok ( RundlerEntryPointVersion :: V0_9 ) ,
748+ EntryPointVersion :: Unspecified => {
749+ Err ( ConversionError :: InvalidEnumValue ( version as i32 ) )
750+ }
751+ }
752+ }
753+ }
0 commit comments