UNPKG

@excubiae/contracts

Version:
1 lines 24.3 kB
{"abi":[{"type":"constructor","inputs":[{"name":"_policy","type":"address","internalType":"contract BaseERC721Policy"}],"stateMutability":"nonpayable"},{"type":"function","name":"POLICY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract BaseERC721Policy"}],"stateMutability":"view"},{"type":"function","name":"hasVoted","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":"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":"AlreadyVoted","inputs":[]},{"type":"error","name":"InvalidOption","inputs":[]},{"type":"error","name":"NotRegistered","inputs":[]}],"bytecode":{"object":"0x60a0604052348015600e575f5ffd5b50604051610526380380610526833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b6080516104a26100845f395f818160db015261027d01526104a25ff3fe608060405234801561000f575f5ffd5b5060043610610064575f3560e01c8063b3f98adc1161004d578063b3f98adc146100c1578063dadbccee146100d6578063f207564e14610122575f5ffd5b806309eef43e14610068578063b2dd5c071461009f575b5f5ffd5b61008a61007636600461038b565b60016020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61008a6100ad36600461038b565b5f6020819052908152604090205460ff1681565b6100d46100cf3660046103c5565b610135565b005b6100fd7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b6100d46101303660046103e5565b61027b565b335f9081526020819052604090205460ff1661017d576040517faba4733900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b335f9081526001602052604090205460ff16156101c6576040517f7c9a1cf900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028160ff1610610203576040517f2a71953100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b335f8181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016909217909155815192835260ff8416908301527f14075e33dffdc00c1fcaf75d0f86d667170be57fb566b12b41b499e5fa53b12591015b60405180910390a150565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e898ef133836040516020016102cb91815260200190565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016102f79291906103fc565b5f604051808303815f87803b15801561030e575f5ffd5b505af1158015610320573d5f5f3e3d5ffd5b5050335f818152602081815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905590519182527f2d3734a8e47ac8316e500ac231c90a6e1848ca2285f40d07eaa52005e4b3a0e99350019050610270565b5f6020828403121561039b575f5ffd5b813573ffffffffffffffffffffffffffffffffffffffff811681146103be575f5ffd5b9392505050565b5f602082840312156103d5575f5ffd5b813560ff811681146103be575f5ffd5b5f602082840312156103f5575f5ffd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f82518060408401528060208501606085015e5f6060828501015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116840101915050939250505056fea2646970667358221220cc29c7b55c0c910871c6c8890be22da323b77ae2134dbe1a20626c4c55730b9c64736f6c634300081c0033","sourceMap":"298:2288:76:-:0;;;1477:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1525:16:76;;;298:2288;;14:316:133;110:6;163:2;151:9;142:7;138:23;134:32;131:52;;;179:1;176;169:12;131:52;205:16;;-1:-1:-1;;;;;250:31:133;;240:42;;230:70;;296:1;293;286:12;230:70;319:5;14:316;-1:-1:-1;;;14:316:133:o;:::-;298:2288:76;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f5ffd5b5060043610610064575f3560e01c8063b3f98adc1161004d578063b3f98adc146100c1578063dadbccee146100d6578063f207564e14610122575f5ffd5b806309eef43e14610068578063b2dd5c071461009f575b5f5ffd5b61008a61007636600461038b565b60016020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61008a6100ad36600461038b565b5f6020819052908152604090205460ff1681565b6100d46100cf3660046103c5565b610135565b005b6100fd7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b6100d46101303660046103e5565b61027b565b335f9081526020819052604090205460ff1661017d576040517faba4733900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b335f9081526001602052604090205460ff16156101c6576040517f7c9a1cf900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028160ff1610610203576040517f2a71953100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b335f8181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016909217909155815192835260ff8416908301527f14075e33dffdc00c1fcaf75d0f86d667170be57fb566b12b41b499e5fa53b12591015b60405180910390a150565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e898ef133836040516020016102cb91815260200190565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016102f79291906103fc565b5f604051808303815f87803b15801561030e575f5ffd5b505af1158015610320573d5f5f3e3d5ffd5b5050335f818152602081815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905590519182527f2d3734a8e47ac8316e500ac231c90a6e1848ca2285f40d07eaa52005e4b3a0e99350019050610270565b5f6020828403121561039b575f5ffd5b813573ffffffffffffffffffffffffffffffffffffffff811681146103be575f5ffd5b9392505050565b5f602082840312156103d5575f5ffd5b813560ff811681146103be575f5ffd5b5f602082840312156103f5575f5ffd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f82518060408401528060208501606085015e5f6060828501015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116840101915050939250505056fea2646970667358221220cc29c7b55c0c910871c6c8890be22da323b77ae2134dbe1a20626c4c55730b9c64736f6c634300081c0033","sourceMap":"298:2288:76:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1271:40;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;493:14:133;;486:22;468:41;;456:2;441:18;1271:40:76;;;;;;;;1172:42;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;2217:367;;;;;;:::i;:::-;;:::i;:::-;;1065:40;;;;;;;;996:42:133;984:55;;;966:74;;954:2;939:18;1065:40:76;794:252:133;1744:261:76;;;;;;:::i;:::-;;:::i;2217:367::-;2329:10;2318;:22;;;;;;;;;;;;;2313:51;;2349:15;;;;;;;;;;;;;;2313:51;2387:10;2378:20;;;;:8;:20;;;;;;;;2374:47;;;2407:14;;;;;;;;;;;;;;2374:47;2445:1;2435:6;:11;;;2431:39;;2455:15;;;;;;;;;;;;;;2431:39;2518:10;2509:20;;;;2532:4;2509:20;;;;;;;;;:27;;;;;;;;;;2552:25;;1406:74:133;;;1528:4;1516:17;;1496:18;;;1489:45;2552:25:76;;1379:18:133;2552:25:76;;;;;;;;2217:367;:::o;1744:261::-;1843:6;:14;;;1858:10;1881:7;1870:19;;;;;;1691:25:133;;1679:2;1664:18;;1545:177;1870:19:76;;;;;;;;;;;;;1843:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1942:10:76;1931;:22;;;;;;;;;;;;:29;;;;1956:4;1931:29;;;1976:22;;966:74:133;;;1976:22:76;;-1:-1:-1;939:18:133;;-1:-1:-1;1976:22:76;794:252: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;1051:180;1110:6;1163:2;1151:9;1142:7;1138:23;1134:32;1131:52;;;1179:1;1176;1169:12;1131:52;-1:-1:-1;1202:23:133;;1051:180;-1:-1:-1;1051:180:133:o;1727:595::-;1914:42;1906:6;1902:55;1891:9;1884:74;1994:2;1989;1978:9;1974:18;1967:30;1865:4;2026:6;2020:13;2069:6;2064:2;2053:9;2049:18;2042:34;2128:6;2123:2;2115:6;2111:15;2106:2;2095:9;2091:18;2085:50;2184:1;2179:2;2170:6;2159:9;2155:22;2151:31;2144:42;2313:2;2243:66;2238:2;2230:6;2226:15;2222:88;2211:9;2207:104;2203:113;2195:121;;;1727:595;;;;;:::o","linkReferences":{},"immutableReferences":{"10253":[{"start":219,"length":32},{"start":637,"length":32}]}},"methodIdentifiers":{"POLICY()":"dadbccee","hasVoted(address)":"09eef43e","register(uint256)":"f207564e","registered(address)":"b2dd5c07","vote(uint8)":"b3f98adc"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract BaseERC721Policy\",\"name\":\"_policy\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AlreadyVoted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOption\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotRegistered\",\"type\":\"error\"},{\"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 BaseERC721Policy\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"hasVoted\",\"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\":\"Implements a basic two-phase voting system (registration and voting) with access control enforced by NFTs.\",\"events\":{\"Registered(address)\":{\"params\":{\"voter\":\"Address of the registered voter.\"}},\"Voted(address,uint8)\":{\"params\":{\"option\":\"The option the voter chose.\",\"voter\":\"Address of the voter.\"}}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"_policy\":\"Address of the policy contract enforcing access control.\"}},\"register(uint256)\":{\"details\":\"Enforces ownership validation via the policy contract.\",\"params\":{\"tokenId\":\"Token ID of the NFT used for validation.\"}},\"vote(uint8)\":{\"details\":\"Validates voter registration and option validity before recording the vote.\",\"params\":{\"option\":\"The chosen voting option (0 or 1).\"}}},\"stateVariables\":{\"hasVoted\":{\"details\":\"Tracks whether an address has voted.\"},\"registered\":{\"details\":\"Tracks whether an address has been registered.\"}},\"title\":\"BaseVoting\",\"version\":1},\"userdoc\":{\"errors\":{\"AlreadyVoted()\":[{\"notice\":\"Error thrown when a user attempts to vote more than once.\"}],\"InvalidOption()\":[{\"notice\":\"Error thrown when a user attempts to vote with an invalid option.\"}],\"NotRegistered()\":[{\"notice\":\"Error thrown when a user attempts to vote without registering.\"}]},\"events\":{\"Registered(address)\":{\"notice\":\"Emitted when a voter successfully registers.\"},\"Voted(address,uint8)\":{\"notice\":\"Emitted when a voter successfully casts a vote.\"}},\"kind\":\"user\",\"methods\":{\"POLICY()\":{\"notice\":\"Policy contract enforcing NFT-based registration.\"},\"constructor\":{\"notice\":\"Initializes the voting system with a specific policy contract.\"},\"register(uint256)\":{\"notice\":\"Registers a voter based on NFT ownership.\"},\"vote(uint8)\":{\"notice\":\"Casts a vote after successful registration.\"}},\"notice\":\"Simple NFT-based voting system.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/examples/base/BaseVoting.sol\":\"BaseVoting\"},\"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/BaseChecker.sol\":{\"keccak256\":\"0x7cd56cddc8264c5be46692a179221a69b9e20eb977dcb6df82e62f55aa945411\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6ca0724296c4a104fbd0f7af3c297b857093fb771f418c7c198b721200d60d56\",\"dweb:/ipfs/QmW7chfNoFQJY2NA21xGB8bP5MZ2ajjMuapqp6pMRC52u3\"]},\"contracts/interfaces/IBaseChecker.sol\":{\"keccak256\":\"0x2e78c67cfe2594fbe999da0a5102099feec5b7344023f6f95c862130d8097b4a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dd6235abb53aed81c48eef7847af7fd9533ceb81afd3670541e29c1f41c275c1\",\"dweb:/ipfs/Qmbjmk4hjb4awhdk3v7WbZC3NuSeWoioewcp8FyBhkMfRB\"]},\"contracts/interfaces/IBasePolicy.sol\":{\"keccak256\":\"0x8ec727819f1f02f92352e4ed7d1c92a82a324ca313c0318cd4a080f1a0cc8233\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5f223695a8361138b94e55954cfa20d69f9f547478a046c8b2aa7799323d4ca8\",\"dweb:/ipfs/QmVXuU28cpMjbPTS1WYKz4RgepBA1DTwZXJ82H2b7q3ZZr\"]},\"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/BasePolicy.sol\":{\"keccak256\":\"0x27b5e3e32c20cf408479be643d19b423ba8560edda631e07cf9593d9e223361f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0f8fc6e1fe5d06fa6564b9d3a15e7a8f45952d209a76d8eca062d159af47ee7\",\"dweb:/ipfs/QmXkkDC3oATeWqdsFFFryuky8iahgmF32QvE11eS4PDxMS\"]},\"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/base/BaseERC721Policy.sol\":{\"keccak256\":\"0x893409f1a6723c6b95fb0e7f032037b512aaee34431418b0c1390502acdfac9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e621fef8e337329e2c16fc3c732e82234a8a558cc9080d463f90ab4e49c1d9e\",\"dweb:/ipfs/QmZn52AGv5wLRRg3XTgJKZ5wAoqkQPRYj9LiywwArhN3qJ\"]},\"contracts/test/examples/base/BaseVoting.sol\":{\"keccak256\":\"0xfca005d22bdd5b0c16753348e1ba9ccf07fb12ab63e2c8ead855b74ca709d058\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://47679edd94ab1d3d346beefb27e9dc2fd966db8f4648d2c8931e2798fcb45fc6\",\"dweb:/ipfs/QmfLMaxeTWwvsRgr41LdwnYJDsasdzwXj2FMBWyHQmwbqB\"]},\"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 BaseERC721Policy","name":"_policy","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AlreadyVoted"},{"inputs":[],"type":"error","name":"InvalidOption"},{"inputs":[],"type":"error","name":"NotRegistered"},{"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 BaseERC721Policy","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"hasVoted","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 policy contract enforcing access control."}},"register(uint256)":{"details":"Enforces ownership validation via the policy contract.","params":{"tokenId":"Token ID of the NFT used for validation."}},"vote(uint8)":{"details":"Validates voter registration and option validity before recording the vote.","params":{"option":"The chosen voting option (0 or 1)."}}},"version":1},"userdoc":{"kind":"user","methods":{"POLICY()":{"notice":"Policy contract enforcing NFT-based registration."},"constructor":{"notice":"Initializes the voting system with a specific policy contract."},"register(uint256)":{"notice":"Registers a voter based on NFT ownership."},"vote(uint8)":{"notice":"Casts a vote after successful registration."}},"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/base/BaseVoting.sol":"BaseVoting"},"evmVersion":"cancun","libraries":{}},"sources":{"contracts/checker/BaseChecker.sol":{"keccak256":"0x7cd56cddc8264c5be46692a179221a69b9e20eb977dcb6df82e62f55aa945411","urls":["bzz-raw://6ca0724296c4a104fbd0f7af3c297b857093fb771f418c7c198b721200d60d56","dweb:/ipfs/QmW7chfNoFQJY2NA21xGB8bP5MZ2ajjMuapqp6pMRC52u3"],"license":"MIT"},"contracts/interfaces/IBaseChecker.sol":{"keccak256":"0x2e78c67cfe2594fbe999da0a5102099feec5b7344023f6f95c862130d8097b4a","urls":["bzz-raw://dd6235abb53aed81c48eef7847af7fd9533ceb81afd3670541e29c1f41c275c1","dweb:/ipfs/Qmbjmk4hjb4awhdk3v7WbZC3NuSeWoioewcp8FyBhkMfRB"],"license":"MIT"},"contracts/interfaces/IBasePolicy.sol":{"keccak256":"0x8ec727819f1f02f92352e4ed7d1c92a82a324ca313c0318cd4a080f1a0cc8233","urls":["bzz-raw://5f223695a8361138b94e55954cfa20d69f9f547478a046c8b2aa7799323d4ca8","dweb:/ipfs/QmVXuU28cpMjbPTS1WYKz4RgepBA1DTwZXJ82H2b7q3ZZr"],"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/BasePolicy.sol":{"keccak256":"0x27b5e3e32c20cf408479be643d19b423ba8560edda631e07cf9593d9e223361f","urls":["bzz-raw://a0f8fc6e1fe5d06fa6564b9d3a15e7a8f45952d209a76d8eca062d159af47ee7","dweb:/ipfs/QmXkkDC3oATeWqdsFFFryuky8iahgmF32QvE11eS4PDxMS"],"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/base/BaseERC721Policy.sol":{"keccak256":"0x893409f1a6723c6b95fb0e7f032037b512aaee34431418b0c1390502acdfac9a","urls":["bzz-raw://7e621fef8e337329e2c16fc3c732e82234a8a558cc9080d463f90ab4e49c1d9e","dweb:/ipfs/QmZn52AGv5wLRRg3XTgJKZ5wAoqkQPRYj9LiywwArhN3qJ"],"license":"MIT"},"contracts/test/examples/base/BaseVoting.sol":{"keccak256":"0xfca005d22bdd5b0c16753348e1ba9ccf07fb12ab63e2c8ead855b74ca709d058","urls":["bzz-raw://47679edd94ab1d3d346beefb27e9dc2fd966db8f4648d2c8931e2798fcb45fc6","dweb:/ipfs/QmfLMaxeTWwvsRgr41LdwnYJDsasdzwXj2FMBWyHQmwbqB"],"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":76}