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}