1#![allow(clippy::too_many_arguments)] use alloy::sol;
11
12sol! {
13 struct TransferDetail {
15 address to;
16 address token;
17 uint256 value;
18 }
19
20 struct CommittedTransferDetail {
22 address to;
23 address token;
24 uint256 value;
25 bytes32 commitment;
26 }
27
28 struct TransferWithCommit {
30 address from;
31 address to;
32 address token;
33 address executor;
34 uint256 value;
35 uint256 validAfter;
36 uint256 validBefore;
37 bytes32 commitment;
38 }
39
40 struct UniCommitTransfers {
42 address from;
43 address executor;
44 TransferDetail[] details;
45 uint256 validAfter;
46 uint256 validBefore;
47 bytes32 commitment;
48 }
49
50 struct BatchTransferWithCommit {
52 address from;
53 address executor;
54 CommittedTransferDetail[] details;
55 uint256 validAfter;
56 uint256 validBefore;
57 bytes32 batchCommitment;
58 }
59
60 struct CancelAuthorization {
62 address authorizer;
63 bytes32 commitment;
64 }
65
66 #[sol(rpc)]
67 contract TransferWithCommitment {
68 function eip712Domain() external view returns (
69 bytes1 fields,
70 string name,
71 string version,
72 uint256 chainId,
73 address verifyingContract,
74 bytes32 salt,
75 uint256[] extensions
76 );
77
78 function transfer(address token, address to, uint256 value, bytes32 commitment) external;
79
80 function transfer(TransferDetail[] details, bytes32 commitment) external;
81
82 function transfer(CommittedTransferDetail[] details) external;
83
84 function transferWithAuthorization(
85 address from,
86 address to,
87 address token,
88 uint256 value,
89 uint256 validAfter,
90 uint256 validBefore,
91 bytes32 commitment,
92 bytes signature
93 ) external;
94
95 function transferWithAuthorization(
96 address from,
97 TransferDetail[] details,
98 uint256 validAfter,
99 uint256 validBefore,
100 bytes32 commitment,
101 bytes signature
102 ) external;
103
104 function transferWithAuthorization(
105 address from,
106 CommittedTransferDetail[] details,
107 uint256 validAfter,
108 uint256 validBefore,
109 bytes32 batchCommitment,
110 bytes signature
111 ) external;
112
113 function cancelAuthorization(address authorizer, bytes32 commitment, bytes signature) external;
114 }
115}