1
1
[profile .default ]
2
- src = " src"
3
- out = " out"
4
- libs = [" lib" ]
5
- fs_permissions = [{ access = " read-write" , path = " ./" }]
6
- gas_limit = 5000000000
7
-
8
- ffi = true
9
- no-match-contract = " FFI"
10
-
11
- # Enables or disables the optimizer
12
- optimizer = true
13
- # Sets the number of optimizer runs
14
- optimizer_runs = 200
15
- # Whether or not to use the Yul intermediate representation compilation pipeline
16
- via_ir = false
17
- # Override the Solidity version (this overrides `auto_detect_solc`)
18
- solc_version = ' 0.8.27'
2
+ # Project Configuration
3
+
4
+ # Path to contract sources relative to the root of the project.
5
+ src = " src"
6
+ # Path to the test contract sources relative to the root of the project.
7
+ test = " test"
8
+ # Path to the script contract sources relative to the root of the project.
9
+ script = " script"
10
+ # Path to store contract artifacts relative to the root of the project.
11
+ out = " out"
12
+ # Array of paths that contain libraries, relative to the root of the project.
13
+ libs = [" lib" ]
14
+
15
+ # Solidity Compiler Configuration
16
+
17
+ # Defines paths for Solidity imports.
18
+ remappings = [
19
+ " @openzeppelin/=lib/openzeppelin-contracts-v4.9.0/" ,
20
+ " @openzeppelin-upgrades/=lib/openzeppelin-contracts-upgradeable-v4.9.0/" ,
21
+ " ds-test/=lib/ds-test/src/" ,
22
+ " forge-std/=lib/forge-std/src/"
23
+ ]
24
+ # Specifies the exact version of Solidity to use, overriding auto-detection.
25
+ solc_version = ' 0.8.27'
26
+ # If enabled, treats Solidity compiler warnings as errors, preventing artifact generation if warnings are present.
27
+ deny_warnings = false
28
+ # If set to true, changes compilation pipeline to go through the new IR optimizer.
29
+ via_ir = false
30
+ # Whether or not to enable the Solidity optimizer.
31
+ optimizer = true
32
+ # The number of runs specifies roughly how often each opcode of the deployed code will be executed
33
+ # across the life-time of the contract. This means it is a trade-off parameter between code size (deploy cost)
34
+ # and code execution cost (cost after deployment).
35
+ optimizer_runs = 200
36
+
37
+ # Test Configuration
38
+
39
+ # Verbosity level during test execution. Higher levels provide more detailed information:
40
+ # - 2 (-vv): Logs emitted during tests are displayed.
41
+ # - 3 (-vvv): Stack traces for failing tests are displayed.
42
+ # - 4 (-vvvv): Stack traces for all tests and setup traces for failing tests are displayed.
43
+ # - 5 (-vvvvv): Stack and setup traces are always displayed.
44
+ verbosity = 0
45
+ # Enables the Foreign Function Interface (FFI) cheatcode.
46
+ # WARNING: This allows arbitrary programs to run on your computer, which poses security risks.
47
+ ffi = true
48
+ # Contracts to include in gas reports. By default, all contracts are included.
49
+ gas_reports = [" ./src/**/*" ]
50
+ # Show test execution progress if set to true.
51
+ show_progress = true
52
+ # Sparse mode only compiles files that match certain criteria.
53
+ sparse_mode = true
54
+
55
+ gas_limit = 5000000000
56
+ no-match-contract = " FFI"
57
+ fs_permissions = [{ access = " read-write" , path = " ./" }]
58
+
59
+ [profile .default .fmt ]
60
+ # Single-line vs multi-line statement blocks
61
+ single_line_statement_blocks = " preserve" # Options: "single", "multi", "preserve"
62
+ # Formatting style for long function headers
63
+ multiline_func_header = " params_first" # Options: "attributes_first", "params_first", "all"
64
+ # Sort import statements alphabetically
65
+ sort_imports = false
66
+ # Maximum line length where formatter will wrap the line
67
+ line_length = 100 # Default: 120
68
+ # Number of spaces per indentation level
69
+ tab_width = 4 # Default: 4
70
+ # Whether to print spaces between brackets
71
+ bracket_spacing = false
72
+ # Style of uint/int256 types
73
+ int_types = " long" # Options: "long", "short", "preserve"
74
+ # Quotation mark style
75
+ quote_style = " double" # Options: "double", "single", "preserve"
76
+ # Style of underscores in number literals
77
+ number_underscore = " thousands" # Options: "preserve", "thousands", "remove"
78
+ # Whether or not to wrap comments at line_length
79
+ wrap_comments = false
80
+ # List of files to ignore during formatting (can use glob patterns)
81
+ # ignore = [
82
+ # "./script/**/*",
83
+ # "./test/**/*"
84
+ # ]
85
+
86
+ # TODO: Decide if we want to enable this.
87
+ # [profile.test.fmt]
88
+ # int_types = "short"
89
+ # line_length = 140
90
+ # ignore = [
91
+ # "./src/**/*"
92
+ # ]
93
+
94
+ [profile .ci .fuzz ]
95
+ optimizer = false
96
+ runs = 32
97
+
98
+ [profile .intense .fuzz ]
99
+ optimizer = false
100
+ runs = 15000
101
+
102
+ [profile .forktest .fuzz ]
103
+ runs = 16
104
+
105
+ [rpc_endpoints ]
106
+ mainnet = " ${RPC_MAINNET}"
107
+ holesky = " ${RPC_HOLESKY}"
19
108
20
109
[etherscan ]
21
- mainnet = { key = " ${ETHERSCAN_API_KEY}" }
22
- holesky = { key = " ${ETHERSCAN_API_KEY}" }
23
-
24
- [fmt ]
25
- bracket_spacing = false
26
- int_types = " long"
27
- line_length = 100
28
- multiline_func_header = " params_first"
29
- number_underscore = " thousands"
30
- quote_style = " double"
31
- tab_width = 4
32
-
33
- # See more config options https://github.com/foundry-rs/foundry/blob/master/crates/config/README.md#all-options
110
+ mainnet = { key = " ${ETHERSCAN_API_KEY}" }
111
+ holesky = { key = " ${ETHERSCAN_API_KEY}" }
0 commit comments