Struct alloy_dyn_abi::eip712::Resolver
source · 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