{"compiler":{"version":"0.8.17+commit.8df45f5f"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"CreatorPayoutAddressCannotBeZeroAddress","type":"error"},{"inputs":[],"name":"DuplicateFeeRecipient","type":"error"},{"inputs":[],"name":"DuplicatePayer","type":"error"},{"inputs":[],"name":"FeeRecipientCannotBeZeroAddress","type":"error"},{"inputs":[],"name":"FeeRecipientNotAllowed","type":"error"},{"inputs":[],"name":"FeeRecipientNotPresent","type":"error"},{"inputs":[{"internalType":"uint256","name":"got","type":"uint256"},{"internalType":"uint256","name":"want","type":"uint256"}],"name":"IncorrectPayment","type":"error"},{"inputs":[{"internalType":"uint256","name":"feeBps","type":"uint256"}],"name":"InvalidFeeBps","type":"error"},{"inputs":[],"name":"InvalidProof","type":"error"},{"inputs":[{"internalType":"address","name":"recoveredSigner","type":"address"}],"name":"InvalidSignature","type":"error"},{"inputs":[{"internalType":"uint256","name":"got","type":"uint256"},{"internalType":"uint256","name":"maximum","type":"uint256"}],"name":"InvalidSignedEndTime","type":"error"},{"inputs":[{"internalType":"uint256","name":"got","type":"uint256"},{"internalType":"uint256","name":"minimumOrMaximum","type":"uint256"}],"name":"InvalidSignedFeeBps","type":"error"},{"inputs":[{"internalType":"uint256","name":"got","type":"uint256"},{"internalType":"uint256","name":"maximum","type":"uint256"}],"name":"InvalidSignedMaxTokenSupplyForStage","type":"error"},{"inputs":[{"internalType":"uint256","name":"got","type":"uint256"},{"internalType":"uint256","name":"maximum","type":"uint256"}],"name":"InvalidSignedMaxTotalMintableByWallet","type":"error"},{"inputs":[{"internalType":"uint256","name":"got","type":"uint256"},{"internalType":"uint256","name":"minimum","type":"uint256"}],"name":"InvalidSignedMintPrice","type":"error"},{"inputs":[{"internalType":"uint256","name":"got","type":"uint256"},{"internalType":"uint256","name":"minimum","type":"uint256"}],"name":"InvalidSignedStartTime","type":"error"},{"inputs":[],"name":"MintQuantityCannotBeZero","type":"error"},{"inputs":[{"internalType":"uint256","name":"total","type":"uint256"},{"internalType":"uint256","name":"allowed","type":"uint256"}],"name":"MintQuantityExceedsMaxMintedPerWallet","type":"error"},{"inputs":[{"internalType":"uint256","name":"total","type":"uint256"},{"internalType":"uint256","name":"maxSupply","type":"uint256"}],"name":"MintQuantityExceedsMaxSupply","type":"error"},{"inputs":[{"internalType":"uint256","name":"total","type":"uint256"},{"internalType":"uint256","name":"maxTokenSupplyForStage","type":"uint256"}],"name":"MintQuantityExceedsMaxTokenSupplyForStage","type":"error"},{"inputs":[{"internalType":"uint256","name":"currentTimestamp","type":"uint256"},{"internalType":"uint256","name":"startTimestamp","type":"uint256"},{"internalType":"uint256","name":"endTimestamp","type":"uint256"}],"name":"NotActive","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"OnlyINonFungibleSeaDropToken","type":"error"},{"inputs":[],"name":"PayerCannotBeZeroAddress","type":"error"},{"inputs":[],"name":"PayerNotAllowed","type":"error"},{"inputs":[],"name":"PayerNotPresent","type":"error"},{"inputs":[],"name":"SignatureAlreadyUsed","type":"error"},{"inputs":[],"name":"SignedMintsMustRestrictFeeRecipients","type":"error"},{"inputs":[],"name":"SignerCannotBeZeroAddress","type":"error"},{"inputs":[],"name":"SignerNotPresent","type":"error"},{"inputs":[],"name":"TokenGatedDropAllowedNftTokenCannotBeDropToken","type":"error"},{"inputs":[],"name":"TokenGatedDropAllowedNftTokenCannotBeZeroAddress","type":"error"},{"inputs":[],"name":"TokenGatedDropStageNotPresent","type":"error"},{"inputs":[{"internalType":"address","name":"nftContract","type":"address"},{"internalType":"address","name":"allowedNftToken","type":"address"},{"internalType":"uint256","name":"allowedNftTokenId","type":"uint256"}],"name":"TokenGatedNotTokenOwner","type":"error"},{"inputs":[{"internalType":"address","name":"nftContract","type":"address"},{"internalType":"address","name":"allowedNftToken","type":"address"},{"internalType":"uint256","name":"allowedNftTokenId","type":"uint256"}],"name":"TokenGatedTokenIdAlreadyRedeemed","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"nftContract","type":"address"},{"indexed":true,"internalType":"bytes32","name":"previousMerkleRoot","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newMerkleRoot","type":"bytes32"},{"indexed":false,"internalType":"string[]","name":"publicKeyURI","type":"string[]"},{"indexed":false,"internalType":"string","name":"allowListURI","type":"string"}],"name":"AllowListUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"nftContract","type":"address"},{"indexed":true,"internalType":"address","name":"feeRecipient","type":"address"},{"indexed":true,"internalType":"bool","name":"allowed","type":"bool"}],"name":"AllowedFeeRecipientUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"nftContract","type":"address"},{"indexed":true,"internalType":"address","name":"newPayoutAddress","type":"address"}],"name":"CreatorPayoutAddressUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"nftContract","type":"address"},{"indexed":false,"internalType":"string","name":"newDropURI","type":"string"}],"name":"DropURIUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"nftContract","type":"address"},{"indexed":true,"internalType":"address","name":"payer","type":"address"},{"indexed":true,"internalType":"bool","name":"allowed","type":"bool"}],"name":"PayerUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"nftContract","type":"address"},{"components":[{"internalType":"uint80","name":"mintPrice","type":"uint80"},{"internalType":"uint48","name":"startTime","type":"uint48"},{"internalType":"uint48","name":"endTime","type":"uint48"},{"internalType":"uint16","name":"maxTotalMintableByWallet","type":"uint16"},{"internalType":"uint16","name":"feeBps","type":"uint16"},{"internalType":"bool","name":"restrictFeeRecipients","type":"bool"}],"indexed":false,"internalType":"struct PublicDrop","name":"publicDrop","type":"tuple"}],"name":"PublicDropUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"nftContract","type":"address"},{"indexed":true,"internalType":"address","name":"minter","type":"address"},{"indexed":true,"internalType":"address","name":"feeRecipient","type":"address"},{"indexed":false,"internalType":"address","name":"payer","type":"address"},{"indexed":false,"internalType":"uint256","name":"quantityMinted","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"unitMintPrice","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"feeBps","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"dropStageIndex","type":"uint256"}],"name":"SeaDropMint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"nftContract","type":"address"},{"indexed":true,"internalType":"address","name":"signer","type":"address"},{"components":[{"internalType":"uint80","name":"minMintPrice","type":"uint80"},{"internalType":"uint24","name":"maxMaxTotalMintableByWallet","type":"uint24"},{"internalType":"uint40","name":"minStartTime","type":"uint40"},{"internalType":"uint40","name":"maxEndTime","type":"uint40"},{"internalType":"uint40","name":"maxMaxTokenSupplyForStage","type":"uint40"},{"internalType":"uint16","name":"minFeeBps","type":"uint16"},{"internalType":"uint16","name":"maxFeeBps","type":"uint16"}],"indexed":false,"internalType":"struct SignedMintValidationParams","name":"signedMintValidationParams","type":"tuple"}],"name":"SignedMintValidationParamsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"nftContract","type":"address"},{"indexed":true,"internalType":"address","name":"allowedNftToken","type":"address"},{"components":[{"internalType":"uint80","name":"mintPrice","type":"uint80"},{"internalType":"uint16","name":"maxTotalMintableByWallet","type":"uint16"},{"internalType":"uint48","name":"startTime","type":"uint48"},{"internalType":"uint48","name":"endTime","type":"uint48"},{"internalType":"uint8","name":"dropStageIndex","type":"uint8"},{"internalType":"uint32","name":"maxTokenSupplyForStage","type":"uint32"},{"internalType":"uint16","name":"feeBps","type":"uint16"},{"internalType":"bool","name":"restrictFeeRecipients","type":"bool"}],"indexed":false,"internalType":"struct TokenGatedDropStage","name":"dropStage","type":"tuple"}],"name":"TokenGatedDropStageUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"nftContract","type":"address"}],"name":"getAllowListMerkleRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"nftContract","type":"address"}],"name":"getAllowedFeeRecipients","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"nftContract","type":"address"},{"internalType":"address","name":"allowedNftToken","type":"address"},{"internalType":"uint256","name":"allowedNftTokenId","type":"uint256"}],"name":"getAllowedNftTokenIdIsRedeemed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"nftContract","type":"address"}],"name":"getCreatorPayoutAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"nftContract","type":"address"},{"internalType":"address","name":"feeRecipient","type":"address"}],"name":"getFeeRecipientIsAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"nftContract","type":"address"},{"internalType":"address","name":"payer","type":"address"}],"name":"getPayerIsAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"nftContract","type":"address"}],"name":"getPayers","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"nftContract","type":"address"}],"name":"getPublicDrop","outputs":[{"components":[{"internalType":"uint80","name":"mintPrice","type":"uint80"},{"internalType":"uint48","name":"startTime","type":"uint48"},{"internalType":"uint48","name":"endTime","type":"uint48"},{"internalType":"uint16","name":"maxTotalMintableByWallet","type":"uint16"},{"internalType":"uint16","name":"feeBps","type":"uint16"},{"internalType":"bool","name":"restrictFeeRecipients","type":"bool"}],"internalType":"struct PublicDrop","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"nftContract","type":"address"},{"internalType":"address","name":"signer","type":"address"}],"name":"getSignedMintValidationParams","outputs":[{"components":[{"internalType":"uint80","name":"minMintPrice","type":"uint80"},{"internalType":"uint24","name":"maxMaxTotalMintableByWallet","type":"uint24"},{"internalType":"uint40","name":"minStartTime","type":"uint40"},{"internalType":"uint40","name":"maxEndTime","type":"uint40"},{"internalType":"uint40","name":"maxMaxTokenSupplyForStage","type":"uint40"},{"internalType":"uint16","name":"minFeeBps","type":"uint16"},{"internalType":"uint16","name":"maxFeeBps","type":"uint16"}],"internalType":"struct SignedMintValidationParams","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"nftContract","type":"address"}],"name":"getSigners","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"nftContract","type":"address"}],"name":"getTokenGatedAllowedTokens","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"nftContract","type":"address"},{"internalType":"address","name":"allowedNftToken","type":"address"}],"name":"getTokenGatedDrop","outputs":[{"components":[{"internalType":"uint80","name":"mintPrice","type":"uint80"},{"internalType":"uint16","name":"maxTotalMintableByWallet","type":"uint16"},{"internalType":"uint48","name":"startTime","type":"uint48"},{"internalType":"uint48","name":"endTime","type":"uint48"},{"internalType":"uint8","name":"dropStageIndex","type":"uint8"},{"internalType":"uint32","name":"maxTokenSupplyForStage","type":"uint32"},{"internalType":"uint16","name":"feeBps","type":"uint16"},{"internalType":"bool","name":"restrictFeeRecipients","type":"bool"}],"internalType":"struct TokenGatedDropStage","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"nftContract","type":"address"},{"internalType":"address","name":"feeRecipient","type":"address"},{"internalType":"address","name":"minterIfNotPayer","type":"address"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"components":[{"internalType":"uint256","name":"mintPrice","type":"uint256"},{"internalType":"uint256","name":"maxTotalMintableByWallet","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"},{"internalType":"uint256","name":"dropStageIndex","type":"uint256"},{"internalType":"uint256","name":"maxTokenSupplyForStage","type":"uint256"},{"internalType":"uint256","name":"feeBps","type":"uint256"},{"internalType":"bool","name":"restrictFeeRecipients","type":"bool"}],"internalType":"struct MintParams","name":"mintParams","type":"tuple"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"mintAllowList","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"nftContract","type":"address"},{"internalType":"address","name":"feeRecipient","type":"address"},{"internalType":"address","name":"minterIfNotPayer","type":"address"},{"components":[{"internalType":"address","name":"allowedNftToken","type":"address"},{"internalType":"uint256[]","name":"allowedNftTokenIds","type":"uint256[]"}],"internalType":"struct TokenGatedMintParams","name":"mintParams","type":"tuple"}],"name":"mintAllowedTokenHolder","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"nftContract","type":"address"},{"internalType":"address","name":"feeRecipient","type":"address"},{"internalType":"address","name":"minterIfNotPayer","type":"address"},{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"mintPublic","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"nftContract","type":"address"},{"internalType":"address","name":"feeRecipient","type":"address"},{"internalType":"address","name":"minterIfNotPayer","type":"address"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"components":[{"internalType":"uint256","name":"mintPrice","type":"uint256"},{"internalType":"uint256","name":"maxTotalMintableByWallet","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"},{"internalType":"uint256","name":"dropStageIndex","type":"uint256"},{"internalType":"uint256","name":"maxTokenSupplyForStage","type":"uint256"},{"internalType":"uint256","name":"feeBps","type":"uint256"},{"internalType":"bool","name":"restrictFeeRecipients","type":"bool"}],"internalType":"struct MintParams","name":"mintParams","type":"tuple"},{"internalType":"uint256","name":"salt","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"mintSigned","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"string[]","name":"publicKeyURIs","type":"string[]"},{"internalType":"string","name":"allowListURI","type":"string"}],"internalType":"struct AllowListData","name":"allowListData","type":"tuple"}],"name":"updateAllowList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"feeRecipient","type":"address"},{"internalType":"bool","name":"allowed","type":"bool"}],"name":"updateAllowedFeeRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_payoutAddress","type":"address"}],"name":"updateCreatorPayoutAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"dropURI","type":"string"}],"name":"updateDropURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"payer","type":"address"},{"internalType":"bool","name":"allowed","type":"bool"}],"name":"updatePayer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint80","name":"mintPrice","type":"uint80"},{"internalType":"uint48","name":"startTime","type":"uint48"},{"internalType":"uint48","name":"endTime","type":"uint48"},{"internalType":"uint16","name":"maxTotalMintableByWallet","type":"uint16"},{"internalType":"uint16","name":"feeBps","type":"uint16"},{"internalType":"bool","name":"restrictFeeRecipients","type":"bool"}],"internalType":"struct PublicDrop","name":"publicDrop","type":"tuple"}],"name":"updatePublicDrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"signer","type":"address"},{"components":[{"internalType":"uint80","name":"minMintPrice","type":"uint80"},{"internalType":"uint24","name":"maxMaxTotalMintableByWallet","type":"uint24"},{"internalType":"uint40","name":"minStartTime","type":"uint40"},{"internalType":"uint40","name":"maxEndTime","type":"uint40"},{"internalType":"uint40","name":"maxMaxTokenSupplyForStage","type":"uint40"},{"internalType":"uint16","name":"minFeeBps","type":"uint16"},{"internalType":"uint16","name":"maxFeeBps","type":"uint16"}],"internalType":"struct SignedMintValidationParams","name":"signedMintValidationParams","type":"tuple"}],"name":"updateSignedMintValidationParams","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"allowedNftToken","type":"address"},{"components":[{"internalType":"uint80","name":"mintPrice","type":"uint80"},{"internalType":"uint16","name":"maxTotalMintableByWallet","type":"uint16"},{"internalType":"uint48","name":"startTime","type":"uint48"},{"internalType":"uint48","name":"endTime","type":"uint48"},{"internalType":"uint8","name":"dropStageIndex","type":"uint8"},{"internalType":"uint32","name":"maxTokenSupplyForStage","type":"uint32"},{"internalType":"uint16","name":"feeBps","type":"uint16"},{"internalType":"bool","name":"restrictFeeRecipients","type":"bool"}],"internalType":"struct TokenGatedDropStage","name":"dropStage","type":"tuple"}],"name":"updateTokenGatedDrop","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"author":"James Wenzel (emo.eth)Ryan Ghods (ralxz.eth)Stephan Min (stephanm.eth)","errors":{"CreatorPayoutAddressCannotBeZeroAddress()":[{"details":"Revert if the creator payout address is the zero address."}],"DuplicateFeeRecipient()":[{"details":"Revert if the fee recipient is already included."}],"DuplicatePayer()":[{"details":"Revert with an error if a payer is already included in mapping      when adding.      Note: only applies when adding a single payer, as duplicates in      enumeration can be removed with updatePayer."}],"FeeRecipientCannotBeZeroAddress()":[{"details":"Revert if the fee recipient is the zero address."}],"FeeRecipientNotAllowed()":[{"details":"Revert if the fee recipient is restricted and not allowed."}],"FeeRecipientNotPresent()":[{"details":"Revert if the fee recipient is not already included."}],"IncorrectPayment(uint256,uint256)":[{"details":"Revert with an error if the received payment is incorrect."}],"InvalidFeeBps(uint256)":[{"details":"Revert if the fee basis points is greater than 10_000."}],"InvalidProof()":[{"details":"Revert with an error if the allow list proof is invalid."}],"InvalidSignature(address)":[{"details":"Revert with an error if signer's signature is invalid."}],"InvalidSignedEndTime(uint256,uint256)":[{"details":"Revert with an error if supplied signed end time is greater than      the maximum specified."}],"InvalidSignedFeeBps(uint256,uint256)":[{"details":"Revert with an error if supplied signed feeBps is greater than      the maximum specified, or less than the minimum."}],"InvalidSignedMaxTokenSupplyForStage(uint256,uint256)":[{"details":"Revert with an error if supplied signed maxTokenSupplyForStage      is greater than the maximum specified."}],"InvalidSignedMaxTotalMintableByWallet(uint256,uint256)":[{"details":"Revert with an error if supplied signed maxTotalMintableByWallet      is greater than the maximum specified."}],"InvalidSignedMintPrice(uint256,uint256)":[{"details":"Revert with an error if supplied signed mint price is less than      the minimum specified."}],"InvalidSignedStartTime(uint256,uint256)":[{"details":"Revert with an error if supplied signed start time is less than      the minimum specified."}],"MintQuantityCannotBeZero()":[{"details":"Revert with an error if the mint quantity is zero."}],"MintQuantityExceedsMaxMintedPerWallet(uint256,uint256)":[{"details":"Revert with an error if the mint quantity exceeds the max allowed      to be minted per wallet."}],"MintQuantityExceedsMaxSupply(uint256,uint256)":[{"details":"Revert with an error if the mint quantity exceeds the max token      supply."}],"MintQuantityExceedsMaxTokenSupplyForStage(uint256,uint256)":[{"details":"Revert with an error if the mint quantity exceeds the max token      supply for the stage.      Note: The `maxTokenSupplyForStage` for public mint is      always `type(uint).max`."}],"NotActive(uint256,uint256,uint256)":[{"details":"Revert with an error if the drop stage is not active."}],"OnlyINonFungibleSeaDropToken(address)":[{"details":"Revert with an error if the sender does not      match the INonFungibleSeaDropToken interface."}],"PayerCannotBeZeroAddress()":[{"details":"Revert if a supplied payer address is the zero address."}],"PayerNotAllowed()":[{"details":"Revert with an error if the payer is not allowed. The minter must      pay for their own mint."}],"PayerNotPresent()":[{"details":"Revert with an error if a payer is not included in      the enumeration when removing."}],"SignatureAlreadyUsed()":[{"details":"Revert with an error if a signature for a signed mint has already      been used."}],"SignedMintsMustRestrictFeeRecipients()":[{"details":"Revert with an error if signed mint did not specify to restrict      fee recipients."}],"SignerCannotBeZeroAddress()":[{"details":"Revert if a supplied signer address is the zero address."}],"SignerNotPresent()":[{"details":"Revert with an error if a signer is not included in      the enumeration when removing."}],"TokenGatedDropAllowedNftTokenCannotBeDropToken()":[{"details":"Revert with an error if an allowedNftToken is set to      the drop token itself."}],"TokenGatedDropAllowedNftTokenCannotBeZeroAddress()":[{"details":"Revert with an error if an allowedNftToken is set to      the zero address."}],"TokenGatedDropStageNotPresent()":[{"details":"Revert with an error if an empty TokenGatedDropStage is provided      for an already-empty TokenGatedDropStage."}],"TokenGatedNotTokenOwner(address,address,uint256)":[{"details":"Revert with an error if the sender of a token gated supplied      drop stage redeem is not the owner of the token."}],"TokenGatedTokenIdAlreadyRedeemed(address,address,uint256)":[{"details":"Revert with an error if the token id has already been used to      redeem a token gated drop stage."}]},"kind":"dev","methods":{"getAllowListMerkleRoot(address)":{"params":{"nftContract":"The nft contract."}},"getAllowedFeeRecipients(address)":{"params":{"nftContract":"The nft contract."}},"getAllowedNftTokenIdIsRedeemed(address,address,uint256)":{"params":{"allowedNftToken":"The token gated nft token.","allowedNftTokenId":"The token gated nft token id to check.","nftContract":"The nft contract."}},"getCreatorPayoutAddress(address)":{"params":{"nftContract":"The nft contract."}},"getFeeRecipientIsAllowed(address,address)":{"params":{"nftContract":"The nft contract."}},"getPayerIsAllowed(address,address)":{"params":{"nftContract":"The nft contract.","payer":"The payer."}},"getPayers(address)":{"params":{"nftContract":"The nft contract."}},"getPublicDrop(address)":{"params":{"nftContract":"The nft contract."}},"getSignedMintValidationParams(address,address)":{"params":{"nftContract":"The nft contract.","signer":"The signer."}},"getSigners(address)":{"params":{"nftContract":"The nft contract."}},"getTokenGatedAllowedTokens(address)":{"params":{"nftContract":"The nft contract."}},"getTokenGatedDrop(address,address)":{"params":{"allowedNftToken":"The token gated nft token.","nftContract":"The nft contract."}},"mintAllowList(address,address,address,uint256,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool),bytes32[])":{"params":{"feeRecipient":"The fee recipient.","mintParams":"The mint parameters.","minterIfNotPayer":"The mint recipient if different than the payer.","nftContract":"The nft contract to mint.","proof":"The proof for the leaf of the allow list.","quantity":"The number of tokens to mint."}},"mintAllowedTokenHolder(address,address,address,(address,uint256[]))":{"params":{"feeRecipient":"The fee recipient.","mintParams":"The token gated mint params.","minterIfNotPayer":"The mint recipient if different than the payer.","nftContract":"The nft contract to mint."}},"mintPublic(address,address,address,uint256)":{"params":{"feeRecipient":"The fee recipient.","minterIfNotPayer":"The mint recipient if different than the payer.","nftContract":"The nft contract to mint.","quantity":"The number of tokens to mint."}},"mintSigned(address,address,address,uint256,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool),uint256,bytes)":{"params":{"feeRecipient":"The fee recipient.","mintParams":"The mint parameters.","minterIfNotPayer":"The mint recipient if different than the payer.","nftContract":"The nft contract to mint.","quantity":"The number of tokens to mint.","salt":"The salt for the signed mint.","signature":"The server-side signature, must be an allowed                         signer."}},"updateAllowList((bytes32,string[],string))":{"params":{"allowListData":"The allow list data."}},"updateAllowedFeeRecipient(address,bool)":{"params":{"allowed":"If the fee recipient is allowed.","feeRecipient":"The fee recipient."}},"updateCreatorPayoutAddress(address)":{"params":{"_payoutAddress":"The creator payout address."}},"updateDropURI(string)":{"params":{"dropURI":"The new drop URI."}},"updatePayer(address,bool)":{"params":{"allowed":"Whether to add or remove the payer.","payer":"The payer to add or remove."}},"updatePublicDrop((uint80,uint48,uint48,uint16,uint16,bool))":{"params":{"publicDrop":"The public drop data."}},"updateSignedMintValidationParams(address,(uint80,uint24,uint40,uint40,uint40,uint16,uint16))":{"params":{"signedMintValidationParams":"Minimum and maximum parameters                                   to enforce for signed mints.","signer":"The signer to update."}},"updateTokenGatedDrop(address,(uint80,uint16,uint48,uint48,uint8,uint32,uint16,bool))":{"params":{"allowedNftToken":"The token gated nft token.","dropStage":"The token gated drop stage data."}}},"title":"SeaDrop","version":1},"userdoc":{"kind":"user","methods":{"constructor":{"notice":"Constructor for the contract deployment."},"getAllowListMerkleRoot(address)":{"notice":"Returns the allow list merkle root for the nft contract."},"getAllowedFeeRecipients(address)":{"notice":"Returns an enumeration of allowed fee recipients for an         nft contract when fee recipients are enforced."},"getAllowedNftTokenIdIsRedeemed(address,address,uint256)":{"notice":"Returns whether the token id for a token gated drop has been         redeemed."},"getCreatorPayoutAddress(address)":{"notice":"Returns the creator payout address for the nft contract."},"getFeeRecipientIsAllowed(address,address)":{"notice":"Returns if the specified fee recipient is allowed         for the nft contract."},"getPayerIsAllowed(address,address)":{"notice":"Returns if the specified payer is allowed         for the nft contract."},"getPayers(address)":{"notice":"Returns the payers for the nft contract."},"getPublicDrop(address)":{"notice":"Returns the public drop data for the nft contract."},"getSignedMintValidationParams(address,address)":{"notice":"Returns the struct of SignedMintValidationParams for a signer."},"getSigners(address)":{"notice":"Returns the server-side signers for the nft contract."},"getTokenGatedAllowedTokens(address)":{"notice":"Returns the allowed token gated drop tokens for the nft contract."},"getTokenGatedDrop(address,address)":{"notice":"Returns the token gated drop data for the nft contract         and token gated nft."},"mintAllowList(address,address,address,uint256,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool),bytes32[])":{"notice":"Mint from an allow list."},"mintAllowedTokenHolder(address,address,address,(address,uint256[]))":{"notice":"Mint as an allowed token holder.         This will mark the token ids as redeemed and will revert if the         same token id is attempted to be redeemed twice."},"mintPublic(address,address,address,uint256)":{"notice":"Mint a public drop."},"mintSigned(address,address,address,uint256,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool),uint256,bytes)":{"notice":"Mint with a server-side signature.         Note that a signature can only be used once."},"updateAllowList((bytes32,string[],string))":{"notice":"Updates the allow list merkle root for the nft contract         and emits an event.         Note: Be sure only authorized users can call this from         token contracts that implement INonFungibleSeaDropToken."},"updateAllowedFeeRecipient(address,bool)":{"notice":"Updates the allowed fee recipient and emits an event."},"updateCreatorPayoutAddress(address)":{"notice":"Updates the creator payout address and emits an event."},"updateDropURI(string)":{"notice":"Emits an event to notify update of the drop URI."},"updatePayer(address,bool)":{"notice":"Updates the allowed payer and emits an event."},"updatePublicDrop((uint80,uint48,uint48,uint16,uint16,bool))":{"notice":"Updates the public drop for the nft contract and emits an event."},"updateSignedMintValidationParams(address,(uint80,uint24,uint40,uint40,uint40,uint16,uint16))":{"notice":"Updates the allowed server-side signers and emits an event."},"updateTokenGatedDrop(address,(uint80,uint16,uint48,uint48,uint8,uint32,uint16,bool))":{"notice":"Updates the token gated drop stage for the nft contract         and emits an event.         Note: If two INonFungibleSeaDropToken tokens are doing simultaneous         token gated drop promotions for each other, they can be         minted by the same actor until `maxTokenSupplyForStage`         is reached. Please ensure the `allowedNftToken` is not         running an active drop during the `dropStage` time period."}},"notice":"SeaDrop is a contract to help facilitate ERC721 token drops         with functionality for public, allow list, server-side signed,         and token-gated drops.","version":1}},"settings":{"compilationTarget":{"src/SeaDrop.sol":"SeaDrop"},"evmVersion":"london","libraries":{},"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"enabled":true,"runs":1000000},"remappings":[":ERC721A/=lib/ERC721A/contracts/",":ds-test/=lib/forge-std/lib/ds-test/src/",":forge-std/=lib/forge-std/src/",":murky/=lib/murky/src/",":openzeppelin-contracts/=lib/openzeppelin-contracts/",":seadrop/=src/",":solmate/=lib/solmate/src/",":utility-contracts/=lib/utility-contracts/src/"]},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x086fbe904291497e1532ef340f1bd589078f49e3d4d0bbfd88f5e02fb89261eb","license":"MIT","urls":["bzz-raw://0df1e3e965b78a0d98dda2d1d6a6acde88f515b1d3a9ad02f505e93fa7babeda","dweb:/ipfs/QmW4cSbGriRAj7XRZu6zSaqspe4eyYWkF7WfJbj3rmmLbk"]},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0xbaa90c891304799f6aa4039eae4b59afc0b59ce3bcc647f3fc2bbf5a04b17f1e","license":"MIT","urls":["bzz-raw://1cc3f5b077759f92f28ba4182d9410aa8fd586d7efc5f76bdd22228bf2d227f0","dweb:/ipfs/QmbLPLb31LxAyB7GWir5AssC1TYVHqhBsN6R7APj2UV9fv"]},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x34d5fd3e73f17311fc4ae0ec192c59d5e46d585045017b41a78b8c75ab387d9d","license":"MIT","urls":["bzz-raw://11224aad5e5e78cda2e0e8456e27121ece04e725a24d63568fa56f100dc47fb3","dweb:/ipfs/QmWrpMpotNwYyWcZJUuRcwas9nuy7KYsFTQ1EELUdWQRww"]},"lib/openzeppelin-contracts/contracts/utils/cryptography/MerkleProof.sol":{"keccak256":"0x596ed72a251d391b814a4aa19d7acb02ebdcc92ba27d3fff74a6f0c158b12ab7","license":"MIT","urls":["bzz-raw://d5f49013d50b1011c842f76e96f3c3f146ca7cb15084c8805575e0e0e1a5c700","dweb:/ipfs/QmQ3n5qiuioUA74heD6ZddNkYg1kYihjQBNcy9zgwYXKgM"]},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","license":"MIT","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"]},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x768fcac57789d8edb0b4c8e02bad17b15faeebbc3c8b2c8ec473b485cc0b59fe","license":"MIT","urls":["bzz-raw://422e724988089c9f08fab930fe24ae9fd593cd069d488a36084ba5a3d46fcfcf","dweb:/ipfs/QmQ64LQm7jCherXKciXHZmy1Xcd6oub1Lx96WVbfZaxATP"]},"lib/solmate/src/tokens/ERC20.sol":{"keccak256":"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10","license":"AGPL-3.0-only","urls":["bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35","dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97"]},"lib/solmate/src/utils/ReentrancyGuard.sol":{"keccak256":"0xb282dd78aa7375d6b200b9a5d8dd214b2e5df1004f8217a4b4c2b07f0c5bfd01","license":"AGPL-3.0-only","urls":["bzz-raw://5fca62eb8d3dbd2b3b7e4bb051f6da16f4d0ff9cee61c39cebb80f031f6a8800","dweb:/ipfs/QmbrsXPK91iBFwHKwJs2HLRud2KzMoBDRiWYMUtyV5H57j"]},"lib/solmate/src/utils/SafeTransferLib.sol":{"keccak256":"0x333b56bef66ff71e3838910781df214acbeb6c2d6ace27a04ebb510f0e669300","license":"AGPL-3.0-only","urls":["bzz-raw://3d14e68954e3a7072fa3d31e6a862d97f944114abda40dcd8c5ba017bf79ff41","dweb:/ipfs/QmVfLok4Q5owoMyybxpensBvvjgUKT4kRVvM9BYuCifi5L"]},"src/SeaDrop.sol":{"keccak256":"0x605877b99cc7f844f6ace1c21ddd39567909610c3a2b3f259460e4d1472a56a5","license":"MIT","urls":["bzz-raw://8cb41ba5efd9a589093855f76e54914f04fc6db6f1d83cf2b69aa6584d2a52fc","dweb:/ipfs/QmPtmnZAhGfs6zLDcHCfjXgc9BWXYYtEBN89tAn8qBWA7D"]},"src/interfaces/INonFungibleSeaDropToken.sol":{"keccak256":"0x270496bff6a014b09b6c03bb8edb031aee731b286ae3c412ac4bea801e4c9e86","license":"MIT","urls":["bzz-raw://2ed834e2ee339dc4d485087e6d601d5fc7c2fe797b52cd4e0eaa045e40932466","dweb:/ipfs/QmcC64vXEJzs55Tpr2oHfpXKZTXjhCEt94BJf7BRqFvPCk"]},"src/interfaces/ISeaDrop.sol":{"keccak256":"0xb3917c6b05730dc96b54bf2b2c5e72b08994eb3150290e85f60c81bb8933ea8b","license":"MIT","urls":["bzz-raw://7cf4b8f42c72c1581375f4d38d107c22f3ec804989cb4171ce05f65699864435","dweb:/ipfs/QmUqDxFPC8Sy5sM2fvqfdSWc427UJnmv116yYVpUq9Uwk9"]},"src/interfaces/ISeaDropTokenContractMetadata.sol":{"keccak256":"0xe40b4ba351db3e481b57591647f03c1f396958bf041e2e831ba970ad452d36a4","license":"MIT","urls":["bzz-raw://b1987a486b7ca7cfad91b1c044ebd4fb65db65989537516ac731900f49b24f7a","dweb:/ipfs/QmaAsqt2yrUmdxbWXX6US67CLJ8s9dfFdsu7wjtxkz4ciX"]},"src/lib/SeaDropErrorsAndEvents.sol":{"keccak256":"0xff91c1042c3df5daa31611f310d306b04a6ef39abdb85aced8a1173b25a20264","license":"MIT","urls":["bzz-raw://763c44a94d9193b1a341b9cbac99ab3e734e57bd2b960b97c059373c90cfb5d1","dweb:/ipfs/QmQpfqHsJRYP5qA9MEf6RJwmSefuy86HDzxfVXVpmAuy1h"]},"src/lib/SeaDropStructs.sol":{"keccak256":"0xd2b2159d2ebf3c56ca4421efeccf0a9713b460b8586ed61f0f0524c48a188d1c","license":"MIT","urls":["bzz-raw://c58a95546307176f806eae811c18b3ec63fc0aab647c1fe01ca4caef4f7c73f7","dweb:/ipfs/QmaE4rSkVCw5ZQyoEXhNBrSHioReGXDAbvqK73hheRyWcy"]}},"version":1}