alkahest_rs/
types.rs

1use alloy::{
2    network::EthereumWallet,
3    primitives::{Address, Bytes, U256},
4    providers::{
5        Identity, RootProvider,
6        fillers::{
7            BlobGasFiller, ChainIdFiller, FillProvider, GasFiller, JoinFill, NonceFiller,
8            WalletFiller,
9        },
10    },
11};
12
13use crate::contracts::IEAS::Attestation;
14
15pub type WalletProvider = FillProvider<
16    JoinFill<
17        JoinFill<
18            Identity,
19            JoinFill<GasFiller, JoinFill<BlobGasFiller, JoinFill<NonceFiller, ChainIdFiller>>>,
20        >,
21        WalletFiller<EthereumWallet>,
22    >,
23    RootProvider,
24>;
25
26pub type PublicProvider = FillProvider<
27    JoinFill<
28        Identity,
29        JoinFill<GasFiller, JoinFill<BlobGasFiller, JoinFill<NonceFiller, ChainIdFiller>>>,
30    >,
31    RootProvider,
32>;
33
34#[derive(Debug, Clone)]
35pub struct ArbiterData {
36    pub arbiter: Address,
37    pub demand: Bytes,
38}
39
40#[derive(Debug, Clone)]
41pub struct Erc20Data {
42    pub address: Address,
43    pub value: U256,
44}
45
46#[derive(Debug, Clone)]
47pub struct Erc721Data {
48    pub address: Address,
49    pub id: U256,
50}
51
52#[derive(Debug, Clone)]
53pub struct Erc1155Data {
54    pub address: Address,
55    pub id: U256,
56    pub value: U256,
57}
58
59#[derive(Debug, Clone)]
60pub struct TokenBundleData {
61    pub erc20s: Vec<Erc20Data>,
62    pub erc721s: Vec<Erc721Data>,
63    pub erc1155s: Vec<Erc1155Data>,
64}
65
66pub enum ApprovalPurpose {
67    Escrow,
68    Payment,
69}
70
71pub struct DecodedAttestation<T> {
72    pub attestation: Attestation,
73    pub data: T,
74}