@excubiae/contracts
Version:
1 lines • 30.3 kB
JSON
{"abi":[{"type":"constructor","inputs":[{"name":"_policy","type":"address","internalType":"contract AdvancedPolicy"}],"stateMutability":"nonpayable"},{"type":"function","name":"POLICY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract AdvancedPolicy"}],"stateMutability":"view"},{"type":"function","name":"eligible","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasVoted","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isEligible","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"register","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registered","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"vote","inputs":[{"name":"option","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Eligible","inputs":[{"name":"voter","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Registered","inputs":[{"name":"voter","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Voted","inputs":[{"name":"voter","type":"address","indexed":false,"internalType":"address"},{"name":"option","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"error","name":"AlreadyEligible","inputs":[]},{"type":"error","name":"InvalidOption","inputs":[]},{"type":"error","name":"NotEligible","inputs":[]},{"type":"error","name":"NotRegistered","inputs":[]},{"type":"error","name":"NotVoted","inputs":[]}],"bytecode":{"object":"0x60a060405234801561000f575f5ffd5b5060405161081138038061081183398101604081905261002e9161003f565b6001600160a01b031660805261006c565b5f6020828403121561004f575f5ffd5b81516001600160a01b0381168114610065575f5ffd5b9392505050565b6080516107786100995f395f818161011b0152818161021e01528181610440015261051501526107785ff3fe608060405234801561000f575f5ffd5b506004361061007a575f3560e01c8063b3f98adc11610058578063b3f98adc146100f9578063d832d92f1461010e578063dadbccee14610116578063f207564e14610162575f5ffd5b806309eef43e1461007e57806366e305fd146100b5578063b2dd5c07146100d7575b5f5ffd5b6100a061008c366004610625565b60016020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100a06100c3366004610625565b60026020525f908152604090205460ff1681565b6100a06100e5366004610625565b5f6020819052908152604090205460ff1681565b61010c61010736600461065f565b610175565b005b61010c61031d565b61013d7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ac565b61010c61017036600461067f565b610513565b335f9081526020819052604090205460ff166101bd576040517faba4733900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028160ff16106101fa576040517f2a71953100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160ff8316602082015273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016916314423fde9133910160405160208183030381529060405260016040518463ffffffff1660e01b815260040161027793929190610696565b5f604051808303815f87803b15801561028e575f5ffd5b505af11580156102a0573d5f5f3e3d5ffd5b5050335f8181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016909217909155815192835260ff8616908301527f14075e33dffdc00c1fcaf75d0f86d667170be57fb566b12b41b499e5fa53b12593500190505b60405180910390a150565b335f9081526020819052604090205460ff16610365576040517faba4733900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b335f9081526001602052604090205460ff166103ad576040517ff8d49bcd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b335f9081526002602052604090205460ff16156103f6576040517f8eb49d8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080515f815260208101918290527f14423fde0000000000000000000000000000000000000000000000000000000090915273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906314423fde90610478903390600260248201610696565b5f604051808303815f87803b15801561048f575f5ffd5b505af11580156104a1573d5f5f3e3d5ffd5b5050335f8181526002602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905590519182527f36cd5b9d4fdc2d0cf34eda84f3ffd903552e17139454f5f502a305eb3bed15ad935001905060405180910390a1565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166314423fde338360405160200161056391815260200190565b6040516020818303038152906040525f6040518463ffffffff1660e01b815260040161059193929190610696565b5f604051808303815f87803b1580156105a8575f5ffd5b505af11580156105ba573d5f5f3e3d5ffd5b5050335f818152602081815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905590519182527f2d3734a8e47ac8316e500ac231c90a6e1848ca2285f40d07eaa52005e4b3a0e99350019050610312565b5f60208284031215610635575f5ffd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610658575f5ffd5b9392505050565b5f6020828403121561066f575f5ffd5b813560ff81168114610658575f5ffd5b5f6020828403121561068f575f5ffd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff84168152606060208201525f83518060608401528060208601608085015e5f6080828501015260807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505060038310610734577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b82604083015294935050505056fea2646970667358221220673d75e33b63518f4e9eb461e6fea091e07ca73d3a73a6ff9c77e494e7ebe04764736f6c634300081c0033","sourceMap":"385:3989:71:-:0;;;2102:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2148:16:71;;;385:3989;;14:313:133;107:6;160:2;148:9;139:7;135:23;131:32;128:52;;;176:1;173;166:12;128:52;202:16;;-1:-1:-1;;;;;247:31:133;;237:42;;227:70;;293:1;290;283:12;227:70;316:5;14:313;-1:-1:-1;;;14:313:133:o;:::-;385:3989:71;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f5ffd5b506004361061007a575f3560e01c8063b3f98adc11610058578063b3f98adc146100f9578063d832d92f1461010e578063dadbccee14610116578063f207564e14610162575f5ffd5b806309eef43e1461007e57806366e305fd146100b5578063b2dd5c07146100d7575b5f5ffd5b6100a061008c366004610625565b60016020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100a06100c3366004610625565b60026020525f908152604090205460ff1681565b6100a06100e5366004610625565b5f6020819052908152604090205460ff1681565b61010c61010736600461065f565b610175565b005b61010c61031d565b61013d7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ac565b61010c61017036600461067f565b610513565b335f9081526020819052604090205460ff166101bd576040517faba4733900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028160ff16106101fa576040517f2a71953100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160ff8316602082015273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016916314423fde9133910160405160208183030381529060405260016040518463ffffffff1660e01b815260040161027793929190610696565b5f604051808303815f87803b15801561028e575f5ffd5b505af11580156102a0573d5f5f3e3d5ffd5b5050335f8181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016909217909155815192835260ff8616908301527f14075e33dffdc00c1fcaf75d0f86d667170be57fb566b12b41b499e5fa53b12593500190505b60405180910390a150565b335f9081526020819052604090205460ff16610365576040517faba4733900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b335f9081526001602052604090205460ff166103ad576040517ff8d49bcd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b335f9081526002602052604090205460ff16156103f6576040517f8eb49d8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080515f815260208101918290527f14423fde0000000000000000000000000000000000000000000000000000000090915273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906314423fde90610478903390600260248201610696565b5f604051808303815f87803b15801561048f575f5ffd5b505af11580156104a1573d5f5f3e3d5ffd5b5050335f8181526002602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905590519182527f36cd5b9d4fdc2d0cf34eda84f3ffd903552e17139454f5f502a305eb3bed15ad935001905060405180910390a1565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166314423fde338360405160200161056391815260200190565b6040516020818303038152906040525f6040518463ffffffff1660e01b815260040161059193929190610696565b5f604051808303815f87803b1580156105a8575f5ffd5b505af11580156105ba573d5f5f3e3d5ffd5b5050335f818152602081815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905590519182527f2d3734a8e47ac8316e500ac231c90a6e1848ca2285f40d07eaa52005e4b3a0e99350019050610312565b5f60208284031215610635575f5ffd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610658575f5ffd5b9392505050565b5f6020828403121561066f575f5ffd5b813560ff81168114610658575f5ffd5b5f6020828403121561068f575f5ffd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff84168152606060208201525f83518060608401528060208601608085015e5f6080828501015260807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505060038310610734577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b82604083015294935050505056fea2646970667358221220673d75e33b63518f4e9eb461e6fea091e07ca73d3a73a6ff9c77e494e7ebe04764736f6c634300081c0033","sourceMap":"385:3989:71:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1797:40;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;493:14:133;;486:22;468:41;;456:2;441:18;1797:40:71;;;;;;;;1912:42;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1698;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;2953:569;;;;;;:::i;:::-;;:::i;:::-;;3685:687;;;:::i;1593:38::-;;;;;;;;993:42:133;981:55;;;963:74;;951:2;936:18;1593:38:71;794:249:133;2415:343:71;;;;;;:::i;:::-;;:::i;2953:569::-;3073:10;3062;:22;;;;;;;;;;;;;3057:51;;3093:15;;;;;;;;;;;;;;3057:51;3205:1;3195:6;:11;;;3191:39;;3215:15;;;;;;;;;;;;;;3191:39;3326:18;;;1405:4:133;1393:17;;3326:18:71;;;1375:36:133;3299:14:71;:6;:14;;;;3314:10;;1348:18:133;3326::71;;;;;;;;;;;;3346:10;3299:58;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3405:10:71;3396:20;;;;3419:4;3396:20;;;;;;;;;:27;;;;;;;;;;3490:25;;2484:74:133;;;2606:4;2594:17;;2574:18;;;2567:45;3490:25:71;;-1:-1:-1;2457:18:133;;-1:-1:-1;3490:25:71;;;;;;;;2953:569;:::o;3685:687::-;3805:10;3794;:22;;;;;;;;;;;;;3789:51;;3825:15;;;;;;;;;;;;;;3789:51;3920:10;3911:20;;;;:8;:20;;;;;;;;3906:44;;3940:10;;;;;;;;;;;;;;3906:44;4044:10;4033:22;;;;:10;:22;;;;;;;;4029:52;;;4064:17;;;;;;;;;;;;;;4029:52;4177:12;;;;;;;;;;;;;4150:52;;;;:14;:6;:14;;;;:52;;4165:10;;4191;4150:52;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4255:10:71;4244:22;;;;:10;:22;;;;;;;;;:29;;;;4269:4;4244:29;;;4345:20;;963:74:133;;;4345:20:71;;-1:-1:-1;936:18:133;;-1:-1:-1;4345:20:71;;;;;;;3685:687::o;2415:343::-;2535:6;:14;;;2550:10;2573:7;2562:19;;;;;;3000:25:133;;2988:2;2973:18;;2854:177;2562:19:71;;;;;;;;;;;;;2583:9;2535:58;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2645:10:71;2634;:22;;;;;;;;;;;;:29;;;;2659:4;2634:29;;;2729:22;;963:74:133;;;2729:22:71;;-1:-1:-1;936:18:133;;-1:-1:-1;2729:22:71;794:249:133;14:309;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;181:9;168:23;231:42;224:5;220:54;213:5;210:65;200:93;;289:1;286;279:12;200:93;312:5;14:309;-1:-1:-1;;;14:309:133:o;520:269::-;577:6;630:2;618:9;609:7;605:23;601:32;598:52;;;646:1;643;636:12;598:52;685:9;672:23;735:4;728:5;724:16;717:5;714:27;704:55;;755:1;752;745:12;1048:180;1107:6;1160:2;1148:9;1139:7;1135:23;1131:32;1128:52;;;1176:1;1173;1166:12;1128:52;-1:-1:-1;1199:23:133;;1048:180;-1:-1:-1;1048:180:133:o;1422:887::-;1645:42;1637:6;1633:55;1622:9;1615:74;1725:2;1720;1709:9;1705:18;1698:30;1596:4;1757:6;1751:13;1800:6;1795:2;1784:9;1780:18;1773:34;1860:6;1855:2;1847:6;1843:15;1837:3;1826:9;1822:19;1816:51;1917:1;1911:3;1902:6;1891:9;1887:22;1883:32;1876:43;2046:3;1976:66;1971:2;1963:6;1959:15;1955:88;1944:9;1940:104;1936:114;1928:122;;;2080:1;2072:6;2069:13;2059:201;;2116:77;2113:1;2106:88;2217:4;2214:1;2207:15;2245:4;2242:1;2235:15;2059:201;2296:6;2291:2;2280:9;2276:18;2269:34;1422:887;;;;;;:::o","linkReferences":{},"immutableReferences":{"9856":[{"start":283,"length":32},{"start":542,"length":32},{"start":1088,"length":32},{"start":1301,"length":32}]}},"methodIdentifiers":{"POLICY()":"dadbccee","eligible()":"d832d92f","hasVoted(address)":"09eef43e","isEligible(address)":"66e305fd","register(uint256)":"f207564e","registered(address)":"b2dd5c07","vote(uint8)":"b3f98adc"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract AdvancedPolicy\",\"name\":\"_policy\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AlreadyEligible\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOption\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEligible\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotVoted\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"}],\"name\":\"Eligible\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"}],\"name\":\"Registered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"option\",\"type\":\"uint8\"}],\"name\":\"Voted\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"POLICY\",\"outputs\":[{\"internalType\":\"contract AdvancedPolicy\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eligible\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"hasVoted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isEligible\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"register\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"registered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"option\",\"type\":\"uint8\"}],\"name\":\"vote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Combines pre, main, and post phases for registration, voting, and eligibility verification.\",\"events\":{\"Eligible(address)\":{\"params\":{\"voter\":\"Address of the voter who met eligibility criteria.\"}},\"Registered(address)\":{\"params\":{\"voter\":\"Address of the voter who registered.\"}},\"Voted(address,uint8)\":{\"params\":{\"option\":\"The chosen voting option (0 or 1).\",\"voter\":\"Address of the voter who cast their vote.\"}}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"_policy\":\"Address of the AdvancedPolicy contract to use for validation.\"}},\"eligible()\":{\"details\":\"Enforces the post-check phase to ensure eligibility criteria are met.\"},\"register(uint256)\":{\"details\":\"Enforces the pre-check phase using the AdvancedPolicy contract.\",\"params\":{\"tokenId\":\"The ID of the NFT used to verify registration eligibility.\"}},\"vote(uint8)\":{\"details\":\"Enforces the main-check phase and updates the vote count.\",\"params\":{\"option\":\"The chosen voting option (0 or 1).\"}}},\"stateVariables\":{\"hasVoted\":{\"details\":\"Tracks whether an address has voted.\"},\"isEligible\":{\"details\":\"Tracks whether an address has been marked as eligible.\"},\"registered\":{\"details\":\"Tracks whether an address has been registered.\"}},\"title\":\"AdvancedVoting\",\"version\":1},\"userdoc\":{\"errors\":{\"AlreadyEligible()\":[{\"notice\":\"Error thrown when a user tries to verify eligibility more than once.\"}],\"InvalidOption()\":[{\"notice\":\"Error thrown when an invalid voting option is provided.\"}],\"NotEligible()\":[{\"notice\":\"Error thrown when a user does not meet the eligibility criteria.\"}],\"NotRegistered()\":[{\"notice\":\"Error thrown when a user attempts an action without registering first.\"}],\"NotVoted()\":[{\"notice\":\"Error thrown when a user attempts to verify eligibility without voting.\"}]},\"events\":{\"Eligible(address)\":{\"notice\":\"Emitted when a voter is deemed eligible.\"},\"Registered(address)\":{\"notice\":\"Emitted when a voter registers successfully.\"},\"Voted(address,uint8)\":{\"notice\":\"Emitted when a vote is cast successfully.\"}},\"kind\":\"user\",\"methods\":{\"POLICY()\":{\"notice\":\"Reference to the policy contract enforcing multi-phase validation.\"},\"constructor\":{\"notice\":\"Constructor to set the policy contract.\"},\"eligible()\":{\"notice\":\"Verifies a user's eligibility after voting has concluded.\"},\"register(uint256)\":{\"notice\":\"Registers a user for voting by validating their NFT ownership.\"},\"vote(uint8)\":{\"notice\":\"Allows a registered user to cast their vote.\"}},\"notice\":\"Multi-phase governance system with NFT-based validation.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/examples/advanced/AdvancedVoting.sol\":\"AdvancedVoting\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":@semaphore-protocol/=node_modules/@semaphore-protocol/\",\":@solady/=node_modules/solady/\",\":@zk-kit/=node_modules/@zk-kit/\",\":eth-gas-reporter/=node_modules/eth-gas-reporter/\",\":forge-std/=node_modules/forge-std/\",\":hardhat/=node_modules/hardhat/\",\":poseidon-solidity/=node_modules/poseidon-solidity/\",\":solady/=node_modules/solady/\"]},\"sources\":{\"contracts/checker/AdvancedChecker.sol\":{\"keccak256\":\"0x624a5e2ce50e0c6b9c03ce852b7372b9c860972e9a476923815a290e7755ec68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9a809ca3880f0a82e3132cad494a3f73a41700c119df3aed99481ecb02f4f0c5\",\"dweb:/ipfs/QmYoUuGhtiBNnMMTtp4kZiZdXNuoWUg2gfgZWhn7E8nFtD\"]},\"contracts/interfaces/IAdvancedChecker.sol\":{\"keccak256\":\"0x6e6682ecc5cb0eb88ca8d7c2ff024f7351917e30b01c01b4670f36a4d6e0a24d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb311bf62e81e1ae8a6e7874d2cdfff4a5dd04b4bcba11796858fe248e6926e5\",\"dweb:/ipfs/Qmd4vtmw5WQUw8Ui4EV7aGW9ATvddC5cEWHyunT8paW2R4\"]},\"contracts/interfaces/IAdvancedPolicy.sol\":{\"keccak256\":\"0xc95ed6363a805b64e8be2fc2e3c36e1b999fbdd12d5b8ef9e356e185ec6a1489\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3283d08ef2b7a03c30b6cbd03b32082568198c76c0c7f0cb5d0f2c430c204ef\",\"dweb:/ipfs/QmXb55ASwhdJ9tQDQh8fhgXF9iiFUCxxC9EceCcZ38LvhP\"]},\"contracts/interfaces/IClone.sol\":{\"keccak256\":\"0xc3f6a08a3ce1db7e80dd496c6631d4d9d7a409729e67ed543411baac396369e7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d9e531790090250216d4c89b58e06b6cb942d79e94614c4e70f57021c4fdccef\",\"dweb:/ipfs/QmaGuDzcBxCr1XpWQiqB6M7GcsVaXeaouQFXsN53MnKLff\"]},\"contracts/interfaces/IPolicy.sol\":{\"keccak256\":\"0x82f96940502cdd880f1eacc03cd8c3895f306283efa907610c899a1f5509f78c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5baf97f88beb3155f244dc301ee040786780bf6762fbaaf569e2e86b17729b3f\",\"dweb:/ipfs/Qmec9wzmmFwkQHDthMo9QaFtYqa7CadjiCP2JMsgFGGaxU\"]},\"contracts/policy/AdvancedPolicy.sol\":{\"keccak256\":\"0x41014527233f3c0749dc225b95da7100ff7072b4e81fd1b58b4763345d0cd1e4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7396d479efb591153e0b3b2ed9a505ec2cdd8833aa81f233ba0ce47a2cfb4e9b\",\"dweb:/ipfs/QmaWcuFkKqt9aZRLXA5Xj5TKcYcYrP7rPdnv9Qe7j9n7Ks\"]},\"contracts/policy/Policy.sol\":{\"keccak256\":\"0xb0c9186c6b880aadc1c6cc5ddae104c385f365b48eb9bbedf164f9085a242c1e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://978e15170f79da85a988a040f9e1071c62b0fc80e8fd5240253c0a6d1d1a3fc7\",\"dweb:/ipfs/QmdWqp9Xxe5H4kXa6CmsymfGzENoqu8VAoJBsUSsyZzbNd\"]},\"contracts/proxy/Clone.sol\":{\"keccak256\":\"0x0ec0acfcf7440fadcf621ec4fbf1679e390bd52c9633477ee7e6f06138e71b99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://10f90028d43e745963e673a16d96a3b15c92a83b0dde396d5bdadab9b8a166ef\",\"dweb:/ipfs/Qmf3JjAMVuhPJBMa7hqXNTB3zp4QxPqZYdrntzbhCJXbiG\"]},\"contracts/test/examples/advanced/AdvancedVoting.sol\":{\"keccak256\":\"0xf6e7e3337ef574c3aa1d1a80b0077fdcb504d16c321d703200f821dc3446a2ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8737058e4887114b695695b1bb79b1c7019db759bc0fef02d1e44ac637ebe72c\",\"dweb:/ipfs/QmUKme1Z2dqMz6x5F9jqP6Zhcx2zo4EvTD1DSupnVa92Cc\"]},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"node_modules/solady/src/utils/LibClone.sol\":{\"keccak256\":\"0x1388494b421db04cf6f33ab69580edc5b187328688818504b87eaea9fa3c0d2c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8f6bf027d6fe4f102360bf7e988923f73510697a87d970b28093a0d950d9a3e5\",\"dweb:/ipfs/QmUhdrSqiwhBp2cZPef6jcTfQ8Md3KoyfnK2ZteseAvude\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract AdvancedPolicy","name":"_policy","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AlreadyEligible"},{"inputs":[],"type":"error","name":"InvalidOption"},{"inputs":[],"type":"error","name":"NotEligible"},{"inputs":[],"type":"error","name":"NotRegistered"},{"inputs":[],"type":"error","name":"NotVoted"},{"inputs":[{"internalType":"address","name":"voter","type":"address","indexed":false}],"type":"event","name":"Eligible","anonymous":false},{"inputs":[{"internalType":"address","name":"voter","type":"address","indexed":false}],"type":"event","name":"Registered","anonymous":false},{"inputs":[{"internalType":"address","name":"voter","type":"address","indexed":false},{"internalType":"uint8","name":"option","type":"uint8","indexed":false}],"type":"event","name":"Voted","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"POLICY","outputs":[{"internalType":"contract AdvancedPolicy","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"eligible"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"isEligible","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"register"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"registered","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint8","name":"option","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"vote"}],"devdoc":{"kind":"dev","methods":{"constructor":{"params":{"_policy":"Address of the AdvancedPolicy contract to use for validation."}},"eligible()":{"details":"Enforces the post-check phase to ensure eligibility criteria are met."},"register(uint256)":{"details":"Enforces the pre-check phase using the AdvancedPolicy contract.","params":{"tokenId":"The ID of the NFT used to verify registration eligibility."}},"vote(uint8)":{"details":"Enforces the main-check phase and updates the vote count.","params":{"option":"The chosen voting option (0 or 1)."}}},"version":1},"userdoc":{"kind":"user","methods":{"POLICY()":{"notice":"Reference to the policy contract enforcing multi-phase validation."},"constructor":{"notice":"Constructor to set the policy contract."},"eligible()":{"notice":"Verifies a user's eligibility after voting has concluded."},"register(uint256)":{"notice":"Registers a user for voting by validating their NFT ownership."},"vote(uint8)":{"notice":"Allows a registered user to cast their vote."}},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","@semaphore-protocol/=node_modules/@semaphore-protocol/","@solady/=node_modules/solady/","@zk-kit/=node_modules/@zk-kit/","eth-gas-reporter/=node_modules/eth-gas-reporter/","forge-std/=node_modules/forge-std/","hardhat/=node_modules/hardhat/","poseidon-solidity/=node_modules/poseidon-solidity/","solady/=node_modules/solady/"],"optimizer":{"enabled":true,"runs":200000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"contracts/test/examples/advanced/AdvancedVoting.sol":"AdvancedVoting"},"evmVersion":"cancun","libraries":{}},"sources":{"contracts/checker/AdvancedChecker.sol":{"keccak256":"0x624a5e2ce50e0c6b9c03ce852b7372b9c860972e9a476923815a290e7755ec68","urls":["bzz-raw://9a809ca3880f0a82e3132cad494a3f73a41700c119df3aed99481ecb02f4f0c5","dweb:/ipfs/QmYoUuGhtiBNnMMTtp4kZiZdXNuoWUg2gfgZWhn7E8nFtD"],"license":"MIT"},"contracts/interfaces/IAdvancedChecker.sol":{"keccak256":"0x6e6682ecc5cb0eb88ca8d7c2ff024f7351917e30b01c01b4670f36a4d6e0a24d","urls":["bzz-raw://bb311bf62e81e1ae8a6e7874d2cdfff4a5dd04b4bcba11796858fe248e6926e5","dweb:/ipfs/Qmd4vtmw5WQUw8Ui4EV7aGW9ATvddC5cEWHyunT8paW2R4"],"license":"MIT"},"contracts/interfaces/IAdvancedPolicy.sol":{"keccak256":"0xc95ed6363a805b64e8be2fc2e3c36e1b999fbdd12d5b8ef9e356e185ec6a1489","urls":["bzz-raw://d3283d08ef2b7a03c30b6cbd03b32082568198c76c0c7f0cb5d0f2c430c204ef","dweb:/ipfs/QmXb55ASwhdJ9tQDQh8fhgXF9iiFUCxxC9EceCcZ38LvhP"],"license":"MIT"},"contracts/interfaces/IClone.sol":{"keccak256":"0xc3f6a08a3ce1db7e80dd496c6631d4d9d7a409729e67ed543411baac396369e7","urls":["bzz-raw://d9e531790090250216d4c89b58e06b6cb942d79e94614c4e70f57021c4fdccef","dweb:/ipfs/QmaGuDzcBxCr1XpWQiqB6M7GcsVaXeaouQFXsN53MnKLff"],"license":"MIT"},"contracts/interfaces/IPolicy.sol":{"keccak256":"0x82f96940502cdd880f1eacc03cd8c3895f306283efa907610c899a1f5509f78c","urls":["bzz-raw://5baf97f88beb3155f244dc301ee040786780bf6762fbaaf569e2e86b17729b3f","dweb:/ipfs/Qmec9wzmmFwkQHDthMo9QaFtYqa7CadjiCP2JMsgFGGaxU"],"license":"MIT"},"contracts/policy/AdvancedPolicy.sol":{"keccak256":"0x41014527233f3c0749dc225b95da7100ff7072b4e81fd1b58b4763345d0cd1e4","urls":["bzz-raw://7396d479efb591153e0b3b2ed9a505ec2cdd8833aa81f233ba0ce47a2cfb4e9b","dweb:/ipfs/QmaWcuFkKqt9aZRLXA5Xj5TKcYcYrP7rPdnv9Qe7j9n7Ks"],"license":"MIT"},"contracts/policy/Policy.sol":{"keccak256":"0xb0c9186c6b880aadc1c6cc5ddae104c385f365b48eb9bbedf164f9085a242c1e","urls":["bzz-raw://978e15170f79da85a988a040f9e1071c62b0fc80e8fd5240253c0a6d1d1a3fc7","dweb:/ipfs/QmdWqp9Xxe5H4kXa6CmsymfGzENoqu8VAoJBsUSsyZzbNd"],"license":"MIT"},"contracts/proxy/Clone.sol":{"keccak256":"0x0ec0acfcf7440fadcf621ec4fbf1679e390bd52c9633477ee7e6f06138e71b99","urls":["bzz-raw://10f90028d43e745963e673a16d96a3b15c92a83b0dde396d5bdadab9b8a166ef","dweb:/ipfs/Qmf3JjAMVuhPJBMa7hqXNTB3zp4QxPqZYdrntzbhCJXbiG"],"license":"MIT"},"contracts/test/examples/advanced/AdvancedVoting.sol":{"keccak256":"0xf6e7e3337ef574c3aa1d1a80b0077fdcb504d16c321d703200f821dc3446a2ba","urls":["bzz-raw://8737058e4887114b695695b1bb79b1c7019db759bc0fef02d1e44ac637ebe72c","dweb:/ipfs/QmUKme1Z2dqMz6x5F9jqP6Zhcx2zo4EvTD1DSupnVa92Cc"],"license":"MIT"},"node_modules/@openzeppelin/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"node_modules/solady/src/utils/LibClone.sol":{"keccak256":"0x1388494b421db04cf6f33ab69580edc5b187328688818504b87eaea9fa3c0d2c","urls":["bzz-raw://8f6bf027d6fe4f102360bf7e988923f73510697a87d970b28093a0d950d9a3e5","dweb:/ipfs/QmUhdrSqiwhBp2cZPef6jcTfQ8Md3KoyfnK2ZteseAvude"],"license":"MIT"}},"version":1},"id":71}