foundry_evm_abi/console/
ds.rs

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