{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"hegg_","type":"address"},{"internalType":"address","name":"claimController_","type":"address"},{"internalType":"uint256","name":"bondAmount_","type":"uint256"},{"internalType":"uint64","name":"lockStart_","type":"uint64"},{"internalType":"uint64","name":"publicMintStart_","type":"uint64"},{"internalType":"bytes32","name":"entropyCommitment_","type":"bytes32"},{"internalType":"uint32","name":"entropyDelayBlocks_","type":"uint32"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AllocationNotFinalized","type":"error"},{"inputs":[],"name":"AlreadyClaimed","type":"error"},{"inputs":[],"name":"AlreadyEntered","type":"error"},{"inputs":[],"name":"ClaimClosed","type":"error"},{"inputs":[],"name":"ClaimNotOpen","type":"error"},{"inputs":[],"name":"EntropyAlreadyCaptured","type":"error"},{"inputs":[],"name":"EntropyExpired","type":"error"},{"inputs":[],"name":"EntropyNotReady","type":"error"},{"inputs":[],"name":"InvalidAmount","type":"error"},{"inputs":[],"name":"InvalidCommitment","type":"error"},{"inputs":[],"name":"InvalidEntropyDelay","type":"error"},{"inputs":[],"name":"InvalidEntropyReveal","type":"error"},{"inputs":[],"name":"InvalidSchedule","type":"error"},{"inputs":[],"name":"LockClosed","type":"error"},{"inputs":[],"name":"LockNotOpen","type":"error"},{"inputs":[],"name":"NotClaimController","type":"error"},{"inputs":[],"name":"NotEntered","type":"error"},{"inputs":[],"name":"NotSelected","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"inputs":[],"name":"RefundNotAvailable","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"inputs":[],"name":"SelectionAlreadyFinalized","type":"error"},{"inputs":[],"name":"SelectionAlreadyRequested","type":"error"},{"inputs":[],"name":"SelectionNotFinalized","type":"error"},{"inputs":[],"name":"SelectionNotRequested","type":"error"},{"inputs":[],"name":"SelectionWindowClosed","type":"error"},{"inputs":[],"name":"UnexpectedTransferAmount","type":"error"},{"inputs":[],"name":"ZeroAddress","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"ticket","type":"uint256"}],"name":"BondLocked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BondWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"uint256","name":"ticket","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"allocationIndex","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"refundAvailableAt","type":"uint256"}],"name":"ClaimConsumed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"entropyBlock","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"blockHash","type":"bytes32"}],"name":"EntropyCaptured","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"seed","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"winnerCount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"multiplier","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"offset","type":"uint256"}],"name":"SelectionFinalized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"entrantCount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"winnerCount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"entropyBlock","type":"uint256"}],"name":"SelectionRequested","type":"event"},{"inputs":[],"name":"CLAIM_WINDOW","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_ENTROPY_DELAY_BLOCKS","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"QUALIFICATION_PERIOD","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WINNER_REFUND_DELAY","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"allocationIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bondAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"captureEntropy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"capturedBlockHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimController","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimDeadline","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"consumeClaim","outputs":[{"internalType":"uint32","name":"allocationIndex_","type":"uint32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"entrantCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"entries","outputs":[{"internalType":"uint64","name":"ticket","type":"uint64"},{"internalType":"uint64","name":"claimedAt","type":"uint64"},{"internalType":"bool","name":"locked","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"entropyBlock","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"entropyCommitment","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"entropyDelayBlocks","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"secret","type":"bytes32"}],"name":"finalizeSelection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"hegg","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isSelected","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockCutoff","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockStart","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"permutationMultiplier","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"permutationOffset","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticket","type":"uint256"}],"name":"permutedTicket","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicMintStart","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"refundAvailableAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"requestSelection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"selectionFinalized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"selectionRequested","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"selectionSeed","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalLocked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"winnerCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"There is deliberately no owner withdrawal or bond-seizure path. A deployment is one mint round.","errors":{"ReentrancyGuardReentrantCall()":[{"details":"Unauthorized reentrant call."}],"SafeERC20FailedOperation(address)":[{"details":"An operation with an ERC-20 token failed."}]},"kind":"dev","methods":{"finalizeSelection(bytes32)":{"details":"The secret cannot be changed after deployment, and the future block hash was unknown then."},"requestSelection()":{"details":"Anyone may call this after the cutoff. Under-subscribed rounds finalize immediately."}},"version":1},"userdoc":{"kind":"user","methods":{"allocationIndex(address)":{"notice":"The winner's unique index in the published public-Hen allocation tree."},"captureEntropy()":{"notice":"Stores the committed future block hash before the EVM's 256-block lookup window expires."},"consumeClaim(address)":{"notice":"Called atomically by the mint controller immediately before minting a selected wallet's Hen."},"finalizeSelection(bytes32)":{"notice":"Reveals the precommitted secret and finalizes a deterministic on-chain permutation."},"lock()":{"notice":"Locks exactly one bond and assigns the caller one immutable ticket."},"requestSelection()":{"notice":"Freezes the entrant count and obtains the public Hen supply from the mint controller."},"withdraw()":{"notice":"Returns the full bond. Losers may withdraw after selection; winners unlock two hours after claiming, or at the end of the 24-hour claim window if they never claim."}},"notice":"Holds one refundable HEGG bond per public-mint entrant and selects winners on-chain.","version":1}},"settings":{"compilationTarget":{"src/HenPublicMintBond.sol":"HenPublicMintBond"},"evmVersion":"cancun","libraries":{},"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"enabled":true,"runs":500},"remappings":[":@ensdomains/=lib/v4-core/node_modules/@ensdomains/",":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",":@uniswap/v4-core/=lib/v4-core/",":ds-test/=lib/v4-core/lib/forge-std/lib/ds-test/src/",":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/",":forge-gas-snapshot/=lib/v4-periphery/lib/permit2/lib/forge-gas-snapshot/src/",":forge-std/=lib/forge-std/src/",":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/",":hardhat/=lib/v4-core/node_modules/hardhat/",":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/",":openzeppelin-contracts/=lib/openzeppelin-contracts/",":permit2/=lib/v4-periphery/lib/permit2/",":solmate/=lib/v4-core/lib/solmate/",":v4-core/=lib/v4-core/src/",":v4-periphery/=lib/v4-periphery/"],"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d","license":"MIT","urls":["bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100","dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d"]},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc","license":"MIT","urls":["bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037","dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ"]},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44","license":"MIT","urls":["bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d","dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF"]},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","license":"MIT","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"]},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x982c5cb790ab941d1e04f807120a71709d4c313ba0bfc16006447ffbd27fbbd5","license":"MIT","urls":["bzz-raw://8150ceb4ac947e8a442b2a9c017e01e880b2be2dd958f1fa9bc405f4c5a86508","dweb:/ipfs/QmbcBmFX66AY6Kbhnd5gx7zpkgqnUafo43XnmayAM7zVdB"]},"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol":{"keccak256":"0x11a5a79827df29e915a12740caf62fe21ebe27c08c9ae3e09abe9ee3ba3866d3","license":"MIT","urls":["bzz-raw://3cf0c69ab827e3251db9ee6a50647d62c90ba580a4d7bbff21f2bea39e7b2f4a","dweb:/ipfs/QmZiKwtKU1SBX4RGfQtY7PZfiapbbu6SZ9vizGQD9UHjRA"]},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c","license":"MIT","urls":["bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617","dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u"]},"src/HenPublicMintBond.sol":{"keccak256":"0x8b0c95095f2f2eb2cab87f5ad66f61017e6a9f9904e48fb1e349d1ee1c7f1f6f","license":"MIT","urls":["bzz-raw://213e7b44a560778472ae0040257166d78a9eb068a980949195ef351f95c34942","dweb:/ipfs/QmSgtbeWP3T9gpLwMHpxCJa5TpisF61EnjnEoC16kgK69d"]}},"version":1}