diff --git a/.github/workflows/test_fork.yml b/.github/workflows/test_fork.yml index 6ddfd3e..6aae877 100644 --- a/.github/workflows/test_fork.yml +++ b/.github/workflows/test_fork.yml @@ -35,6 +35,6 @@ jobs: run: | forge test -vvv --match-test fork env: - FORK_TEST_CHAINS: mainnet,goerli,optimism,optimism_goerli,zora,zora_goerli,base_goerli,base,pgn_sepolia,pgn + FORK_TEST_CHAINS: mainnet,goerli,optimism,optimism_goerli,zora,zora_goerli,base_goerli,base # ,pgn_sepolia,pgn ALCHEMY_KEY: ${{ secrets.ALCHEMY_KEY }} id: test diff --git a/addresses/1.json b/addresses/1.json index 45cb0ad..de21c12 100644 --- a/addresses/1.json +++ b/addresses/1.json @@ -2,6 +2,7 @@ "DROP_METADATA_RENDERER": "0x5914d9a241008b9f02f22811bf3a77e02b84d226", "EDITION_METADATA_RENDERER": "0x192ce8267cbab9c3c477d61e85d7f0c5fe3b46af", "ERC721DROP_IMPL": "0x8237F421357F87a23ed0CFf3a5586172F210A21B", + "ERC721DROP_IMPL_VERSION": 14, "FACTORY_UPGRADE_GATE": "0x8Da5aC3A39D3B8BCaA1FC15A01506cf4F5e79830", "ZORA_NFT_CREATOR_PROXY": "0xF74B146ce44CC162b601deC3BE331784DB111DC1", "ZORA_NFT_CREATOR_V1_IMPL": "0x932A29Dbfc1B8c3BdfC763eF53F113486A5b5E7D" diff --git a/addresses/10.json b/addresses/10.json index 526d419..dfbc475 100644 --- a/addresses/10.json +++ b/addresses/10.json @@ -2,6 +2,7 @@ "DROP_METADATA_RENDERER": "0x96CcF205A366E15E261d77B14586389f80a029e9", "EDITION_METADATA_RENDERER": "0xa2a7D8bcE0bf58D177137ECB94f3Fa6aA06aA7A1", "ERC721DROP_IMPL": "0x3E8524770adD176bE381a0529E09f1c6c3502A5a", + "ERC721DROP_IMPL_VERSION": 14, "FACTORY_UPGRADE_GATE": "0x192D663C3D6813a24a24582A76B8d872c4F6F7f9", "ZORA_NFT_CREATOR_PROXY": "0x7d1a46c6e614A0091c39E102F2798C27c1fA8892", "ZORA_NFT_CREATOR_V1_IMPL": "0x805E0a08dE70f85C01F7848370d5e3fc08aAd0ea", diff --git a/addresses/11155111.json b/addresses/11155111.json index 2d64937..e423d35 100644 --- a/addresses/11155111.json +++ b/addresses/11155111.json @@ -2,6 +2,7 @@ "DROP_METADATA_RENDERER": "0x0Cf8733DEd6d9E0905A8cCc8DC767F381A76970a", "EDITION_METADATA_RENDERER": "0xC5c958a65656A84b74100D1d420a1819fEA18d41", "ERC721DROP_IMPL": "0xF706f5A8030C1e7D344D2Ef32Dff6B8568B3d07B", + "ERC721DROP_IMPL_VERSION": 11, "FACTORY_UPGRADE_GATE": "0x3C1ebcF36Ca9DD9371c9aA99c274e4988906c6E3", "ZORA_NFT_CREATOR_PROXY": "0x87cfd516c5ea86e50b950678CA970a8a28de27ac", "ZORA_NFT_CREATOR_V1_IMPL": "0x96315ee3C58d16A40DA8Ee05008bA1F6654ea358" diff --git a/addresses/420.json b/addresses/420.json index fac3e4d..832636a 100644 --- a/addresses/420.json +++ b/addresses/420.json @@ -2,6 +2,7 @@ "DROP_METADATA_RENDERER": "0xCe6B190956D73dA045bA348743E4C1cb6652f37f", "EDITION_METADATA_RENDERER": "0x169007EF8fF4d2a225f361654e4B8280910fD8FC", "ERC721DROP_IMPL": "0x61Cb091f8EC70029E393D31BA8F6D533c1308408", + "ERC721DROP_IMPL_VERSION": 14, "FACTORY_UPGRADE_GATE": "0x9B414A3F7872bdd2E6513689214BD2Debbe48340", "ZORA_NFT_CREATOR_PROXY": "0x3C1ebcF36Ca9DD9371c9aA99c274e4988906c6E3", "ZORA_NFT_CREATOR_V1_IMPL": "0xbe83E15eED1FD666C241960f50549bE9D639743c", diff --git a/addresses/424.json b/addresses/424.json index 700b843..3ebf820 100644 --- a/addresses/424.json +++ b/addresses/424.json @@ -2,6 +2,7 @@ "DROP_METADATA_RENDERER": "0xd77783B9df27BC9ABd438d1ddE67e3afB64618e0", "EDITION_METADATA_RENDERER": "0xC647382DFbb02ddf39dde7fDEbb5D844a832BE33", "ERC721DROP_IMPL": "0x0ef82DaB14798E63F1B99479Ba689e3f6A6fEb6C", + "ERC721DROP_IMPL_VERSION": 13, "FACTORY_UPGRADE_GATE": "0x973577d5B73a9b2508296F81260415151d0a955E", "ZORA_NFT_CREATOR_PROXY": "0x48d8db63724444C6270749fEe80bBDB6CF33677f", "ZORA_NFT_CREATOR_V1_IMPL": "0x97eb05B8db496B12244BCcf17CF377d00a99b67a", diff --git a/addresses/5.json b/addresses/5.json index 5f9b3f6..993aaa5 100644 --- a/addresses/5.json +++ b/addresses/5.json @@ -4,6 +4,7 @@ "EDITION_METADATA_RENDERER": "0x2f5C21EF9DdFf9A1FE76a1c55dd5112fcf2EfD39", "DROP_METADATA_RENDERER": "0x5956Fd16c4d8c4b4711F2551971aBB7c2F4aF677", "ERC721DROP_IMPL": "0xe4c17055048aEe01D0d122804816fEe5E6ac4A67", + "ERC721DROP_IMPL_VERSION": 14, "FACTORY_UPGRADE_GATE": "0x942C03C7afE5c8118BDB728Aa06d1b894B1cD9A8", "ZORA_NFT_CREATOR_PROXY": "0xb9583D05Ba9ba8f7F14CCEe3Da10D2bc0A72f519", "ZORA_NFT_CREATOR_V1_IMPL": "0x0209aAEC870BE5C1cC243eE18eF6e80d545e9F32" diff --git a/addresses/58008.json b/addresses/58008.json index 8e88817..f4b52c6 100644 --- a/addresses/58008.json +++ b/addresses/58008.json @@ -2,6 +2,7 @@ "DROP_METADATA_RENDERER": "0x973577d5B73a9b2508296F81260415151d0a955E", "EDITION_METADATA_RENDERER": "0x0ef82DaB14798E63F1B99479Ba689e3f6A6fEb6C", "ERC721DROP_IMPL": "0x48d8db63724444C6270749fEe80bBDB6CF33677f", + "ERC721DROP_IMPL_VERSION": 13, "FACTORY_UPGRADE_GATE": "0x97eb05B8db496B12244BCcf17CF377d00a99b67a", "ZORA_NFT_CREATOR_PROXY": "0x418B87c2C9579d27FC3D66605545AB9889737E60", "ZORA_NFT_CREATOR_V1_IMPL": "0x39C51a7957651ea176733F19125BD9c253894D6F", diff --git a/addresses/7777777.json b/addresses/7777777.json index add45f1..94dd725 100644 --- a/addresses/7777777.json +++ b/addresses/7777777.json @@ -2,6 +2,7 @@ "DROP_METADATA_RENDERER": "0x4A0ad3Ef9bE8095590D854bC8481C9E50922a3c0", "EDITION_METADATA_RENDERER": "0xCA7bF48453B72e4E175267127B4Ed7EB12F83b93", "ERC721DROP_IMPL": "0x53a85FbD2955EF713AA489Ae0C48523E727a0c07", + "ERC721DROP_IMPL_VERSION": 14, "FACTORY_UPGRADE_GATE": "0x446A4135FB31007064107EFfDC15B8843B72B6F6", "ZORA_NFT_CREATOR_PROXY": "0xA2c2A96A232113Dd4993E8b048EEbc3371AE8d85", "ZORA_NFT_CREATOR_V1_IMPL": "0xfFFD7409031B1aeb731271C6C2D59771523Ff8a8", diff --git a/addresses/8453.json b/addresses/8453.json index ca7945c..096beb2 100644 --- a/addresses/8453.json +++ b/addresses/8453.json @@ -2,6 +2,7 @@ "DROP_METADATA_RENDERER": "0xF77330C8b1c41f2e44470763Cf9E3ACa78Db4381", "EDITION_METADATA_RENDERER": "0x2008C05685F9fA15BBD75d80e9A44ab0c7230577", "ERC721DROP_IMPL": "0x8Ca5e648C5dFEfcdDa06d627F4b490B719ccFD98", + "ERC721DROP_IMPL_VERSION": 14, "FACTORY_UPGRADE_GATE": "0x532142aE8e53a5F92B9dE1a43F1FFD6eF789e65e", "ZORA_NFT_CREATOR_PROXY": "0x58C3ccB2dcb9384E5AB9111CD1a5DEA916B0f33c", "ZORA_NFT_CREATOR_V1_IMPL": "0x76CC78EF3aafD52e716a8e37F3dBbE0C42c51d54", diff --git a/addresses/84531.json b/addresses/84531.json index b634a46..bbeda85 100644 --- a/addresses/84531.json +++ b/addresses/84531.json @@ -2,6 +2,7 @@ "DROP_METADATA_RENDERER": "0x0Cf8733DEd6d9E0905A8cCc8DC767F381A76970a", "EDITION_METADATA_RENDERER": "0xC5c958a65656A84b74100D1d420a1819fEA18d41", "ERC721DROP_IMPL": "0x39Bcc1e15b8ec15684F17fEf298151F4A544B591", + "ERC721DROP_IMPL_VERSION": 14, "FACTORY_UPGRADE_GATE": "0x3C1ebcF36Ca9DD9371c9aA99c274e4988906c6E3", "ZORA_NFT_CREATOR_PROXY": "0x87cfd516c5ea86e50b950678CA970a8a28de27ac", "ZORA_NFT_CREATOR_V1_IMPL": "0x489f8fFbd5f5eA8875c2EbC5CA9ED1214BD77F42" diff --git a/addresses/999.json b/addresses/999.json index 395e58e..77588d7 100644 --- a/addresses/999.json +++ b/addresses/999.json @@ -2,6 +2,7 @@ "DROP_METADATA_RENDERER": "0xb9583D05Ba9ba8f7F14CCEe3Da10D2bc0A72f519", "EDITION_METADATA_RENDERER": "0x481c56e15A9B2987Bd6041043e1d807697505d23", "ERC721DROP_IMPL": "0x293997C6a1f2A1cA3aB971f548c4D95585E46282", + "ERC721DROP_IMPL_VERSION": 14, "FACTORY_UPGRADE_GATE": "0x2068BA7Be6e22b97d21f5eb6e152A36d2Dc27da2", "ZORA_NFT_CREATOR_PROXY": "0xeB29A4e5b84fef428c072debA2444e93c080CE87", "ZORA_NFT_CREATOR_V1_IMPL": "0xe4c17055048aEe01D0d122804816fEe5E6ac4A67" diff --git a/foundry.toml b/foundry.toml index 5a0b463..b4317a3 100644 --- a/foundry.toml +++ b/foundry.toml @@ -22,11 +22,8 @@ pgn_sepolia = { key = "", chain = 7777777, url = "https://explorer.sepolia.publi mainnet = "https://eth-mainnet.g.alchemy.com/v2/${ALCHEMY_KEY}" goerli = "https://eth-goerli.g.alchemy.com/v2/${ALCHEMY_KEY}" -# for optimism, since we are just using this for deployment/fork testing, -# we can use these since they're lower volume. - -optimism = "https://mainnet.optimism.io" -optimism_goerli = "https://goerli.optimism.io" +optimism = "https://opt-mainnet.g.alchemy.com/v2/${ALCHEMY_KEY}" +optimism_goerli = "https://opt-goerli.g.alchemy.com/v2/${ALCHEMY_KEY}" zora = "https://rpc.zora.energy" zora_goerli = "https://testnet.rpc.zora.energy" diff --git a/script/Deploy.s.sol b/script/Deploy.s.sol index 99ae2fa..f6100fd 100644 --- a/script/Deploy.s.sol +++ b/script/Deploy.s.sol @@ -63,12 +63,15 @@ contract Deploy is ZoraDropsDeployBase { // vm.stopBroadcast(); + uint256 dropImplementationVersion = dropImplementation.contractVersion(); + return getDeploymentJSON( DropDeployment({ dropMetadata: address(dropMetadata), editionMetadata: address(editionMetadata), dropImplementation: address(dropImplementation), + dropImplementationVersion: dropImplementationVersion, factoryUpgradeGate: address(factoryUpgradeGate), factory: address(factory), factoryImpl: address(factoryImpl) diff --git a/script/UpgradeERC721DropFactory.s.sol b/script/UpgradeERC721DropFactory.s.sol index 591f43c..ae8c36e 100644 --- a/script/UpgradeERC721DropFactory.s.sol +++ b/script/UpgradeERC721DropFactory.s.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.13; import "forge-std/console2.sol"; import {ZoraDropsDeployBase} from "./ZoraDropsDeployBase.sol"; -import {ChainConfig, DropDeployment} from '../src/DeploymentConfig.sol'; +import {ChainConfig, DropDeployment} from "../src/DeploymentConfig.sol"; import {ERC721Drop} from "../src/ERC721Drop.sol"; import {ERC721DropProxy} from "../src/ERC721DropProxy.sol"; @@ -64,6 +64,7 @@ contract UpgradeERC721DropFactory is ZoraDropsDeployBase { }); deployment.dropImplementation = address(dropImplementation); + deployment.dropImplementationVersion = dropImplementation.contractVersion(); console2.log("Drop IMPL: "); console2.log(address(dropImplementation)); diff --git a/script/ZoraDropsDeployBase.sol b/script/ZoraDropsDeployBase.sol index 1b4e9ff..4d9e537 100644 --- a/script/ZoraDropsDeployBase.sol +++ b/script/ZoraDropsDeployBase.sol @@ -2,14 +2,13 @@ pragma solidity ^0.8.13; import "forge-std/Script.sol"; -import {ScriptDeploymentConfig, DropDeployment} from '../src/DeploymentConfig.sol'; +import {ScriptDeploymentConfig, DropDeployment} from "../src/DeploymentConfig.sol"; import {Strings} from "@openzeppelin/contracts/utils/Strings.sol"; import {ZoraNFTCreatorV1} from "../src/ZoraNFTCreatorV1.sol"; import {IERC721Drop} from "../src/interfaces/IERC721Drop.sol"; -/// @notice Deployment drops for base where +/// @notice Deployment drops for base where abstract contract ZoraDropsDeployBase is ScriptDeploymentConfig { - /// @notice Get deployment configuration struct as JSON /// @param deployment deploymet struct /// @return deploymentJson string JSON of the deployment info @@ -19,6 +18,7 @@ abstract contract ZoraDropsDeployBase is ScriptDeploymentConfig { vm.serializeAddress(deploymentJsonKey, DROP_METADATA_RENDERER, deployment.dropMetadata); vm.serializeAddress(deploymentJsonKey, EDITION_METADATA_RENDERER, deployment.editionMetadata); vm.serializeAddress(deploymentJsonKey, ERC721DROP_IMPL, deployment.dropImplementation); + vm.serializeUint(deploymentJsonKey, ERC721DROP_IMPL_VERSION, deployment.dropImplementationVersion); vm.serializeAddress(deploymentJsonKey, FACTORY_UPGRADE_GATE, deployment.factoryUpgradeGate); vm.serializeAddress(deploymentJsonKey, ZORA_NFT_CREATOR_PROXY, deployment.factory); // Get the JSON key as a seralized string diff --git a/src/DeploymentConfig.sol b/src/DeploymentConfig.sol index d68d7cf..47246eb 100644 --- a/src/DeploymentConfig.sol +++ b/src/DeploymentConfig.sol @@ -34,6 +34,8 @@ struct DropDeployment { address editionMetadata; /// @notice Implementation contract for the drop contract address dropImplementation; + /// @notice Implementation version for the drop contract + uint256 dropImplementationVersion; /// @notice Factory upgrade gate immutable registry for allowing upgrades address factoryUpgradeGate; /// @notice Factory proxy contract that creates zora drops style NFT contracts @@ -71,6 +73,7 @@ abstract contract DeploymentConfig is StdChains, StdCheatsSafe, StdUtils, Script string constant DROP_METADATA_RENDERER = "DROP_METADATA_RENDERER"; string constant EDITION_METADATA_RENDERER = "EDITION_METADATA_RENDERER"; string constant ERC721DROP_IMPL = "ERC721DROP_IMPL"; + string constant ERC721DROP_IMPL_VERSION = "ERC721DROP_IMPL_VERSION"; string constant FACTORY_UPGRADE_GATE = "FACTORY_UPGRADE_GATE"; string constant ZORA_NFT_CREATOR_PROXY = "ZORA_NFT_CREATOR_PROXY"; string constant ZORA_NFT_CREATOR_V1_IMPL = "ZORA_NFT_CREATOR_V1_IMPL"; diff --git a/src/ERC721Drop.sol b/src/ERC721Drop.sol index eafb28d..5ab6d04 100644 --- a/src/ERC721Drop.sol +++ b/src/ERC721Drop.sol @@ -24,9 +24,9 @@ import {ReentrancyGuardUpgradeable} from "@openzeppelin/contracts-upgradeable/se import {MerkleProofUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/cryptography/MerkleProofUpgradeable.sol"; import {UUPSUpgradeable} from "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; import {MathUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol"; -import {IProtocolRewards} from "@zoralabs/protocol-rewards/dist/contracts/interfaces/IProtocolRewards.sol"; -import {ERC721Rewards} from "@zoralabs/protocol-rewards/dist/contracts/abstract/ERC721/ERC721Rewards.sol"; -import {ERC721RewardsStorageV1} from "@zoralabs/protocol-rewards/dist/contracts/abstract/ERC721/ERC721RewardsStorageV1.sol"; +import {IProtocolRewards} from "@zoralabs/protocol-rewards/src/interfaces/IProtocolRewards.sol"; +import {ERC721Rewards} from "@zoralabs/protocol-rewards/src/abstract/ERC721/ERC721Rewards.sol"; +import {ERC721RewardsStorageV1} from "@zoralabs/protocol-rewards/src/abstract/ERC721/ERC721RewardsStorageV1.sol"; import {IMetadataRenderer} from "./interfaces/IMetadataRenderer.sol"; import {IOperatorFilterRegistry} from "./interfaces/IOperatorFilterRegistry.sol"; diff --git a/test/ERC721Drop.t.sol b/test/ERC721Drop.t.sol index a399882..62817ae 100644 --- a/test/ERC721Drop.t.sol +++ b/test/ERC721Drop.t.sol @@ -4,8 +4,8 @@ pragma solidity ^0.8.10; import {Test} from "forge-std/Test.sol"; import {IERC721AUpgradeable} from "erc721a-upgradeable/IERC721AUpgradeable.sol"; import {Math} from "@openzeppelin/contracts/utils/math/Math.sol"; -import {ProtocolRewards} from "@zoralabs/protocol-rewards/dist/contracts/ProtocolRewards.sol"; -import {RewardsSettings} from "@zoralabs/protocol-rewards/dist/contracts/abstract/RewardSplits.sol"; +import {ProtocolRewards} from "@zoralabs/protocol-rewards/src/ProtocolRewards.sol"; +import {RewardsSettings} from "@zoralabs/protocol-rewards/src/abstract/RewardSplits.sol"; import {ERC721Drop} from "../src/ERC721Drop.sol"; import {DummyMetadataRenderer} from "./utils/DummyMetadataRenderer.sol"; diff --git a/test/ZoraNFTCreatorV1.t.sol b/test/ZoraNFTCreatorV1.t.sol index acff13e..281be1d 100644 --- a/test/ZoraNFTCreatorV1.t.sol +++ b/test/ZoraNFTCreatorV1.t.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.10; import {Test} from "forge-std/Test.sol"; import {IERC721AUpgradeable} from "erc721a-upgradeable/IERC721AUpgradeable.sol"; -import {ProtocolRewards} from "@zoralabs/protocol-rewards/dist/contracts/ProtocolRewards.sol"; +import {ProtocolRewards} from "@zoralabs/protocol-rewards/src/ProtocolRewards.sol"; import {IMetadataRenderer} from "../src/interfaces/IMetadataRenderer.sol"; import "../src/ZoraNFTCreatorV1.sol"; diff --git a/test/merkle/MerkleDrop.t.sol b/test/merkle/MerkleDrop.t.sol index 447c86a..9cd2bde 100644 --- a/test/merkle/MerkleDrop.t.sol +++ b/test/merkle/MerkleDrop.t.sol @@ -2,7 +2,7 @@ pragma solidity ^0.8.10; import {Test} from "forge-std/Test.sol"; -import {ProtocolRewards} from "@zoralabs/protocol-rewards/dist/contracts/ProtocolRewards.sol"; +import {ProtocolRewards} from "@zoralabs/protocol-rewards/src/ProtocolRewards.sol"; import {IERC721Drop} from "../../src/interfaces/IERC721Drop.sol"; import {ERC721Drop} from "../../src/ERC721Drop.sol"; @@ -17,10 +17,8 @@ contract ZoraNFTBaseTest is Test { DummyMetadataRenderer public dummyRenderer = new DummyMetadataRenderer(); MerkleData public merkleData; address public constant DEFAULT_OWNER_ADDRESS = address(0x23499); - address payable public constant DEFAULT_FUNDS_RECIPIENT_ADDRESS = - payable(address(0x21303)); - address payable public constant DEFAULT_ZORA_DAO_ADDRESS = - payable(address(0x999)); + address payable public constant DEFAULT_FUNDS_RECIPIENT_ADDRESS = payable(address(0x21303)); + address payable public constant DEFAULT_ZORA_DAO_ADDRESS = payable(address(0x999)); address public constant mediaContract = address(0x123456); address payable public constant mintFeeRecipient = payable(address(0x1234)); uint256 public constant mintFee = 0.000777 ether; @@ -48,19 +46,8 @@ contract ZoraNFTBaseTest is Test { protocolRewards = new ProtocolRewards(); vm.prank(DEFAULT_ZORA_DAO_ADDRESS); - address impl = address( - new ERC721Drop( - address(1234), - FactoryUpgradeGate(address(0)), - address(0), - mintFee, - mintFeeRecipient, - address(protocolRewards) - ) - ); - address payable newDrop = payable( - address(new ERC721DropProxy(impl, "")) - ); + address impl = address(new ERC721Drop(address(1234), FactoryUpgradeGate(address(0)), address(0), mintFee, mintFeeRecipient, address(protocolRewards))); + address payable newDrop = payable(address(new ERC721DropProxy(impl, ""))); zoraNFTBase = ERC721Drop(newDrop); merkleData = new MerkleData(); } @@ -74,9 +61,7 @@ contract ZoraNFTBaseTest is Test { presaleEnd: type(uint64).max, publicSalePrice: 0 ether, maxSalePurchasePerAddress: 0, - presaleMerkleRoot: merkleData - .getTestSetByName("test-3-addresses") - .root + presaleMerkleRoot: merkleData.getTestSetByName("test-3-addresses").root }); vm.stopPrank(); @@ -87,35 +72,19 @@ contract ZoraNFTBaseTest is Test { vm.deal(address(item.user), 1 ether); vm.startPrank(address(item.user)); - zoraNFTBase.purchasePresale{value: item.mintPrice + fee}( - 1, - item.maxMint, - item.mintPrice, - item.proof - ); + zoraNFTBase.purchasePresale{value: item.mintPrice + fee}(1, item.maxMint, item.mintPrice, item.proof); assertEq(zoraNFTBase.saleDetails().maxSupply, 10); assertEq(zoraNFTBase.saleDetails().totalMinted, 1); - require( - zoraNFTBase.ownerOf(1) == address(item.user), - "owner is wrong for new minted token" - ); + require(zoraNFTBase.ownerOf(1) == address(item.user), "owner is wrong for new minted token"); vm.stopPrank(); item = merkleData.getTestSetByName("test-3-addresses").entries[1]; vm.deal(address(item.user), 1 ether); vm.startPrank(address(item.user)); - zoraNFTBase.purchasePresale{value: (item.mintPrice + fee) * 2}( - 2, - item.maxMint, - item.mintPrice, - item.proof - ); + zoraNFTBase.purchasePresale{value: (item.mintPrice + fee) * 2}(2, item.maxMint, item.mintPrice, item.proof); assertEq(zoraNFTBase.saleDetails().maxSupply, 10); assertEq(zoraNFTBase.saleDetails().totalMinted, 3); - require( - zoraNFTBase.ownerOf(2) == address(item.user), - "owner is wrong for new minted token" - ); + require(zoraNFTBase.ownerOf(2) == address(item.user), "owner is wrong for new minted token"); vm.stopPrank(); } @@ -128,9 +97,7 @@ contract ZoraNFTBaseTest is Test { presaleEnd: type(uint64).max, publicSalePrice: 0 ether, maxSalePurchasePerAddress: 0, - presaleMerkleRoot: merkleData - .getTestSetByName("test-3-addresses") - .root + presaleMerkleRoot: merkleData.getTestSetByName("test-3-addresses").root }); vm.stopPrank(); @@ -141,18 +108,8 @@ contract ZoraNFTBaseTest is Test { vm.deal(address(item.user), 1 ether); vm.startPrank(address(item.user)); - vm.expectRevert( - abi.encodeWithSelector( - IERC721Drop.Purchase_WrongPrice.selector, - item.mintPrice + fee - ) - ); - zoraNFTBase.purchasePresale{value: item.mintPrice - 1}( - 1, - item.maxMint, - item.mintPrice, - item.proof - ); + vm.expectRevert(abi.encodeWithSelector(IERC721Drop.Purchase_WrongPrice.selector, item.mintPrice + fee)); + zoraNFTBase.purchasePresale{value: item.mintPrice - 1}(1, item.maxMint, item.mintPrice, item.proof); assertEq(zoraNFTBase.saleDetails().maxSupply, 10); assertEq(zoraNFTBase.saleDetails().totalMinted, 0); vm.stopPrank(); @@ -167,9 +124,7 @@ contract ZoraNFTBaseTest is Test { presaleEnd: type(uint64).max, publicSalePrice: 0 ether, maxSalePurchasePerAddress: 0, - presaleMerkleRoot: merkleData - .getTestSetByName("test-3-addresses") - .root + presaleMerkleRoot: merkleData.getTestSetByName("test-3-addresses").root }); vm.stopPrank(); @@ -181,21 +136,13 @@ contract ZoraNFTBaseTest is Test { vm.expectRevert(IERC721Drop.Presale_MerkleNotApproved.selector); item.proof[1] = item.proof[1] & bytes32(bytes4(0xcafecafe)); - zoraNFTBase.purchasePresale{value: item.mintPrice - 1}( - 1, - item.maxMint, - item.mintPrice, - item.proof - ); + zoraNFTBase.purchasePresale{value: item.mintPrice - 1}(1, item.maxMint, item.mintPrice, item.proof); assertEq(zoraNFTBase.saleDetails().maxSupply, 10); assertEq(zoraNFTBase.saleDetails().totalMinted, 0); vm.stopPrank(); } - function test_MerklePurchaseAndPublicSalePurchaseLimits() - public - setupZoraNFTBase - { + function test_MerklePurchaseAndPublicSalePurchaseLimits() public setupZoraNFTBase { vm.startPrank(DEFAULT_OWNER_ADDRESS); zoraNFTBase.setSaleConfiguration({ publicSaleStart: 0, @@ -217,44 +164,18 @@ contract ZoraNFTBaseTest is Test { vm.startPrank(address(item.user)); vm.expectRevert(IERC721Drop.Presale_TooManyForAddress.selector); - zoraNFTBase.purchasePresale{value: (item.mintPrice + fee) * 3}( - 3, - item.maxMint, - item.mintPrice, - item.proof - ); - - zoraNFTBase.purchasePresale{value: (item.mintPrice + fee) * 1}( - 1, - item.maxMint, - item.mintPrice, - item.proof - ); - zoraNFTBase.purchasePresale{value: (item.mintPrice + fee) * 1}( - 1, - item.maxMint, - item.mintPrice, - item.proof - ); + zoraNFTBase.purchasePresale{value: (item.mintPrice + fee) * 3}(3, item.maxMint, item.mintPrice, item.proof); + + zoraNFTBase.purchasePresale{value: (item.mintPrice + fee) * 1}(1, item.maxMint, item.mintPrice, item.proof); + zoraNFTBase.purchasePresale{value: (item.mintPrice + fee) * 1}(1, item.maxMint, item.mintPrice, item.proof); assertEq(zoraNFTBase.saleDetails().totalMinted, 2); - require( - zoraNFTBase.ownerOf(1) == address(item.user), - "owner is wrong for new minted token" - ); + require(zoraNFTBase.ownerOf(1) == address(item.user), "owner is wrong for new minted token"); vm.expectRevert(IERC721Drop.Presale_TooManyForAddress.selector); - zoraNFTBase.purchasePresale{value: (item.mintPrice + fee) * 1}( - 1, - item.maxMint, - item.mintPrice, - item.proof - ); + zoraNFTBase.purchasePresale{value: (item.mintPrice + fee) * 1}(1, item.maxMint, item.mintPrice, item.proof); zoraNFTBase.purchase{value: 0.1 ether + fee}(1); - require( - zoraNFTBase.ownerOf(3) == address(item.user), - "owner is wrong for new minted token" - ); + require(zoraNFTBase.ownerOf(3) == address(item.user), "owner is wrong for new minted token"); vm.expectRevert(IERC721Drop.Purchase_TooManyForAddress.selector); zoraNFTBase.purchase{value: 0.1 ether + fee}(1); vm.stopPrank(); @@ -294,12 +215,7 @@ contract ZoraNFTBaseTest is Test { vm.startPrank(address(item.user)); vm.expectRevert(IERC721Drop.Mint_SoldOut.selector); - zoraNFTBase.purchasePresale{value: item.mintPrice}( - 1, - item.maxMint, - item.mintPrice, - item.proof - ); + zoraNFTBase.purchasePresale{value: item.mintPrice}(1, item.maxMint, item.mintPrice, item.proof); vm.stopPrank(); } @@ -314,23 +230,14 @@ contract ZoraNFTBaseTest is Test { presaleEnd: 0, publicSalePrice: 0 ether, maxSalePurchasePerAddress: 0, - presaleMerkleRoot: merkleData - .getTestSetByName("test-3-addresses") - .root + presaleMerkleRoot: merkleData.getTestSetByName("test-3-addresses").root }); vm.stopPrank(); vm.deal(address(0x10), 1 ether); vm.startPrank(address(0x10)); - MerkleData.MerkleEntry memory item = merkleData - .getTestSetByName("test-3-addresses") - .entries[0]; + MerkleData.MerkleEntry memory item = merkleData.getTestSetByName("test-3-addresses").entries[0]; vm.expectRevert(IERC721Drop.Presale_Inactive.selector); - zoraNFTBase.purchasePresale{value: item.mintPrice}( - 1, - item.maxMint, - item.mintPrice, - item.proof - ); + zoraNFTBase.purchasePresale{value: item.mintPrice}(1, item.maxMint, item.mintPrice, item.proof); } } diff --git a/yarn.lock b/yarn.lock index b926055..343b21f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8,32 +8,33 @@ integrity sha512-iowxq3U30sghZotgl4s/oJRci6WPBfNO5YYgk2cIOMCHr3LeGPcsZjCEr+33Q4N+oV3OABDAtA+pyvWjbvBifQ== "@babel/code-frame@^7.0.0": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.5.tgz#234d98e1551960604f1246e6475891a570ad5658" - integrity sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ== + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.10.tgz#1c20e612b768fefa75f6e90d6ecb86329247f0a3" + integrity sha512-/KKIMG4UEL35WmI9OlvMhurwtytjvXoFcGNrOvyG9zIzA8YmPjVtIZUf7b05+TPO7G7/GEmLHDaoCgACHl9hhA== dependencies: - "@babel/highlight" "^7.22.5" + "@babel/highlight" "^7.22.10" + chalk "^2.4.2" "@babel/helper-validator-identifier@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz#9544ef6a33999343c8740fa51350f30eeaaaf193" integrity sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ== -"@babel/highlight@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.5.tgz#aa6c05c5407a67ebce408162b7ede789b4d22031" - integrity sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw== +"@babel/highlight@^7.22.10": + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.10.tgz#02a3f6d8c1cb4521b2fd0ab0da8f4739936137d7" + integrity sha512-78aUtVcT7MUscr0K5mIEnkwxPE0MaxkR5RxRwuHaQ+JuU5AmTPhY+do2mdzVTnIJJpyBglql2pehuBIWHug+WQ== dependencies: "@babel/helper-validator-identifier" "^7.22.5" - chalk "^2.0.0" + chalk "^2.4.2" js-tokens "^4.0.0" "@babel/runtime@^7.20.1", "@babel/runtime@^7.5.5": - version "7.22.6" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.6.tgz#57d64b9ae3cff1d67eb067ae117dac087f5bd438" - integrity sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ== + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.10.tgz#ae3e9631fd947cb7e3610d3e9d8fef5f76696682" + integrity sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ== dependencies: - regenerator-runtime "^0.13.11" + regenerator-runtime "^0.14.0" "@changesets/apply-release-plan@^6.1.4": version "6.1.4" @@ -578,33 +579,28 @@ "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/resolve-uri@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" - integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== "@jridgewell/set-array@^1.0.1": version "1.1.2" resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== -"@jridgewell/sourcemap-codec@1.4.14": - version "1.4.14" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" - integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== - -"@jridgewell/sourcemap-codec@^1.4.10": +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": version "1.4.15" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== "@jridgewell/trace-mapping@^0.3.9": - version "0.3.18" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6" - integrity sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA== + version "0.3.19" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz#f8a3249862f91be48d3127c3cfe992f79b4b8811" + integrity sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw== dependencies: - "@jridgewell/resolve-uri" "3.1.0" - "@jridgewell/sourcemap-codec" "1.4.14" + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" "@manypkg/find-root@^1.1.0": version "1.1.0" @@ -628,7 +624,14 @@ globby "^11.0.0" read-yaml-file "^1.1.0" -"@noble/curves@1.0.0", "@noble/curves@~1.0.0": +"@noble/curves@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.1.0.tgz#f13fc667c89184bc04cccb9b11e8e7bae27d8c3d" + integrity sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA== + dependencies: + "@noble/hashes" "1.3.1" + +"@noble/curves@~1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.0.0.tgz#e40be8c7daf088aaf291887cbc73f43464a92932" integrity sha512-2upgEu0iLiDVDZkNLeFV2+ht0BAVgQnEmCk6JsOch9Rp8xfkMCbvbAZlA2pBHQc73dbl+vFOXfqkf4uemdn0bw== @@ -640,7 +643,7 @@ resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.0.tgz#085fd70f6d7d9d109671090ccae1d3bec62554a1" integrity sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg== -"@noble/hashes@~1.3.0": +"@noble/hashes@1.3.1", "@noble/hashes@~1.3.0": version "1.3.1" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.1.tgz#8831ef002114670c603c458ab8b11328406953a9" integrity sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA== @@ -678,17 +681,17 @@ debug "^4.1.1" semver "^7.5.4" -"@oclif/config@1.18.15": - version "1.18.15" - resolved "https://registry.yarnpkg.com/@oclif/config/-/config-1.18.15.tgz#3be95862dda32d759fc61bcadff1e7819915a112" - integrity sha512-eBTiFXGfXSzghc4Yjp3EutYU+6MrHX1kzk4j5i4CsR5AEor43ynXFrzpO6v7IwbR1KyUo+9SYE2D69Y+sHIMpg== +"@oclif/config@1.18.16", "@oclif/config@^1", "@oclif/config@^1.18.2": + version "1.18.16" + resolved "https://registry.yarnpkg.com/@oclif/config/-/config-1.18.16.tgz#3235d260ab1eb8388ebb6255bca3dd956249d796" + integrity sha512-VskIxVcN22qJzxRUq+raalq6Q3HUde7sokB7/xk5TqRZGEKRVbFeqdQBxDWwQeudiJEgcNiMvIFbMQ43dY37FA== dependencies: "@oclif/errors" "^1.3.6" - "@oclif/parser" "^3.8.15" + "@oclif/parser" "^3.8.16" debug "^4.3.4" globby "^11.1.0" is-wsl "^2.1.1" - tslib "^2.5.0" + tslib "^2.6.1" "@oclif/config@1.18.2": version "1.18.2" @@ -702,18 +705,6 @@ is-wsl "^2.1.1" tslib "^2.0.0" -"@oclif/config@^1", "@oclif/config@^1.18.2": - version "1.18.16" - resolved "https://registry.yarnpkg.com/@oclif/config/-/config-1.18.16.tgz#3235d260ab1eb8388ebb6255bca3dd956249d796" - integrity sha512-VskIxVcN22qJzxRUq+raalq6Q3HUde7sokB7/xk5TqRZGEKRVbFeqdQBxDWwQeudiJEgcNiMvIFbMQ43dY37FA== - dependencies: - "@oclif/errors" "^1.3.6" - "@oclif/parser" "^3.8.16" - debug "^4.3.4" - globby "^11.1.0" - is-wsl "^2.1.1" - tslib "^2.6.1" - "@oclif/errors@1.3.5": version "1.3.5" resolved "https://registry.yarnpkg.com/@oclif/errors/-/errors-1.3.5.tgz#a1e9694dbeccab10fe2fe15acb7113991bed636c" @@ -737,11 +728,11 @@ wrap-ansi "^7.0.0" "@oclif/help@^1.0.1": - version "1.0.14" - resolved "https://registry.yarnpkg.com/@oclif/help/-/help-1.0.14.tgz#da5f9fdf6f57b40b133f095cbb9c78c480975ca3" - integrity sha512-Hu2/Dyo91cgLNaqN3wkvkBGuZ7eqb0TQNVKrzGButZyaBpJzmwW4L6D4tAF390WDYZG7EubmLePlNYb+rNB4jw== + version "1.0.15" + resolved "https://registry.yarnpkg.com/@oclif/help/-/help-1.0.15.tgz#5e36e576b8132a4906d2662204ad9de7ece87e8f" + integrity sha512-Yt8UHoetk/XqohYX76DfdrUYLsPKMc5pgkzsZVHDyBSkLiGRzujVaGZdjr32ckVZU9q3a47IjhWxhip7Dz5W/g== dependencies: - "@oclif/config" "1.18.15" + "@oclif/config" "1.18.16" "@oclif/errors" "1.3.6" chalk "^4.1.2" indent-string "^4.0.0" @@ -756,7 +747,7 @@ resolved "https://registry.yarnpkg.com/@oclif/linewrap/-/linewrap-1.0.0.tgz#aedcb64b479d4db7be24196384897b5000901d91" integrity sha512-Ups2dShK52xXa8w6iBWLgcjPJWjais6KPJQq3gQ/88AY6BXoTX+MIGFPrWQO1KLMiQfoTpcLnUwloN4brrVUHw== -"@oclif/parser@^3.8.0", "@oclif/parser@^3.8.15", "@oclif/parser@^3.8.16": +"@oclif/parser@^3.8.0", "@oclif/parser@^3.8.16": version "3.8.16" resolved "https://registry.yarnpkg.com/@oclif/parser/-/parser-3.8.16.tgz#bedfc55153075b8b2925657f8865035aa877515c" integrity sha512-jeleXSh5izmBQ6vwyCJmbFPahPpd/ajxASi25FaYAWcvwVMzP/vKAKQXKWZun6T9K/gd6ywSsTpfAXiZAjBd6g== @@ -823,9 +814,9 @@ integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== "@types/node@*", "@types/node@^20.1.2": - version "20.4.6" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.4.6.tgz#b66b66c9bb5d49b199f03399e341c9d6036e9e88" - integrity sha512-q0RkvNgMweWWIvSMDiXhflGUKMdIxBo2M2tYM/0kEGDueQByFzK4KZAgu5YHGFNxziTlppNpTIBcqHQAxlfHdA== + version "20.5.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.5.0.tgz#7fc8636d5f1aaa3b21e6245e97d56b7f56702313" + integrity sha512-Mgq7eCtoTjT89FqNoTzzXg2XvCi5VMhRV6+I2aYanc6kQCBImeNaAYRs/DyoVqk1YEUJK5gN9VO7HRIdz4Wo3Q== "@types/node@^12.7.1": version "12.20.55" @@ -889,9 +880,9 @@ zod "^3.21.4" "@zoralabs/protocol-rewards@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@zoralabs/protocol-rewards/-/protocol-rewards-1.0.2.tgz#7727b3b6bbba57c26aae088884ff168542f745ed" - integrity sha512-r+4EGY9HKHXTwY89VFciI4wvjgh9ZJPuPGKBoAY6TwXXk8bN1h4CathbUmzkjC8hCw4knItEKTgebbHNpslAcg== + version "1.1.1" + resolved "https://registry.yarnpkg.com/@zoralabs/protocol-rewards/-/protocol-rewards-1.1.1.tgz#e482c93598e92ce172f4e92584534e0521ffa8b2" + integrity sha512-lD5Jf/qWDQMG6rhnq1y2BHVEYIewDSUeAJwQD/1YIyXw1ANksLTmZZbrq8jXfFK2GbJeCzDqXKbFXSWidtyodw== abitype@0.8.7: version "0.8.7" @@ -1162,7 +1153,7 @@ capital-case@^1.0.4: tslib "^2.0.3" upper-case-first "^2.0.2" -chalk@^2.0.0, chalk@^2.1.0, chalk@^2.3.2: +chalk@^2.1.0, chalk@^2.3.2, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -2306,10 +2297,10 @@ is-ci@^3.0.1: dependencies: ci-info "^3.2.0" -is-core-module@^2.11.0: - version "2.12.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.1.tgz#0c0b6885b6f80011c71541ce15c8d66cf5a4f9fd" - integrity sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg== +is-core-module@^2.13.0: + version "2.13.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.0.tgz#bb52aa6e2cbd49a30c2ba68c42bf3435ba6072db" + integrity sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ== dependencies: has "^1.0.3" @@ -2462,9 +2453,9 @@ isomorphic-ws@5.0.0: integrity sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw== jackspeak@^2.0.3: - version "2.2.2" - resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.2.2.tgz#707c62733924b8dc2a0a629dc6248577788b5385" - integrity sha512-mgNtVv4vUuaKA97yxUHoA3+FkuhtxkjdXEWOyB/N76fjy0FjezEt34oy3epBtvCvS+7DyKwqCFWx/oJLV5+kCg== + version "2.2.3" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.2.3.tgz#ac63c57c18d254dc78a1f4ecd1cdeb4daeb6e616" + integrity sha512-pF0kfjmg8DJLxDrizHoCZGUFz4P4czQ3HyfW4BU0ffebYkzAVlBywp5zaxW/TM+r0sGbmrQdi8EQQVTJFxnGsQ== dependencies: "@isaacs/cliui" "^8.0.2" optionalDependencies: @@ -2677,9 +2668,9 @@ lru-cache@^6.0.0: yallist "^4.0.0" "lru-cache@^9.1.1 || ^10.0.0": - version "10.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.0.tgz#b9e2a6a72a129d81ab317202d93c7691df727e61" - integrity sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw== + version "10.0.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.1.tgz#0a3be479df549cca0e5d693ac402ff19537a6b7a" + integrity sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g== map-obj@^1.0.0: version "1.0.1" @@ -2782,9 +2773,9 @@ minimist-options@^4.0.2: kind-of "^6.0.3" "minipass@^5.0.0 || ^6.0.2 || ^7.0.0": - version "7.0.2" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.2.tgz#58a82b7d81c7010da5bd4b2c0c85ac4b4ec5131e" - integrity sha512-eL79dXrE1q9dBbDCLg7xfn/vl7MS4F1gvJAgjJrQli/jbQWdUttuVawphqpffoIYfRdq78LHx6GP4bU/EQ2ATA== + version "7.0.3" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.3.tgz#05ea638da44e475037ed94d1c7efcc76a25e1974" + integrity sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg== mixme@^0.5.1: version "0.5.9" @@ -3261,10 +3252,10 @@ redent@^3.0.0: indent-string "^4.0.0" strip-indent "^3.0.0" -regenerator-runtime@^0.13.11: - version "0.13.11" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" - integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== +regenerator-runtime@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45" + integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA== regexp.prototype.flags@^1.5.0: version "1.5.0" @@ -3291,11 +3282,11 @@ resolve-from@^5.0.0: integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== resolve@^1.1.6, resolve@^1.10.0: - version "1.22.2" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" - integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== + version "1.22.4" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.4.tgz#1dc40df46554cdaf8948a486a10f6ba1e2026c34" + integrity sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg== dependencies: - is-core-module "^2.11.0" + is-core-module "^2.13.0" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" @@ -3313,9 +3304,9 @@ reusify@^1.0.4: integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== rollup@^3.2.5: - version "3.27.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.27.0.tgz#15bd07e2e1cbfa9255bf6a3f04a432621c2f3550" - integrity sha512-aOltLCrYZ0FhJDm7fCqwTjIUEVjWjcydKBV/Zeid6Mn8BWgDCUBBWT5beM5ieForYNo/1ZHuGJdka26kvQ3Gzg== + version "3.28.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.28.0.tgz#a3c70004b01934760c0cb8df717c7a1d932389a2" + integrity sha512-d7zhvo1OUY2SXSM6pfNjgD5+d0Nz87CUp4mt8l/GgVP3oBsPwzNvSzyu1me6BSG9JIgWNTVcafIXBIyM8yQ3yw== optionalDependencies: fsevents "~2.3.2" @@ -3722,7 +3713,7 @@ tslib@^1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.0.0, tslib@^2.0.3, tslib@^2.5.0, tslib@^2.6.1: +tslib@^2.0.0, tslib@^2.0.3, tslib@^2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.1.tgz#fd8c9a0ff42590b25703c0acb3de3d3f4ede0410" integrity sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig== @@ -3867,12 +3858,12 @@ validate-npm-package-license@^3.0.1: spdx-expression-parse "^3.0.0" viem@^1.0.0: - version "1.5.2" - resolved "https://registry.yarnpkg.com/viem/-/viem-1.5.2.tgz#b8b9b464c4fb211c1daec6253b3e2559b69607b7" - integrity sha512-hPs4TJ9ONZw44K8lh24I5+Qntu62DEP85yhPsGqSSyr2d9yROY/9AisLLTlrlsudhg+A+BnLQGAuqvj/X+i8Ow== + version "1.6.0" + resolved "https://registry.yarnpkg.com/viem/-/viem-1.6.0.tgz#8befa678c3ac79b9558dfd1708130b2ecb1994f4" + integrity sha512-ae9Twkd0q2Qlj4yYpWjb4DzYAhKY0ibEpRH8FJaTywZXNpTjFidSdBaT0CVn1BaH7O7cnX4/O47zvDUMGJD1AA== dependencies: "@adraffy/ens-normalize" "1.9.0" - "@noble/curves" "1.0.0" + "@noble/curves" "1.1.0" "@noble/hashes" "1.3.0" "@scure/bip32" "1.3.0" "@scure/bip39" "1.2.0" @@ -4080,6 +4071,6 @@ yocto-queue@^1.0.0: integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g== zod@^3.21.4: - version "3.21.4" - resolved "https://registry.yarnpkg.com/zod/-/zod-3.21.4.tgz#10882231d992519f0a10b5dd58a38c9dabbb64db" - integrity sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw== + version "3.22.1" + resolved "https://registry.yarnpkg.com/zod/-/zod-3.22.1.tgz#815f850baf933fef96c1061322dbe579b1a80c27" + integrity sha512-+qUhAMl414+Elh+fRNtpU+byrwjDFOS1N7NioLY+tSlcADTx4TkCUua/hxJvxwDXcV4397/nZ420jy4n4+3WUg==