foundry_evm_abi/console/
ds.rs
1use super::{format_units_int, format_units_uint};
4use alloy_primitives::hex;
5use alloy_sol_types::sol;
6use derive_more::Display;
7use foundry_common_fmt::UIfmt;
8use itertools::Itertools;
9
10sol! {
13#[sol(abi)]
14#[derive(Display)]
15interface Console {
16 #[display("{}", val.pretty())]
17 event log(string val);
18
19 #[display("{}", hex::encode_prefixed(val))]
20 event logs(bytes val);
21
22 #[display("{}", val.pretty())]
23 event log_address(address val);
24
25 #[display("{}", val.pretty())]
26 event log_bytes32(bytes32 val);
27
28 #[display("{}", val.pretty())]
29 event log_int(int val);
30
31 #[display("{}", val.pretty())]
32 event log_uint(uint val);
33
34 #[display("{}", hex::encode_prefixed(val))]
35 event log_bytes(bytes val);
36
37 #[display("{}", val.pretty())]
38 event log_string(string val);
39
40 #[display("[{}]", val.iter().map(|v| v.pretty()).format(", "))]
41 event log_array(uint256[] val);
42
43 #[display("[{}]", val.iter().map(|v| v.pretty()).format(", "))]
44 event log_array(int256[] val);
45
46 #[display("[{}]", val.iter().map(|v| v.pretty()).format(", "))]
47 event log_array(address[] val);
48
49 #[display("{}: {}", key.pretty(), val.pretty())]
50 event log_named_address(string key, address val);
51
52 #[display("{}: {}", key.pretty(), val.pretty())]
53 event log_named_bytes32(string key, bytes32 val);
54
55 #[display("{}: {}", key.pretty(), format_units_int(val, decimals))]
56 event log_named_decimal_int(string key, int val, uint decimals);
57
58 #[display("{}: {}", key.pretty(), format_units_uint(val, decimals))]
59 event log_named_decimal_uint(string key, uint val, uint decimals);
60
61 #[display("{}: {}", key.pretty(), val.pretty())]
62 event log_named_int(string key, int val);
63
64 #[display("{}: {}", key.pretty(), val.pretty())]
65 event log_named_uint(string key, uint val);
66
67 #[display("{}: {}", key.pretty(), hex::encode_prefixed(val))]
68 event log_named_bytes(string key, bytes val);
69
70 #[display("{}: {}", key.pretty(), val.pretty())]
71 event log_named_string(string key, string val);
72
73 #[display("{}: [{}]", key.pretty(), val.iter().map(|v| v.pretty()).format(", "))]
74 event log_named_array(string key, uint256[] val);
75
76 #[display("{}: [{}]", key.pretty(), val.iter().map(|v| v.pretty()).format(", "))]
77 event log_named_array(string key, int256[] val);
78
79 #[display("{}: [{}]", key.pretty(), val.iter().map(|v| v.pretty()).format(", "))]
80 event log_named_array(string key, address[] val);
81}
82}
83
84pub use Console::*;