@excubiae/contracts
Version:
1 lines • 24.3 kB
JSON
{"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":"0x60a0604052348015600e575f5ffd5b50604051610526380380610526833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b6080516104a26100845f395f818160db015261027d01526104a25ff3fe608060405234801561000f575f5ffd5b5060043610610064575f3560e01c8063b3f98adc1161004d578063b3f98adc146100c1578063dadbccee146100d6578063f207564e14610122575f5ffd5b806309eef43e14610068578063b2dd5c071461009f575b5f5ffd5b61008a61007636600461038b565b60016020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61008a6100ad36600461038b565b5f6020819052908152604090205460ff1681565b6100d46100cf3660046103c5565b610135565b005b6100fd7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b6100d46101303660046103e5565b61027b565b335f9081526020819052604090205460ff1661017d576040517faba4733900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b335f9081526001602052604090205460ff16156101c6576040517f7c9a1cf900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028160ff1610610203576040517f2a71953100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b335f8181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016909217909155815192835260ff8416908301527f14075e33dffdc00c1fcaf75d0f86d667170be57fb566b12b41b499e5fa53b12591015b60405180910390a150565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e898ef133836040516020016102cb91815260200190565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016102f79291906103fc565b5f604051808303815f87803b15801561030e575f5ffd5b505af1158015610320573d5f5f3e3d5ffd5b5050335f818152602081815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905590519182527f2d3734a8e47ac8316e500ac231c90a6e1848ca2285f40d07eaa52005e4b3a0e99350019050610270565b5f6020828403121561039b575f5ffd5b813573ffffffffffffffffffffffffffffffffffffffff811681146103be575f5ffd5b9392505050565b5f602082840312156103d5575f5ffd5b813560ff811681146103be575f5ffd5b5f602082840312156103f5575f5ffd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f82518060408401528060208501606085015e5f6060828501015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116840101915050939250505056fea264697066735822122087fca6e9f1760935b602a412517743241e707149168d3a7bd069b1e9d652a41a64736f6c634300081c0033","sourceMap":"300:2288:76:-:0;;;1479:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1527:16:76;;;300: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;:::-;300:2288:76;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f5ffd5b5060043610610064575f3560e01c8063b3f98adc1161004d578063b3f98adc146100c1578063dadbccee146100d6578063f207564e14610122575f5ffd5b806309eef43e14610068578063b2dd5c071461009f575b5f5ffd5b61008a61007636600461038b565b60016020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61008a6100ad36600461038b565b5f6020819052908152604090205460ff1681565b6100d46100cf3660046103c5565b610135565b005b6100fd7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b6100d46101303660046103e5565b61027b565b335f9081526020819052604090205460ff1661017d576040517faba4733900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b335f9081526001602052604090205460ff16156101c6576040517f7c9a1cf900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028160ff1610610203576040517f2a71953100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b335f8181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016909217909155815192835260ff8416908301527f14075e33dffdc00c1fcaf75d0f86d667170be57fb566b12b41b499e5fa53b12591015b60405180910390a150565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e898ef133836040516020016102cb91815260200190565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016102f79291906103fc565b5f604051808303815f87803b15801561030e575f5ffd5b505af1158015610320573d5f5f3e3d5ffd5b5050335f818152602081815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905590519182527f2d3734a8e47ac8316e500ac231c90a6e1848ca2285f40d07eaa52005e4b3a0e99350019050610270565b5f6020828403121561039b575f5ffd5b813573ffffffffffffffffffffffffffffffffffffffff811681146103be575f5ffd5b9392505050565b5f602082840312156103d5575f5ffd5b813560ff811681146103be575f5ffd5b5f602082840312156103f5575f5ffd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f82518060408401528060208501606085015e5f6060828501015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116840101915050939250505056fea264697066735822122087fca6e9f1760935b602a412517743241e707149168d3a7bd069b1e9d652a41a64736f6c634300081c0033","sourceMap":"300:2288:76:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1273:40;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;493:14:133;;486:22;468:41;;456:2;441:18;1273:40:76;;;;;;;;1174:42;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;2219:367;;;;;;:::i;:::-;;:::i;:::-;;1067:40;;;;;;;;996:42:133;984:55;;;966:74;;954:2;939:18;1067:40:76;794:252:133;1746:261:76;;;;;;:::i;:::-;;:::i;2219:367::-;2331:10;2320;:22;;;;;;;;;;;;;2315:51;;2351:15;;;;;;;;;;;;;;2315:51;2389:10;2380:20;;;;:8;:20;;;;;;;;2376:47;;;2409:14;;;;;;;;;;;;;;2376:47;2447:1;2437:6;:11;;;2433:39;;2457:15;;;;;;;;;;;;;;2433:39;2520:10;2511:20;;;;2534:4;2511:20;;;;;;;;;:27;;;;;;;;;;2554:25;;1406:74:133;;;1528:4;1516:17;;1496:18;;;1489:45;2554:25:76;;1379:18:133;2554:25:76;;;;;;;;2219:367;:::o;1746:261::-;1845:6;:14;;;1860:10;1883:7;1872:19;;;;;;1691:25:133;;1679:2;1664:18;;1545:177;1872:19:76;;;;;;;;;;;;;1845:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1944:10:76;1933;:22;;;;;;;;;;;;:29;;;;1958:4;1933:29;;;1978:22;;966:74:133;;;1978:22:76;;-1:-1:-1;939:18:133;;-1:-1:-1;1978: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":{"10328":[{"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\":\"prague\",\"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\":\"0xd5a0aa62b6c617581fad10a727f4961c9f567983c58fea0c00cd9599712f5e8c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7572f9ace9d914d465401d506ecf9aa360e5458eae4a15fc9f9be1da7a925ab9\",\"dweb:/ipfs/QmX5cvUd6Vr7Jy1cYLcMtGfFjs4RTfgHQ4JSBnUp9CMJSs\"]},\"contracts/interfaces/IBaseChecker.sol\":{\"keccak256\":\"0x2e78c67cfe2594fbe999da0a5102099feec5b7344023f6f95c862130d8097b4a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dd6235abb53aed81c48eef7847af7fd9533ceb81afd3670541e29c1f41c275c1\",\"dweb:/ipfs/Qmbjmk4hjb4awhdk3v7WbZC3NuSeWoioewcp8FyBhkMfRB\"]},\"contracts/interfaces/IBasePolicy.sol\":{\"keccak256\":\"0x6ed2c3e67d218be96b6bc2f64a52d453d728954bb224cb89e38fa6918e722d85\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f213bae9dc663d0597bd917120cfade3419948f76f5b47df47396370594c1852\",\"dweb:/ipfs/QmcnzLnc1Jc7HoEarMFjNtPmL3BVtX7r242CCZcyk2SRst\"]},\"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\":\"0xbac32b43789d8e2534db015749e5691f438b69edb7fe67816d63586744eef5f7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8172b83b6979b3de05d0401e8cf9fccec162aa03675b98feeb0209c36042f191\",\"dweb:/ipfs/QmVi5SiXbsTMEcbmKtTNNE7PZEfZrXT2NMdcMq9iYPfJAG\"]},\"contracts/policy/Policy.sol\":{\"keccak256\":\"0x3e6ef3213ffccff5285c8c2dc2d2b062ebd27dc8380ab2e092510375533aab8c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de88bd02c3caf55beb562b26ff5218e594122a58fe969ae15e41376efc8c2dc9\",\"dweb:/ipfs/QmP1o2aaXueaM34CwZNJwtpuUZ6DEqkJc2wvVVNwgTJqdT\"]},\"contracts/proxy/Clone.sol\":{\"keccak256\":\"0x6453f61944f6a5e19d23c930abae166f01bc1613506fd0204e8c541e611b8164\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://520e2bdb7935ac9181d7474a61129151bb2096513e62793ff1c5220827662720\",\"dweb:/ipfs/QmXCDDZfJjX9EaK6QtwDE9FHK7z6ZsG6Ebgrt4CFxxL1wU\"]},\"contracts/test/examples/base/BaseERC721Policy.sol\":{\"keccak256\":\"0x0fa6d094e1aeb1d08302faefcd06aae7a7ca16479efd2a3a0c56cc67f57296ae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91c7792b963454d423240b4355e62980f364864f1cfc293e466291c1deb2bf97\",\"dweb:/ipfs/QmUeKws5AxS9uLEGSGWfqVvST9mqfArepSwVTP9x5Dk3z6\"]},\"contracts/test/examples/base/BaseVoting.sol\":{\"keccak256\":\"0x992799d9e13bf8f838771e2b1675e8d7bb49c72917e844c43e29d79a0fcad929\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a36bfb163a389612d1ada4642564a3ba91e232d34e3c9114cb0e934f6117a50c\",\"dweb:/ipfs/QmcFyNCNTXX1eYPkbCr7aDBVzoQkLFTacBsd5T7AJWmoUz\"]},\"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":"prague","libraries":{}},"sources":{"contracts/checker/BaseChecker.sol":{"keccak256":"0xd5a0aa62b6c617581fad10a727f4961c9f567983c58fea0c00cd9599712f5e8c","urls":["bzz-raw://7572f9ace9d914d465401d506ecf9aa360e5458eae4a15fc9f9be1da7a925ab9","dweb:/ipfs/QmX5cvUd6Vr7Jy1cYLcMtGfFjs4RTfgHQ4JSBnUp9CMJSs"],"license":"MIT"},"contracts/interfaces/IBaseChecker.sol":{"keccak256":"0x2e78c67cfe2594fbe999da0a5102099feec5b7344023f6f95c862130d8097b4a","urls":["bzz-raw://dd6235abb53aed81c48eef7847af7fd9533ceb81afd3670541e29c1f41c275c1","dweb:/ipfs/Qmbjmk4hjb4awhdk3v7WbZC3NuSeWoioewcp8FyBhkMfRB"],"license":"MIT"},"contracts/interfaces/IBasePolicy.sol":{"keccak256":"0x6ed2c3e67d218be96b6bc2f64a52d453d728954bb224cb89e38fa6918e722d85","urls":["bzz-raw://f213bae9dc663d0597bd917120cfade3419948f76f5b47df47396370594c1852","dweb:/ipfs/QmcnzLnc1Jc7HoEarMFjNtPmL3BVtX7r242CCZcyk2SRst"],"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":"0xbac32b43789d8e2534db015749e5691f438b69edb7fe67816d63586744eef5f7","urls":["bzz-raw://8172b83b6979b3de05d0401e8cf9fccec162aa03675b98feeb0209c36042f191","dweb:/ipfs/QmVi5SiXbsTMEcbmKtTNNE7PZEfZrXT2NMdcMq9iYPfJAG"],"license":"MIT"},"contracts/policy/Policy.sol":{"keccak256":"0x3e6ef3213ffccff5285c8c2dc2d2b062ebd27dc8380ab2e092510375533aab8c","urls":["bzz-raw://de88bd02c3caf55beb562b26ff5218e594122a58fe969ae15e41376efc8c2dc9","dweb:/ipfs/QmP1o2aaXueaM34CwZNJwtpuUZ6DEqkJc2wvVVNwgTJqdT"],"license":"MIT"},"contracts/proxy/Clone.sol":{"keccak256":"0x6453f61944f6a5e19d23c930abae166f01bc1613506fd0204e8c541e611b8164","urls":["bzz-raw://520e2bdb7935ac9181d7474a61129151bb2096513e62793ff1c5220827662720","dweb:/ipfs/QmXCDDZfJjX9EaK6QtwDE9FHK7z6ZsG6Ebgrt4CFxxL1wU"],"license":"MIT"},"contracts/test/examples/base/BaseERC721Policy.sol":{"keccak256":"0x0fa6d094e1aeb1d08302faefcd06aae7a7ca16479efd2a3a0c56cc67f57296ae","urls":["bzz-raw://91c7792b963454d423240b4355e62980f364864f1cfc293e466291c1deb2bf97","dweb:/ipfs/QmUeKws5AxS9uLEGSGWfqVvST9mqfArepSwVTP9x5Dk3z6"],"license":"MIT"},"contracts/test/examples/base/BaseVoting.sol":{"keccak256":"0x992799d9e13bf8f838771e2b1675e8d7bb49c72917e844c43e29d79a0fcad929","urls":["bzz-raw://a36bfb163a389612d1ada4642564a3ba91e232d34e3c9114cb0e934f6117a50c","dweb:/ipfs/QmcFyNCNTXX1eYPkbCr7aDBVzoQkLFTacBsd5T7AJWmoUz"],"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}