UNPKG

@tokamak-network/thanos-contracts

Version:
1 lines 69.8 kB
{"abi":[{"type":"constructor","inputs":[{"name":"_attestationStation","type":"address","internalType":"contract AttestationStation"},{"name":"_allowlistAttestor","type":"address","internalType":"address"},{"name":"_coinbaseQuestAttestor","type":"address","internalType":"address"},{"name":"_optimistInviter","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"ALLOWLIST_ATTESTOR","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"ATTESTATION_STATION","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract AttestationStation"}],"stateMutability":"view"},{"type":"function","name":"COINBASE_QUEST_ATTESTOR","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"COINBASE_QUEST_ELIGIBLE_ATTESTATION_KEY","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"OPTIMIST_CAN_MINT_ATTESTATION_KEY","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"OPTIMIST_INVITER","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isAllowedToMint","inputs":[{"name":"_claimer","type":"address","internalType":"address"}],"outputs":[{"name":"allowed_","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"version","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"}],"bytecode":{"object":"0x61010060405234801561001157600080fd5b506040516106ff3803806106ff8339810160408190526100309161006a565b6001600160a01b0393841660805291831660a052821660c0521660e0526100c9565b6001600160a01b038116811461006757600080fd5b50565b6000806000806080858703121561008057600080fd5b845161008b81610052565b602086015190945061009c81610052565b60408601519093506100ad81610052565b60608601519092506100be81610052565b939692955090935050565b60805160a05160c05160e0516105e261011d6000396000818161014f01526102eb0152600081816092015261029e0152600081816101d201526102510152600081816101ab015261038601526105e26000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063819f7e841161005b578063819f7e8414610171578063db083d71146101a6578063db3c3163146101cd578063e7bd804e146101f457600080fd5b80633ac52df71461008d5780634813d8a6146100de57806354fd4d50146101015780635e4f489a1461014a575b600080fd5b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100f16100ec36600461041d565b61021b565b60405190151581526020016100d5565b61013d6040518060400160405280600581526020017f312e312e3000000000000000000000000000000000000000000000000000000081525081565b6040516100d5919061048a565b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6101987f636f696e626173652e71756573742d656c696769626c6500000000000000000081565b6040519081526020016100d5565b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6101987f6f7074696d6973742e63616e2d6d696e7400000000000000000000000000000081565b60006102268261024a565b80610235575061023582610297565b806102445750610244826102e4565b92915050565b60006102447f0000000000000000000000000000000000000000000000000000000000000000837f6f7074696d6973742e63616e2d6d696e7400000000000000000000000000000061032d565b60006102447f0000000000000000000000000000000000000000000000000000000000000000837f636f696e626173652e71756573742d656c696769626c6500000000000000000061032d565b60006102447f0000000000000000000000000000000000000000000000000000000000000000837f6f7074696d6973742e63616e2d6d696e742d66726f6d2d696e766974650000005b6040517f29b42cb500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015283811660248301526044820183905260009182917f000000000000000000000000000000000000000000000000000000000000000016906329b42cb590606401600060405180830381865afa1580156103cd573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610413919081019061050a565b5111949350505050565b60006020828403121561042f57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461045357600080fd5b9392505050565b60005b8381101561047557818101518382015260200161045d565b83811115610484576000848401525b50505050565b60208152600082518060208401526104a981604085016020870161045a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561051c57600080fd5b815167ffffffffffffffff8082111561053457600080fd5b818401915084601f83011261054857600080fd5b81518181111561055a5761055a6104db565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156105a0576105a06104db565b816040528281528760208487010111156105b957600080fd5b6105ca83602083016020880161045a565b97965050505050505056fea164736f6c634300080f000a","sourceMap":"536:5071:248:-:0;;;1970:386;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2156:41:248;;;;;2207:39;;;;;2256:48;;;;2314:35;;;536:5071;;14:151:416;-1:-1:-1;;;;;109:31:416;;99:42;;89:70;;155:1;152;145:12;89:70;14:151;:::o;170:763::-;296:6;304;312;320;373:3;361:9;352:7;348:23;344:33;341:53;;;390:1;387;380:12;341:53;422:9;416:16;441:51;486:5;441:51;:::i;:::-;561:2;546:18;;540:25;511:5;;-1:-1:-1;574:53:416;540:25;574:53;:::i;:::-;698:2;683:18;;677:25;646:7;;-1:-1:-1;711:53:416;677:25;711:53;:::i;:::-;835:2;820:18;;814:25;783:7;;-1:-1:-1;848:53:416;814:25;848:53;:::i;:::-;170:763;;;;-1:-1:-1;170:763:416;;-1:-1:-1;;170:763:416:o;:::-;536:5071:248;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100885760003560e01c8063819f7e841161005b578063819f7e8414610171578063db083d71146101a6578063db3c3163146101cd578063e7bd804e146101f457600080fd5b80633ac52df71461008d5780634813d8a6146100de57806354fd4d50146101015780635e4f489a1461014a575b600080fd5b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100f16100ec36600461041d565b61021b565b60405190151581526020016100d5565b61013d6040518060400160405280600581526020017f312e312e3000000000000000000000000000000000000000000000000000000081525081565b6040516100d5919061048a565b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6101987f636f696e626173652e71756573742d656c696769626c6500000000000000000081565b6040519081526020016100d5565b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6101987f6f7074696d6973742e63616e2d6d696e7400000000000000000000000000000081565b60006102268261024a565b80610235575061023582610297565b806102445750610244826102e4565b92915050565b60006102447f0000000000000000000000000000000000000000000000000000000000000000837f6f7074696d6973742e63616e2d6d696e7400000000000000000000000000000061032d565b60006102447f0000000000000000000000000000000000000000000000000000000000000000837f636f696e626173652e71756573742d656c696769626c6500000000000000000061032d565b60006102447f0000000000000000000000000000000000000000000000000000000000000000837f6f7074696d6973742e63616e2d6d696e742d66726f6d2d696e766974650000005b6040517f29b42cb500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015283811660248301526044820183905260009182917f000000000000000000000000000000000000000000000000000000000000000016906329b42cb590606401600060405180830381865afa1580156103cd573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610413919081019061050a565b5111949350505050565b60006020828403121561042f57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461045357600080fd5b9392505050565b60005b8381101561047557818101518382015260200161045d565b83811115610484576000848401525b50505050565b60208152600082518060208401526104a981604085016020870161045a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561051c57600080fd5b815167ffffffffffffffff8082111561053457600080fd5b818401915084601f83011261054857600080fd5b81518181111561055a5761055a6104db565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156105a0576105a06104db565b816040528281528760208487010111156105b957600080fd5b6105ca83602083016020880161045a565b97965050505050505056fea164736f6c634300080f000a","sourceMap":"536:5071:248:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1319:48;;;;;;;;190:42:416;178:55;;;160:74;;148:2;133:18;1319:48:248;;;;;;;;3159:267;;;;;;:::i;:::-;;:::i;:::-;;;724:14:416;;717:22;699:41;;687:2;672:18;3159:267:248;559:187:416;1611:40:248;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1500:41::-;;;;;892:100;;958:34;892:100;;;;;1607:25:416;;;1595:2;1580:18;892:100:248;1461:177:416;1059:55:248;;;;;1192:43;;;;;702:88;;762:28;702:88;;3159:267;3223:13;3259:46;3296:8;3259:36;:46::i;:::-;:100;;;;3309:50;3350:8;3309:40;:50::i;:::-;3259:160;;;;3375:44;3410:8;3375:34;:44::i;:::-;3248:171;3159:267;-1:-1:-1;;3159:267:248:o;3680:268::-;3767:11;3856:85;3877:18;3897:8;762:28;3856:20;:85::i;4165:283::-;4256:11;4345:96;4366:23;4391:8;958:34;4345:20;:96::i;4672:322::-;4757:11;4852:135;4886:16;4904:8;388:40:250;5398:207:248;5531:56;;;;;:32;2184:15:416;;;5531:56:248;;;2166:34:416;2236:15;;;2216:18;;;2209:43;2268:18;;;2261:34;;;5499:11:248;;;;5531:19;:32;;;;2078:18:416;;5531:56:248;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:63;:67;;5398:207;-1:-1:-1;;;;5398:207:248:o;245:309:416:-;304:6;357:2;345:9;336:7;332:23;328:32;325:52;;;373:1;370;363:12;325:52;412:9;399:23;462:42;455:5;451:54;444:5;441:65;431:93;;520:1;517;510:12;431:93;543:5;245:309;-1:-1:-1;;;245:309:416:o;751:258::-;823:1;833:113;847:6;844:1;841:13;833:113;;;923:11;;;917:18;904:11;;;897:39;869:2;862:10;833:113;;;964:6;961:1;958:13;955:48;;;999:1;990:6;985:3;981:16;974:27;955:48;;751:258;;;:::o;1014:442::-;1163:2;1152:9;1145:21;1126:4;1195:6;1189:13;1238:6;1233:2;1222:9;1218:18;1211:34;1254:66;1313:6;1308:2;1297:9;1293:18;1288:2;1280:6;1276:15;1254:66;:::i;:::-;1372:2;1360:15;1377:66;1356:88;1341:104;;;;1447:2;1337:113;;1014:442;-1:-1:-1;;1014:442:416:o;2306:184::-;2358:77;2355:1;2348:88;2455:4;2452:1;2445:15;2479:4;2476:1;2469:15;2495:942;2574:6;2627:2;2615:9;2606:7;2602:23;2598:32;2595:52;;;2643:1;2640;2633:12;2595:52;2676:9;2670:16;2705:18;2746:2;2738:6;2735:14;2732:34;;;2762:1;2759;2752:12;2732:34;2800:6;2789:9;2785:22;2775:32;;2845:7;2838:4;2834:2;2830:13;2826:27;2816:55;;2867:1;2864;2857:12;2816:55;2896:2;2890:9;2918:2;2914;2911:10;2908:36;;;2924:18;;:::i;:::-;3058:2;3052:9;3120:4;3112:13;;2963:66;3108:22;;;3132:2;3104:31;3100:40;3088:53;;;3156:18;;;3176:22;;;3153:46;3150:72;;;3202:18;;:::i;:::-;3242:10;3238:2;3231:22;3277:2;3269:6;3262:18;3317:7;3312:2;3307;3303;3299:11;3295:20;3292:33;3289:53;;;3338:1;3335;3328:12;3289:53;3351:55;3403:2;3398;3390:6;3386:15;3381:2;3377;3373:11;3351:55;:::i;:::-;3425:6;2495:942;-1:-1:-1;;;;;;;2495:942:416:o","linkReferences":{},"immutableReferences":{"118701":[{"start":427,"length":32},{"start":902,"length":32}],"118704":[{"start":466,"length":32},{"start":593,"length":32}],"118707":[{"start":146,"length":32},{"start":670,"length":32}],"118710":[{"start":335,"length":32},{"start":747,"length":32}]}},"methodIdentifiers":{"ALLOWLIST_ATTESTOR()":"db3c3163","ATTESTATION_STATION()":"db083d71","COINBASE_QUEST_ATTESTOR()":"3ac52df7","COINBASE_QUEST_ELIGIBLE_ATTESTATION_KEY()":"819f7e84","OPTIMIST_CAN_MINT_ATTESTATION_KEY()":"e7bd804e","OPTIMIST_INVITER()":"5e4f489a","isAllowedToMint(address)":"4813d8a6","version()":"54fd4d50"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.15+commit.e14f2714\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract AttestationStation\",\"name\":\"_attestationStation\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_allowlistAttestor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_coinbaseQuestAttestor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_optimistInviter\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ALLOWLIST_ATTESTOR\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ATTESTATION_STATION\",\"outputs\":[{\"internalType\":\"contract AttestationStation\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"COINBASE_QUEST_ATTESTOR\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"COINBASE_QUEST_ELIGIBLE_ATTESTATION_KEY\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPTIMIST_CAN_MINT_ATTESTATION_KEY\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPTIMIST_INVITER\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_claimer\",\"type\":\"address\"}],\"name\":\"isAllowedToMint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"allowed_\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"_allowlistAttestor\":\"Address of the allowlist attestor.\",\"_attestationStation\":\"Address of the AttestationStation contract.\",\"_coinbaseQuestAttestor\":\"Address of the Coinbase Quest attestor.\",\"_optimistInviter\":\"Address of the OptimistInviter contract.\"}},\"isAllowedToMint(address)\":{\"params\":{\"_claimer\":\"Address to check.\"},\"returns\":{\"allowed_\":\"Whether or not the address is allowed to mint yet.\"}}},\"stateVariables\":{\"version\":{\"custom:semver\":\"1.1.0\"}},\"title\":\"OptimistAllowlist\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"ALLOWLIST_ATTESTOR()\":{\"notice\":\"Attestor that issues 'optimist.can-mint' attestations.\"},\"ATTESTATION_STATION()\":{\"notice\":\"Address of the AttestationStation contract.\"},\"COINBASE_QUEST_ATTESTOR()\":{\"notice\":\"Attestor that issues 'coinbase.quest-eligible' attestations.\"},\"COINBASE_QUEST_ELIGIBLE_ATTESTATION_KEY()\":{\"notice\":\"Attestation key used by Coinbase to issue attestations for Quest participants.\"},\"OPTIMIST_CAN_MINT_ATTESTATION_KEY()\":{\"notice\":\"Attestation key used by the AllowlistAttestor to manually add addresses to the allowlist.\"},\"OPTIMIST_INVITER()\":{\"notice\":\"Address of OptimistInviter contract that issues 'optimist.can-mint-from-invite' attestations.\"},\"isAllowedToMint(address)\":{\"notice\":\"Checks whether a given address is allowed to mint the Optimist NFT yet. Since the Optimist NFT will also be used as part of the Citizens House, mints are currently restricted. Eventually anyone will be able to mint. Currently, address is allowed to mint if it satisfies any of the following: 1) Has a valid 'optimist.can-mint' attestation from the allowlist attestor. 2) Has a valid 'coinbase.quest-eligible' attestation from Coinbase Quest attestor 3) Has a valid 'optimist.can-mint-from-invite' attestation from the OptimistInviter contract.\"},\"version()\":{\"notice\":\"Semantic version.\"}},\"notice\":\"Source of truth for whether an address is able to mint an Optimist NFT. isAllowedToMint function checks various signals to return boolean value for whether an address is eligible or not.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/periphery/op-nft/OptimistAllowlist.sol\":\"OptimistAllowlist\"},\"evmVersion\":\"london\",\"libraries\":{\"src/tokamak-contracts/USDC/L2/tokamak-USDC/v2/FiatTokenV2_2.sol:SignatureChecker\":\"0x4200000000000000000000000000000000000776\"},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[\":@lib-keccak/=lib/lib-keccak/contracts/lib/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@openzeppelin/contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/\",\":@openzeppelin/contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/contracts/\",\":@rari-capital/solmate/=lib/solmate/\",\":@solady-test/=lib/lib-keccak/lib/solady/test/\",\":@solady/=lib/solady/src/\",\":automate/=lib/automate/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts_v5.0.1/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":gelato/=lib/automate/contracts/\",\":hardhat/=lib/automate/node_modules/hardhat/\",\":kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/\",\":lib-keccak/=lib/lib-keccak/contracts/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/\",\":openzeppelin-contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/\",\":prb-test/=lib/automate/lib/prb-test/src/\",\":prb/-est/=lib/automate/lib/prb-test/src/\",\":safe-contracts/=lib/safe-contracts/contracts/\",\":solady/=lib/solady/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"src/periphery/op-nft/AttestationStation.sol\":{\"keccak256\":\"0x756accab2fc86dbe076dc340af05c06c732815392a8cbab6524dc971d4957208\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4bf7f1a162318d31c39a4d34d46ada80cdacd51c24a110f411ec245c1b6a4ef\",\"dweb:/ipfs/QmScehXXWTKDnUr9ohMb1o8zButujNP9SDAWRSnDy6jpdK\"]},\"src/periphery/op-nft/OptimistAllowlist.sol\":{\"keccak256\":\"0xd05ecf4ac35004c36e862734eb19a70cdc52bf187c52a5bd4b882b7c0bf52d77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca3c5ed23a7ae0e6e2864974a903e5aa5e34959cf8ad05ce946b9dce24482a80\",\"dweb:/ipfs/QmdgnFg8mh1s81qn7kBUkJNtnEpEzh6Q53WL4HjQDDbrfU\"]},\"src/periphery/op-nft/libraries/OptimistConstants.sol\":{\"keccak256\":\"0x901c8a2a333a668ef2a6336a803dd06fea51d4128a38087af4565bff1ae6db8c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87e68615dea2494b1cd8f96d7ad97ccb9556d00539526b53a7ce5314570fc268\",\"dweb:/ipfs/QmZBNNrSVMKz4GDkRJyp5jjV6V4wGN7ySAhDd1pBvbJkS2\"]},\"src/universal/ISemver.sol\":{\"keccak256\":\"0xba34562a8026f59886d2e07d1d58d90b9691d00e0788c6263cef6c22740cab44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0826f998632f83c103c3085bf2e872db79a69022b6d2e0444c83a64ca5283c2a\",\"dweb:/ipfs/QmcJ7PNqkAfKqbjFGRordtAg1v9DvcBSKvdTkVvciLyvQR\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.15+commit.e14f2714"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract AttestationStation","name":"_attestationStation","type":"address"},{"internalType":"address","name":"_allowlistAttestor","type":"address"},{"internalType":"address","name":"_coinbaseQuestAttestor","type":"address"},{"internalType":"address","name":"_optimistInviter","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"stateMutability":"view","type":"function","name":"ALLOWLIST_ATTESTOR","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"ATTESTATION_STATION","outputs":[{"internalType":"contract AttestationStation","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"COINBASE_QUEST_ATTESTOR","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"COINBASE_QUEST_ELIGIBLE_ATTESTATION_KEY","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPTIMIST_CAN_MINT_ATTESTATION_KEY","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPTIMIST_INVITER","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_claimer","type":"address"}],"stateMutability":"view","type":"function","name":"isAllowedToMint","outputs":[{"internalType":"bool","name":"allowed_","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"version","outputs":[{"internalType":"string","name":"","type":"string"}]}],"devdoc":{"kind":"dev","methods":{"constructor":{"params":{"_allowlistAttestor":"Address of the allowlist attestor.","_attestationStation":"Address of the AttestationStation contract.","_coinbaseQuestAttestor":"Address of the Coinbase Quest attestor.","_optimistInviter":"Address of the OptimistInviter contract."}},"isAllowedToMint(address)":{"params":{"_claimer":"Address to check."},"returns":{"allowed_":"Whether or not the address is allowed to mint yet."}}},"version":1},"userdoc":{"kind":"user","methods":{"ALLOWLIST_ATTESTOR()":{"notice":"Attestor that issues 'optimist.can-mint' attestations."},"ATTESTATION_STATION()":{"notice":"Address of the AttestationStation contract."},"COINBASE_QUEST_ATTESTOR()":{"notice":"Attestor that issues 'coinbase.quest-eligible' attestations."},"COINBASE_QUEST_ELIGIBLE_ATTESTATION_KEY()":{"notice":"Attestation key used by Coinbase to issue attestations for Quest participants."},"OPTIMIST_CAN_MINT_ATTESTATION_KEY()":{"notice":"Attestation key used by the AllowlistAttestor to manually add addresses to the allowlist."},"OPTIMIST_INVITER()":{"notice":"Address of OptimistInviter contract that issues 'optimist.can-mint-from-invite' attestations."},"isAllowedToMint(address)":{"notice":"Checks whether a given address is allowed to mint the Optimist NFT yet. Since the Optimist NFT will also be used as part of the Citizens House, mints are currently restricted. Eventually anyone will be able to mint. Currently, address is allowed to mint if it satisfies any of the following: 1) Has a valid 'optimist.can-mint' attestation from the allowlist attestor. 2) Has a valid 'coinbase.quest-eligible' attestation from Coinbase Quest attestor 3) Has a valid 'optimist.can-mint-from-invite' attestation from the OptimistInviter contract."},"version()":{"notice":"Semantic version."}},"version":1}},"settings":{"remappings":["@lib-keccak/=lib/lib-keccak/contracts/lib/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@openzeppelin/contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/","@openzeppelin/contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/contracts/","@rari-capital/solmate/=lib/solmate/","@solady-test/=lib/lib-keccak/lib/solady/test/","@solady/=lib/solady/src/","automate/=lib/automate/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts_v5.0.1/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","gelato/=lib/automate/contracts/","hardhat/=lib/automate/node_modules/hardhat/","kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/","lib-keccak/=lib/lib-keccak/contracts/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/","openzeppelin-contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/","prb-test/=lib/automate/lib/prb-test/src/","prb/-est/=lib/automate/lib/prb-test/src/","safe-contracts/=lib/safe-contracts/contracts/","solady/=lib/solady/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":999999},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/periphery/op-nft/OptimistAllowlist.sol":"OptimistAllowlist"},"evmVersion":"london","libraries":{"src/tokamak-contracts/USDC/L2/tokamak-USDC/v2/FiatTokenV2_2.sol:SignatureChecker":"0x4200000000000000000000000000000000000776"}},"sources":{"src/periphery/op-nft/AttestationStation.sol":{"keccak256":"0x756accab2fc86dbe076dc340af05c06c732815392a8cbab6524dc971d4957208","urls":["bzz-raw://a4bf7f1a162318d31c39a4d34d46ada80cdacd51c24a110f411ec245c1b6a4ef","dweb:/ipfs/QmScehXXWTKDnUr9ohMb1o8zButujNP9SDAWRSnDy6jpdK"],"license":"MIT"},"src/periphery/op-nft/OptimistAllowlist.sol":{"keccak256":"0xd05ecf4ac35004c36e862734eb19a70cdc52bf187c52a5bd4b882b7c0bf52d77","urls":["bzz-raw://ca3c5ed23a7ae0e6e2864974a903e5aa5e34959cf8ad05ce946b9dce24482a80","dweb:/ipfs/QmdgnFg8mh1s81qn7kBUkJNtnEpEzh6Q53WL4HjQDDbrfU"],"license":"MIT"},"src/periphery/op-nft/libraries/OptimistConstants.sol":{"keccak256":"0x901c8a2a333a668ef2a6336a803dd06fea51d4128a38087af4565bff1ae6db8c","urls":["bzz-raw://87e68615dea2494b1cd8f96d7ad97ccb9556d00539526b53a7ce5314570fc268","dweb:/ipfs/QmZBNNrSVMKz4GDkRJyp5jjV6V4wGN7ySAhDd1pBvbJkS2"],"license":"MIT"},"src/universal/ISemver.sol":{"keccak256":"0xba34562a8026f59886d2e07d1d58d90b9691d00e0788c6263cef6c22740cab44","urls":["bzz-raw://0826f998632f83c103c3085bf2e872db79a69022b6d2e0444c83a64ca5283c2a","dweb:/ipfs/QmcJ7PNqkAfKqbjFGRordtAg1v9DvcBSKvdTkVvciLyvQR"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[],"types":{}},"userdoc":{"version":1,"kind":"user","methods":{"ALLOWLIST_ATTESTOR()":{"notice":"Attestor that issues 'optimist.can-mint' attestations."},"ATTESTATION_STATION()":{"notice":"Address of the AttestationStation contract."},"COINBASE_QUEST_ATTESTOR()":{"notice":"Attestor that issues 'coinbase.quest-eligible' attestations."},"COINBASE_QUEST_ELIGIBLE_ATTESTATION_KEY()":{"notice":"Attestation key used by Coinbase to issue attestations for Quest participants."},"OPTIMIST_CAN_MINT_ATTESTATION_KEY()":{"notice":"Attestation key used by the AllowlistAttestor to manually add addresses to the allowlist."},"OPTIMIST_INVITER()":{"notice":"Address of OptimistInviter contract that issues 'optimist.can-mint-from-invite' attestations."},"isAllowedToMint(address)":{"notice":"Checks whether a given address is allowed to mint the Optimist NFT yet. Since the Optimist NFT will also be used as part of the Citizens House, mints are currently restricted. Eventually anyone will be able to mint. Currently, address is allowed to mint if it satisfies any of the following: 1) Has a valid 'optimist.can-mint' attestation from the allowlist attestor. 2) Has a valid 'coinbase.quest-eligible' attestation from Coinbase Quest attestor 3) Has a valid 'optimist.can-mint-from-invite' attestation from the OptimistInviter contract."},"version()":{"notice":"Semantic version."}},"notice":"Source of truth for whether an address is able to mint an Optimist NFT. isAllowedToMint function checks various signals to return boolean value for whether an address is eligible or not."},"devdoc":{"version":1,"kind":"dev","methods":{"constructor":{"params":{"_allowlistAttestor":"Address of the allowlist attestor.","_attestationStation":"Address of the AttestationStation contract.","_coinbaseQuestAttestor":"Address of the Coinbase Quest attestor.","_optimistInviter":"Address of the OptimistInviter contract."}},"isAllowedToMint(address)":{"params":{"_claimer":"Address to check."},"returns":{"allowed_":"Whether or not the address is allowed to mint yet."}}},"title":"OptimistAllowlist"},"ast":{"absolutePath":"src/periphery/op-nft/OptimistAllowlist.sol","id":118846,"exportedSymbols":{"AttestationStation":[118412],"ISemver":[122319],"OptimistAllowlist":[118845],"OptimistConstants":[119194]},"nodeType":"SourceUnit","src":"32:5576:248","nodes":[{"id":118674,"nodeType":"PragmaDirective","src":"32:23:248","nodes":[],"literals":["solidity","0.8",".15"]},{"id":118676,"nodeType":"ImportDirective","src":"57:52:248","nodes":[],"absolutePath":"src/universal/ISemver.sol","file":"src/universal/ISemver.sol","nameLocation":"-1:-1:-1","scope":118846,"sourceUnit":122320,"symbolAliases":[{"foreign":{"id":118675,"name":"ISemver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":122319,"src":"66:7:248","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":118678,"nodeType":"ImportDirective","src":"110:81:248","nodes":[],"absolutePath":"src/periphery/op-nft/AttestationStation.sol","file":"src/periphery/op-nft/AttestationStation.sol","nameLocation":"-1:-1:-1","scope":118846,"sourceUnit":118413,"symbolAliases":[{"foreign":{"id":118677,"name":"AttestationStation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":118412,"src":"119:18:248","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":118680,"nodeType":"ImportDirective","src":"192:89:248","nodes":[],"absolutePath":"src/periphery/op-nft/libraries/OptimistConstants.sol","file":"src/periphery/op-nft/libraries/OptimistConstants.sol","nameLocation":"-1:-1:-1","scope":118846,"sourceUnit":119195,"symbolAliases":[{"foreign":{"id":118679,"name":"OptimistConstants","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119194,"src":"201:17:248","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":118845,"nodeType":"ContractDefinition","src":"536:5071:248","nodes":[{"id":118690,"nodeType":"VariableDeclaration","src":"702:88:248","nodes":[],"constant":true,"documentation":{"id":118684,"nodeType":"StructuredDocumentation","src":"580:117:248","text":"@notice Attestation key used by the AllowlistAttestor to manually add addresses to the\n allowlist."},"functionSelector":"e7bd804e","mutability":"constant","name":"OPTIMIST_CAN_MINT_ATTESTATION_KEY","nameLocation":"726:33:248","scope":118845,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":118685,"name":"bytes32","nodeType":"ElementaryTypeName","src":"702:7:248","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"6f7074696d6973742e63616e2d6d696e74","id":118688,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"770:19:248","typeDescriptions":{"typeIdentifier":"t_stringliteral_052936ee16d89f9e65a9b7bbd8d9b2bc86423aed8540d6da93edb9c52fb226e4","typeString":"literal_string \"optimist.can-mint\""},"value":"optimist.can-mint"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_052936ee16d89f9e65a9b7bbd8d9b2bc86423aed8540d6da93edb9c52fb226e4","typeString":"literal_string \"optimist.can-mint\""}],"id":118687,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"762:7:248","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":118686,"name":"bytes32","nodeType":"ElementaryTypeName","src":"762:7:248","typeDescriptions":{}}},"id":118689,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"762:28:248","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"id":118697,"nodeType":"VariableDeclaration","src":"892:100:248","nodes":[],"constant":true,"documentation":{"id":118691,"nodeType":"StructuredDocumentation","src":"797:90:248","text":"@notice Attestation key used by Coinbase to issue attestations for Quest participants."},"functionSelector":"819f7e84","mutability":"constant","name":"COINBASE_QUEST_ELIGIBLE_ATTESTATION_KEY","nameLocation":"916:39:248","scope":118845,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":118692,"name":"bytes32","nodeType":"ElementaryTypeName","src":"892:7:248","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"636f696e626173652e71756573742d656c696769626c65","id":118695,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"966:25:248","typeDescriptions":{"typeIdentifier":"t_stringliteral_061d62794d2ee045bbdaae9451ac28b2b9e4531061a0cbeb1046dbda1ca3528a","typeString":"literal_string \"coinbase.quest-eligible\""},"value":"coinbase.quest-eligible"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_061d62794d2ee045bbdaae9451ac28b2b9e4531061a0cbeb1046dbda1ca3528a","typeString":"literal_string \"coinbase.quest-eligible\""}],"id":118694,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"958:7:248","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":118693,"name":"bytes32","nodeType":"ElementaryTypeName","src":"958:7:248","typeDescriptions":{}}},"id":118696,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"958:34:248","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"id":118701,"nodeType":"VariableDeclaration","src":"1059:55:248","nodes":[],"constant":false,"documentation":{"id":118698,"nodeType":"StructuredDocumentation","src":"999:55:248","text":"@notice Address of the AttestationStation contract."},"functionSelector":"db083d71","mutability":"immutable","name":"ATTESTATION_STATION","nameLocation":"1095:19:248","scope":118845,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_AttestationStation_$118412","typeString":"contract AttestationStation"},"typeName":{"id":118700,"nodeType":"UserDefinedTypeName","pathNode":{"id":118699,"name":"AttestationStation","nodeType":"IdentifierPath","referencedDeclaration":118412,"src":"1059:18:248"},"referencedDeclaration":118412,"src":"1059:18:248","typeDescriptions":{"typeIdentifier":"t_contract$_AttestationStation_$118412","typeString":"contract AttestationStation"}},"visibility":"public"},{"id":118704,"nodeType":"VariableDeclaration","src":"1192:43:248","nodes":[],"constant":false,"documentation":{"id":118702,"nodeType":"StructuredDocumentation","src":"1121:66:248","text":"@notice Attestor that issues 'optimist.can-mint' attestations."},"functionSelector":"db3c3163","mutability":"immutable","name":"ALLOWLIST_ATTESTOR","nameLocation":"1217:18:248","scope":118845,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":118703,"name":"address","nodeType":"ElementaryTypeName","src":"1192:7:248","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":118707,"nodeType":"VariableDeclaration","src":"1319:48:248","nodes":[],"constant":false,"documentation":{"id":118705,"nodeType":"StructuredDocumentation","src":"1242:72:248","text":"@notice Attestor that issues 'coinbase.quest-eligible' attestations."},"functionSelector":"3ac52df7","mutability":"immutable","name":"COINBASE_QUEST_ATTESTOR","nameLocation":"1344:23:248","scope":118845,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":118706,"name":"address","nodeType":"ElementaryTypeName","src":"1319:7:248","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":118710,"nodeType":"VariableDeclaration","src":"1500:41:248","nodes":[],"constant":false,"documentation":{"id":118708,"nodeType":"StructuredDocumentation","src":"1374:121:248","text":"@notice Address of OptimistInviter contract that issues 'optimist.can-mint-from-invite'\n attestations."},"functionSelector":"5e4f489a","mutability":"immutable","name":"OPTIMIST_INVITER","nameLocation":"1525:16:248","scope":118845,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":118709,"name":"address","nodeType":"ElementaryTypeName","src":"1500:7:248","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":118714,"nodeType":"VariableDeclaration","src":"1611:40:248","nodes":[],"baseFunctions":[122318],"constant":true,"documentation":{"id":118711,"nodeType":"StructuredDocumentation","src":"1548:58:248","text":"@notice Semantic version.\n @custom:semver 1.1.0"},"functionSelector":"54fd4d50","mutability":"constant","name":"version","nameLocation":"1634:7:248","scope":118845,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":118712,"name":"string","nodeType":"ElementaryTypeName","src":"1611:6:248","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"312e312e30","id":118713,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1644:7:248","typeDescriptions":{"typeIdentifier":"t_stringliteral_6815ba53416ba06aff1932cc76b3832272bafab9bc8e066be382e32b06ba5546","typeString":"literal_string \"1.1.0\""},"value":"1.1.0"},"visibility":"public"},{"id":118744,"nodeType":"FunctionDefinition","src":"1970:386:248","nodes":[],"body":{"id":118743,"nodeType":"Block","src":"2146:210:248","nodes":[],"statements":[{"expression":{"id":118729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":118727,"name":"ATTESTATION_STATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":118701,"src":"2156:19:248","typeDescriptions":{"typeIdentifier":"t_contract$_AttestationStation_$118412","typeString":"contract AttestationStation"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":118728,"name":"_attestationStation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":118718,"src":"2178:19:248","typeDescriptions":{"typeIdentifier":"t_contract$_AttestationStation_$118412","typeString":"contract AttestationStation"}},"src":"2156:41:248","typeDescriptions":{"typeIdentifier":"t_contract$_AttestationStation_$118412","typeString":"contract AttestationStation"}},"id":118730,"nodeType":"ExpressionStatement","src":"2156:41:248"},{"expression":{"id":118733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":118731,"name":"ALLOWLIST_ATTESTOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":118704,"src":"2207:18:248","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":118732,"name":"_allowlistAttestor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":118720,"src":"2228:18:248","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2207:39:248","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":118734,"nodeType":"ExpressionStatement","src":"2207:39:248"},{"expression":{"id":118737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":118735,"name":"COINBASE_QUEST_ATTESTOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":118707,"src":"2256:23:248","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":118736,"name":"_coinbaseQuestAttestor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":118722,"src":"2282:22:248","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2256:48:248","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":118738,"nodeType":"ExpressionStatement","src":"2256:48:248"},{"expression":{"id":118741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":118739,"name":"OPTIMIST_INVITER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":118710,"src":"2314:16:248","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":118740,"name":"_optimistInviter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":118724,"src":"2333:16:248","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2314:35:248","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":118742,"nodeType":"ExpressionStatement","src":"2314:35:248"}]},"documentation":{"id":118715,"nodeType":"StructuredDocumentation","src":"1658:307:248","text":"@param _attestationStation Address of the AttestationStation contract.\n @param _allowlistAttestor Address of the allowlist attestor.\n @param _coinbaseQuestAttestor Address of the Coinbase Quest attestor.\n @param _optimistInviter Address of the OptimistInviter contract."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":118725,"nodeType":"ParameterList","parameters":[{"constant":false,"id":118718,"mutability":"mutable","name":"_attestationStation","nameLocation":"2010:19:248","nodeType":"VariableDeclaration","scope":118744,"src":"1991:38:248","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_AttestationStation_$118412","typeString":"contract AttestationStation"},"typeName":{"id":118717,"nodeType":"UserDefinedTypeName","pathNode":{"id":118716,"name":"AttestationStation","nodeType":"IdentifierPath","referencedDeclaration":118412,"src":"1991:18:248"},"referencedDeclaration":118412,"src":"1991:18:248","typeDescriptions":{"typeIdentifier":"t_contract$_AttestationStation_$118412","typeString":"contract AttestationStation"}},"visibility":"internal"},{"constant":false,"id":118720,"mutability":"mutable","name":"_allowlistAttestor","nameLocation":"2047:18:248","nodeType":"VariableDeclaration","scope":118744,"src":"2039:26:248","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":118719,"name":"address","nodeType":"ElementaryTypeName","src":"2039:7:248","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":118722,"mutability":"mutable","name":"_coinbaseQuestAttestor","nameLocation":"2083:22:248","nodeType":"VariableDeclaration","scope":118744,"src":"2075:30:248","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":118721,"name":"address","nodeType":"ElementaryTypeName","src":"2075:7:248","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":118724,"mutability":"mutable","name":"_optimistInviter","nameLocation":"2123:16:248","nodeType":"VariableDeclaration","scope":118744,"src":"2115:24:248","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":118723,"name":"address","nodeType":"ElementaryTypeName","src":"2115:7:248","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1981:164:248"},"returnParameters":{"id":118726,"nodeType":"ParameterList","parameters":[],"src":"2146:0:248"},"scope":118845,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":118767,"nodeType":"FunctionDefinition","src":"3159:267:248","nodes":[],"body":{"id":118766,"nodeType":"Block","src":"3238:188:248","nodes":[],"statements":[{"expression":{"id":118764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":118752,"name":"allowed_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":118750,"src":"3248:8:248","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":118763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":118759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":118754,"name":"_claimer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":118747,"src":"3296:8:248","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":118753,"name":"_hasAttestationFromAllowlistAttestor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":118784,"src":"3259:36:248","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":118755,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3259:46:248","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":118757,"name":"_claimer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":118747,"src":"3350:8:248","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":118756,"name":"_hasAttestationFromCoinbaseQuestAttestor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":118801,"src":"3309:40:248","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":118758,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3309:50:248","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3259:100:248","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":118761,"name":"_claimer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":118747,"src":"3410:8:248","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":118760,"name":"_hasAttestationFromOptimistInviter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":118819,"src":"3375:34:248","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":118762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3375:44:248","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3259:160:248","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3248:171:248","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":118765,"nodeType":"ExpressionStatement","src":"3248:171:248"}]},"documentation":{"id":118745,"nodeType":"StructuredDocumentation","src":"2362:792:248","text":"@notice Checks whether a given address is allowed to mint the Optimist NFT yet. Since the\n Optimist NFT will also be used as part of the Citizens House, mints are currently\n restricted. Eventually anyone will be able to mint.\n Currently, address is allowed to mint if it satisfies any of the following:\n 1) Has a valid 'optimist.can-mint' attestation from the allowlist attestor.\n 2) Has a valid 'coinbase.quest-eligible' attestation from Coinbase Quest attestor\n 3) Has a valid 'optimist.can-mint-from-invite' attestation from the OptimistInviter\n contract.\n @param _claimer Address to check.\n @return allowed_ Whether or not the address is allowed to mint yet."},"functionSelector":"4813d8a6","implemented":true,"kind":"function","modifiers":[],"name":"isAllowedToMint","nameLocation":"3168:15:248","parameters":{"id":118748,"nodeType":"ParameterList","parameters":[{"constant":false,"id":118747,"mutability":"mutable","name":"_claimer","nameLocation":"3192:8:248","nodeType":"VariableDeclaration","scope":11