slither.utils.erc
1from collections import namedtuple 2from typing import List 3 4ERC = namedtuple("ERC", ["name", "parameters", "return_type", "view", "required", "events"]) 5ERC_EVENT = namedtuple("ERC_EVENT", ["name", "parameters", "indexes"]) 6 7 8def erc_to_signatures(erc: List[ERC]): 9 """ 10 Return the list of mandatory signatures 11 :param erc: 12 :return: 13 """ 14 return [f'{e.name}({",".join(e.parameters)})' for e in erc if e.required] 15 16 17# Final 18# https://eips.ethereum.org/EIPS/eip-20 19 20ERC20_transfer_event = ERC_EVENT("Transfer", ["address", "address", "uint256"], [True, True, False]) 21ERC20_approval_event = ERC_EVENT("Approval", ["address", "address", "uint256"], [True, True, False]) 22ERC20_EVENTS = [ERC20_transfer_event, ERC20_approval_event] 23 24ERC20 = [ 25 ERC("totalSupply", [], "uint256", True, True, []), 26 ERC("balanceOf", ["address"], "uint256", True, True, []), 27 ERC("transfer", ["address", "uint256"], "bool", False, True, [ERC20_transfer_event]), 28 ERC( 29 "transferFrom", 30 ["address", "address", "uint256"], 31 "bool", 32 False, 33 True, 34 [ERC20_transfer_event], 35 ), 36 ERC("approve", ["address", "uint256"], "bool", False, True, [ERC20_approval_event]), 37 ERC("allowance", ["address", "address"], "uint256", True, True, []), 38] 39 40ERC20_OPTIONAL = [ 41 ERC("name", [], "string", True, False, []), 42 ERC("symbol", [], "string", True, False, []), 43 ERC("decimals", [], "uint8", True, False, []), 44] 45 46ERC20 = ERC20 + ERC20_OPTIONAL 47 48ERC20_signatures = erc_to_signatures(ERC20) 49 50# Draft 51# https://github.com/ethereum/eips/issues/223 52 53ERC223_transfer_event = ERC_EVENT( 54 "Transfer", ["address", "address", "uint256", "bytes"], [True, True, False, False] 55) 56 57ERC223_EVENTS = [ERC223_transfer_event] 58 59ERC223 = [ 60 ERC("name", [], "string", True, True, []), 61 ERC("symbol", [], "string", True, True, []), 62 ERC("decimals", [], "uint8", True, True, []), 63 ERC("totalSupply", [], "uint256", True, True, []), 64 ERC("balanceOf", ["address"], "uint256", True, True, []), 65 ERC("transfer", ["address", "uint256"], "bool", False, True, [ERC223_transfer_event]), 66 ERC( 67 "transfer", 68 ["address", "uint256", "bytes"], 69 "bool", 70 False, 71 True, 72 [ERC223_transfer_event], 73 ), 74 ERC( 75 "transfer", 76 ["address", "uint256", "bytes", "string"], 77 "bool", 78 False, 79 True, 80 [ERC223_transfer_event], 81 ), 82] 83ERC223_signatures = erc_to_signatures(ERC223) 84 85# Final 86# https://eips.ethereum.org/EIPS/eip-165 87 88ERC165_EVENTS: List = [] 89 90ERC165 = [ERC("supportsInterface", ["bytes4"], "bool", True, True, [])] 91ERC165_signatures = erc_to_signatures(ERC165) 92 93# Final 94# https://eips.ethereum.org/EIPS/eip-721 95# Must have ERC165 96 97ERC721_transfer_event = ERC_EVENT("Transfer", ["address", "address", "uint256"], [True, True, True]) 98ERC721_approval_event = ERC_EVENT("Approval", ["address", "address", "uint256"], [True, True, True]) 99ERC721_approvalforall_event = ERC_EVENT( 100 "ApprovalForAll", ["address", "address", "bool"], [True, True, False] 101) 102ERC721_EVENTS = [ 103 ERC721_transfer_event, 104 ERC721_approval_event, 105 ERC721_approvalforall_event, 106] 107 108ERC721 = [ 109 ERC("balanceOf", ["address"], "uint256", True, True, []), 110 ERC("ownerOf", ["uint256"], "address", True, True, []), 111 ERC( 112 "safeTransferFrom", 113 ["address", "address", "uint256", "bytes"], 114 "", 115 False, 116 True, 117 [ERC721_transfer_event], 118 ), 119 ERC( 120 "safeTransferFrom", 121 ["address", "address", "uint256"], 122 "", 123 False, 124 True, 125 [ERC721_transfer_event], 126 ), 127 ERC( 128 "transferFrom", 129 ["address", "address", "uint256"], 130 "", 131 False, 132 True, 133 [ERC721_transfer_event], 134 ), 135 ERC("approve", ["address", "uint256"], "", False, True, [ERC721_approval_event]), 136 ERC( 137 "setApprovalForAll", 138 ["address", "bool"], 139 "", 140 False, 141 True, 142 [ERC721_approvalforall_event], 143 ), 144 ERC("getApproved", ["uint256"], "address", True, True, []), 145 ERC("isApprovedForAll", ["address", "address"], "bool", True, True, []), 146] + ERC165 147 148ERC721_OPTIONAL = [ 149 ERC("name", [], "string", True, False, []), 150 ERC("symbol", [], "string", False, False, []), 151 ERC("tokenURI", ["uint256"], "string", False, False, []), 152] 153 154ERC721 = ERC721 + ERC721_OPTIONAL 155 156ERC721_signatures = erc_to_signatures(ERC721) 157 158# Final 159# https://eips.ethereum.org/EIPS/eip-1820 160ERC1820_EVENTS: List = [] 161ERC1820 = [ 162 ERC( 163 "canImplementInterfaceForAddress", 164 ["bytes32", "address"], 165 "bytes32", 166 True, 167 True, 168 [], 169 ) 170] 171ERC1820_signatures = erc_to_signatures(ERC1820) 172 173# Last Call 174# https://eips.ethereum.org/EIPS/eip-777 175ERC777_sent_event = ERC_EVENT( 176 "Sent", 177 ["address", "address", "address", "uint256", "bytes", "bytes"], 178 [True, True, True, False, False, False], 179) 180ERC777_minted_event = ERC_EVENT( 181 "Minted", 182 ["address", "address", "uint256", "bytes", "bytes"], 183 [True, True, False, False, False], 184) 185ERC777_burned_event = ERC_EVENT( 186 "Burned", 187 ["address", "address", "uint256", "bytes", "bytes"], 188 [True, True, False, False, False], 189) 190ERC777_authorizedOperator_event = ERC_EVENT( 191 "AuthorizedOperator", ["address", "address"], [True, True] 192) 193ERC777_revokedoperator_event = ERC_EVENT("RevokedOperator", ["address", "address"], [True, True]) 194ERC777_EVENTS = [ 195 ERC777_sent_event, 196 ERC777_minted_event, 197 ERC777_burned_event, 198 ERC777_authorizedOperator_event, 199 ERC777_revokedoperator_event, 200] 201 202ERC777 = [ 203 ERC("name", [], "string", True, True, []), 204 ERC("symbol", [], "string", True, True, []), 205 ERC("totalSupply", [], "uint256", True, True, []), 206 ERC("balanceOf", ["address"], "uint256", True, True, []), 207 ERC("granularity", [], "uint256", True, True, []), 208 ERC("defaultOperators", [], "address[]", True, True, []), 209 ERC("isOperatorFor", ["address", "address"], "bool", True, True, []), 210 ERC( 211 "authorizeOperator", 212 ["address"], 213 "", 214 False, 215 True, 216 [ERC777_authorizedOperator_event], 217 ), 218 ERC("revokeOperator", ["address"], "", False, True, [ERC777_revokedoperator_event]), 219 ERC("send", ["address", "uint256", "bytes"], "", False, True, [ERC777_sent_event]), 220 ERC( 221 "operatorSend", 222 ["address", "address", "uint256", "bytes", "bytes"], 223 "", 224 False, 225 True, 226 [ERC777_sent_event], 227 ), 228 ERC("burn", ["uint256", "bytes"], "", False, True, [ERC777_burned_event]), 229 ERC( 230 "operatorBurn", 231 ["address", "uint256", "bytes", "bytes"], 232 "", 233 False, 234 True, 235 [ERC777_burned_event], 236 ), 237] 238ERC777_signatures = erc_to_signatures(ERC777) 239 240# Final 241# https://eips.ethereum.org/EIPS/eip-1155 242# Must have ERC165 243 244ERC1155_transfersingle_event = ERC_EVENT( 245 "TransferSingle", 246 ["address", "address", "address", "uint256", "uint256"], 247 [True, True, True, False, False], 248) 249 250ERC1155_transferbatch_event = ERC_EVENT( 251 "TransferBatch", 252 ["address", "address", "address", "uint256[]", "uint256[]"], 253 [True, True, True, False, False], 254) 255 256ERC1155_approvalforall_event = ERC_EVENT( 257 "ApprovalForAll", 258 ["address", "address", "bool"], 259 [True, True, False], 260) 261 262ERC1155_uri_event = ERC_EVENT( 263 "URI", 264 ["string", "uint256"], 265 [False, True], 266) 267 268ERC1155_EVENTS = [ 269 ERC1155_transfersingle_event, 270 ERC1155_transferbatch_event, 271 ERC1155_approvalforall_event, 272 ERC1155_uri_event, 273] 274 275ERC1155 = [ 276 ERC( 277 "safeTransferFrom", 278 ["address", "address", "uint256", "uint256", "bytes"], 279 "", 280 False, 281 True, 282 [ERC1155_transfersingle_event], 283 ), 284 ERC( 285 "safeBatchTransferFrom", 286 ["address", "address", "uint256[]", "uint256[]", "bytes"], 287 "", 288 False, 289 True, 290 [], 291 ), 292 ERC("balanceOf", ["address", "uint256"], "uint256", True, True, []), 293 ERC("balanceOfBatch", ["address[]", "uint256[]"], "uint256[]", True, True, []), 294 ERC("setApprovalForAll", ["address", "bool"], "", False, True, [ERC1155_approvalforall_event]), 295 ERC("isApprovedForAll", ["address", "address"], "bool", True, True, []), 296] + ERC165 297 298ERC1155_TOKEN_RECEIVER = [ 299 ERC( 300 "onERC1155Received", 301 ["address", "address", "uint256", "uint256", "bytes"], 302 "bytes4", 303 False, 304 False, 305 [], 306 ), 307 ERC( 308 "onERC1155BatchReceived", 309 ["address", "address", "uint256[]", "uint256[]", "bytes"], 310 "bytes4", 311 False, 312 False, 313 [], 314 ), 315] 316 317ERC1155_METADATA = [ERC("uri", ["uint256"], "string", True, False, [])] 318 319ERC1155 = ERC1155 + ERC1155_TOKEN_RECEIVER + ERC1155_METADATA 320 321ERC1155_signatures = erc_to_signatures(ERC1155) 322 323# Review 324# https://eips.ethereum.org/EIPS/eip-2612 325# Must have ERC20 326 327ERC2612_EVENTS = [] 328ERC2612 = [ 329 ERC( 330 "permit", 331 ["address", "address", "uint256", "uint256", "uint8", "bytes32", "bytes32"], 332 "", 333 False, 334 True, 335 [], 336 ), 337 ERC("nonces", ["address"], "uint256", True, True, []), 338 ERC("DOMAIN_SEPARATOR", [], "bytes32", True, True, []), 339] + ERC20 340 341ERC2612_signatures = erc_to_signatures(ERC2612) 342 343# Review 344# https://eips.ethereum.org/EIPS/eip-1363 345# Must have ERC20 and ERC165 346 347ERC1363_EVENTS = [] 348ERC1363 = ( 349 [ 350 ERC("transferAndCall", ["address", "uint256"], "bool", False, True, []), 351 ERC("transferAndCall", ["address", "uint256", "bytes"], "bool", False, True, []), 352 ERC("transferFromAndCall", ["address", "address", "uint256"], "bool", False, True, []), 353 ERC( 354 "transferFromAndCall", 355 ["address", "address", "uint256", "bytes"], 356 "bool", 357 False, 358 True, 359 [], 360 ), 361 ERC("approveAndCall", ["address", "uint256"], "bool", False, True, []), 362 ERC("approveAndCall", ["address", "uint256", "bytes"], "bool", False, True, []), 363 ] 364 + ERC20 365 + ERC165 366) 367 368ERC1363_signatures = erc_to_signatures(ERC1363) 369 370# Review 371# https://eips.ethereum.org/EIPS/eip-4524 372# Must have ERC20 and ERC165 373 374ERC4524_EVENTS = [] 375ERC4524 = ( 376 [ 377 ERC("safeTransfer", ["address", "uint256"], "bool", False, True, []), 378 ERC("safeTransfer", ["address", "uint256", "bytes"], "bool", False, True, []), 379 ERC("safeTransferFrom", ["address", "address", "uint256"], "bool", False, True, []), 380 ERC( 381 "safeTransferFrom", ["address", "address", "uint256", "bytes"], "bool", False, True, [] 382 ), 383 ] 384 + ERC20 385 + ERC165 386) 387 388ERC4524_signatures = erc_to_signatures(ERC4524) 389 390# Final 391# https://eips.ethereum.org/EIPS/eip-4626 392# Must have ERC20 393 394ERC4626_deposit_event = ERC_EVENT( 395 "Deposit", 396 ["address", "address", "uint256", "uint256"], 397 [True, True, False, False], 398) 399 400ERC4626_withdraw_event = ERC_EVENT( 401 "Withdraw", 402 ["address", "address", "address", "uint256", "uint256"], 403 [True, True, True, False, False], 404) 405 406ERC4626_EVENTS = [ 407 ERC4626_deposit_event, 408 ERC4626_withdraw_event, 409] 410 411ERC4626 = [ 412 ERC("asset", [], "address", True, True, []), 413 ERC("totalAssets", [], "uint256", True, True, []), 414 ERC("convertToShares", ["uint256"], "uint256", True, True, []), 415 ERC("convertToAssets", ["uint256"], "uint256", True, True, []), 416 ERC("maxDeposit", ["address"], "uint256", True, True, []), 417 ERC("previewDeposit", ["uint256"], "uint256", True, True, []), 418 ERC("deposit", ["uint256", "address"], "uint256", False, True, [ERC4626_deposit_event]), 419 ERC("maxMint", ["address"], "uint256", True, True, []), 420 ERC("previewMint", ["uint256"], "uint256", True, True, []), 421 ERC("mint", ["uint256", "address"], "uint256", False, True, [ERC4626_deposit_event]), 422 ERC("maxWithdraw", ["address"], "uint256", True, True, []), 423 ERC("previewWithdraw", ["uint256"], "uint256", True, True, []), 424 ERC( 425 "withdraw", 426 ["uint256", "address", "address"], 427 "uint256", 428 False, 429 True, 430 [ERC4626_withdraw_event], 431 ), 432 ERC("maxRedeem", ["address"], "uint256", True, True, []), 433 ERC("previewRedeem", ["uint256"], "uint256", True, True, []), 434 ERC( 435 "redeem", 436 ["uint256", "address", "address"], 437 "uint256", 438 False, 439 True, 440 [ERC4626_withdraw_event], 441 ), 442] + ERC20 443 444ERC4626_signatures = erc_to_signatures(ERC4626) 445 446ERCS = { 447 "ERC20": (ERC20, ERC20_EVENTS), 448 "ERC223": (ERC223, ERC223_EVENTS), 449 "ERC165": (ERC165, ERC165_EVENTS), 450 "ERC721": (ERC721, ERC721_EVENTS), 451 "ERC1820": (ERC1820, ERC1820_EVENTS), 452 "ERC777": (ERC777, ERC777_EVENTS), 453 "ERC1155": (ERC1155, ERC1155_EVENTS), 454 "ERC2612": (ERC2612, ERC2612_EVENTS), 455 "ERC1363": (ERC1363, ERC1363_EVENTS), 456 "ERC4524": (ERC4524, ERC4524_EVENTS), 457 "ERC4626": (ERC4626, ERC4626_EVENTS), 458}
class
ERC(builtins.tuple):
ERC(name, parameters, return_type, view, required, events)
ERC(name, parameters, return_type, view, required, events)
Create new instance of ERC(name, parameters, return_type, view, required, events)
Inherited Members
- builtins.tuple
- index
- count
class
ERC_EVENT(builtins.tuple):
ERC_EVENT(name, parameters, indexes)
Inherited Members
- builtins.tuple
- index
- count
9def erc_to_signatures(erc: List[ERC]): 10 """ 11 Return the list of mandatory signatures 12 :param erc: 13 :return: 14 """ 15 return [f'{e.name}({",".join(e.parameters)})' for e in erc if e.required]
Return the list of mandatory signatures
Parameters
- erc:
Returns
ERC20_transfer_event =
ERC_EVENT(name='Transfer', parameters=['address', 'address', 'uint256'], indexes=[True, True, False])
ERC20_approval_event =
ERC_EVENT(name='Approval', parameters=['address', 'address', 'uint256'], indexes=[True, True, False])
ERC20_EVENTS =
[ERC_EVENT(name='Transfer', parameters=['address', 'address', 'uint256'], indexes=[True, True, False]), ERC_EVENT(name='Approval', parameters=['address', 'address', 'uint256'], indexes=[True, True, False])]
ERC20 =
[ERC(name='totalSupply', parameters=[], return_type='uint256', view=True, required=True, events=[]), ERC(name='balanceOf', parameters=['address'], return_type='uint256', view=True, required=True, events=[]), ERC(name='transfer', parameters=['address', 'uint256'], return_type='bool', view=False, required=True, events=[ERC_EVENT(name='Transfer', parameters=['address', 'address', 'uint256'], indexes=[True, True, False])]), ERC(name='transferFrom', parameters=['address', 'address', 'uint256'], return_type='bool', view=False, required=True, events=[ERC_EVENT(name='Transfer', parameters=['address', 'address', 'uint256'], indexes=[True, True, False])]), ERC(name='approve', parameters=['address', 'uint256'], return_type='bool', view=False, required=True, events=[ERC_EVENT(name='Approval', parameters=['address', 'address', 'uint256'], indexes=[True, True, False])]), ERC(name='allowance', parameters=['address', 'address'], return_type='uint256', view=True, required=True, events=[]), ERC(name='name', parameters=[], return_type='string', view=True, required=False, events=[]), ERC(name='symbol', parameters=[], return_type='string', view=True, required=False, events=[]), ERC(name='decimals', parameters=[], return_type='uint8', view=True, required=False, events=[])]
ERC20_OPTIONAL =
[ERC(name='name', parameters=[], return_type='string', view=True, required=False, events=[]), ERC(name='symbol', parameters=[], return_type='string', view=True, required=False, events=[]), ERC(name='decimals', parameters=[], return_type='uint8', view=True, required=False, events=[])]
ERC20_signatures =
['totalSupply()', 'balanceOf(address)', 'transfer(address,uint256)', 'transferFrom(address,address,uint256)', 'approve(address,uint256)', 'allowance(address,address)']
ERC223_transfer_event =
ERC_EVENT(name='Transfer', parameters=['address', 'address', 'uint256', 'bytes'], indexes=[True, True, False, False])
ERC223_EVENTS =
[ERC_EVENT(name='Transfer', parameters=['address', 'address', 'uint256', 'bytes'], indexes=[True, True, False, False])]
ERC223 =
[ERC(name='name', parameters=[], return_type='string', view=True, required=True, events=[]), ERC(name='symbol', parameters=[], return_type='string', view=True, required=True, events=[]), ERC(name='decimals', parameters=[], return_type='uint8', view=True, required=True, events=[]), ERC(name='totalSupply', parameters=[], return_type='uint256', view=True, required=True, events=[]), ERC(name='balanceOf', parameters=['address'], return_type='uint256', view=True, required=True, events=[]), ERC(name='transfer', parameters=['address', 'uint256'], return_type='bool', view=False, required=True, events=[ERC_EVENT(name='Transfer', parameters=['address', 'address', 'uint256', 'bytes'], indexes=[True, True, False, False])]), ERC(name='transfer', parameters=['address', 'uint256', 'bytes'], return_type='bool', view=False, required=True, events=[ERC_EVENT(name='Transfer', parameters=['address', 'address', 'uint256', 'bytes'], indexes=[True, True, False, False])]), ERC(name='transfer', parameters=['address', 'uint256', 'bytes', 'string'], return_type='bool', view=False, required=True, events=[ERC_EVENT(name='Transfer', parameters=['address', 'address', 'uint256', 'bytes'], indexes=[True, True, False, False])])]
ERC223_signatures =
['name()', 'symbol()', 'decimals()', 'totalSupply()', 'balanceOf(address)', 'transfer(address,uint256)', 'transfer(address,uint256,bytes)', 'transfer(address,uint256,bytes,string)']
ERC165_EVENTS: List =
[]
ERC165 =
[ERC(name='supportsInterface', parameters=['bytes4'], return_type='bool', view=True, required=True, events=[])]
ERC165_signatures =
['supportsInterface(bytes4)']
ERC721_transfer_event =
ERC_EVENT(name='Transfer', parameters=['address', 'address', 'uint256'], indexes=[True, True, True])
ERC721_approval_event =
ERC_EVENT(name='Approval', parameters=['address', 'address', 'uint256'], indexes=[True, True, True])
ERC721_approvalforall_event =
ERC_EVENT(name='ApprovalForAll', parameters=['address', 'address', 'bool'], indexes=[True, True, False])
ERC721_EVENTS =
[ERC_EVENT(name='Transfer', parameters=['address', 'address', 'uint256'], indexes=[True, True, True]), ERC_EVENT(name='Approval', parameters=['address', 'address', 'uint256'], indexes=[True, True, True]), ERC_EVENT(name='ApprovalForAll', parameters=['address', 'address', 'bool'], indexes=[True, True, False])]
ERC721 =
[ERC(name='balanceOf', parameters=['address'], return_type='uint256', view=True, required=True, events=[]), ERC(name='ownerOf', parameters=['uint256'], return_type='address', view=True, required=True, events=[]), ERC(name='safeTransferFrom', parameters=['address', 'address', 'uint256', 'bytes'], return_type='', view=False, required=True, events=[ERC_EVENT(name='Transfer', parameters=['address', 'address', 'uint256'], indexes=[True, True, True])]), ERC(name='safeTransferFrom', parameters=['address', 'address', 'uint256'], return_type='', view=False, required=True, events=[ERC_EVENT(name='Transfer', parameters=['address', 'address', 'uint256'], indexes=[True, True, True])]), ERC(name='transferFrom', parameters=['address', 'address', 'uint256'], return_type='', view=False, required=True, events=[ERC_EVENT(name='Transfer', parameters=['address', 'address', 'uint256'], indexes=[True, True, True])]), ERC(name='approve', parameters=['address', 'uint256'], return_type='', view=False, required=True, events=[ERC_EVENT(name='Approval', parameters=['address', 'address', 'uint256'], indexes=[True, True, True])]), ERC(name='setApprovalForAll', parameters=['address', 'bool'], return_type='', view=False, required=True, events=[ERC_EVENT(name='ApprovalForAll', parameters=['address', 'address', 'bool'], indexes=[True, True, False])]), ERC(name='getApproved', parameters=['uint256'], return_type='address', view=True, required=True, events=[]), ERC(name='isApprovedForAll', parameters=['address', 'address'], return_type='bool', view=True, required=True, events=[]), ERC(name='supportsInterface', parameters=['bytes4'], return_type='bool', view=True, required=True, events=[]), ERC(name='name', parameters=[], return_type='string', view=True, required=False, events=[]), ERC(name='symbol', parameters=[], return_type='string', view=False, required=False, events=[]), ERC(name='tokenURI', parameters=['uint256'], return_type='string', view=False, required=False, events=[])]
ERC721_OPTIONAL =
[ERC(name='name', parameters=[], return_type='string', view=True, required=False, events=[]), ERC(name='symbol', parameters=[], return_type='string', view=False, required=False, events=[]), ERC(name='tokenURI', parameters=['uint256'], return_type='string', view=False, required=False, events=[])]
ERC721_signatures =
['balanceOf(address)', 'ownerOf(uint256)', 'safeTransferFrom(address,address,uint256,bytes)', 'safeTransferFrom(address,address,uint256)', 'transferFrom(address,address,uint256)', 'approve(address,uint256)', 'setApprovalForAll(address,bool)', 'getApproved(uint256)', 'isApprovedForAll(address,address)', 'supportsInterface(bytes4)']
ERC1820_EVENTS: List =
[]
ERC1820 =
[ERC(name='canImplementInterfaceForAddress', parameters=['bytes32', 'address'], return_type='bytes32', view=True, required=True, events=[])]
ERC1820_signatures =
['canImplementInterfaceForAddress(bytes32,address)']
ERC777_sent_event =
ERC_EVENT(name='Sent', parameters=['address', 'address', 'address', 'uint256', 'bytes', 'bytes'], indexes=[True, True, True, False, False, False])
ERC777_minted_event =
ERC_EVENT(name='Minted', parameters=['address', 'address', 'uint256', 'bytes', 'bytes'], indexes=[True, True, False, False, False])
ERC777_burned_event =
ERC_EVENT(name='Burned', parameters=['address', 'address', 'uint256', 'bytes', 'bytes'], indexes=[True, True, False, False, False])
ERC777_revokedoperator_event =
ERC_EVENT(name='RevokedOperator', parameters=['address', 'address'], indexes=[True, True])
ERC777_EVENTS =
[ERC_EVENT(name='Sent', parameters=['address', 'address', 'address', 'uint256', 'bytes', 'bytes'], indexes=[True, True, True, False, False, False]), ERC_EVENT(name='Minted', parameters=['address', 'address', 'uint256', 'bytes', 'bytes'], indexes=[True, True, False, False, False]), ERC_EVENT(name='Burned', parameters=['address', 'address', 'uint256', 'bytes', 'bytes'], indexes=[True, True, False, False, False]), ERC_EVENT(name='AuthorizedOperator', parameters=['address', 'address'], indexes=[True, True]), ERC_EVENT(name='RevokedOperator', parameters=['address', 'address'], indexes=[True, True])]
ERC777 =
[ERC(name='name', parameters=[], return_type='string', view=True, required=True, events=[]), ERC(name='symbol', parameters=[], return_type='string', view=True, required=True, events=[]), ERC(name='totalSupply', parameters=[], return_type='uint256', view=True, required=True, events=[]), ERC(name='balanceOf', parameters=['address'], return_type='uint256', view=True, required=True, events=[]), ERC(name='granularity', parameters=[], return_type='uint256', view=True, required=True, events=[]), ERC(name='defaultOperators', parameters=[], return_type='address[]', view=True, required=True, events=[]), ERC(name='isOperatorFor', parameters=['address', 'address'], return_type='bool', view=True, required=True, events=[]), ERC(name='authorizeOperator', parameters=['address'], return_type='', view=False, required=True, events=[ERC_EVENT(name='AuthorizedOperator', parameters=['address', 'address'], indexes=[True, True])]), ERC(name='revokeOperator', parameters=['address'], return_type='', view=False, required=True, events=[ERC_EVENT(name='RevokedOperator', parameters=['address', 'address'], indexes=[True, True])]), ERC(name='send', parameters=['address', 'uint256', 'bytes'], return_type='', view=False, required=True, events=[ERC_EVENT(name='Sent', parameters=['address', 'address', 'address', 'uint256', 'bytes', 'bytes'], indexes=[True, True, True, False, False, False])]), ERC(name='operatorSend', parameters=['address', 'address', 'uint256', 'bytes', 'bytes'], return_type='', view=False, required=True, events=[ERC_EVENT(name='Sent', parameters=['address', 'address', 'address', 'uint256', 'bytes', 'bytes'], indexes=[True, True, True, False, False, False])]), ERC(name='burn', parameters=['uint256', 'bytes'], return_type='', view=False, required=True, events=[ERC_EVENT(name='Burned', parameters=['address', 'address', 'uint256', 'bytes', 'bytes'], indexes=[True, True, False, False, False])]), ERC(name='operatorBurn', parameters=['address', 'uint256', 'bytes', 'bytes'], return_type='', view=False, required=True, events=[ERC_EVENT(name='Burned', parameters=['address', 'address', 'uint256', 'bytes', 'bytes'], indexes=[True, True, False, False, False])])]
ERC777_signatures =
['name()', 'symbol()', 'totalSupply()', 'balanceOf(address)', 'granularity()', 'defaultOperators()', 'isOperatorFor(address,address)', 'authorizeOperator(address)', 'revokeOperator(address)', 'send(address,uint256,bytes)', 'operatorSend(address,address,uint256,bytes,bytes)', 'burn(uint256,bytes)', 'operatorBurn(address,uint256,bytes,bytes)']
ERC1155_transfersingle_event =
ERC_EVENT(name='TransferSingle', parameters=['address', 'address', 'address', 'uint256', 'uint256'], indexes=[True, True, True, False, False])
ERC1155_transferbatch_event =
ERC_EVENT(name='TransferBatch', parameters=['address', 'address', 'address', 'uint256[]', 'uint256[]'], indexes=[True, True, True, False, False])
ERC1155_approvalforall_event =
ERC_EVENT(name='ApprovalForAll', parameters=['address', 'address', 'bool'], indexes=[True, True, False])
ERC1155_uri_event =
ERC_EVENT(name='URI', parameters=['string', 'uint256'], indexes=[False, True])
ERC1155_EVENTS =
[ERC_EVENT(name='TransferSingle', parameters=['address', 'address', 'address', 'uint256', 'uint256'], indexes=[True, True, True, False, False]), ERC_EVENT(name='TransferBatch', parameters=['address', 'address', 'address', 'uint256[]', 'uint256[]'], indexes=[True, True, True, False, False]), ERC_EVENT(name='ApprovalForAll', parameters=['address', 'address', 'bool'], indexes=[True, True, False]), ERC_EVENT(name='URI', parameters=['string', 'uint256'], indexes=[False, True])]
ERC1155 =
[ERC(name='safeTransferFrom', parameters=['address', 'address', 'uint256', 'uint256', 'bytes'], return_type='', view=False, required=True, events=[ERC_EVENT(name='TransferSingle', parameters=['address', 'address', 'address', 'uint256', 'uint256'], indexes=[True, True, True, False, False])]), ERC(name='safeBatchTransferFrom', parameters=['address', 'address', 'uint256[]', 'uint256[]', 'bytes'], return_type='', view=False, required=True, events=[]), ERC(name='balanceOf', parameters=['address', 'uint256'], return_type='uint256', view=True, required=True, events=[]), ERC(name='balanceOfBatch', parameters=['address[]', 'uint256[]'], return_type='uint256[]', view=True, required=True, events=[]), ERC(name='setApprovalForAll', parameters=['address', 'bool'], return_type='', view=False, required=True, events=[ERC_EVENT(name='ApprovalForAll', parameters=['address', 'address', 'bool'], indexes=[True, True, False])]), ERC(name='isApprovedForAll', parameters=['address', 'address'], return_type='bool', view=True, required=True, events=[]), ERC(name='supportsInterface', parameters=['bytes4'], return_type='bool', view=True, required=True, events=[]), ERC(name='onERC1155Received', parameters=['address', 'address', 'uint256', 'uint256', 'bytes'], return_type='bytes4', view=False, required=False, events=[]), ERC(name='onERC1155BatchReceived', parameters=['address', 'address', 'uint256[]', 'uint256[]', 'bytes'], return_type='bytes4', view=False, required=False, events=[]), ERC(name='uri', parameters=['uint256'], return_type='string', view=True, required=False, events=[])]
ERC1155_TOKEN_RECEIVER =
[ERC(name='onERC1155Received', parameters=['address', 'address', 'uint256', 'uint256', 'bytes'], return_type='bytes4', view=False, required=False, events=[]), ERC(name='onERC1155BatchReceived', parameters=['address', 'address', 'uint256[]', 'uint256[]', 'bytes'], return_type='bytes4', view=False, required=False, events=[])]
ERC1155_METADATA =
[ERC(name='uri', parameters=['uint256'], return_type='string', view=True, required=False, events=[])]
ERC1155_signatures =
['safeTransferFrom(address,address,uint256,uint256,bytes)', 'safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)', 'balanceOf(address,uint256)', 'balanceOfBatch(address[],uint256[])', 'setApprovalForAll(address,bool)', 'isApprovedForAll(address,address)', 'supportsInterface(bytes4)']
ERC2612_EVENTS =
[]
ERC2612 =
[ERC(name='permit', parameters=['address', 'address', 'uint256', 'uint256', 'uint8', 'bytes32', 'bytes32'], return_type='', view=False, required=True, events=[]), ERC(name='nonces', parameters=['address'], return_type='uint256', view=True, required=True, events=[]), ERC(name='DOMAIN_SEPARATOR', parameters=[], return_type='bytes32', view=True, required=True, events=[]), ERC(name='totalSupply', parameters=[], return_type='uint256', view=True, required=True, events=[]), ERC(name='balanceOf', parameters=['address'], return_type='uint256', view=True, required=True, events=[]), ERC(name='transfer', parameters=['address', 'uint256'], return_type='bool', view=False, required=True, events=[ERC_EVENT(name='Transfer', parameters=['address', 'address', 'uint256'], indexes=[True, True, False])]), ERC(name='transferFrom', parameters=['address', 'address', 'uint256'], return_type='bool', view=False, required=True, events=[ERC_EVENT(name='Transfer', parameters=['address', 'address', 'uint256'], indexes=[True, True, False])]), ERC(name='approve', parameters=['address', 'uint256'], return_type='bool', view=False, required=True, events=[ERC_EVENT(name='Approval', parameters=['address', 'address', 'uint256'], indexes=[True, True, False])]), ERC(name='allowance', parameters=['address', 'address'], return_type='uint256', view=True, required=True, events=[]), ERC(name='name', parameters=[], return_type='string', view=True, required=False, events=[]), ERC(name='symbol', parameters=[], return_type='string', view=True, required=False, events=[]), ERC(name='decimals', parameters=[], return_type='uint8', view=True, required=False, events=[])]
ERC2612_signatures =
['permit(address,address,uint256,uint256,uint8,bytes32,bytes32)', 'nonces(address)', 'DOMAIN_SEPARATOR()', 'totalSupply()', 'balanceOf(address)', 'transfer(address,uint256)', 'transferFrom(address,address,uint256)', 'approve(address,uint256)', 'allowance(address,address)']
ERC1363_EVENTS =
[]
ERC1363 =
[ERC(name='transferAndCall', parameters=['address', 'uint256'], return_type='bool', view=False, required=True, events=[]), ERC(name='transferAndCall', parameters=['address', 'uint256', 'bytes'], return_type='bool', view=False, required=True, events=[]), ERC(name='transferFromAndCall', parameters=['address', 'address', 'uint256'], return_type='bool', view=False, required=True, events=[]), ERC(name='transferFromAndCall', parameters=['address', 'address', 'uint256', 'bytes'], return_type='bool', view=False, required=True, events=[]), ERC(name='approveAndCall', parameters=['address', 'uint256'], return_type='bool', view=False, required=True, events=[]), ERC(name='approveAndCall', parameters=['address', 'uint256', 'bytes'], return_type='bool', view=False, required=True, events=[]), ERC(name='totalSupply', parameters=[], return_type='uint256', view=True, required=True, events=[]), ERC(name='balanceOf', parameters=['address'], return_type='uint256', view=True, required=True, events=[]), ERC(name='transfer', parameters=['address', 'uint256'], return_type='bool', view=False, required=True, events=[ERC_EVENT(name='Transfer', parameters=['address', 'address', 'uint256'], indexes=[True, True, False])]), ERC(name='transferFrom', parameters=['address', 'address', 'uint256'], return_type='bool', view=False, required=True, events=[ERC_EVENT(name='Transfer', parameters=['address', 'address', 'uint256'], indexes=[True, True, False])]), ERC(name='approve', parameters=['address', 'uint256'], return_type='bool', view=False, required=True, events=[ERC_EVENT(name='Approval', parameters=['address', 'address', 'uint256'], indexes=[True, True, False])]), ERC(name='allowance', parameters=['address', 'address'], return_type='uint256', view=True, required=True, events=[]), ERC(name='name', parameters=[], return_type='string', view=True, required=False, events=[]), ERC(name='symbol', parameters=[], return_type='string', view=True, required=False, events=[]), ERC(name='decimals', parameters=[], return_type='uint8', view=True, required=False, events=[]), ERC(name='supportsInterface', parameters=['bytes4'], return_type='bool', view=True, required=True, events=[])]
ERC1363_signatures =
['transferAndCall(address,uint256)', 'transferAndCall(address,uint256,bytes)', 'transferFromAndCall(address,address,uint256)', 'transferFromAndCall(address,address,uint256,bytes)', 'approveAndCall(address,uint256)', 'approveAndCall(address,uint256,bytes)', 'totalSupply()', 'balanceOf(address)', 'transfer(address,uint256)', 'transferFrom(address,address,uint256)', 'approve(address,uint256)', 'allowance(address,address)', 'supportsInterface(bytes4)']
ERC4524_EVENTS =
[]
ERC4524 =
[ERC(name='safeTransfer', parameters=['address', 'uint256'], return_type='bool', view=False, required=True, events=[]), ERC(name='safeTransfer', parameters=['address', 'uint256', 'bytes'], return_type='bool', view=False, required=True, events=[]), ERC(name='safeTransferFrom', parameters=['address', 'address', 'uint256'], return_type='bool', view=False, required=True, events=[]), ERC(name='safeTransferFrom', parameters=['address', 'address', 'uint256', 'bytes'], return_type='bool', view=False, required=True, events=[]), ERC(name='totalSupply', parameters=[], return_type='uint256', view=True, required=True, events=[]), ERC(name='balanceOf', parameters=['address'], return_type='uint256', view=True, required=True, events=[]), ERC(name='transfer', parameters=['address', 'uint256'], return_type='bool', view=False, required=True, events=[ERC_EVENT(name='Transfer', parameters=['address', 'address', 'uint256'], indexes=[True, True, False])]), ERC(name='transferFrom', parameters=['address', 'address', 'uint256'], return_type='bool', view=False, required=True, events=[ERC_EVENT(name='Transfer', parameters=['address', 'address', 'uint256'], indexes=[True, True, False])]), ERC(name='approve', parameters=['address', 'uint256'], return_type='bool', view=False, required=True, events=[ERC_EVENT(name='Approval', parameters=['address', 'address', 'uint256'], indexes=[True, True, False])]), ERC(name='allowance', parameters=['address', 'address'], return_type='uint256', view=True, required=True, events=[]), ERC(name='name', parameters=[], return_type='string', view=True, required=False, events=[]), ERC(name='symbol', parameters=[], return_type='string', view=True, required=False, events=[]), ERC(name='decimals', parameters=[], return_type='uint8', view=True, required=False, events=[]), ERC(name='supportsInterface', parameters=['bytes4'], return_type='bool', view=True, required=True, events=[])]
ERC4524_signatures =
['safeTransfer(address,uint256)', 'safeTransfer(address,uint256,bytes)', 'safeTransferFrom(address,address,uint256)', 'safeTransferFrom(address,address,uint256,bytes)', 'totalSupply()', 'balanceOf(address)', 'transfer(address,uint256)', 'transferFrom(address,address,uint256)', 'approve(address,uint256)', 'allowance(address,address)', 'supportsInterface(bytes4)']
ERC4626_deposit_event =
ERC_EVENT(name='Deposit', parameters=['address', 'address', 'uint256', 'uint256'], indexes=[True, True, False, False])
ERC4626_withdraw_event =
ERC_EVENT(name='Withdraw', parameters=['address', 'address', 'address', 'uint256', 'uint256'], indexes=[True, True, True, False, False])
ERC4626_EVENTS =
[ERC_EVENT(name='Deposit', parameters=['address', 'address', 'uint256', 'uint256'], indexes=[True, True, False, False]), ERC_EVENT(name='Withdraw', parameters=['address', 'address', 'address', 'uint256', 'uint256'], indexes=[True, True, True, False, False])]
ERC4626 =
[ERC(name='asset', parameters=[], return_type='address', view=True, required=True, events=[]), ERC(name='totalAssets', parameters=[], return_type='uint256', view=True, required=True, events=[]), ERC(name='convertToShares', parameters=['uint256'], return_type='uint256', view=True, required=True, events=[]), ERC(name='convertToAssets', parameters=['uint256'], return_type='uint256', view=True, required=True, events=[]), ERC(name='maxDeposit', parameters=['address'], return_type='uint256', view=True, required=True, events=[]), ERC(name='previewDeposit', parameters=['uint256'], return_type='uint256', view=True, required=True, events=[]), ERC(name='deposit', parameters=['uint256', 'address'], return_type='uint256', view=False, required=True, events=[ERC_EVENT(name='Deposit', parameters=['address', 'address', 'uint256', 'uint256'], indexes=[True, True, False, False])]), ERC(name='maxMint', parameters=['address'], return_type='uint256', view=True, required=True, events=[]), ERC(name='previewMint', parameters=['uint256'], return_type='uint256', view=True, required=True, events=[]), ERC(name='mint', parameters=['uint256', 'address'], return_type='uint256', view=False, required=True, events=[ERC_EVENT(name='Deposit', parameters=['address', 'address', 'uint256', 'uint256'], indexes=[True, True, False, False])]), ERC(name='maxWithdraw', parameters=['address'], return_type='uint256', view=True, required=True, events=[]), ERC(name='previewWithdraw', parameters=['uint256'], return_type='uint256', view=True, required=True, events=[]), ERC(name='withdraw', parameters=['uint256', 'address', 'address'], return_type='uint256', view=False, required=True, events=[ERC_EVENT(name='Withdraw', parameters=['address', 'address', 'address', 'uint256', 'uint256'], indexes=[True, True, True, False, False])]), ERC(name='maxRedeem', parameters=['address'], return_type='uint256', view=True, required=True, events=[]), ERC(name='previewRedeem', parameters=['uint256'], return_type='uint256', view=True, required=True, events=[]), ERC(name='redeem', parameters=['uint256', 'address', 'address'], return_type='uint256', view=False, required=True, events=[ERC_EVENT(name='Withdraw', parameters=['address', 'address', 'address', 'uint256', 'uint256'], indexes=[True, True, True, False, False])]), ERC(name='totalSupply', parameters=[], return_type='uint256', view=True, required=True, events=[]), ERC(name='balanceOf', parameters=['address'], return_type='uint256', view=True, required=True, events=[]), ERC(name='transfer', parameters=['address', 'uint256'], return_type='bool', view=False, required=True, events=[ERC_EVENT(name='Transfer', parameters=['address', 'address', 'uint256'], indexes=[True, True, False])]), ERC(name='transferFrom', parameters=['address', 'address', 'uint256'], return_type='bool', view=False, required=True, events=[ERC_EVENT(name='Transfer', parameters=['address', 'address', 'uint256'], indexes=[True, True, False])]), ERC(name='approve', parameters=['address', 'uint256'], return_type='bool', view=False, required=True, events=[ERC_EVENT(name='Approval', parameters=['address', 'address', 'uint256'], indexes=[True, True, False])]), ERC(name='allowance', parameters=['address', 'address'], return_type='uint256', view=True, required=True, events=[]), ERC(name='name', parameters=[], return_type='string', view=True, required=False, events=[]), ERC(name='symbol', parameters=[], return_type='string', view=True, required=False, events=[]), ERC(name='decimals', parameters=[], return_type='uint8', view=True, required=False, events=[])]
ERC4626_signatures =
['asset()', 'totalAssets()', 'convertToShares(uint256)', 'convertToAssets(uint256)', 'maxDeposit(address)', 'previewDeposit(uint256)', 'deposit(uint256,address)', 'maxMint(address)', 'previewMint(uint256)', 'mint(uint256,address)', 'maxWithdraw(address)', 'previewWithdraw(uint256)', 'withdraw(uint256,address,address)', 'maxRedeem(address)', 'previewRedeem(uint256)', 'redeem(uint256,address,address)', 'totalSupply()', 'balanceOf(address)', 'transfer(address,uint256)', 'transferFrom(address,address,uint256)', 'approve(address,uint256)', 'allowance(address,address)']
ERCS =
{'ERC20': ([ERC(name='totalSupply', parameters=[], return_type='uint256', view=True, required=True, events=[]), ERC(name='balanceOf', parameters=['address'], return_type='uint256', view=True, required=True, events=[]), ERC(name='transfer', parameters=['address', 'uint256'], return_type='bool', view=False, required=True, events=[ERC_EVENT(name='Transfer', parameters=['address', 'address', 'uint256'], indexes=[True, True, False])]), ERC(name='transferFrom', parameters=['address', 'address', 'uint256'], return_type='bool', view=False, required=True, events=[ERC_EVENT(name='Transfer', parameters=['address', 'address', 'uint256'], indexes=[True, True, False])]), ERC(name='approve', parameters=['address', 'uint256'], return_type='bool', view=False, required=True, events=[ERC_EVENT(name='Approval', parameters=['address', 'address', 'uint256'], indexes=[True, True, False])]), ERC(name='allowance', parameters=['address', 'address'], return_type='uint256', view=True, required=True, events=[]), ERC(name='name', parameters=[], return_type='string', view=True, required=False, events=[]), ERC(name='symbol', parameters=[], return_type='string', view=True, required=False, events=[]), ERC(name='decimals', parameters=[], return_type='uint8', view=True, required=False, events=[])], [ERC_EVENT(name='Transfer', parameters=['address', 'address', 'uint256'], indexes=[True, True, False]), ERC_EVENT(name='Approval', parameters=['address', 'address', 'uint256'], indexes=[True, True, False])]), 'ERC223': ([ERC(name='name', parameters=[], return_type='string', view=True, required=True, events=[]), ERC(name='symbol', parameters=[], return_type='string', view=True, required=True, events=[]), ERC(name='decimals', parameters=[], return_type='uint8', view=True, required=True, events=[]), ERC(name='totalSupply', parameters=[], return_type='uint256', view=True, required=True, events=[]), ERC(name='balanceOf', parameters=['address'], return_type='uint256', view=True, required=True, events=[]), ERC(name='transfer', parameters=['address', 'uint256'], return_type='bool', view=False, required=True, events=[ERC_EVENT(name='Transfer', parameters=['address', 'address', 'uint256', 'bytes'], indexes=[True, True, False, False])]), ERC(name='transfer', parameters=['address', 'uint256', 'bytes'], return_type='bool', view=False, required=True, events=[ERC_EVENT(name='Transfer', parameters=['address', 'address', 'uint256', 'bytes'], indexes=[True, True, False, False])]), ERC(name='transfer', parameters=['address', 'uint256', 'bytes', 'string'], return_type='bool', view=False, required=True, events=[ERC_EVENT(name='Transfer', parameters=['address', 'address', 'uint256', 'bytes'], indexes=[True, True, False, False])])], [ERC_EVENT(name='Transfer', parameters=['address', 'address', 'uint256', 'bytes'], indexes=[True, True, False, False])]), 'ERC165': ([ERC(name='supportsInterface', parameters=['bytes4'], return_type='bool', view=True, required=True, events=[])], []), 'ERC721': ([ERC(name='balanceOf', parameters=['address'], return_type='uint256', view=True, required=True, events=[]), ERC(name='ownerOf', parameters=['uint256'], return_type='address', view=True, required=True, events=[]), ERC(name='safeTransferFrom', parameters=['address', 'address', 'uint256', 'bytes'], return_type='', view=False, required=True, events=[ERC_EVENT(name='Transfer', parameters=['address', 'address', 'uint256'], indexes=[True, True, True])]), ERC(name='safeTransferFrom', parameters=['address', 'address', 'uint256'], return_type='', view=False, required=True, events=[ERC_EVENT(name='Transfer', parameters=['address', 'address', 'uint256'], indexes=[True, True, True])]), ERC(name='transferFrom', parameters=['address', 'address', 'uint256'], return_type='', view=False, required=True, events=[ERC_EVENT(name='Transfer', parameters=['address', 'address', 'uint256'], indexes=[True, True, True])]), ERC(name='approve', parameters=['address', 'uint256'], return_type='', view=False, required=True, events=[ERC_EVENT(name='Approval', parameters=['address', 'address', 'uint256'], indexes=[True, True, True])]), ERC(name='setApprovalForAll', parameters=['address', 'bool'], return_type='', view=False, required=True, events=[ERC_EVENT(name='ApprovalForAll', parameters=['address', 'address', 'bool'], indexes=[True, True, False])]), ERC(name='getApproved', parameters=['uint256'], return_type='address', view=True, required=True, events=[]), ERC(name='isApprovedForAll', parameters=['address', 'address'], return_type='bool', view=True, required=True, events=[]), ERC(name='supportsInterface', parameters=['bytes4'], return_type='bool', view=True, required=True, events=[]), ERC(name='name', parameters=[], return_type='string', view=True, required=False, events=[]), ERC(name='symbol', parameters=[], return_type='string', view=False, required=False, events=[]), ERC(name='tokenURI', parameters=['uint256'], return_type='string', view=False, required=False, events=[])], [ERC_EVENT(name='Transfer', parameters=['address', 'address', 'uint256'], indexes=[True, True, True]), ERC_EVENT(name='Approval', parameters=['address', 'address', 'uint256'], indexes=[True, True, True]), ERC_EVENT(name='ApprovalForAll', parameters=['address', 'address', 'bool'], indexes=[True, True, False])]), 'ERC1820': ([ERC(name='canImplementInterfaceForAddress', parameters=['bytes32', 'address'], return_type='bytes32', view=True, required=True, events=[])], []), 'ERC777': ([ERC(name='name', parameters=[], return_type='string', view=True, required=True, events=[]), ERC(name='symbol', parameters=[], return_type='string', view=True, required=True, events=[]), ERC(name='totalSupply', parameters=[], return_type='uint256', view=True, required=True, events=[]), ERC(name='balanceOf', parameters=['address'], return_type='uint256', view=True, required=True, events=[]), ERC(name='granularity', parameters=[], return_type='uint256', view=True, required=True, events=[]), ERC(name='defaultOperators', parameters=[], return_type='address[]', view=True, required=True, events=[]), ERC(name='isOperatorFor', parameters=['address', 'address'], return_type='bool', view=True, required=True, events=[]), ERC(name='authorizeOperator', parameters=['address'], return_type='', view=False, required=True, events=[ERC_EVENT(name='AuthorizedOperator', parameters=['address', 'address'], indexes=[True, True])]), ERC(name='revokeOperator', parameters=['address'], return_type='', view=False, required=True, events=[ERC_EVENT(name='RevokedOperator', parameters=['address', 'address'], indexes=[True, True])]), ERC(name='send', parameters=['address', 'uint256', 'bytes'], return_type='', view=False, required=True, events=[ERC_EVENT(name='Sent', parameters=['address', 'address', 'address', 'uint256', 'bytes', 'bytes'], indexes=[True, True, True, False, False, False])]), ERC(name='operatorSend', parameters=['address', 'address', 'uint256', 'bytes', 'bytes'], return_type='', view=False, required=True, events=[ERC_EVENT(name='Sent', parameters=['address', 'address', 'address', 'uint256', 'bytes', 'bytes'], indexes=[True, True, True, False, False, False])]), ERC(name='burn', parameters=['uint256', 'bytes'], return_type='', view=False, required=True, events=[ERC_EVENT(name='Burned', parameters=['address', 'address', 'uint256', 'bytes', 'bytes'], indexes=[True, True, False, False, False])]), ERC(name='operatorBurn', parameters=['address', 'uint256', 'bytes', 'bytes'], return_type='', view=False, required=True, events=[ERC_EVENT(name='Burned', parameters=['address', 'address', 'uint256', 'bytes', 'bytes'], indexes=[True, True, False, False, False])])], [ERC_EVENT(name='Sent', parameters=['address', 'address', 'address', 'uint256', 'bytes', 'bytes'], indexes=[True, True, True, False, False, False]), ERC_EVENT(name='Minted', parameters=['address', 'address', 'uint256', 'bytes', 'bytes'], indexes=[True, True, False, False, False]), ERC_EVENT(name='Burned', parameters=['address', 'address', 'uint256', 'bytes', 'bytes'], indexes=[True, True, False, False, False]), ERC_EVENT(name='AuthorizedOperator', parameters=['address', 'address'], indexes=[True, True]), ERC_EVENT(name='RevokedOperator', parameters=['address', 'address'], indexes=[True, True])]), 'ERC1155': ([ERC(name='safeTransferFrom', parameters=['address', 'address', 'uint256', 'uint256', 'bytes'], return_type='', view=False, required=True, events=[ERC_EVENT(name='TransferSingle', parameters=['address', 'address', 'address', 'uint256', 'uint256'], indexes=[True, True, True, False, False])]), ERC(name='safeBatchTransferFrom', parameters=['address', 'address', 'uint256[]', 'uint256[]', 'bytes'], return_type='', view=False, required=True, events=[]), ERC(name='balanceOf', parameters=['address', 'uint256'], return_type='uint256', view=True, required=True, events=[]), ERC(name='balanceOfBatch', parameters=['address[]', 'uint256[]'], return_type='uint256[]', view=True, required=True, events=[]), ERC(name='setApprovalForAll', parameters=['address', 'bool'], return_type='', view=False, required=True, events=[ERC_EVENT(name='ApprovalForAll', parameters=['address', 'address', 'bool'], indexes=[True, True, False])]), ERC(name='isApprovedForAll', parameters=['address', 'address'], return_type='bool', view=True, required=True, events=[]), ERC(name='supportsInterface', parameters=['bytes4'], return_type='bool', view=True, required=True, events=[]), ERC(name='onERC1155Received', parameters=['address', 'address', 'uint256', 'uint256', 'bytes'], return_type='bytes4', view=False, required=False, events=[]), ERC(name='onERC1155BatchReceived', parameters=['address', 'address', 'uint256[]', 'uint256[]', 'bytes'], return_type='bytes4', view=False, required=False, events=[]), ERC(name='uri', parameters=['uint256'], return_type='string', view=True, required=False, events=[])], [ERC_EVENT(name='TransferSingle', parameters=['address', 'address', 'address', 'uint256', 'uint256'], indexes=[True, True, True, False, False]), ERC_EVENT(name='TransferBatch', parameters=['address', 'address', 'address', 'uint256[]', 'uint256[]'], indexes=[True, True, True, False, False]), ERC_EVENT(name='ApprovalForAll', parameters=['address', 'address', 'bool'], indexes=[True, True, False]), ERC_EVENT(name='URI', parameters=['string', 'uint256'], indexes=[False, True])]), 'ERC2612': ([ERC(name='permit', parameters=['address', 'address', 'uint256', 'uint256', 'uint8', 'bytes32', 'bytes32'], return_type='', view=False, required=True, events=[]), ERC(name='nonces', parameters=['address'], return_type='uint256', view=True, required=True, events=[]), ERC(name='DOMAIN_SEPARATOR', parameters=[], return_type='bytes32', view=True, required=True, events=[]), ERC(name='totalSupply', parameters=[], return_type='uint256', view=True, required=True, events=[]), ERC(name='balanceOf', parameters=['address'], return_type='uint256', view=True, required=True, events=[]), ERC(name='transfer', parameters=['address', 'uint256'], return_type='bool', view=False, required=True, events=[ERC_EVENT(name='Transfer', parameters=['address', 'address', 'uint256'], indexes=[True, True, False])]), ERC(name='transferFrom', parameters=['address', 'address', 'uint256'], return_type='bool', view=False, required=True, events=[ERC_EVENT(name='Transfer', parameters=['address', 'address', 'uint256'], indexes=[True, True, False])]), ERC(name='approve', parameters=['address', 'uint256'], return_type='bool', view=False, required=True, events=[ERC_EVENT(name='Approval', parameters=['address', 'address', 'uint256'], indexes=[True, True, False])]), ERC(name='allowance', parameters=['address', 'address'], return_type='uint256', view=True, required=True, events=[]), ERC(name='name', parameters=[], return_type='string', view=True, required=False, events=[]), ERC(name='symbol', parameters=[], return_type='string', view=True, required=False, events=[]), ERC(name='decimals', parameters=[], return_type='uint8', view=True, required=False, events=[])], []), 'ERC1363': ([ERC(name='transferAndCall', parameters=['address', 'uint256'], return_type='bool', view=False, required=True, events=[]), ERC(name='transferAndCall', parameters=['address', 'uint256', 'bytes'], return_type='bool', view=False, required=True, events=[]), ERC(name='transferFromAndCall', parameters=['address', 'address', 'uint256'], return_type='bool', view=False, required=True, events=[]), ERC(name='transferFromAndCall', parameters=['address', 'address', 'uint256', 'bytes'], return_type='bool', view=False, required=True, events=[]), ERC(name='approveAndCall', parameters=['address', 'uint256'], return_type='bool', view=False, required=True, events=[]), ERC(name='approveAndCall', parameters=['address', 'uint256', 'bytes'], return_type='bool', view=False, required=True, events=[]), ERC(name='totalSupply', parameters=[], return_type='uint256', view=True, required=True, events=[]), ERC(name='balanceOf', parameters=['address'], return_type='uint256', view=True, required=True, events=[]), ERC(name='transfer', parameters=['address', 'uint256'], return_type='bool', view=False, required=True, events=[ERC_EVENT(name='Transfer', parameters=['address', 'address', 'uint256'], indexes=[True, True, False])]), ERC(name='transferFrom', parameters=['address', 'address', 'uint256'], return_type='bool', view=False, required=True, events=[ERC_EVENT(name='Transfer', parameters=['address', 'address', 'uint256'], indexes=[True, True, False])]), ERC(name='approve', parameters=['address', 'uint256'], return_type='bool', view=False, required=True, events=[ERC_EVENT(name='Approval', parameters=['address', 'address', 'uint256'], indexes=[True, True, False])]), ERC(name='allowance', parameters=['address', 'address'], return_type='uint256', view=True, required=True, events=[]), ERC(name='name', parameters=[], return_type='string', view=True, required=False, events=[]), ERC(name='symbol', parameters=[], return_type='string', view=True, required=False, events=[]), ERC(name='decimals', parameters=[], return_type='uint8', view=True, required=False, events=[]), ERC(name='supportsInterface', parameters=['bytes4'], return_type='bool', view=True, required=True, events=[])], []), 'ERC4524': ([ERC(name='safeTransfer', parameters=['address', 'uint256'], return_type='bool', view=False, required=True, events=[]), ERC(name='safeTransfer', parameters=['address', 'uint256', 'bytes'], return_type='bool', view=False, required=True, events=[]), ERC(name='safeTransferFrom', parameters=['address', 'address', 'uint256'], return_type='bool', view=False, required=True, events=[]), ERC(name='safeTransferFrom', parameters=['address', 'address', 'uint256', 'bytes'], return_type='bool', view=False, required=True, events=[]), ERC(name='totalSupply', parameters=[], return_type='uint256', view=True, required=True, events=[]), ERC(name='balanceOf', parameters=['address'], return_type='uint256', view=True, required=True, events=[]), ERC(name='transfer', parameters=['address', 'uint256'], return_type='bool', view=False, required=True, events=[ERC_EVENT(name='Transfer', parameters=['address', 'address', 'uint256'], indexes=[True, True, False])]), ERC(name='transferFrom', parameters=['address', 'address', 'uint256'], return_type='bool', view=False, required=True, events=[ERC_EVENT(name='Transfer', parameters=['address', 'address', 'uint256'], indexes=[True, True, False])]), ERC(name='approve', parameters=['address', 'uint256'], return_type='bool', view=False, required=True, events=[ERC_EVENT(name='Approval', parameters=['address', 'address', 'uint256'], indexes=[True, True, False])]), ERC(name='allowance', parameters=['address', 'address'], return_type='uint256', view=True, required=True, events=[]), ERC(name='name', parameters=[], return_type='string', view=True, required=False, events=[]), ERC(name='symbol', parameters=[], return_type='string', view=True, required=False, events=[]), ERC(name='decimals', parameters=[], return_type='uint8', view=True, required=False, events=[]), ERC(name='supportsInterface', parameters=['bytes4'], return_type='bool', view=True, required=True, events=[])], []), 'ERC4626': ([ERC(name='asset', parameters=[], return_type='address', view=True, required=True, events=[]), ERC(name='totalAssets', parameters=[], return_type='uint256', view=True, required=True, events=[]), ERC(name='convertToShares', parameters=['uint256'], return_type='uint256', view=True, required=True, events=[]), ERC(name='convertToAssets', parameters=['uint256'], return_type='uint256', view=True, required=True, events=[]), ERC(name='maxDeposit', parameters=['address'], return_type='uint256', view=True, required=True, events=[]), ERC(name='previewDeposit', parameters=['uint256'], return_type='uint256', view=True, required=True, events=[]), ERC(name='deposit', parameters=['uint256', 'address'], return_type='uint256', view=False, required=True, events=[ERC_EVENT(name='Deposit', parameters=['address', 'address', 'uint256', 'uint256'], indexes=[True, True, False, False])]), ERC(name='maxMint', parameters=['address'], return_type='uint256', view=True, required=True, events=[]), ERC(name='previewMint', parameters=['uint256'], return_type='uint256', view=True, required=True, events=[]), ERC(name='mint', parameters=['uint256', 'address'], return_type='uint256', view=False, required=True, events=[ERC_EVENT(name='Deposit', parameters=['address', 'address', 'uint256', 'uint256'], indexes=[True, True, False, False])]), ERC(name='maxWithdraw', parameters=['address'], return_type='uint256', view=True, required=True, events=[]), ERC(name='previewWithdraw', parameters=['uint256'], return_type='uint256', view=True, required=True, events=[]), ERC(name='withdraw', parameters=['uint256', 'address', 'address'], return_type='uint256', view=False, required=True, events=[ERC_EVENT(name='Withdraw', parameters=['address', 'address', 'address', 'uint256', 'uint256'], indexes=[True, True, True, False, False])]), ERC(name='maxRedeem', parameters=['address'], return_type='uint256', view=True, required=True, events=[]), ERC(name='previewRedeem', parameters=['uint256'], return_type='uint256', view=True, required=True, events=[]), ERC(name='redeem', parameters=['uint256', 'address', 'address'], return_type='uint256', view=False, required=True, events=[ERC_EVENT(name='Withdraw', parameters=['address', 'address', 'address', 'uint256', 'uint256'], indexes=[True, True, True, False, False])]), ERC(name='totalSupply', parameters=[], return_type='uint256', view=True, required=True, events=[]), ERC(name='balanceOf', parameters=['address'], return_type='uint256', view=True, required=True, events=[]), ERC(name='transfer', parameters=['address', 'uint256'], return_type='bool', view=False, required=True, events=[ERC_EVENT(name='Transfer', parameters=['address', 'address', 'uint256'], indexes=[True, True, False])]), ERC(name='transferFrom', parameters=['address', 'address', 'uint256'], return_type='bool', view=False, required=True, events=[ERC_EVENT(name='Transfer', parameters=['address', 'address', 'uint256'], indexes=[True, True, False])]), ERC(name='approve', parameters=['address', 'uint256'], return_type='bool', view=False, required=True, events=[ERC_EVENT(name='Approval', parameters=['address', 'address', 'uint256'], indexes=[True, True, False])]), ERC(name='allowance', parameters=['address', 'address'], return_type='uint256', view=True, required=True, events=[]), ERC(name='name', parameters=[], return_type='string', view=True, required=False, events=[]), ERC(name='symbol', parameters=[], return_type='string', view=True, required=False, events=[]), ERC(name='decimals', parameters=[], return_type='uint8', view=True, required=False, events=[])], [ERC_EVENT(name='Deposit', parameters=['address', 'address', 'uint256', 'uint256'], indexes=[True, True, False, False]), ERC_EVENT(name='Withdraw', parameters=['address', 'address', 'address', 'uint256', 'uint256'], indexes=[True, True, True, False, False])])}