pub struct Resolver { /* private fields */ }
eip712
only.Expand description
A dependency graph built from the Eip712Types
object. This is used to
safely resolve JSON into a crate::DynSolType
by detecting cycles in the
type graph and traversing the dep graph.
Implementations§
Source§impl Resolver
impl Resolver
Sourcepub fn from_struct<S: SolStruct>() -> Self
pub fn from_struct<S: SolStruct>() -> Self
Instantiate a new resolver from a SolStruct
type.
Sourcepub fn ingest_string(&mut self, s: impl AsRef<str>) -> Result<()>
pub fn ingest_string(&mut self, s: impl AsRef<str>) -> Result<()>
Ingest types from an EIP-712 encodeType
.
Sourcepub fn ingest_sol_struct<S: SolStruct>(&mut self)
pub fn ingest_sol_struct<S: SolStruct>(&mut self)
Ingest a sol struct typedef.
Sourcepub fn ingest_types(&mut self, types: &Eip712Types)
pub fn ingest_types(&mut self, types: &Eip712Types)
Ingest a Types
object into the resolver, discarding any invalid types.
Sourcepub fn linearize(&self, type_name: &str) -> Result<Vec<&TypeDef>>
pub fn linearize(&self, type_name: &str) -> Result<Vec<&TypeDef>>
This function linearizes a type into a list of typedefs of its dependencies.
Sourcepub fn resolve(&self, type_name: &str) -> Result<DynSolType>
pub fn resolve(&self, type_name: &str) -> Result<DynSolType>
Resolve a typename into a crate::DynSolType
or return an error if
the type is missing, or contains a circular dependency.
Sourcepub fn encode_type(&self, name: &str) -> Result<String>
pub fn encode_type(&self, name: &str) -> Result<String>
Encode the type into an EIP-712 encodeType
string
https://eips.ethereum.org/EIPS/eip-712#definition-of-encodetype
Sourcepub fn type_hash(&self, name: &str) -> Result<B256>
pub fn type_hash(&self, name: &str) -> Result<B256>
Compute the keccak256 hash of the EIP-712 encodeType
string.
Sourcepub fn encode_data(&self, value: &DynSolValue) -> Result<Option<Vec<u8>>>
pub fn encode_data(&self, value: &DynSolValue) -> Result<Option<Vec<u8>>>
Encode the data according to EIP-712 encodeData
rules.
Sourcepub fn eip712_data_word(&self, value: &DynSolValue) -> Result<B256>
pub fn eip712_data_word(&self, value: &DynSolValue) -> Result<B256>
Encode the data as a struct property according to EIP-712 encodeData
rules. Atomic types are encoded as-is, while non-atomic types are
encoded as their encodeData
hash.
Sourcepub fn contains_type_name(&self, name: &str) -> bool
pub fn contains_type_name(&self, name: &str) -> bool
Check if the resolver graph contains a type by its name.
§Warning
This checks by NAME only. It does NOT check for type
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Resolver
impl<'de> Deserialize<'de> for Resolver
Source§fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error>
fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error>
Source§impl From<&Eip712Types> for Resolver
impl From<&Eip712Types> for Resolver
Source§fn from(types: &Eip712Types) -> Self
fn from(types: &Eip712Types) -> Self
Source§impl From<&Resolver> for Eip712Types
impl From<&Resolver> for Eip712Types
Source§impl From<Eip712Types> for Resolver
impl From<Eip712Types> for Resolver
Source§fn from(types: Eip712Types) -> Self
fn from(types: Eip712Types) -> Self
impl Eq for Resolver
impl StructuralPartialEq for Resolver
Auto Trait Implementations§
impl Freeze for Resolver
impl RefUnwindSafe for Resolver
impl Send for Resolver
impl Sync for Resolver
impl Unpin for Resolver
impl UnwindSafe for Resolver
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)