recon-generate 0.0.12 → 0.0.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/link.js CHANGED
@@ -74,22 +74,53 @@ const parseLibrariesFromOutput = (output, verbose = false) => {
74
74
  };
75
75
  const runCryticCompile = (cwd, verbose = false) => {
76
76
  return new Promise((resolve, reject) => {
77
- const cmd = 'crytic-compile . --foundry-compile-all --print-libraries';
77
+ const cmd = 'crytic-compile';
78
+ const args = ['.', '--foundry-compile-all', '--print-libraries'];
78
79
  if (verbose) {
79
- console.log(`[VERBOSE] Running command: ${cmd}`);
80
+ console.log(`[VERBOSE] Running command: ${cmd} ${args.join(' ')}`);
80
81
  console.log(`[VERBOSE] Working directory: ${cwd}`);
81
82
  }
82
- (0, child_process_1.exec)(cmd, { cwd, env: { ...process.env, PATH: (0, utils_1.getEnvPath)() } }, (error, stdout, stderr) => {
83
- if (verbose) {
84
- console.log(`[VERBOSE] stdout:\n${stdout}`);
85
- console.log(`[VERBOSE] stderr:\n${stderr}`);
83
+ const child = (0, child_process_1.spawn)(cmd, args, { cwd, env: { ...process.env, PATH: (0, utils_1.getEnvPath)() } });
84
+ const usesPattern = /^\s+uses:\s+\[(.*?)\]/;
85
+ let stdoutRemainder = '';
86
+ let stderrBuffer = '';
87
+ const relevantLines = [];
88
+ const handleStdoutChunk = (chunk) => {
89
+ var _a;
90
+ const text = stdoutRemainder + chunk.toString('utf8');
91
+ const lines = text.split(/\r?\n/);
92
+ stdoutRemainder = (_a = lines.pop()) !== null && _a !== void 0 ? _a : '';
93
+ for (const line of lines) {
94
+ const sanitized = (0, utils_1.stripAnsiCodes)(line);
95
+ if (usesPattern.test(sanitized)) {
96
+ relevantLines.push(sanitized);
97
+ }
86
98
  }
87
- if (error) {
88
- const errorMsg = `crytic-compile failed with exit code ${error.code}\nstderr: ${stderr}\nstdout: ${stdout}\nerror: ${error.message}`;
99
+ };
100
+ child.stdout.on('data', handleStdoutChunk);
101
+ child.stderr.on('data', chunk => {
102
+ stderrBuffer += chunk.toString('utf8');
103
+ });
104
+ child.on('error', err => {
105
+ reject(new Error(`crytic-compile failed to start: ${err.message}`));
106
+ });
107
+ child.on('close', code => {
108
+ if (stdoutRemainder) {
109
+ const sanitized = (0, utils_1.stripAnsiCodes)(stdoutRemainder);
110
+ if (usesPattern.test(sanitized)) {
111
+ relevantLines.push(sanitized);
112
+ }
113
+ }
114
+ if (code !== 0) {
115
+ const truncatedStderr = stderrBuffer.slice(-4000); // avoid flooding the buffer in errors
116
+ const errorMsg = `crytic-compile failed with exit code ${code}\nstderr (tail): ${truncatedStderr}`;
89
117
  reject(new Error(errorMsg));
90
118
  return;
91
119
  }
92
- resolve(stdout || '');
120
+ if (verbose) {
121
+ console.log(`[VERBOSE] Collected ${relevantLines.length} lines containing 'uses:'`);
122
+ }
123
+ resolve(relevantLines.join('\n'));
93
124
  });
94
125
  });
95
126
  };
@@ -14,9 +14,6 @@ from enum import IntEnum
14
14
 
15
15
 
16
16
  class ERC20(Contract):
17
- """
18
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#8)
19
- """
20
17
  _abi = {b'\x91\xbe\xda$': {'inputs': [{'internalType': 'address', 'name': 'owner', 'type': 'address'}, {'internalType': 'address', 'name': 'spender', 'type': 'address'}, {'internalType': 'uint256', 'name': 'allowance', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'amount', 'type': 'uint256'}], 'name': 'InsufficientAllowance', 'type': 'error'}, b'\xdbB\x14M': {'inputs': [{'internalType': 'address', 'name': 'from', 'type': 'address'}, {'internalType': 'uint256', 'name': 'balance', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'amount', 'type': 'uint256'}], 'name': 'InsufficientBalance', 'type': 'error'}, b'\x93\xea>\x04': {'inputs': [{'internalType': 'uint256', 'name': 'currentSupply', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'amount', 'type': 'uint256'}], 'name': 'MintOverflow', 'type': 'error'}, b'\x8c[\xe1\xe5\xeb\xec}[\xd1OqB}\x1e\x84\xf3\xdd\x03\x14\xc0\xf7\xb2)\x1e[ \n\xc8\xc7\xc3\xb9%': {'anonymous': False, 'inputs': [{'indexed': True, 'internalType': 'address', 'name': 'owner', 'type': 'address'}, {'indexed': True, 'internalType': 'address', 'name': 'spender', 'type': 'address'}, {'indexed': False, 'internalType': 'uint256', 'name': 'amount', 'type': 'uint256'}], 'name': 'Approval', 'type': 'event'}, b'\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef': {'anonymous': False, 'inputs': [{'indexed': True, 'internalType': 'address', 'name': 'from', 'type': 'address'}, {'indexed': True, 'internalType': 'address', 'name': 'to', 'type': 'address'}, {'indexed': False, 'internalType': 'uint256', 'name': 'amount', 'type': 'uint256'}], 'name': 'Transfer', 'type': 'event'}, b'6D\xe5\x15': {'inputs': [], 'name': 'DOMAIN_SEPARATOR', 'outputs': [{'internalType': 'bytes32', 'name': '', 'type': 'bytes32'}], 'stateMutability': 'view', 'type': 'function'}, b'\xddb\xed>': {'inputs': [{'internalType': 'address', 'name': '', 'type': 'address'}, {'internalType': 'address', 'name': '', 'type': 'address'}], 'name': 'allowance', 'outputs': [{'internalType': 'uint256', 'name': '', 'type': 'uint256'}], 'stateMutability': 'view', 'type': 'function'}, b'\t^\xa7\xb3': {'inputs': [{'internalType': 'address', 'name': 'spender', 'type': 'address'}, {'internalType': 'uint256', 'name': 'amount', 'type': 'uint256'}], 'name': 'approve', 'outputs': [{'internalType': 'bool', 'name': '', 'type': 'bool'}], 'stateMutability': 'nonpayable', 'type': 'function'}, b'p\xa0\x821': {'inputs': [{'internalType': 'address', 'name': '', 'type': 'address'}], 'name': 'balanceOf', 'outputs': [{'internalType': 'uint256', 'name': '', 'type': 'uint256'}], 'stateMutability': 'view', 'type': 'function'}, b'1<\xe5g': {'inputs': [], 'name': 'decimals', 'outputs': [{'internalType': 'uint8', 'name': '', 'type': 'uint8'}], 'stateMutability': 'view', 'type': 'function'}, b'\x06\xfd\xde\x03': {'inputs': [], 'name': 'name', 'outputs': [{'internalType': 'string', 'name': '', 'type': 'string'}], 'stateMutability': 'view', 'type': 'function'}, b'~\xce\xbe\x00': {'inputs': [{'internalType': 'address', 'name': '', 'type': 'address'}], 'name': 'nonces', 'outputs': [{'internalType': 'uint256', 'name': '', 'type': 'uint256'}], 'stateMutability': 'view', 'type': 'function'}, b'\xd5\x05\xac\xcf': {'inputs': [{'internalType': 'address', 'name': 'owner', 'type': 'address'}, {'internalType': 'address', 'name': 'spender', 'type': 'address'}, {'internalType': 'uint256', 'name': 'value', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'deadline', 'type': 'uint256'}, {'internalType': 'uint8', 'name': 'v', 'type': 'uint8'}, {'internalType': 'bytes32', 'name': 'r', 'type': 'bytes32'}, {'internalType': 'bytes32', 'name': 's', 'type': 'bytes32'}], 'name': 'permit', 'outputs': [], 'stateMutability': 'nonpayable', 'type': 'function'}, b'\x95\xd8\x9bA': {'inputs': [], 'name': 'symbol', 'outputs': [{'internalType': 'string', 'name': '', 'type': 'string'}], 'stateMutability': 'view', 'type': 'function'}, b'\x18\x16\r\xdd': {'inputs': [], 'name': 'totalSupply', 'outputs': [{'internalType': 'uint256', 'name': '', 'type': 'uint256'}], 'stateMutability': 'view', 'type': 'function'}, b'\xa9\x05\x9c\xbb': {'inputs': [{'internalType': 'address', 'name': 'to', 'type': 'address'}, {'internalType': 'uint256', 'name': 'amount', 'type': 'uint256'}], 'name': 'transfer', 'outputs': [{'internalType': 'bool', 'name': '', 'type': 'bool'}], 'stateMutability': 'nonpayable', 'type': 'function'}, b'#\xb8r\xdd': {'inputs': [{'internalType': 'address', 'name': 'from', 'type': 'address'}, {'internalType': 'address', 'name': 'to', 'type': 'address'}, {'internalType': 'uint256', 'name': 'amount', 'type': 'uint256'}], 'name': 'transferFrom', 'outputs': [{'internalType': 'bool', 'name': '', 'type': 'bool'}], 'stateMutability': 'nonpayable', 'type': 'function'}}
21
18
  _storage_layout = {"storage":[{"astId":47,"contract":"src/MockERC20.sol:ERC20","label":"name","offset":0,"slot":0,"type":"t_string_storage"},{"astId":49,"contract":"src/MockERC20.sol:ERC20","label":"symbol","offset":0,"slot":1,"type":"t_string_storage"},{"astId":53,"contract":"src/MockERC20.sol:ERC20","label":"totalSupply","offset":0,"slot":2,"type":"t_uint256"},{"astId":57,"contract":"src/MockERC20.sol:ERC20","label":"balanceOf","offset":0,"slot":3,"type":"t_mapping(t_address,t_uint256)"},{"astId":63,"contract":"src/MockERC20.sol:ERC20","label":"allowance","offset":0,"slot":4,"type":"t_mapping(t_address,t_mapping(t_address,t_uint256))"},{"astId":71,"contract":"src/MockERC20.sol:ERC20","label":"nonces","offset":0,"slot":5,"type":"t_mapping(t_address,t_uint256)"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":20},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"encoding":"mapping","label":"mapping(address => mapping(address => uint256))","numberOfBytes":32,"key":"t_address","value":"t_mapping(t_address,t_uint256)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","label":"mapping(address => uint256)","numberOfBytes":32,"key":"t_address","value":"t_uint256"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":32},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":32}}}
22
19
  _creation_code = ""
@@ -25,8 +22,6 @@ class ERC20(Contract):
25
22
  @classmethod
26
23
  def deploy(cls, _name: str, _symbol: str, _decimals: uint8, *, from_: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, return_tx: Literal[False] = False, request_type: Literal["call"], chain: Optional[Chain] = None, gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> bytearray:
27
24
  """
28
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#64)
29
-
30
25
  Args:
31
26
  _name: string
32
27
  _symbol: string
@@ -38,8 +33,6 @@ class ERC20(Contract):
38
33
  @classmethod
39
34
  def deploy(cls, _name: str, _symbol: str, _decimals: uint8, *, from_: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, return_tx: Literal[False] = False, request_type: Literal["tx"] = "tx", chain: Optional[Chain] = None, gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> ERC20:
40
35
  """
41
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#64)
42
-
43
36
  Args:
44
37
  _name: string
45
38
  _symbol: string
@@ -51,8 +44,6 @@ class ERC20(Contract):
51
44
  @classmethod
52
45
  def deploy(cls, _name: str, _symbol: str, _decimals: uint8, *, from_: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, return_tx: Literal[False] = False, request_type: Literal["estimate"], chain: Optional[Chain] = None, gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> int:
53
46
  """
54
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#64)
55
-
56
47
  Args:
57
48
  _name: string
58
49
  _symbol: string
@@ -64,8 +55,6 @@ class ERC20(Contract):
64
55
  @classmethod
65
56
  def deploy(cls, _name: str, _symbol: str, _decimals: uint8, *, from_: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, return_tx: Literal[False] = False, request_type: Literal["access_list"], chain: Optional[Chain] = None, gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> Tuple[Dict[Address, List[int]], int]:
66
57
  """
67
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#64)
68
-
69
58
  Args:
70
59
  _name: string
71
60
  _symbol: string
@@ -77,8 +66,6 @@ class ERC20(Contract):
77
66
  @classmethod
78
67
  def deploy(cls, _name: str, _symbol: str, _decimals: uint8, *, from_: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, return_tx: Literal[True], request_type: Literal["tx"] = "tx", chain: Optional[Chain] = None, gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> TransactionAbc[ERC20]:
79
68
  """
80
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#64)
81
-
82
69
  Args:
83
70
  _name: string
84
71
  _symbol: string
@@ -89,8 +76,6 @@ class ERC20(Contract):
89
76
  @classmethod
90
77
  def deploy(cls, _name: str, _symbol: str, _decimals: uint8, *, from_: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, return_tx: bool = False, request_type: RequestType = "tx", chain: Optional[Chain] = None, gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> Union[bytearray, ERC20, int, Tuple[Dict[Address, List[int]], int], TransactionAbc[ERC20]]:
91
78
  """
92
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#64)
93
-
94
79
  Args:
95
80
  _name: string
96
81
  _symbol: string
@@ -105,8 +90,6 @@ class ERC20(Contract):
105
90
  @dataclasses.dataclass
106
91
  class InsufficientBalance(TransactionRevertedError):
107
92
  """
108
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#14)
109
-
110
93
  Attributes:
111
94
  from_ (Address): address
112
95
  balance (uint256): uint256
@@ -124,8 +107,6 @@ class ERC20(Contract):
124
107
  @dataclasses.dataclass
125
108
  class InsufficientAllowance(TransactionRevertedError):
126
109
  """
127
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#17)
128
-
129
110
  Attributes:
130
111
  owner (Address): address
131
112
  spender (Address): address
@@ -145,8 +126,6 @@ class ERC20(Contract):
145
126
  @dataclasses.dataclass
146
127
  class MintOverflow(TransactionRevertedError):
147
128
  """
148
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#20)
149
-
150
129
  Attributes:
151
130
  currentSupply (uint256): uint256
152
131
  amount (uint256): uint256
@@ -162,8 +141,6 @@ class ERC20(Contract):
162
141
  @dataclasses.dataclass
163
142
  class Transfer:
164
143
  """
165
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#26)
166
-
167
144
  Attributes:
168
145
  from_ (Address): indexed address
169
146
  to (Address): indexed address
@@ -182,8 +159,6 @@ class ERC20(Contract):
182
159
  @dataclasses.dataclass
183
160
  class Approval:
184
161
  """
185
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#28)
186
-
187
162
  Attributes:
188
163
  owner (Address): indexed address
189
164
  spender (Address): indexed address
@@ -202,8 +177,6 @@ class ERC20(Contract):
202
177
  @overload
203
178
  def name(self, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["call"] = "call", gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> str:
204
179
  """
205
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#34)
206
-
207
180
  Returns:
208
181
  name: string
209
182
  """
@@ -212,8 +185,6 @@ class ERC20(Contract):
212
185
  @overload
213
186
  def name(self, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["estimate"], gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> int:
214
187
  """
215
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#34)
216
-
217
188
  Returns:
218
189
  name: string
219
190
  """
@@ -222,8 +193,6 @@ class ERC20(Contract):
222
193
  @overload
223
194
  def name(self, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["access_list"], gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> Tuple[Dict[Address, List[int]], int]:
224
195
  """
225
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#34)
226
-
227
196
  Returns:
228
197
  name: string
229
198
  """
@@ -232,8 +201,6 @@ class ERC20(Contract):
232
201
  @overload
233
202
  def name(self, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["tx"], gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> TransactionAbc[str]:
234
203
  """
235
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#34)
236
-
237
204
  Returns:
238
205
  name: string
239
206
  """
@@ -241,8 +208,6 @@ class ERC20(Contract):
241
208
 
242
209
  def name(self, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: RequestType = 'call', gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> Union[str, TransactionAbc[str], int, Tuple[Dict[Address, List[int]], int]]:
243
210
  """
244
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#34)
245
-
246
211
  Returns:
247
212
  name: string
248
213
  """
@@ -251,8 +216,6 @@ class ERC20(Contract):
251
216
  @overload
252
217
  def symbol(self, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["call"] = "call", gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> str:
253
218
  """
254
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#36)
255
-
256
219
  Returns:
257
220
  symbol: string
258
221
  """
@@ -261,8 +224,6 @@ class ERC20(Contract):
261
224
  @overload
262
225
  def symbol(self, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["estimate"], gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> int:
263
226
  """
264
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#36)
265
-
266
227
  Returns:
267
228
  symbol: string
268
229
  """
@@ -271,8 +232,6 @@ class ERC20(Contract):
271
232
  @overload
272
233
  def symbol(self, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["access_list"], gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> Tuple[Dict[Address, List[int]], int]:
273
234
  """
274
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#36)
275
-
276
235
  Returns:
277
236
  symbol: string
278
237
  """
@@ -281,8 +240,6 @@ class ERC20(Contract):
281
240
  @overload
282
241
  def symbol(self, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["tx"], gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> TransactionAbc[str]:
283
242
  """
284
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#36)
285
-
286
243
  Returns:
287
244
  symbol: string
288
245
  """
@@ -290,8 +247,6 @@ class ERC20(Contract):
290
247
 
291
248
  def symbol(self, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: RequestType = 'call', gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> Union[str, TransactionAbc[str], int, Tuple[Dict[Address, List[int]], int]]:
292
249
  """
293
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#36)
294
-
295
250
  Returns:
296
251
  symbol: string
297
252
  """
@@ -300,8 +255,6 @@ class ERC20(Contract):
300
255
  @overload
301
256
  def decimals(self, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["call"] = "call", gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> uint8:
302
257
  """
303
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#38)
304
-
305
258
  Returns:
306
259
  decimals: uint8
307
260
  """
@@ -310,8 +263,6 @@ class ERC20(Contract):
310
263
  @overload
311
264
  def decimals(self, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["estimate"], gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> int:
312
265
  """
313
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#38)
314
-
315
266
  Returns:
316
267
  decimals: uint8
317
268
  """
@@ -320,8 +271,6 @@ class ERC20(Contract):
320
271
  @overload
321
272
  def decimals(self, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["access_list"], gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> Tuple[Dict[Address, List[int]], int]:
322
273
  """
323
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#38)
324
-
325
274
  Returns:
326
275
  decimals: uint8
327
276
  """
@@ -330,8 +279,6 @@ class ERC20(Contract):
330
279
  @overload
331
280
  def decimals(self, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["tx"], gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> TransactionAbc[uint8]:
332
281
  """
333
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#38)
334
-
335
282
  Returns:
336
283
  decimals: uint8
337
284
  """
@@ -339,8 +286,6 @@ class ERC20(Contract):
339
286
 
340
287
  def decimals(self, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: RequestType = 'call', gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> Union[uint8, TransactionAbc[uint8], int, Tuple[Dict[Address, List[int]], int]]:
341
288
  """
342
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#38)
343
-
344
289
  Returns:
345
290
  decimals: uint8
346
291
  """
@@ -349,8 +294,6 @@ class ERC20(Contract):
349
294
  @overload
350
295
  def totalSupply(self, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["call"] = "call", gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> uint256:
351
296
  """
352
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#44)
353
-
354
297
  Returns:
355
298
  totalSupply: uint256
356
299
  """
@@ -359,8 +302,6 @@ class ERC20(Contract):
359
302
  @overload
360
303
  def totalSupply(self, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["estimate"], gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> int:
361
304
  """
362
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#44)
363
-
364
305
  Returns:
365
306
  totalSupply: uint256
366
307
  """
@@ -369,8 +310,6 @@ class ERC20(Contract):
369
310
  @overload
370
311
  def totalSupply(self, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["access_list"], gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> Tuple[Dict[Address, List[int]], int]:
371
312
  """
372
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#44)
373
-
374
313
  Returns:
375
314
  totalSupply: uint256
376
315
  """
@@ -379,8 +318,6 @@ class ERC20(Contract):
379
318
  @overload
380
319
  def totalSupply(self, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["tx"], gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> TransactionAbc[uint256]:
381
320
  """
382
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#44)
383
-
384
321
  Returns:
385
322
  totalSupply: uint256
386
323
  """
@@ -388,8 +325,6 @@ class ERC20(Contract):
388
325
 
389
326
  def totalSupply(self, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: RequestType = 'call', gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> Union[uint256, TransactionAbc[uint256], int, Tuple[Dict[Address, List[int]], int]]:
390
327
  """
391
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#44)
392
-
393
328
  Returns:
394
329
  totalSupply: uint256
395
330
  """
@@ -398,8 +333,6 @@ class ERC20(Contract):
398
333
  @overload
399
334
  def balanceOf(self, key0: Union[Account, Address], *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["call"] = "call", gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> uint256:
400
335
  """
401
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#46)
402
-
403
336
  Args:
404
337
  key0: address
405
338
  Returns:
@@ -410,8 +343,6 @@ class ERC20(Contract):
410
343
  @overload
411
344
  def balanceOf(self, key0: Union[Account, Address], *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["estimate"], gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> int:
412
345
  """
413
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#46)
414
-
415
346
  Args:
416
347
  key0: address
417
348
  Returns:
@@ -422,8 +353,6 @@ class ERC20(Contract):
422
353
  @overload
423
354
  def balanceOf(self, key0: Union[Account, Address], *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["access_list"], gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> Tuple[Dict[Address, List[int]], int]:
424
355
  """
425
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#46)
426
-
427
356
  Args:
428
357
  key0: address
429
358
  Returns:
@@ -434,8 +363,6 @@ class ERC20(Contract):
434
363
  @overload
435
364
  def balanceOf(self, key0: Union[Account, Address], *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["tx"], gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> TransactionAbc[uint256]:
436
365
  """
437
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#46)
438
-
439
366
  Args:
440
367
  key0: address
441
368
  Returns:
@@ -445,8 +372,6 @@ class ERC20(Contract):
445
372
 
446
373
  def balanceOf(self, key0: Union[Account, Address], *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: RequestType = 'call', gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> Union[uint256, TransactionAbc[uint256], int, Tuple[Dict[Address, List[int]], int]]:
447
374
  """
448
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#46)
449
-
450
375
  Args:
451
376
  key0: address
452
377
  Returns:
@@ -457,8 +382,6 @@ class ERC20(Contract):
457
382
  @overload
458
383
  def allowance(self, key0: Union[Account, Address], key1: Union[Account, Address], *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["call"] = "call", gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> uint256:
459
384
  """
460
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#48)
461
-
462
385
  Args:
463
386
  key0: address
464
387
  key1: address
@@ -470,8 +393,6 @@ class ERC20(Contract):
470
393
  @overload
471
394
  def allowance(self, key0: Union[Account, Address], key1: Union[Account, Address], *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["estimate"], gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> int:
472
395
  """
473
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#48)
474
-
475
396
  Args:
476
397
  key0: address
477
398
  key1: address
@@ -483,8 +404,6 @@ class ERC20(Contract):
483
404
  @overload
484
405
  def allowance(self, key0: Union[Account, Address], key1: Union[Account, Address], *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["access_list"], gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> Tuple[Dict[Address, List[int]], int]:
485
406
  """
486
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#48)
487
-
488
407
  Args:
489
408
  key0: address
490
409
  key1: address
@@ -496,8 +415,6 @@ class ERC20(Contract):
496
415
  @overload
497
416
  def allowance(self, key0: Union[Account, Address], key1: Union[Account, Address], *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["tx"], gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> TransactionAbc[uint256]:
498
417
  """
499
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#48)
500
-
501
418
  Args:
502
419
  key0: address
503
420
  key1: address
@@ -508,8 +425,6 @@ class ERC20(Contract):
508
425
 
509
426
  def allowance(self, key0: Union[Account, Address], key1: Union[Account, Address], *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: RequestType = 'call', gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> Union[uint256, TransactionAbc[uint256], int, Tuple[Dict[Address, List[int]], int]]:
510
427
  """
511
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#48)
512
-
513
428
  Args:
514
429
  key0: address
515
430
  key1: address
@@ -521,8 +436,6 @@ class ERC20(Contract):
521
436
  @overload
522
437
  def nonces(self, key0: Union[Account, Address], *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["call"] = "call", gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> uint256:
523
438
  """
524
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#58)
525
-
526
439
  Args:
527
440
  key0: address
528
441
  Returns:
@@ -533,8 +446,6 @@ class ERC20(Contract):
533
446
  @overload
534
447
  def nonces(self, key0: Union[Account, Address], *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["estimate"], gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> int:
535
448
  """
536
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#58)
537
-
538
449
  Args:
539
450
  key0: address
540
451
  Returns:
@@ -545,8 +456,6 @@ class ERC20(Contract):
545
456
  @overload
546
457
  def nonces(self, key0: Union[Account, Address], *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["access_list"], gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> Tuple[Dict[Address, List[int]], int]:
547
458
  """
548
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#58)
549
-
550
459
  Args:
551
460
  key0: address
552
461
  Returns:
@@ -557,8 +466,6 @@ class ERC20(Contract):
557
466
  @overload
558
467
  def nonces(self, key0: Union[Account, Address], *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["tx"], gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> TransactionAbc[uint256]:
559
468
  """
560
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#58)
561
-
562
469
  Args:
563
470
  key0: address
564
471
  Returns:
@@ -568,8 +475,6 @@ class ERC20(Contract):
568
475
 
569
476
  def nonces(self, key0: Union[Account, Address], *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: RequestType = 'call', gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> Union[uint256, TransactionAbc[uint256], int, Tuple[Dict[Address, List[int]], int]]:
570
477
  """
571
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#58)
572
-
573
478
  Args:
574
479
  key0: address
575
480
  Returns:
@@ -580,8 +485,6 @@ class ERC20(Contract):
580
485
  @overload
581
486
  def approve(self, spender: Union[Account, Address], amount: uint256, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["call"], gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> bool:
582
487
  """
583
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#77)
584
-
585
488
  Args:
586
489
  spender: address
587
490
  amount: uint256
@@ -593,8 +496,6 @@ class ERC20(Contract):
593
496
  @overload
594
497
  def approve(self, spender: Union[Account, Address], amount: uint256, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["estimate"], gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> int:
595
498
  """
596
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#77)
597
-
598
499
  Args:
599
500
  spender: address
600
501
  amount: uint256
@@ -606,8 +507,6 @@ class ERC20(Contract):
606
507
  @overload
607
508
  def approve(self, spender: Union[Account, Address], amount: uint256, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["access_list"], gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> Tuple[Dict[Address, List[int]], int]:
608
509
  """
609
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#77)
610
-
611
510
  Args:
612
511
  spender: address
613
512
  amount: uint256
@@ -619,7 +518,6 @@ class ERC20(Contract):
619
518
  @overload
620
519
  def approve(self, spender: Union[Account, Address], amount: uint256, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["tx"] = "tx", gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> TransactionAbc[bool]:
621
520
  """
622
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#77)
623
521
 
624
522
  Args:
625
523
  spender: address
@@ -631,8 +529,6 @@ class ERC20(Contract):
631
529
 
632
530
  def approve(self, spender: Union[Account, Address], amount: uint256, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: RequestType = 'tx', gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> Union[bool, TransactionAbc[bool], int, Tuple[Dict[Address, List[int]], int]]:
633
531
  """
634
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#77)
635
-
636
532
  Args:
637
533
  spender: address
638
534
  amount: uint256
@@ -644,8 +540,6 @@ class ERC20(Contract):
644
540
  @overload
645
541
  def transfer(self, to_: Union[Account, Address], amount: uint256, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["call"], gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> bool:
646
542
  """
647
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#85)
648
-
649
543
  Args:
650
544
  to_: address
651
545
  amount: uint256
@@ -657,8 +551,6 @@ class ERC20(Contract):
657
551
  @overload
658
552
  def transfer(self, to_: Union[Account, Address], amount: uint256, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["estimate"], gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> int:
659
553
  """
660
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#85)
661
-
662
554
  Args:
663
555
  to_: address
664
556
  amount: uint256
@@ -670,8 +562,6 @@ class ERC20(Contract):
670
562
  @overload
671
563
  def transfer(self, to_: Union[Account, Address], amount: uint256, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["access_list"], gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> Tuple[Dict[Address, List[int]], int]:
672
564
  """
673
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#85)
674
-
675
565
  Args:
676
566
  to_: address
677
567
  amount: uint256
@@ -683,8 +573,6 @@ class ERC20(Contract):
683
573
  @overload
684
574
  def transfer(self, to_: Union[Account, Address], amount: uint256, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["tx"] = "tx", gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> TransactionAbc[bool]:
685
575
  """
686
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#85)
687
-
688
576
  Args:
689
577
  to_: address
690
578
  amount: uint256
@@ -695,8 +583,6 @@ class ERC20(Contract):
695
583
 
696
584
  def transfer(self, to_: Union[Account, Address], amount: uint256, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: RequestType = 'tx', gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> Union[bool, TransactionAbc[bool], int, Tuple[Dict[Address, List[int]], int]]:
697
585
  """
698
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#85)
699
-
700
586
  Args:
701
587
  to_: address
702
588
  amount: uint256
@@ -708,8 +594,6 @@ class ERC20(Contract):
708
594
  @overload
709
595
  def transferFrom(self, from__: Union[Account, Address], to_: Union[Account, Address], amount: uint256, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["call"], gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> bool:
710
596
  """
711
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#102)
712
-
713
597
  Args:
714
598
  from__: address
715
599
  to_: address
@@ -722,8 +606,6 @@ class ERC20(Contract):
722
606
  @overload
723
607
  def transferFrom(self, from__: Union[Account, Address], to_: Union[Account, Address], amount: uint256, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["estimate"], gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> int:
724
608
  """
725
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#102)
726
-
727
609
  Args:
728
610
  from__: address
729
611
  to_: address
@@ -736,8 +618,6 @@ class ERC20(Contract):
736
618
  @overload
737
619
  def transferFrom(self, from__: Union[Account, Address], to_: Union[Account, Address], amount: uint256, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["access_list"], gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> Tuple[Dict[Address, List[int]], int]:
738
620
  """
739
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#102)
740
-
741
621
  Args:
742
622
  from__: address
743
623
  to_: address
@@ -750,8 +630,6 @@ class ERC20(Contract):
750
630
  @overload
751
631
  def transferFrom(self, from__: Union[Account, Address], to_: Union[Account, Address], amount: uint256, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["tx"] = "tx", gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> TransactionAbc[bool]:
752
632
  """
753
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#102)
754
-
755
633
  Args:
756
634
  from__: address
757
635
  to_: address
@@ -763,8 +641,6 @@ class ERC20(Contract):
763
641
 
764
642
  def transferFrom(self, from__: Union[Account, Address], to_: Union[Account, Address], amount: uint256, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: RequestType = 'tx', gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> Union[bool, TransactionAbc[bool], int, Tuple[Dict[Address, List[int]], int]]:
765
643
  """
766
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#102)
767
-
768
644
  Args:
769
645
  from__: address
770
646
  to_: address
@@ -777,8 +653,6 @@ class ERC20(Contract):
777
653
  @overload
778
654
  def permit(self, owner: Union[Account, Address], spender: Union[Account, Address], value_: uint256, deadline: uint256, v: uint8, r: bytes32, s: bytes32, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["call"], gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> None:
779
655
  """
780
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#129)
781
-
782
656
  Args:
783
657
  owner: address
784
658
  spender: address
@@ -793,8 +667,6 @@ class ERC20(Contract):
793
667
  @overload
794
668
  def permit(self, owner: Union[Account, Address], spender: Union[Account, Address], value_: uint256, deadline: uint256, v: uint8, r: bytes32, s: bytes32, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["estimate"], gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> int:
795
669
  """
796
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#129)
797
-
798
670
  Args:
799
671
  owner: address
800
672
  spender: address
@@ -809,8 +681,6 @@ class ERC20(Contract):
809
681
  @overload
810
682
  def permit(self, owner: Union[Account, Address], spender: Union[Account, Address], value_: uint256, deadline: uint256, v: uint8, r: bytes32, s: bytes32, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["access_list"], gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> Tuple[Dict[Address, List[int]], int]:
811
683
  """
812
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#129)
813
-
814
684
  Args:
815
685
  owner: address
816
686
  spender: address
@@ -825,8 +695,6 @@ class ERC20(Contract):
825
695
  @overload
826
696
  def permit(self, owner: Union[Account, Address], spender: Union[Account, Address], value_: uint256, deadline: uint256, v: uint8, r: bytes32, s: bytes32, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["tx"] = "tx", gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> TransactionAbc[None]:
827
697
  """
828
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#129)
829
-
830
698
  Args:
831
699
  owner: address
832
700
  spender: address
@@ -840,8 +708,6 @@ class ERC20(Contract):
840
708
 
841
709
  def permit(self, owner: Union[Account, Address], spender: Union[Account, Address], value_: uint256, deadline: uint256, v: uint8, r: bytes32, s: bytes32, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: RequestType = 'tx', gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> Union[None, TransactionAbc[None], int, Tuple[Dict[Address, List[int]], int]]:
842
710
  """
843
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#129)
844
-
845
711
  Args:
846
712
  owner: address
847
713
  spender: address
@@ -856,8 +722,6 @@ class ERC20(Contract):
856
722
  @overload
857
723
  def DOMAIN_SEPARATOR(self, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["call"] = "call", gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> bytes32:
858
724
  """
859
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#170)
860
-
861
725
  Returns:
862
726
  bytes32
863
727
  """
@@ -866,8 +730,6 @@ class ERC20(Contract):
866
730
  @overload
867
731
  def DOMAIN_SEPARATOR(self, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["estimate"], gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> int:
868
732
  """
869
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#170)
870
-
871
733
  Returns:
872
734
  bytes32
873
735
  """
@@ -876,8 +738,6 @@ class ERC20(Contract):
876
738
  @overload
877
739
  def DOMAIN_SEPARATOR(self, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["access_list"], gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> Tuple[Dict[Address, List[int]], int]:
878
740
  """
879
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#170)
880
-
881
741
  Returns:
882
742
  bytes32
883
743
  """
@@ -886,8 +746,6 @@ class ERC20(Contract):
886
746
  @overload
887
747
  def DOMAIN_SEPARATOR(self, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["tx"], gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> TransactionAbc[bytes32]:
888
748
  """
889
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#170)
890
-
891
749
  Returns:
892
750
  bytes32
893
751
  """
@@ -895,8 +753,6 @@ class ERC20(Contract):
895
753
 
896
754
  def DOMAIN_SEPARATOR(self, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: RequestType = 'call', gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> Union[bytes32, TransactionAbc[bytes32], int, Tuple[Dict[Address, List[int]], int]]:
897
755
  """
898
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#170)
899
-
900
756
  Returns:
901
757
  bytes32
902
758
  """
@@ -915,9 +771,6 @@ ERC20.transferFrom.selector = bytes4(b'#\xb8r\xdd')
915
771
  ERC20.permit.selector = bytes4(b'\xd5\x05\xac\xcf')
916
772
  ERC20.DOMAIN_SEPARATOR.selector = bytes4(b'6D\xe5\x15')
917
773
  class MockERC20(ERC20):
918
- """
919
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#220)
920
- """
921
774
  _abi = {'constructor': {'inputs': [{'internalType': 'string', 'name': '_name', 'type': 'string'}, {'internalType': 'string', 'name': '_symbol', 'type': 'string'}, {'internalType': 'uint8', 'name': '_decimals', 'type': 'uint8'}], 'stateMutability': 'nonpayable', 'type': 'constructor'}, b'\x91\xbe\xda$': {'inputs': [{'internalType': 'address', 'name': 'owner', 'type': 'address'}, {'internalType': 'address', 'name': 'spender', 'type': 'address'}, {'internalType': 'uint256', 'name': 'allowance', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'amount', 'type': 'uint256'}], 'name': 'InsufficientAllowance', 'type': 'error'}, b'\xdbB\x14M': {'inputs': [{'internalType': 'address', 'name': 'from', 'type': 'address'}, {'internalType': 'uint256', 'name': 'balance', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'amount', 'type': 'uint256'}], 'name': 'InsufficientBalance', 'type': 'error'}, b'\x93\xea>\x04': {'inputs': [{'internalType': 'uint256', 'name': 'currentSupply', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'amount', 'type': 'uint256'}], 'name': 'MintOverflow', 'type': 'error'}, b'\x8c[\xe1\xe5\xeb\xec}[\xd1OqB}\x1e\x84\xf3\xdd\x03\x14\xc0\xf7\xb2)\x1e[ \n\xc8\xc7\xc3\xb9%': {'anonymous': False, 'inputs': [{'indexed': True, 'internalType': 'address', 'name': 'owner', 'type': 'address'}, {'indexed': True, 'internalType': 'address', 'name': 'spender', 'type': 'address'}, {'indexed': False, 'internalType': 'uint256', 'name': 'amount', 'type': 'uint256'}], 'name': 'Approval', 'type': 'event'}, b'\xdd\xf2R\xad\x1b\xe2\xc8\x9bi\xc2\xb0h\xfc7\x8d\xaa\x95+\xa7\xf1c\xc4\xa1\x16(\xf5ZM\xf5#\xb3\xef': {'anonymous': False, 'inputs': [{'indexed': True, 'internalType': 'address', 'name': 'from', 'type': 'address'}, {'indexed': True, 'internalType': 'address', 'name': 'to', 'type': 'address'}, {'indexed': False, 'internalType': 'uint256', 'name': 'amount', 'type': 'uint256'}], 'name': 'Transfer', 'type': 'event'}, b'6D\xe5\x15': {'inputs': [], 'name': 'DOMAIN_SEPARATOR', 'outputs': [{'internalType': 'bytes32', 'name': '', 'type': 'bytes32'}], 'stateMutability': 'view', 'type': 'function'}, b'\xddb\xed>': {'inputs': [{'internalType': 'address', 'name': '', 'type': 'address'}, {'internalType': 'address', 'name': '', 'type': 'address'}], 'name': 'allowance', 'outputs': [{'internalType': 'uint256', 'name': '', 'type': 'uint256'}], 'stateMutability': 'view', 'type': 'function'}, b'\t^\xa7\xb3': {'inputs': [{'internalType': 'address', 'name': 'spender', 'type': 'address'}, {'internalType': 'uint256', 'name': 'amount', 'type': 'uint256'}], 'name': 'approve', 'outputs': [{'internalType': 'bool', 'name': '', 'type': 'bool'}], 'stateMutability': 'nonpayable', 'type': 'function'}, b'p\xa0\x821': {'inputs': [{'internalType': 'address', 'name': '', 'type': 'address'}], 'name': 'balanceOf', 'outputs': [{'internalType': 'uint256', 'name': '', 'type': 'uint256'}], 'stateMutability': 'view', 'type': 'function'}, b'\x9d\xc2\x9f\xac': {'inputs': [{'internalType': 'address', 'name': 'from', 'type': 'address'}, {'internalType': 'uint256', 'name': 'value', 'type': 'uint256'}], 'name': 'burn', 'outputs': [], 'stateMutability': 'nonpayable', 'type': 'function'}, b'1<\xe5g': {'inputs': [], 'name': 'decimals', 'outputs': [{'internalType': 'uint8', 'name': '', 'type': 'uint8'}], 'stateMutability': 'view', 'type': 'function'}, b'@\xc1\x0f\x19': {'inputs': [{'internalType': 'address', 'name': 'to', 'type': 'address'}, {'internalType': 'uint256', 'name': 'value', 'type': 'uint256'}], 'name': 'mint', 'outputs': [], 'stateMutability': 'nonpayable', 'type': 'function'}, b'\x06\xfd\xde\x03': {'inputs': [], 'name': 'name', 'outputs': [{'internalType': 'string', 'name': '', 'type': 'string'}], 'stateMutability': 'view', 'type': 'function'}, b'~\xce\xbe\x00': {'inputs': [{'internalType': 'address', 'name': '', 'type': 'address'}], 'name': 'nonces', 'outputs': [{'internalType': 'uint256', 'name': '', 'type': 'uint256'}], 'stateMutability': 'view', 'type': 'function'}, b'\xd5\x05\xac\xcf': {'inputs': [{'internalType': 'address', 'name': 'owner', 'type': 'address'}, {'internalType': 'address', 'name': 'spender', 'type': 'address'}, {'internalType': 'uint256', 'name': 'value', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'deadline', 'type': 'uint256'}, {'internalType': 'uint8', 'name': 'v', 'type': 'uint8'}, {'internalType': 'bytes32', 'name': 'r', 'type': 'bytes32'}, {'internalType': 'bytes32', 'name': 's', 'type': 'bytes32'}], 'name': 'permit', 'outputs': [], 'stateMutability': 'nonpayable', 'type': 'function'}, b'\x95\xd8\x9bA': {'inputs': [], 'name': 'symbol', 'outputs': [{'internalType': 'string', 'name': '', 'type': 'string'}], 'stateMutability': 'view', 'type': 'function'}, b'\x18\x16\r\xdd': {'inputs': [], 'name': 'totalSupply', 'outputs': [{'internalType': 'uint256', 'name': '', 'type': 'uint256'}], 'stateMutability': 'view', 'type': 'function'}, b'\xa9\x05\x9c\xbb': {'inputs': [{'internalType': 'address', 'name': 'to', 'type': 'address'}, {'internalType': 'uint256', 'name': 'amount', 'type': 'uint256'}], 'name': 'transfer', 'outputs': [{'internalType': 'bool', 'name': '', 'type': 'bool'}], 'stateMutability': 'nonpayable', 'type': 'function'}, b'#\xb8r\xdd': {'inputs': [{'internalType': 'address', 'name': 'from', 'type': 'address'}, {'internalType': 'address', 'name': 'to', 'type': 'address'}, {'internalType': 'uint256', 'name': 'amount', 'type': 'uint256'}], 'name': 'transferFrom', 'outputs': [{'internalType': 'bool', 'name': '', 'type': 'bool'}], 'stateMutability': 'nonpayable', 'type': 'function'}}
922
775
  _storage_layout = {"storage":[{"astId":47,"contract":"src/MockERC20.sol:MockERC20","label":"name","offset":0,"slot":0,"type":"t_string_storage"},{"astId":49,"contract":"src/MockERC20.sol:MockERC20","label":"symbol","offset":0,"slot":1,"type":"t_string_storage"},{"astId":53,"contract":"src/MockERC20.sol:MockERC20","label":"totalSupply","offset":0,"slot":2,"type":"t_uint256"},{"astId":57,"contract":"src/MockERC20.sol:MockERC20","label":"balanceOf","offset":0,"slot":3,"type":"t_mapping(t_address,t_uint256)"},{"astId":63,"contract":"src/MockERC20.sol:MockERC20","label":"allowance","offset":0,"slot":4,"type":"t_mapping(t_address,t_mapping(t_address,t_uint256))"},{"astId":71,"contract":"src/MockERC20.sol:MockERC20","label":"nonces","offset":0,"slot":5,"type":"t_mapping(t_address,t_uint256)"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":20},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"encoding":"mapping","label":"mapping(address => mapping(address => uint256))","numberOfBytes":32,"key":"t_address","value":"t_mapping(t_address,t_uint256)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","label":"mapping(address => uint256)","numberOfBytes":32,"key":"t_address","value":"t_uint256"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":32},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":32}}}
923
776
  _creation_code = "60e060405234801561000f575f5ffd5b506040516120ad3803806120ad83398181016040528101906100319190610296565b828282825f9081610042919061052e565b508160019081610052919061052e565b508060ff1660808160ff16815250504660a0818152505061007761008960201b60201c565b60c08181525050505050505050610766565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f6040516100b99190610699565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc646306040516020016100f8959493929190610715565b60405160208183030381529060405280519060200120905090565b5f604051905090565b5f5ffd5b5f5ffd5b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6101728261012c565b810181811067ffffffffffffffff821117156101915761019061013c565b5b80604052505050565b5f6101a3610113565b90506101af8282610169565b919050565b5f67ffffffffffffffff8211156101ce576101cd61013c565b5b6101d78261012c565b9050602081019050919050565b8281835e5f83830152505050565b5f6102046101ff846101b4565b61019a565b9050828152602081018484840111156102205761021f610128565b5b61022b8482856101e4565b509392505050565b5f82601f83011261024757610246610124565b5b81516102578482602086016101f2565b91505092915050565b5f60ff82169050919050565b61027581610260565b811461027f575f5ffd5b50565b5f815190506102908161026c565b92915050565b5f5f5f606084860312156102ad576102ac61011c565b5b5f84015167ffffffffffffffff8111156102ca576102c9610120565b5b6102d686828701610233565b935050602084015167ffffffffffffffff8111156102f7576102f6610120565b5b61030386828701610233565b925050604061031486828701610282565b9150509250925092565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061036c57607f821691505b60208210810361037f5761037e610328565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026103e17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826103a6565b6103eb86836103a6565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61042f61042a61042584610403565b61040c565b610403565b9050919050565b5f819050919050565b61044883610415565b61045c61045482610436565b8484546103b2565b825550505050565b5f5f905090565b610473610464565b61047e81848461043f565b505050565b5b818110156104a1576104965f8261046b565b600181019050610484565b5050565b601f8211156104e6576104b781610385565b6104c084610397565b810160208510156104cf578190505b6104e36104db85610397565b830182610483565b50505b505050565b5f82821c905092915050565b5f6105065f19846008026104eb565b1980831691505092915050565b5f61051e83836104f7565b9150826002028217905092915050565b6105378261031e565b67ffffffffffffffff8111156105505761054f61013c565b5b61055a8254610355565b6105658282856104a5565b5f60209050601f831160018114610596575f8415610584578287015190505b61058e8582610513565b8655506105f5565b601f1984166105a486610385565b5f5b828110156105cb578489015182556001820191506020850194506020810190506105a6565b868310156105e857848901516105e4601f8916826104f7565b8355505b6001600288020188555050505b505050505050565b5f81905092915050565b5f819050815f5260205f209050919050565b5f815461062581610355565b61062f81866105fd565b9450600182165f8114610649576001811461065e57610690565b60ff1983168652811515820286019350610690565b61066785610607565b5f5b8381101561068857815481890152600182019150602081019050610669565b838801955050505b50505092915050565b5f6106a48284610619565b915081905092915050565b5f819050919050565b6106c1816106af565b82525050565b6106d081610403565b82525050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6106ff826106d6565b9050919050565b61070f816106f5565b82525050565b5f60a0820190506107285f8301886106b8565b61073560208301876106b8565b61074260408301866106b8565b61074f60608301856106c7565b61075c6080830184610706565b9695505050505050565b60805160a05160c05161191d6107905f395f6107da01525f6107a601525f610781015261191d5ff3fe608060405234801561000f575f5ffd5b50600436106100e8575f3560e01c806370a082311161008a5780639dc29fac116100645780639dc29fac1461025e578063a9059cbb1461027a578063d505accf146102aa578063dd62ed3e146102c6576100e8565b806370a08231146101e05780637ecebe001461021057806395d89b4114610240576100e8565b806323b872dd116100c657806323b872dd14610158578063313ce567146101885780633644e515146101a657806340c10f19146101c4576100e8565b806306fdde03146100ec578063095ea7b31461010a57806318160ddd1461013a575b5f5ffd5b6100f46102f6565b60405161010191906110d1565b60405180910390f35b610124600480360381019061011f9190611182565b610381565b60405161013191906111da565b60405180910390f35b61014261046e565b60405161014f9190611202565b60405180910390f35b610172600480360381019061016d919061121b565b610474565b60405161017f91906111da565b60405180910390f35b61019061077f565b60405161019d9190611286565b60405180910390f35b6101ae6107a3565b6040516101bb91906112b7565b60405180910390f35b6101de60048036038101906101d99190611182565b6107ff565b005b6101fa60048036038101906101f591906112d0565b61080d565b6040516102079190611202565b60405180910390f35b61022a600480360381019061022591906112d0565b610822565b6040516102379190611202565b60405180910390f35b610248610837565b60405161025591906110d1565b60405180910390f35b61027860048036038101906102739190611182565b6108c3565b005b610294600480360381019061028f9190611182565b6108d1565b6040516102a191906111da565b60405180910390f35b6102c460048036038101906102bf919061134f565b610a63565b005b6102e060048036038101906102db91906113ec565b610d50565b6040516102ed9190611202565b60405180910390f35b5f805461030290611457565b80601f016020809104026020016040519081016040528092919081815260200182805461032e90611457565b80156103795780601f1061035057610100808354040283529160200191610379565b820191905f5260205f20905b81548152906001019060200180831161035c57829003601f168201915b505050505081565b5f8160045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161045c9190611202565b60405180910390a36001905092915050565b60025481565b5f5f60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f60035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821461062d57838210156105a457853383866040517f91beda2400000000000000000000000000000000000000000000000000000000815260040161059b9493929190611496565b60405180910390fd5b83826105b09190611506565b60045f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b83811015610676578581856040517fdb42144d00000000000000000000000000000000000000000000000000000000815260040161066d93929190611539565b60405180910390fd5b83816106829190611506565b60035f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508360035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161076a9190611202565b60405180910390a36001925050509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f7f000000000000000000000000000000000000000000000000000000000000000046146107d8576107d3610d70565b6107fa565b7f00000000000000000000000000000000000000000000000000000000000000005b905090565b6108098282610dfa565b5050565b6003602052805f5260405f205f915090505481565b6005602052805f5260405f205f915090505481565b6001805461084490611457565b80601f016020809104026020016040519081016040528092919081815260200182805461087090611457565b80156108bb5780601f10610892576101008083540402835291602001916108bb565b820191905f5260205f20905b81548152906001019060200180831161089e57829003601f168201915b505050505081565b6108cd8282610f11565b5050565b5f5f60035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508281101561095c573381846040517fdb42144d00000000000000000000000000000000000000000000000000000000815260040161095393929190611539565b60405180910390fd5b82816109689190611506565b60035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508260035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610a509190611202565b60405180910390a3600191505092915050565b42841015610aa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9d906115b8565b60405180910390fd5b5f6001610ab16107a3565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98a8a8a60055f8f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815480929190600101919050558b604051602001610b36969594939291906115d6565b60405160208183030381529060405280519060200120604051602001610b5d9291906116a9565b604051602081830303815290604052805190602001208585856040515f8152602001604052604051610b9294939291906116df565b6020604051602081039080840390855afa158015610bb2573d5f5f3e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015610c2557508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610c64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5b9061176c565b60405180910390fd5b8560045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92587604051610d3f9190611202565b60405180910390a350505050505050565b6004602052815f5260405f20602052805f5260405f205f91509150505481565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f604051610da09190611826565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc64630604051602001610ddf95949392919061183c565b60405160208183030381529060405280519060200120905090565b5f81600254610e09919061188d565b9050600254811015610e5657600254826040517f93ea3e04000000000000000000000000000000000000000000000000000000008152600401610e4d9291906118c0565b60405180910390fd5b806002819055508160035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f049190611202565b60405180910390a3505050565b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610f9b578281836040517fdb42144d000000000000000000000000000000000000000000000000000000008152600401610f9293929190611539565b60405180910390fd5b8181610fa79190611506565b60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160025f82825403925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516110549190611202565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6110a382611061565b6110ad818561106b565b93506110bd81856020860161107b565b6110c681611089565b840191505092915050565b5f6020820190508181035f8301526110e98184611099565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61111e826110f5565b9050919050565b61112e81611114565b8114611138575f5ffd5b50565b5f8135905061114981611125565b92915050565b5f819050919050565b6111618161114f565b811461116b575f5ffd5b50565b5f8135905061117c81611158565b92915050565b5f5f60408385031215611198576111976110f1565b5b5f6111a58582860161113b565b92505060206111b68582860161116e565b9150509250929050565b5f8115159050919050565b6111d4816111c0565b82525050565b5f6020820190506111ed5f8301846111cb565b92915050565b6111fc8161114f565b82525050565b5f6020820190506112155f8301846111f3565b92915050565b5f5f5f60608486031215611232576112316110f1565b5b5f61123f8682870161113b565b93505060206112508682870161113b565b92505060406112618682870161116e565b9150509250925092565b5f60ff82169050919050565b6112808161126b565b82525050565b5f6020820190506112995f830184611277565b92915050565b5f819050919050565b6112b18161129f565b82525050565b5f6020820190506112ca5f8301846112a8565b92915050565b5f602082840312156112e5576112e46110f1565b5b5f6112f28482850161113b565b91505092915050565b6113048161126b565b811461130e575f5ffd5b50565b5f8135905061131f816112fb565b92915050565b61132e8161129f565b8114611338575f5ffd5b50565b5f8135905061134981611325565b92915050565b5f5f5f5f5f5f5f60e0888a03121561136a576113696110f1565b5b5f6113778a828b0161113b565b97505060206113888a828b0161113b565b96505060406113998a828b0161116e565b95505060606113aa8a828b0161116e565b94505060806113bb8a828b01611311565b93505060a06113cc8a828b0161133b565b92505060c06113dd8a828b0161133b565b91505092959891949750929550565b5f5f60408385031215611402576114016110f1565b5b5f61140f8582860161113b565b92505060206114208582860161113b565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061146e57607f821691505b6020821081036114815761148061142a565b5b50919050565b61149081611114565b82525050565b5f6080820190506114a95f830187611487565b6114b66020830186611487565b6114c360408301856111f3565b6114d060608301846111f3565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6115108261114f565b915061151b8361114f565b9250828203905081811115611533576115326114d9565b5b92915050565b5f60608201905061154c5f830186611487565b61155960208301856111f3565b61156660408301846111f3565b949350505050565b7f5045524d49545f444541444c494e455f455850495245440000000000000000005f82015250565b5f6115a260178361106b565b91506115ad8261156e565b602082019050919050565b5f6020820190508181035f8301526115cf81611596565b9050919050565b5f60c0820190506115e95f8301896112a8565b6115f66020830188611487565b6116036040830187611487565b61161060608301866111f3565b61161d60808301856111f3565b61162a60a08301846111f3565b979650505050505050565b5f81905092915050565b7f19010000000000000000000000000000000000000000000000000000000000005f82015250565b5f611673600283611635565b915061167e8261163f565b600282019050919050565b5f819050919050565b6116a361169e8261129f565b611689565b82525050565b5f6116b382611667565b91506116bf8285611692565b6020820191506116cf8284611692565b6020820191508190509392505050565b5f6080820190506116f25f8301876112a8565b6116ff6020830186611277565b61170c60408301856112a8565b61171960608301846112a8565b95945050505050565b7f494e56414c49445f5349474e45520000000000000000000000000000000000005f82015250565b5f611756600e8361106b565b915061176182611722565b602082019050919050565b5f6020820190508181035f8301526117838161174a565b9050919050565b5f81905092915050565b5f819050815f5260205f209050919050565b5f81546117b281611457565b6117bc818661178a565b9450600182165f81146117d657600181146117eb5761181d565b60ff198316865281151582028601935061181d565b6117f485611794565b5f5b83811015611815578154818901526001820191506020810190506117f6565b838801955050505b50505092915050565b5f61183182846117a6565b915081905092915050565b5f60a08201905061184f5f8301886112a8565b61185c60208301876112a8565b61186960408301866112a8565b61187660608301856111f3565b6118836080830184611487565b9695505050505050565b5f6118978261114f565b91506118a28361114f565b92508282019050808211156118ba576118b96114d9565b5b92915050565b5f6040820190506118d35f8301856111f3565b6118e060208301846111f3565b939250505056fea2646970667358221220226cdfb48af44e510e231a6c3c585d06e20e6d5c487388fd5cba419d6368894064736f6c634300081e0033"
@@ -926,8 +779,6 @@ class MockERC20(ERC20):
926
779
  @classmethod
927
780
  def deploy(cls, _name: str, _symbol: str, _decimals: uint8, *, from_: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, return_tx: Literal[False] = False, request_type: Literal["call"], chain: Optional[Chain] = None, gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> bytearray:
928
781
  """
929
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#221)
930
-
931
782
  Args:
932
783
  _name: string
933
784
  _symbol: string
@@ -939,8 +790,6 @@ class MockERC20(ERC20):
939
790
  @classmethod
940
791
  def deploy(cls, _name: str, _symbol: str, _decimals: uint8, *, from_: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, return_tx: Literal[False] = False, request_type: Literal["tx"] = "tx", chain: Optional[Chain] = None, gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> MockERC20:
941
792
  """
942
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#221)
943
-
944
793
  Args:
945
794
  _name: string
946
795
  _symbol: string
@@ -952,8 +801,6 @@ class MockERC20(ERC20):
952
801
  @classmethod
953
802
  def deploy(cls, _name: str, _symbol: str, _decimals: uint8, *, from_: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, return_tx: Literal[False] = False, request_type: Literal["estimate"], chain: Optional[Chain] = None, gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> int:
954
803
  """
955
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#221)
956
-
957
804
  Args:
958
805
  _name: string
959
806
  _symbol: string
@@ -965,8 +812,6 @@ class MockERC20(ERC20):
965
812
  @classmethod
966
813
  def deploy(cls, _name: str, _symbol: str, _decimals: uint8, *, from_: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, return_tx: Literal[False] = False, request_type: Literal["access_list"], chain: Optional[Chain] = None, gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> Tuple[Dict[Address, List[int]], int]:
967
814
  """
968
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#221)
969
-
970
815
  Args:
971
816
  _name: string
972
817
  _symbol: string
@@ -978,8 +823,6 @@ class MockERC20(ERC20):
978
823
  @classmethod
979
824
  def deploy(cls, _name: str, _symbol: str, _decimals: uint8, *, from_: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, return_tx: Literal[True], request_type: Literal["tx"] = "tx", chain: Optional[Chain] = None, gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> TransactionAbc[MockERC20]:
980
825
  """
981
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#221)
982
-
983
826
  Args:
984
827
  _name: string
985
828
  _symbol: string
@@ -990,8 +833,6 @@ class MockERC20(ERC20):
990
833
  @classmethod
991
834
  def deploy(cls, _name: str, _symbol: str, _decimals: uint8, *, from_: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, return_tx: bool = False, request_type: RequestType = "tx", chain: Optional[Chain] = None, gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> Union[bytearray, MockERC20, int, Tuple[Dict[Address, List[int]], int], TransactionAbc[MockERC20]]:
992
835
  """
993
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#221)
994
-
995
836
  Args:
996
837
  _name: string
997
838
  _symbol: string
@@ -1006,8 +847,6 @@ class MockERC20(ERC20):
1006
847
  @overload
1007
848
  def mint(self, to_: Union[Account, Address], value_: uint256, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["call"], gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> None:
1008
849
  """
1009
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#223)
1010
-
1011
850
  Args:
1012
851
  to_: address
1013
852
  value_: uint256
@@ -1017,8 +856,6 @@ class MockERC20(ERC20):
1017
856
  @overload
1018
857
  def mint(self, to_: Union[Account, Address], value_: uint256, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["estimate"], gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> int:
1019
858
  """
1020
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#223)
1021
-
1022
859
  Args:
1023
860
  to_: address
1024
861
  value_: uint256
@@ -1028,8 +865,6 @@ class MockERC20(ERC20):
1028
865
  @overload
1029
866
  def mint(self, to_: Union[Account, Address], value_: uint256, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["access_list"], gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> Tuple[Dict[Address, List[int]], int]:
1030
867
  """
1031
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#223)
1032
-
1033
868
  Args:
1034
869
  to_: address
1035
870
  value_: uint256
@@ -1039,8 +874,6 @@ class MockERC20(ERC20):
1039
874
  @overload
1040
875
  def mint(self, to_: Union[Account, Address], value_: uint256, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["tx"] = "tx", gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> TransactionAbc[None]:
1041
876
  """
1042
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#223)
1043
-
1044
877
  Args:
1045
878
  to_: address
1046
879
  value_: uint256
@@ -1049,8 +882,6 @@ class MockERC20(ERC20):
1049
882
 
1050
883
  def mint(self, to_: Union[Account, Address], value_: uint256, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: RequestType = 'tx', gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> Union[None, TransactionAbc[None], int, Tuple[Dict[Address, List[int]], int]]:
1051
884
  """
1052
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#223)
1053
-
1054
885
  Args:
1055
886
  to_: address
1056
887
  value_: uint256
@@ -1060,8 +891,6 @@ class MockERC20(ERC20):
1060
891
  @overload
1061
892
  def burn(self, from__: Union[Account, Address], value_: uint256, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["call"], gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> None:
1062
893
  """
1063
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#227)
1064
-
1065
894
  Args:
1066
895
  from__: address
1067
896
  value_: uint256
@@ -1071,8 +900,6 @@ class MockERC20(ERC20):
1071
900
  @overload
1072
901
  def burn(self, from__: Union[Account, Address], value_: uint256, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["estimate"], gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> int:
1073
902
  """
1074
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#227)
1075
-
1076
903
  Args:
1077
904
  from__: address
1078
905
  value_: uint256
@@ -1082,8 +909,6 @@ class MockERC20(ERC20):
1082
909
  @overload
1083
910
  def burn(self, from__: Union[Account, Address], value_: uint256, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["access_list"], gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> Tuple[Dict[Address, List[int]], int]:
1084
911
  """
1085
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#227)
1086
-
1087
912
  Args:
1088
913
  from__: address
1089
914
  value_: uint256
@@ -1093,8 +918,6 @@ class MockERC20(ERC20):
1093
918
  @overload
1094
919
  def burn(self, from__: Union[Account, Address], value_: uint256, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: Literal["tx"] = "tx", gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> TransactionAbc[None]:
1095
920
  """
1096
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#227)
1097
-
1098
921
  Args:
1099
922
  from__: address
1100
923
  value_: uint256
@@ -1103,8 +926,6 @@ class MockERC20(ERC20):
1103
926
 
1104
927
  def burn(self, from__: Union[Account, Address], value_: uint256, *, from_: Optional[Union[Account, Address, str]] = None, to: Optional[Union[Account, Address, str]] = None, value: Union[int, str] = 0, gas_limit: Optional[Union[int, Literal["max"], Literal["auto"]]] = None, request_type: RequestType = 'tx', gas_price: Optional[Union[int, str]] = None, max_fee_per_gas: Optional[Union[int, str]] = None, max_priority_fee_per_gas: Optional[Union[int, str]] = None, access_list: Optional[Union[Dict[Union[Account, Address, str], List[int]], Literal["auto"]]] = None, type: Optional[int] = None, block: Optional[Union[int, Literal["latest"], Literal["pending"], Literal["earliest"], Literal["safe"], Literal["finalized"]]] = None, confirmations: Optional[int] = None) -> Union[None, TransactionAbc[None], int, Tuple[Dict[Address, List[int]], int]]:
1105
928
  """
1106
- [Source code](file:///Users/kn0t/Projects/recon-generate/test-project/src/MockERC20.sol#227)
1107
-
1108
929
  Args:
1109
930
  from__: address
1110
931
  value_: uint256
@@ -18,6 +18,7 @@ export declare class WakeGenerator {
18
18
  private foundryRoot;
19
19
  private options;
20
20
  constructor(foundryRoot: string, options: WakeGeneratorOptions);
21
+ private isInterfaceLike;
21
22
  private logDebug;
22
23
  private runCmd;
23
24
  private ensureBuild;
@@ -118,6 +118,21 @@ def inspect_pytypes():
118
118
  if not module_path.startswith("pytypes.src"):
119
119
  continue
120
120
 
121
+ # Skip abstract-like pytypes that cannot deploy
122
+ creation_code_val = None
123
+ try:
124
+ creation_code = getattr(obj, "_creation_code", None)
125
+ if creation_code:
126
+ if isinstance(creation_code, (bytes, bytearray)):
127
+ creation_code_val = creation_code.hex()
128
+ else:
129
+ creation_code_val = str(creation_code)
130
+ except Exception:
131
+ creation_code_val = None
132
+
133
+ if not creation_code_val:
134
+ continue
135
+
121
136
  # Determine mutable functions from _abi
122
137
  mutable_functions = set()
123
138
  if hasattr(obj, "_abi"):
@@ -128,12 +143,13 @@ def inspect_pytypes():
128
143
  mutable_functions.add(item.get("name"))
129
144
  except Exception:
130
145
  pass
131
-
146
+
132
147
  contract_info = {
133
148
  "name": name,
134
149
  "module": module_path,
135
150
  "methods": [],
136
- "deploy_args": []
151
+ "deploy_args": [],
152
+ "creation_code": creation_code_val
137
153
  }
138
154
 
139
155
  try:
@@ -196,6 +212,13 @@ class WakeGenerator {
196
212
  this.foundryRoot = foundryRoot;
197
213
  this.options = options;
198
214
  }
215
+ isInterfaceLike(contract) {
216
+ var _a, _b;
217
+ const name = contract.name || '';
218
+ const interfaceNamePattern = /^I[A-Z].+/;
219
+ const inInterfacesModule = ((_a = contract.module) === null || _a === void 0 ? void 0 : _a.includes('.interfaces')) || ((_b = contract.module) === null || _b === void 0 ? void 0 : _b.includes('/interfaces'));
220
+ return interfaceNamePattern.test(name) || inInterfacesModule;
221
+ }
199
222
  logDebug(message, obj) {
200
223
  if (!this.options.debug)
201
224
  return;
@@ -357,28 +380,48 @@ class WakeGenerator {
357
380
  const introspection = await this.inspectPytypes();
358
381
  const contracts = introspection.contracts;
359
382
  this.logDebug('Discovered contracts from pytypes', contracts.map(c => c.name));
360
- const filteredContracts = contracts.filter(c => this.isContractAllowed(c.name));
383
+ const filteredContracts = [];
384
+ for (const c of contracts) {
385
+ const isInterface = this.isInterfaceLike(c);
386
+ const explicitlyIncluded = !!(this.options.include && (this.options.include.contractOnly.has(c.name) || this.options.include.functions.has(c.name)));
387
+ if (!explicitlyIncluded && isInterface) {
388
+ this.logDebug('Skipping interface-like contract', { contract: c.name, module: c.module });
389
+ continue;
390
+ }
391
+ const hasCreationCode = typeof c.creation_code === 'string' && c.creation_code.trim().length > 0;
392
+ if (!hasCreationCode) {
393
+ this.logDebug('Skipping contract without creation code (likely abstract)', { contract: c.name, module: c.module });
394
+ continue;
395
+ }
396
+ if (!this.isContractAllowed(c.name)) {
397
+ continue;
398
+ }
399
+ const keptMethods = c.methods.filter(m => this.isFunctionIncluded(c.name, m));
400
+ if (keptMethods.length === 0) {
401
+ this.logDebug('Skipping contract with no included mutable methods', { contract: c.name });
402
+ continue;
403
+ }
404
+ filteredContracts.push({ ...c, methods: keptMethods });
405
+ }
361
406
  const contractFlows = new Map();
362
407
  for (const contract of filteredContracts) {
363
408
  const flows = [];
364
409
  for (const method of contract.methods) {
365
- if (this.isFunctionIncluded(contract.name, method)) {
366
- // Check admin
367
- const sig = `${method.name}(${method.args.map(a => a.type).join(',')})`;
368
- let actor = types_1.Actor.ACTOR;
369
- if (this.options.admin && this.options.admin.has(contract.name)) {
370
- const adminSet = this.options.admin.get(contract.name);
371
- if (this.matchesSignatureOrName(sig, adminSet)) {
372
- actor = types_1.Actor.ADMIN;
373
- }
410
+ // Check admin
411
+ const sig = `${method.name}(${method.args.map(a => a.type).join(',')})`;
412
+ let actor = types_1.Actor.ACTOR;
413
+ if (this.options.admin && this.options.admin.has(contract.name)) {
414
+ const adminSet = this.options.admin.get(contract.name);
415
+ if (this.matchesSignatureOrName(sig, adminSet)) {
416
+ actor = types_1.Actor.ADMIN;
374
417
  }
375
- flows.push({
376
- contractName: contract.name,
377
- method: method,
378
- actor: actor,
379
- mode: types_1.Mode.NORMAL
380
- });
381
418
  }
419
+ flows.push({
420
+ contractName: contract.name,
421
+ method: method,
422
+ actor: actor,
423
+ mode: types_1.Mode.NORMAL
424
+ });
382
425
  }
383
426
  if (flows.length > 0) {
384
427
  contractFlows.set(contract.name, flows);
@@ -431,15 +474,27 @@ class WakeGenerator {
431
474
  await this.ensureBuild();
432
475
  await this.runWakeUp();
433
476
  const introspection = await this.inspectPytypes();
434
- const filtered = introspection.contracts.filter(c => this.isContractAllowed(c.name));
477
+ const filtered = introspection.contracts
478
+ .filter(c => {
479
+ const isInterface = this.isInterfaceLike(c);
480
+ const explicitlyIncluded = !!(this.options.include && (this.options.include.contractOnly.has(c.name) || this.options.include.functions.has(c.name)));
481
+ if (!explicitlyIncluded && isInterface) {
482
+ return false;
483
+ }
484
+ const hasCreationCode = typeof c.creation_code === 'string' && c.creation_code.trim().length > 0;
485
+ if (!hasCreationCode) {
486
+ return false;
487
+ }
488
+ return this.isContractAllowed(c.name);
489
+ })
490
+ .map(c => ({ ...c, methods: c.methods.filter(m => this.isFunctionIncluded(c.name, m)) }))
491
+ .filter(c => c.methods.length > 0);
435
492
  console.log('Available contracts/functions (Wake):');
436
493
  for (const c of filtered) {
437
494
  console.log(`- ${c.name} (${c.module})`);
438
495
  for (const m of c.methods) {
439
496
  const sig = `${m.name}(${m.args.map(a => a.type).join(',')})`;
440
- if (this.isFunctionIncluded(c.name, m)) {
441
- console.log(` • ${sig}`);
442
- }
497
+ console.log(` • ${sig}`);
443
498
  }
444
499
  }
445
500
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "recon-generate",
3
- "version": "0.0.12",
3
+ "version": "0.0.14",
4
4
  "description": "CLI to scaffold Recon fuzzing suite inside Foundry projects",
5
5
  "main": "dist/index.js",
6
6
  "bin": {