From 0d69666becdd8b82c0e4ba8c6d74e0e4dbc21570 Mon Sep 17 00:00:00 2001 From: orionstardust Date: Fri, 10 Mar 2023 19:40:23 -0600 Subject: [PATCH 01/24] Write deploy script for mumbai and fix issues --- .../WearableDiamond/WearableDiamond.sol | 8 +- .../libraries/WearableLibDiamond.sol | 2 +- contracts/Aavegotchi/facets/DAOFacet.sol | 2 +- contracts/shared/Diamond.sol | 44 + data/itemTypes/forgewearablesSideViews.ts | 2 +- data/itemTypes/itemTypes.ts | 2588 ++++++++++++----- scripts/deploy-mumbai.ts | 512 ++++ scripts/itemTypeHelpers.ts | 77 +- .../upgrade-deployAndUpgradeForgeDiamond.ts | 18 +- .../upgrades/upgrade-deployWearableDiamond.ts | 14 +- scripts/wearableSets.ts | 7 +- svgs/allWearables.ts | 33 + svgs/sideViewDimensions.ts | 2 +- ... 163_RarityFarmingSZN1Rnd1Top10Rarity.svg} | 0 ...164_RarityFarmingSZN1Rnd1Top10Kinship.svg} | 0 ...g => 165_RarityFarmingSZN1Rnd1Top10XP.svg} | 0 ...166_RarityFarmingSZN1Rnd1Top100Rarity.svg} | 0 ...67_RarityFarmingSZN1Rnd1Top100Kinship.svg} | 0 ... => 168_RarityFarmingSZN1Rnd1Top100XP.svg} | 0 ... 169_RarityFarmingSZN1Rnd2Top10Rarity.svg} | 0 ...170_RarityFarmingSZN1Rnd2Top10Kinship.svg} | 0 ...g => 171_RarityFarmingSZN1Rnd2Top10XP.svg} | 0 ...172_RarityFarmingSZN1Rnd2Top100Rarity.svg} | 0 ...73_RarityFarmingSZN1Rnd2Top100Kinship.svg} | 0 ... => 174_RarityFarmingSZN1Rnd2Top100XP.svg} | 0 ... 176_RarityFarmingSZN1Rnd3Top10Rarity.svg} | 0 ...177_RarityFarmingSZN1Rnd3Top10Kinship.svg} | 0 ...g => 178_RarityFarmingSZN1Rnd3Top10XP.svg} | 0 ...179_RarityFarmingSZN1Rnd3Top100Rarity.svg} | 0 ...80_RarityFarmingSZN1Rnd3Top100Kinship.svg} | 0 ... => 181_RarityFarmingSZN1Rnd3Top100XP.svg} | 0 ... 182_RarityFarmingSZN1Rnd4Top10Rarity.svg} | 0 ...183_RarityFarmingSZN1Rnd4Top10Kinship.svg} | 0 ...g => 184_RarityFarmingSZN1Rnd4Top10XP.svg} | 0 ...185_RarityFarmingSZN1Rnd4Top100Rarity.svg} | 0 ...86_RarityFarmingSZN1Rnd4Top100Kinship.svg} | 0 ... => 187_RarityFarmingSZN1Rnd4Top100XP.svg} | 0 ...RarityFarmingSZN1finals1stPlaceRarity.svg} | 0 ...arityFarmingSZN1finals1stPlaceKinship.svg} | 0 ...190_RarityFarmingSZN1finals1stPlaceXP.svg} | 0 ...RarityFarmingSZN1finals2ndPlaceRarity.svg} | 0 ...arityFarmingSZN1finals2ndPlaceKinship.svg} | 0 ...193_RarityFarmingSZN1finals2ndPlaceXP.svg} | 0 ...RarityFarmingSZN1finals3rdPlaceRarity.svg} | 0 ...arityFarmingSZN1finals3rdPlaceKinship.svg} | 0 ...196_RarityFarmingSZN1finals3rdPlaceXP.svg} | 0 ...r.svg => 197_RarityFarmingSZN1plaayer.svg} | 0 svgs/svgItems/202_CyberpunkVR.svg | 1 + svgs/svgItems/212_1337LapTop.svg | 1 + svgs/svgItems/212_1337LapTopBack.svg | 1 + svgs/svgItems/212_1337LapTopLeft.svg | 1 + svgs/svgItems/212_1337LapTopRight.svg | 1 + svgs/svgItems/248_UpOnlyShirtLeft.svg | 1 + svgs/svgItems/248_UpOnlyShirtLeftUp.svg | 1 + svgs/svgItems/248_UpOnlyShirtRight.svg | 1 + svgs/svgItems/248_UpOnlyShirtRightUp.svg | 1 + svgs/svgItems/249_CoinGeckoEyes.svg | 1 + svgs/svgItems/250_CoinGeckoTeeLeft.svg | 1 + svgs/svgItems/250_CoinGeckoTeeLeftUp.svg | 1 + svgs/svgItems/250_CoinGeckoTeeRight.svg | 1 + svgs/svgItems/250_CoinGeckoTeeRightUp.svg | 1 + svgs/svgItems/253_AastronautSuitLeft.svg | 1 + svgs/svgItems/253_AastronautSuitLeftUp.svg | 1 + svgs/svgItems/253_AastronautSuitRight.svg | 1 + svgs/svgItems/253_AastronautSuitRightUp.svg | 1 + svgs/svgItems/256_LilBubbleSpaceSuitLeft.svg | 1 + .../svgItems/256_LilBubbleSpaceSuitLeftUp.svg | 1 + svgs/svgItems/256_LilBubbleSpaceSuitRight.svg | 1 + .../256_LilBubbleSpaceSuitRightUp.svg | 1 + svgs/svgItems/259_BushyEyebrows.svg | 1 + svgs/svgItems/260_AncientBeard.svg | 1 + svgs/svgItems/262_RadarEyes.svg | 1 + svgs/svgItems/264_AastronautCrewMember.svg | 1 + .../265_RarityFarmingSZN21stPlaceRarity.svg} | 0 .../266_RarityFarmingSZN21stPlaceKinship.svg} | 0 .../267_RarityFarmingSZN21stplaceXP.svg} | 0 .../268_RarityFarmingSZN2Rarity2ndPlace.svg} | 0 .../269_RarityFarmingSZN2Kinship2ndPlace.svg} | 0 .../270_RarityFarmingSZN2XP2ndPlace.svg} | 0 .../271_RarityFarmingSZN2Rarity3rdPlace.svg} | 0 .../272_RarityFarmingSZN2Kinship3rdPlace.svg} | 0 .../273_RarityFarmingSZN2XP3rdPlace.svg} | 0 .../274_RarityFarmingSZN2Raanked.svg} | 0 .../275_RarityFarmingSZN2ROOKIEOFTHEYEAR.svg} | 0 ...arityFarmingSZN21stPlaceRookieKinship.svg} | 0 ...277_RarityFarmingSZN21stPlaceRookieXP.svg} | 0 ...arityFarmingSZN2KinshipROOKIE2ndPlace.svg} | 0 ...279_RarityFarmingSZN2XPROOKIE2ndPlace.svg} | 0 ...arityFarmingSZN2KinshipROOKIE3rdPlace.svg} | 0 ...281_RarityFarmingSZN2XPROOKIE3rdPlace.svg} | 0 .../282_RarityFarmingSZN2RarityTop10.svg} | 0 .../283_RarityFarmingSZN2KinshipTop10.svg} | 0 .../284_RarityFarmingSZN2XPTop10.svg} | 0 .../285_RarityFarmingSZN2RarityTop100.svg} | 0 .../286_RarityFarmingSZN2KinshipTop100.svg} | 0 .../287_RarityFarmingSZN2XPTop100.svg} | 0 .../288_RarityFarmingSZN2XPROOKIETop10.svg} | 0 ...9_RarityFarmingSZN2KinshipROOKIETop10.svg} | 0 .../290_RarityFarmingSZN2XPROOKIETop100.svg} | 0 ..._RarityFarmingSZN2KinshipROOKIETop100.svg} | 0 .../316_RarityFarmingSZN31stPlaceRarity.svg} | 0 .../317_RarityFarmingSZN31stPlaceKinship.svg} | 0 .../318_RarityFarmingSZN31stPlaceXP.svg} | 0 .../319_RarityFarmingSZN3Rarity2ndPlace.svg} | 0 .../320_RarityFarmingSZN3Kinship2ndPlace.svg} | 0 .../321_RarityFarmingSZN3XP2ndPlace.svg} | 0 .../322_RarityFarmingSZN3Rarity3rdPlace.svg} | 0 .../323_RarityFarmingSZN3Kinship3rdPlace.svg} | 0 .../324_RarityFarmingSZN3XP3rdPlace.svg} | 0 .../325_RarityFarmingSZN3Raanked.svg} | 0 .../326_RarityFarmingSZN3RarityTop10.svg} | 0 .../327_RarityFarmingSZN3KinshipTop10.svg} | 0 .../328_RarityFarmingSZN3XPTop10.svg} | 0 .../329_RarityFarmingSZN3RarityTop100.svg} | 0 .../330_RarityFarmingSZN3KinshipTop100.svg} | 0 .../331_RarityFarmingSZN3XPTop100.svg} | 0 .../332_GotchiSmaash2022HaalloweenParty.svg} | 0 .../333_TOOORKEYCHAASE2022.svg} | 0 .../334_RarityFarmingSZN41stPlaceRarity.svg} | 0 .../335_RarityFarmingSZN41stPlaceKinship.svg} | 0 .../336_RarityFarmingSZN41stPlaceXP.svg} | 0 .../337_RarityFarmingSZN4Rarity2ndPlace.svg} | 0 .../338_RarityFarmingSZN4Kinship2ndPlace.svg} | 0 .../339_RarityFarmingSZN4XP2ndPlace.svg} | 0 .../340_RarityFarmingSZN4Rarity3rdPlace.svg} | 0 .../341_RarityFarmingSZN4Kinship3rdPlace.svg} | 0 .../342_RarityFarmingSZN4XP3rdPlace.svg} | 0 .../343_RarityFarmingSZN4Raanked.svg} | 0 .../344_RarityFarmingSZN4RarityTop10.svg} | 0 .../345_RarityFarmingSZN4KinshipTop10.svg} | 0 .../346_RarityFarmingSZN4XPTop10.svg} | 0 .../347_RarityFarmingSZN4RarityTop100.svg} | 0 .../348_RarityFarmingSZN4KinshipTop100.svg} | 0 .../349_RarityFarmingSZN4XPTop100.svg} | 0 .../svgItems/raffle6/292_BrunettePonytail.svg | 1 - .../raffle6/292_BrunettePonytailBack.svg | 1 - .../raffle6/292_BrunettePonytailLeft.svg | 1 - .../raffle6/292_BrunettePonytailRight.svg | 1 - svgs/svgItems/raffle6/293_LeatherTunic.svg | 1 - .../svgItems/raffle6/293_LeatherTunicBack.svg | 1 - .../raffle6/293_LeatherTunicBackLeft.svg | 1 - .../raffle6/293_LeatherTunicBackLeftUp.svg | 1 - .../raffle6/293_LeatherTunicBackRight.svg | 1 - .../raffle6/293_LeatherTunicBackRightUp.svg | 1 - .../svgItems/raffle6/293_LeatherTunicLeft.svg | 1 - .../raffle6/293_LeatherTunicLeftUp.svg | 1 - .../raffle6/293_LeatherTunicRight.svg | 1 - .../raffle6/293_LeatherTunicRightUp.svg | 1 - .../raffle6/293_LeatherTunicSideLeft.svg | 1 - .../raffle6/293_LeatherTunicSideLeftDown.svg | 1 - .../raffle6/293_LeatherTunicSideLeftUp.svg | 1 - .../raffle6/293_LeatherTunicSideRight.svg | 1 - .../raffle6/293_LeatherTunicSideRightDown.svg | 1 - .../raffle6/293_LeatherTunicSideRightUp.svg | 1 - svgs/svgItems/raffle6/294_BowandArrow.svg | 1 - svgs/svgItems/raffle6/294_BowandArrowBack.svg | 1 - svgs/svgItems/raffle6/294_BowandArrowLeft.svg | 1 - .../svgItems/raffle6/294_BowandArrowRight.svg | 1 - svgs/svgItems/raffle6/295_ForkedBeard.svg | 1 - svgs/svgItems/raffle6/295_ForkedBeardLeft.svg | 1 - .../svgItems/raffle6/295_ForkedBeardRight.svg | 1 - svgs/svgItems/raffle6/296_DoublesidedAxe.svg | 1 - .../raffle6/296_DoublesidedAxeBack.svg | 1 - .../raffle6/296_DoublesidedAxeLeft.svg | 1 - .../raffle6/296_DoublesidedAxeRight.svg | 1 - svgs/svgItems/raffle6/297_AnimalSkins.svg | 1 - svgs/svgItems/raffle6/297_AnimalSkinsBack.svg | 1 - svgs/svgItems/raffle6/297_AnimalSkinsLeft.svg | 1 - .../raffle6/297_AnimalSkinsLeftUp.svg | 1 - .../svgItems/raffle6/297_AnimalSkinsRight.svg | 1 - .../raffle6/297_AnimalSkinsRightUp.svg | 1 - .../raffle6/297_AnimalSkinsSideLeft.svg | 1 - .../raffle6/297_AnimalSkinsSideLeftDown.svg | 1 - .../raffle6/297_AnimalSkinsSideLeftUp.svg | 1 - .../raffle6/297_AnimalSkinsSideRight.svg | 1 - .../raffle6/297_AnimalSkinsSideRightDown.svg | 1 - .../raffle6/297_AnimalSkinsSideRightUp.svg | 1 - svgs/svgItems/raffle6/298_HornedHelmet.svg | 1 - .../svgItems/raffle6/298_HornedHelmetBack.svg | 1 - .../svgItems/raffle6/298_HornedHelmetLeft.svg | 1 - .../raffle6/298_HornedHelmetRight.svg | 1 - svgs/svgItems/raffle6/299_Longbow.svg | 1 - svgs/svgItems/raffle6/299_LongbowBack.svg | 1 - svgs/svgItems/raffle6/299_LongbowLeft.svg | 1 - svgs/svgItems/raffle6/299_LongbowRight.svg | 1 - svgs/svgItems/raffle6/300_FeatheredCap.svg | 1 - .../svgItems/raffle6/300_FeatheredCapBack.svg | 1 - .../svgItems/raffle6/300_FeatheredCapLeft.svg | 1 - .../raffle6/300_FeatheredCapRight.svg | 1 - svgs/svgItems/raffle6/301_AlluringEyes.svg | 1 - .../svgItems/raffle6/301_AlluringEyesBack.svg | 1 - .../svgItems/raffle6/301_AlluringEyesLeft.svg | 1 - .../raffle6/301_AlluringEyesRight.svg | 1 - svgs/svgItems/raffle6/302_GeishaHeadpiece.svg | 1 - .../raffle6/302_GeishaHeadpieceBack.svg | 1 - .../raffle6/302_GeishaHeadpieceLeft.svg | 1 - .../raffle6/302_GeishaHeadpieceRight.svg | 1 - svgs/svgItems/raffle6/303_Kimono.svg | 1 - svgs/svgItems/raffle6/303_KimonoBack.svg | 1 - svgs/svgItems/raffle6/303_KimonoBackLeft.svg | 1 - .../svgItems/raffle6/303_KimonoBackLeftUp.svg | 1 - svgs/svgItems/raffle6/303_KimonoBackRight.svg | 1 - .../raffle6/303_KimonoBackRightUp.svg | 1 - svgs/svgItems/raffle6/303_KimonoLeft.svg | 1 - svgs/svgItems/raffle6/303_KimonoLeftUp.svg | 1 - svgs/svgItems/raffle6/303_KimonoRight.svg | 1 - svgs/svgItems/raffle6/303_KimonoRightUp.svg | 1 - svgs/svgItems/raffle6/303_KimonoSideLeft.svg | 1 - .../raffle6/303_KimonoSideLeftDown.svg | 1 - .../svgItems/raffle6/303_KimonoSideLeftUp.svg | 1 - svgs/svgItems/raffle6/303_KimonoSideRight.svg | 1 - .../raffle6/303_KimonoSideRightDown.svg | 1 - .../raffle6/303_KimonoSideRightUp.svg | 1 - svgs/svgItems/raffle6/304_PaperFan.svg | 1 - svgs/svgItems/raffle6/304_PaperFanBack.svg | 1 - svgs/svgItems/raffle6/304_PaperFanLeft.svg | 1 - svgs/svgItems/raffle6/304_PaperFanRight.svg | 1 - svgs/svgItems/raffle6/305_SusButterfly.svg | 1 - .../svgItems/raffle6/305_SusButterflyBack.svg | 1 - .../svgItems/raffle6/305_SusButterflyLeft.svg | 1 - .../raffle6/305_SusButterflyRight.svg | 1 - svgs/svgItems/raffle6/306_FlowerStuds.svg | 1 - svgs/svgItems/raffle6/306_FlowerStudsBack.svg | 1 - svgs/svgItems/raffle6/306_FlowerStudsLeft.svg | 1 - .../svgItems/raffle6/306_FlowerStudsRight.svg | 1 - svgs/svgItems/raffle6/307_FairyWings.svg | 1 - svgs/svgItems/raffle6/307_FairyWingsBack.svg | 1 - svgs/svgItems/raffle6/307_FairyWingsLeft.svg | 1 - .../svgItems/raffle6/307_FairyWingsLeftUp.svg | 1 - svgs/svgItems/raffle6/307_FairyWingsRight.svg | 1 - .../raffle6/307_FairyWingsRightUp.svg | 1 - .../raffle6/307_FairyWingsSideLeft.svg | 1 - .../raffle6/307_FairyWingsSideRight.svg | 1 - svgs/svgItems/raffle6/308_RedHair.svg | 1 - svgs/svgItems/raffle6/308_RedHairBack.svg | 1 - svgs/svgItems/raffle6/308_RedHairLeft.svg | 1 - svgs/svgItems/raffle6/308_RedHairRight.svg | 1 - svgs/svgItems/raffle6/309_CitaadelHelm.svg | 1 - .../svgItems/raffle6/309_CitaadelHelmBack.svg | 1 - .../svgItems/raffle6/309_CitaadelHelmLeft.svg | 1 - .../raffle6/309_CitaadelHelmRight.svg | 1 - svgs/svgItems/raffle6/310_PlateArmor.svg | 1 - svgs/svgItems/raffle6/310_PlateArmorBack.svg | 1 - .../raffle6/310_PlateArmorBackLeft.svg | 1 - .../raffle6/310_PlateArmorBackLeftUp.svg | 1 - .../raffle6/310_PlateArmorBackRight.svg | 1 - .../raffle6/310_PlateArmorBackRightUp.svg | 1 - svgs/svgItems/raffle6/310_PlateArmorLeft.svg | 1 - .../svgItems/raffle6/310_PlateArmorLeftUp.svg | 1 - svgs/svgItems/raffle6/310_PlateArmorRight.svg | 1 - .../raffle6/310_PlateArmorRightUp.svg | 1 - .../raffle6/310_PlateArmorSideLeft.svg | 1 - .../raffle6/310_PlateArmorSideLeftDown.svg | 1 - .../raffle6/310_PlateArmorSideLeftUp.svg | 1 - .../raffle6/310_PlateArmorSideRight.svg | 1 - .../raffle6/310_PlateArmorSideRightDown.svg | 1 - .../raffle6/310_PlateArmorSideRightUp.svg | 1 - svgs/svgItems/raffle6/311_SpiritSword.svg | 1 - svgs/svgItems/raffle6/311_SpiritSwordBack.svg | 1 - svgs/svgItems/raffle6/311_SpiritSwordLeft.svg | 1 - .../svgItems/raffle6/311_SpiritSwordRight.svg | 1 - svgs/svgItems/raffle6/312_PlateShield.svg | 1 - svgs/svgItems/raffle6/312_PlateShieldBack.svg | 1 - svgs/svgItems/raffle6/312_PlateShieldLeft.svg | 1 - .../svgItems/raffle6/312_PlateShieldRight.svg | 1 - svgs/svgItems/raffle6/313_KabutoHelmet.svg | 1 - .../svgItems/raffle6/313_KabutoHelmetBack.svg | 1 - .../svgItems/raffle6/313_KabutoHelmetLeft.svg | 1 - .../raffle6/313_KabutoHelmetRight.svg | 1 - svgs/svgItems/raffle6/314_YoroiArmor.svg | 1 - svgs/svgItems/raffle6/314_YoroiArmorBack.svg | 1 - .../raffle6/314_YoroiArmorBackLeft.svg | 1 - .../raffle6/314_YoroiArmorBackLeftUp.svg | 1 - .../raffle6/314_YoroiArmorBackRight.svg | 1 - .../raffle6/314_YoroiArmorBackRightUp.svg | 1 - svgs/svgItems/raffle6/314_YoroiArmorLeft.svg | 1 - .../svgItems/raffle6/314_YoroiArmorLeftUp.svg | 1 - svgs/svgItems/raffle6/314_YoroiArmorRight.svg | 1 - .../raffle6/314_YoroiArmorRightUp.svg | 1 - .../raffle6/314_YoroiArmorSideLeft.svg | 1 - .../raffle6/314_YoroiArmorSideLeftDown.svg | 1 - .../raffle6/314_YoroiArmorSideLeftUp.svg | 1 - .../raffle6/314_YoroiArmorSideRight.svg | 1 - .../raffle6/314_YoroiArmorSideRightDown.svg | 1 - .../raffle6/314_YoroiArmorSideRightUp.svg | 1 - svgs/svgItems/raffle6/315_HaanzoKatana.svg | 1 - .../svgItems/raffle6/315_HaanzoKatanaBack.svg | 1 - .../svgItems/raffle6/315_HaanzoKatanaLeft.svg | 1 - .../raffle6/315_HaanzoKatanaRight.svg | 1 - svgs/svgItems/raffle6/EmptyFile.svg | 1 - svgs/wearables.ts | 29 +- tasks/deployUpgrade.ts | 2 +- 292 files changed, 2579 insertions(+), 943 deletions(-) create mode 100644 contracts/shared/Diamond.sol create mode 100644 scripts/deploy-mumbai.ts create mode 100644 svgs/allWearables.ts rename svgs/svgItems/{163_szn1rnd1top10rarity.svg => 163_RarityFarmingSZN1Rnd1Top10Rarity.svg} (100%) rename svgs/svgItems/{164_szn1rnd1top10kinship.svg => 164_RarityFarmingSZN1Rnd1Top10Kinship.svg} (100%) rename svgs/svgItems/{165_szn1rnd1top10xp.svg => 165_RarityFarmingSZN1Rnd1Top10XP.svg} (100%) rename svgs/svgItems/{166_szn1rnd1top100rarity.svg => 166_RarityFarmingSZN1Rnd1Top100Rarity.svg} (100%) rename svgs/svgItems/{167_szn1rnd1top100kinship.svg => 167_RarityFarmingSZN1Rnd1Top100Kinship.svg} (100%) rename svgs/svgItems/{168_szn1rnd1top100xp.svg => 168_RarityFarmingSZN1Rnd1Top100XP.svg} (100%) rename svgs/svgItems/{169_szn1rnd2top10rarity.svg => 169_RarityFarmingSZN1Rnd2Top10Rarity.svg} (100%) rename svgs/svgItems/{170_szn1rnd2top10kinship.svg => 170_RarityFarmingSZN1Rnd2Top10Kinship.svg} (100%) rename svgs/svgItems/{171_szn1rnd2top10xp.svg => 171_RarityFarmingSZN1Rnd2Top10XP.svg} (100%) rename svgs/svgItems/{172_szn1rnd2top100rarity.svg => 172_RarityFarmingSZN1Rnd2Top100Rarity.svg} (100%) rename svgs/svgItems/{173_szn1rnd2top100kinship.svg => 173_RarityFarmingSZN1Rnd2Top100Kinship.svg} (100%) rename svgs/svgItems/{174_szn1rnd2top100xp.svg => 174_RarityFarmingSZN1Rnd2Top100XP.svg} (100%) rename svgs/svgItems/{176_szn1rnd3top10rarity.svg => 176_RarityFarmingSZN1Rnd3Top10Rarity.svg} (100%) rename svgs/svgItems/{177_szn1rnd3top10kinship.svg => 177_RarityFarmingSZN1Rnd3Top10Kinship.svg} (100%) rename svgs/svgItems/{178_szn1rnd3top10xp.svg => 178_RarityFarmingSZN1Rnd3Top10XP.svg} (100%) rename svgs/svgItems/{179_szn1rnd3top100rarity.svg => 179_RarityFarmingSZN1Rnd3Top100Rarity.svg} (100%) rename svgs/svgItems/{180_szn1rnd3top100kinship.svg => 180_RarityFarmingSZN1Rnd3Top100Kinship.svg} (100%) rename svgs/svgItems/{181_szn1rnd3top100xp.svg => 181_RarityFarmingSZN1Rnd3Top100XP.svg} (100%) rename svgs/svgItems/{182_szn1rnd4top10rarity.svg => 182_RarityFarmingSZN1Rnd4Top10Rarity.svg} (100%) rename svgs/svgItems/{183_szn1rnd4top10kinship.svg => 183_RarityFarmingSZN1Rnd4Top10Kinship.svg} (100%) rename svgs/svgItems/{184_szn1rnd4top10xp.svg => 184_RarityFarmingSZN1Rnd4Top10XP.svg} (100%) rename svgs/svgItems/{185_szn1rnd4top100rarity.svg => 185_RarityFarmingSZN1Rnd4Top100Rarity.svg} (100%) rename svgs/svgItems/{186_szn1rnd4top100kinship.svg => 186_RarityFarmingSZN1Rnd4Top100Kinship.svg} (100%) rename svgs/svgItems/{187_szn1rnd4top100xp.svg => 187_RarityFarmingSZN1Rnd4Top100XP.svg} (100%) rename svgs/svgItems/{188_szn1finals1stPlaceRarity.svg => 188_RarityFarmingSZN1finals1stPlaceRarity.svg} (100%) rename svgs/svgItems/{189_szn1finals1stPlaceKinship.svg => 189_RarityFarmingSZN1finals1stPlaceKinship.svg} (100%) rename svgs/svgItems/{190_szn1finals1stPlaceXP.svg => 190_RarityFarmingSZN1finals1stPlaceXP.svg} (100%) rename svgs/svgItems/{191_szn1finals2ndPlaceRarity.svg => 191_RarityFarmingSZN1finals2ndPlaceRarity.svg} (100%) rename svgs/svgItems/{192_szn1finals2ndPlaceKinship.svg => 192_RarityFarmingSZN1finals2ndPlaceKinship.svg} (100%) rename svgs/svgItems/{193_szn1finals2ndPlaceXP.svg => 193_RarityFarmingSZN1finals2ndPlaceXP.svg} (100%) rename svgs/svgItems/{194_szn1finals3rdPlaceRarity.svg => 194_RarityFarmingSZN1finals3rdPlaceRarity.svg} (100%) rename svgs/svgItems/{195_szn1finals3rdPlaceKinship.svg => 195_RarityFarmingSZN1finals3rdPlaceKinship.svg} (100%) rename svgs/svgItems/{196_szn1finals3rdPlaceXP.svg => 196_RarityFarmingSZN1finals3rdPlaceXP.svg} (100%) rename svgs/svgItems/{197_szn1plaayer.svg => 197_RarityFarmingSZN1plaayer.svg} (100%) create mode 100644 svgs/svgItems/202_CyberpunkVR.svg create mode 100644 svgs/svgItems/212_1337LapTop.svg create mode 100644 svgs/svgItems/212_1337LapTopBack.svg create mode 100644 svgs/svgItems/212_1337LapTopLeft.svg create mode 100644 svgs/svgItems/212_1337LapTopRight.svg create mode 100644 svgs/svgItems/248_UpOnlyShirtLeft.svg create mode 100644 svgs/svgItems/248_UpOnlyShirtLeftUp.svg create mode 100644 svgs/svgItems/248_UpOnlyShirtRight.svg create mode 100644 svgs/svgItems/248_UpOnlyShirtRightUp.svg create mode 100644 svgs/svgItems/249_CoinGeckoEyes.svg create mode 100644 svgs/svgItems/250_CoinGeckoTeeLeft.svg create mode 100644 svgs/svgItems/250_CoinGeckoTeeLeftUp.svg create mode 100644 svgs/svgItems/250_CoinGeckoTeeRight.svg create mode 100644 svgs/svgItems/250_CoinGeckoTeeRightUp.svg create mode 100644 svgs/svgItems/253_AastronautSuitLeft.svg create mode 100644 svgs/svgItems/253_AastronautSuitLeftUp.svg create mode 100644 svgs/svgItems/253_AastronautSuitRight.svg create mode 100644 svgs/svgItems/253_AastronautSuitRightUp.svg create mode 100644 svgs/svgItems/256_LilBubbleSpaceSuitLeft.svg create mode 100644 svgs/svgItems/256_LilBubbleSpaceSuitLeftUp.svg create mode 100644 svgs/svgItems/256_LilBubbleSpaceSuitRight.svg create mode 100644 svgs/svgItems/256_LilBubbleSpaceSuitRightUp.svg create mode 100644 svgs/svgItems/259_BushyEyebrows.svg create mode 100644 svgs/svgItems/260_AncientBeard.svg create mode 100644 svgs/svgItems/262_RadarEyes.svg create mode 100644 svgs/svgItems/264_AastronautCrewMember.svg rename svgs/{baadges/Aavegotchi-RF-SZN2-Trophy-RARITY-1ST.svg => svgItems/265_RarityFarmingSZN21stPlaceRarity.svg} (100%) rename svgs/{baadges/Aavegotchi-RF-SZN2-Trophy-KINSHIP-1ST.svg => svgItems/266_RarityFarmingSZN21stPlaceKinship.svg} (100%) rename svgs/{baadges/Aavegotchi-RF-SZN2-Trophy-XP-1ST.svg => svgItems/267_RarityFarmingSZN21stplaceXP.svg} (100%) rename svgs/{baadges/Aavegotchi-RF-SZN2-Trophy-RARITY-2ND.svg => svgItems/268_RarityFarmingSZN2Rarity2ndPlace.svg} (100%) rename svgs/{baadges/Aavegotchi-RF-SZN2-Trophy-KINSHIP-2ND.svg => svgItems/269_RarityFarmingSZN2Kinship2ndPlace.svg} (100%) rename svgs/{baadges/Aavegotchi-RF-SZN2-Trophy-XP-2ND.svg => svgItems/270_RarityFarmingSZN2XP2ndPlace.svg} (100%) rename svgs/{baadges/Aavegotchi-RF-SZN2-Trophy-RARITY-3RD.svg => svgItems/271_RarityFarmingSZN2Rarity3rdPlace.svg} (100%) rename svgs/{baadges/Aavegotchi-RF-SZN2-Trophy-KINSHIP-3RD.svg => svgItems/272_RarityFarmingSZN2Kinship3rdPlace.svg} (100%) rename svgs/{baadges/Aavegotchi-RF-SZN2-Trophy-XP-3RD.svg => svgItems/273_RarityFarmingSZN2XP3rdPlace.svg} (100%) rename svgs/{baadges/Aavegotchi-RF-SZN2-Baadges-PLAAYER-RAANKED.svg => svgItems/274_RarityFarmingSZN2Raanked.svg} (100%) rename svgs/{baadges/Aavegotchi-RF-SZN2-Baadges-ROOKIE-OF-THE-YEAR.svg => svgItems/275_RarityFarmingSZN2ROOKIEOFTHEYEAR.svg} (100%) rename svgs/{baadges/Aavegotchi-RF-SZN2-Trophy-KINSHIP-ROOKIE-1ST.svg => svgItems/276_RarityFarmingSZN21stPlaceRookieKinship.svg} (100%) rename svgs/{baadges/Aavegotchi-RF-SZN2-Trophy-XP-ROOKIE-1ST.svg => svgItems/277_RarityFarmingSZN21stPlaceRookieXP.svg} (100%) rename svgs/{baadges/Aavegotchi-RF-SZN2-Trophy-KINSHIP-ROOKIE-2ND.svg => svgItems/278_RarityFarmingSZN2KinshipROOKIE2ndPlace.svg} (100%) rename svgs/{baadges/Aavegotchi-RF-SZN2-Trophy-XP-ROOKIE-2ND.svg => svgItems/279_RarityFarmingSZN2XPROOKIE2ndPlace.svg} (100%) rename svgs/{baadges/Aavegotchi-RF-SZN2-Trophy-KINSHIP-ROOKIE-3RD.svg => svgItems/280_RarityFarmingSZN2KinshipROOKIE3rdPlace.svg} (100%) rename svgs/{baadges/Aavegotchi-RF-SZN2-Trophy-XP-ROOKIE-3RD.svg => svgItems/281_RarityFarmingSZN2XPROOKIE3rdPlace.svg} (100%) rename svgs/{baadges/Aavegotchi-RF-SZN2-Baadges-RARITY-T10.svg => svgItems/282_RarityFarmingSZN2RarityTop10.svg} (100%) rename svgs/{baadges/Aavegotchi-RF-SZN2-Baadges-KINSHIP-T10.svg => svgItems/283_RarityFarmingSZN2KinshipTop10.svg} (100%) rename svgs/{baadges/Aavegotchi-RF-SZN2-Baadges-XP-T10.svg => svgItems/284_RarityFarmingSZN2XPTop10.svg} (100%) rename svgs/{baadges/Aavegotchi-RF-SZN2-Baadges-RARITY-T100.svg => svgItems/285_RarityFarmingSZN2RarityTop100.svg} (100%) rename svgs/{baadges/Aavegotchi-RF-SZN2-Baadges-KINSHIP-T100.svg => svgItems/286_RarityFarmingSZN2KinshipTop100.svg} (100%) rename svgs/{baadges/Aavegotchi-RF-SZN2-Baadges-XP-T100.svg => svgItems/287_RarityFarmingSZN2XPTop100.svg} (100%) rename svgs/{baadges/Aavegotchi-RF-SZN2-Baadges-XP-ROOKIE-T10.svg => svgItems/288_RarityFarmingSZN2XPROOKIETop10.svg} (100%) rename svgs/{baadges/Aavegotchi-RF-SZN2-Baadges-KINSHIP-ROOKIE-T10.svg => svgItems/289_RarityFarmingSZN2KinshipROOKIETop10.svg} (100%) rename svgs/{baadges/Aavegotchi-RF-SZN2-Baadges-XP-ROOKIE-T100.svg => svgItems/290_RarityFarmingSZN2XPROOKIETop100.svg} (100%) rename svgs/{baadges/Aavegotchi-RF-SZN2-Baadges-KINSHIP-ROOKIE-T100.svg => svgItems/291_RarityFarmingSZN2KinshipROOKIETop100.svg} (100%) rename svgs/{sZN3Baadges/Aavegotchi-RF-SZN3-Trophy-RARITY-CHAMP.svg => svgItems/316_RarityFarmingSZN31stPlaceRarity.svg} (100%) rename svgs/{sZN3Baadges/Aavegotchi-RF-SZN3-Trophy-KINSHIP-CHAMP.svg => svgItems/317_RarityFarmingSZN31stPlaceKinship.svg} (100%) rename svgs/{sZN3Baadges/Aavegotchi-RF-SZN3-Trophy-XP-CHAMP.svg => svgItems/318_RarityFarmingSZN31stPlaceXP.svg} (100%) rename svgs/{sZN3Baadges/Aavegotchi-RF-SZN3-Trophy-RARITY-2ND.svg => svgItems/319_RarityFarmingSZN3Rarity2ndPlace.svg} (100%) rename svgs/{sZN3Baadges/Aavegotchi-RF-SZN3-Trophy-KINSHIP-2ND.svg => svgItems/320_RarityFarmingSZN3Kinship2ndPlace.svg} (100%) rename svgs/{sZN3Baadges/Aavegotchi-RF-SZN3-Trophy-XP-2ND.svg => svgItems/321_RarityFarmingSZN3XP2ndPlace.svg} (100%) rename svgs/{sZN3Baadges/Aavegotchi-RF-SZN3-Trophy-RARITY-3RD.svg => svgItems/322_RarityFarmingSZN3Rarity3rdPlace.svg} (100%) rename svgs/{sZN3Baadges/Aavegotchi-RF-SZN3-Trophy-KINSHIP-3RD.svg => svgItems/323_RarityFarmingSZN3Kinship3rdPlace.svg} (100%) rename svgs/{sZN3Baadges/Aavegotchi-RF-SZN3-Trophy-XP-3RD.svg => svgItems/324_RarityFarmingSZN3XP3rdPlace.svg} (100%) rename svgs/{sZN3Baadges/Aavegotchi-RF-SZN3-Baadges-PLAAYER-RAANKED.svg => svgItems/325_RarityFarmingSZN3Raanked.svg} (100%) rename svgs/{sZN3Baadges/Aavegotchi-RF-SZN3-Baadges-RARITY-T10.svg => svgItems/326_RarityFarmingSZN3RarityTop10.svg} (100%) rename svgs/{sZN3Baadges/Aavegotchi-RF-SZN3-Baadges-KINSHIP-T10.svg => svgItems/327_RarityFarmingSZN3KinshipTop10.svg} (100%) rename svgs/{sZN3Baadges/Aavegotchi-RF-SZN3-Baadges-XP-T10.svg => svgItems/328_RarityFarmingSZN3XPTop10.svg} (100%) rename svgs/{sZN3Baadges/Aavegotchi-RF-SZN3-Baadges-RARITY-T100.svg => svgItems/329_RarityFarmingSZN3RarityTop100.svg} (100%) rename svgs/{sZN3Baadges/Aavegotchi-RF-SZN3-Baadges-KINSHIP-T100.svg => svgItems/330_RarityFarmingSZN3KinshipTop100.svg} (100%) rename svgs/{sZN3Baadges/Aavegotchi-RF-SZN3-Baadges-XP-T100.svg => svgItems/331_RarityFarmingSZN3XPTop100.svg} (100%) rename svgs/{pumpkinBadge/GotchiSmaash2022-Baadge-Final-Pixelart.svg => svgItems/332_GotchiSmaash2022HaalloweenParty.svg} (100%) rename svgs/{baadges/Aavegotchi-TOOORKEY-CHAASE-Badge.svg => svgItems/333_TOOORKEYCHAASE2022.svg} (100%) rename svgs/{sZN4Baadges/Aavegotchi-RF-SZN4-TROPHY-CHAMP-RARITY.svg => svgItems/334_RarityFarmingSZN41stPlaceRarity.svg} (100%) rename svgs/{sZN4Baadges/Aavegotchi-RF-SZN4-TROPHY-CHAMP-KINSHIP.svg => svgItems/335_RarityFarmingSZN41stPlaceKinship.svg} (100%) rename svgs/{sZN4Baadges/Aavegotchi-RF-SZN4-TROPHY-CHAMP-XP.svg => svgItems/336_RarityFarmingSZN41stPlaceXP.svg} (100%) rename svgs/{sZN4Baadges/Aavegotchi-RF-SZN4-TROPHY-2ND-RARITY.svg => svgItems/337_RarityFarmingSZN4Rarity2ndPlace.svg} (100%) rename svgs/{sZN4Baadges/Aavegotchi-RF-SZN4-TROPHY-2ND-KINSHIP.svg => svgItems/338_RarityFarmingSZN4Kinship2ndPlace.svg} (100%) rename svgs/{sZN4Baadges/Aavegotchi-RF-SZN4-TROPHY-2ND-XP.svg => svgItems/339_RarityFarmingSZN4XP2ndPlace.svg} (100%) rename svgs/{sZN4Baadges/Aavegotchi-RF-SZN4-TROPHY-3RD-RARITY.svg => svgItems/340_RarityFarmingSZN4Rarity3rdPlace.svg} (100%) rename svgs/{sZN4Baadges/Aavegotchi-RF-SZN4-TROPHY-3RD-KINSHIP.svg => svgItems/341_RarityFarmingSZN4Kinship3rdPlace.svg} (100%) rename svgs/{sZN4Baadges/Aavegotchi-RF-SZN4-TROPHY-3RD-XP.svg => svgItems/342_RarityFarmingSZN4XP3rdPlace.svg} (100%) rename svgs/{sZN4Baadges/Aavegotchi-RF-SZN4-Baadge-RAANKED.svg => svgItems/343_RarityFarmingSZN4Raanked.svg} (100%) rename svgs/{sZN4Baadges/Aavegotchi-RF-SZN4-Baadge-TOP10-RARITY.svg => svgItems/344_RarityFarmingSZN4RarityTop10.svg} (100%) rename svgs/{sZN4Baadges/Aavegotchi-RF-SZN4-Baadge-TOP10-KINSHIP.svg => svgItems/345_RarityFarmingSZN4KinshipTop10.svg} (100%) rename svgs/{sZN4Baadges/Aavegotchi-RF-SZN4-Baadge-TOP10-XP.svg => svgItems/346_RarityFarmingSZN4XPTop10.svg} (100%) rename svgs/{sZN4Baadges/Aavegotchi-RF-SZN4-Baadge-TOP100-RARITY.svg => svgItems/347_RarityFarmingSZN4RarityTop100.svg} (100%) rename svgs/{sZN4Baadges/Aavegotchi-RF-SZN4-Baadge-TOP100-KINSHIP.svg => svgItems/348_RarityFarmingSZN4KinshipTop100.svg} (100%) rename svgs/{sZN4Baadges/Aavegotchi-RF-SZN4-Baadge-TOP100-XP.svg => svgItems/349_RarityFarmingSZN4XPTop100.svg} (100%) delete mode 100644 svgs/svgItems/raffle6/292_BrunettePonytail.svg delete mode 100644 svgs/svgItems/raffle6/292_BrunettePonytailBack.svg delete mode 100644 svgs/svgItems/raffle6/292_BrunettePonytailLeft.svg delete mode 100644 svgs/svgItems/raffle6/292_BrunettePonytailRight.svg delete mode 100644 svgs/svgItems/raffle6/293_LeatherTunic.svg delete mode 100644 svgs/svgItems/raffle6/293_LeatherTunicBack.svg delete mode 100644 svgs/svgItems/raffle6/293_LeatherTunicBackLeft.svg delete mode 100644 svgs/svgItems/raffle6/293_LeatherTunicBackLeftUp.svg delete mode 100644 svgs/svgItems/raffle6/293_LeatherTunicBackRight.svg delete mode 100644 svgs/svgItems/raffle6/293_LeatherTunicBackRightUp.svg delete mode 100644 svgs/svgItems/raffle6/293_LeatherTunicLeft.svg delete mode 100644 svgs/svgItems/raffle6/293_LeatherTunicLeftUp.svg delete mode 100644 svgs/svgItems/raffle6/293_LeatherTunicRight.svg delete mode 100644 svgs/svgItems/raffle6/293_LeatherTunicRightUp.svg delete mode 100644 svgs/svgItems/raffle6/293_LeatherTunicSideLeft.svg delete mode 100644 svgs/svgItems/raffle6/293_LeatherTunicSideLeftDown.svg delete mode 100644 svgs/svgItems/raffle6/293_LeatherTunicSideLeftUp.svg delete mode 100644 svgs/svgItems/raffle6/293_LeatherTunicSideRight.svg delete mode 100644 svgs/svgItems/raffle6/293_LeatherTunicSideRightDown.svg delete mode 100644 svgs/svgItems/raffle6/293_LeatherTunicSideRightUp.svg delete mode 100644 svgs/svgItems/raffle6/294_BowandArrow.svg delete mode 100644 svgs/svgItems/raffle6/294_BowandArrowBack.svg delete mode 100644 svgs/svgItems/raffle6/294_BowandArrowLeft.svg delete mode 100644 svgs/svgItems/raffle6/294_BowandArrowRight.svg delete mode 100644 svgs/svgItems/raffle6/295_ForkedBeard.svg delete mode 100644 svgs/svgItems/raffle6/295_ForkedBeardLeft.svg delete mode 100644 svgs/svgItems/raffle6/295_ForkedBeardRight.svg delete mode 100644 svgs/svgItems/raffle6/296_DoublesidedAxe.svg delete mode 100644 svgs/svgItems/raffle6/296_DoublesidedAxeBack.svg delete mode 100644 svgs/svgItems/raffle6/296_DoublesidedAxeLeft.svg delete mode 100644 svgs/svgItems/raffle6/296_DoublesidedAxeRight.svg delete mode 100644 svgs/svgItems/raffle6/297_AnimalSkins.svg delete mode 100644 svgs/svgItems/raffle6/297_AnimalSkinsBack.svg delete mode 100644 svgs/svgItems/raffle6/297_AnimalSkinsLeft.svg delete mode 100644 svgs/svgItems/raffle6/297_AnimalSkinsLeftUp.svg delete mode 100644 svgs/svgItems/raffle6/297_AnimalSkinsRight.svg delete mode 100644 svgs/svgItems/raffle6/297_AnimalSkinsRightUp.svg delete mode 100644 svgs/svgItems/raffle6/297_AnimalSkinsSideLeft.svg delete mode 100644 svgs/svgItems/raffle6/297_AnimalSkinsSideLeftDown.svg delete mode 100644 svgs/svgItems/raffle6/297_AnimalSkinsSideLeftUp.svg delete mode 100644 svgs/svgItems/raffle6/297_AnimalSkinsSideRight.svg delete mode 100644 svgs/svgItems/raffle6/297_AnimalSkinsSideRightDown.svg delete mode 100644 svgs/svgItems/raffle6/297_AnimalSkinsSideRightUp.svg delete mode 100644 svgs/svgItems/raffle6/298_HornedHelmet.svg delete mode 100644 svgs/svgItems/raffle6/298_HornedHelmetBack.svg delete mode 100644 svgs/svgItems/raffle6/298_HornedHelmetLeft.svg delete mode 100644 svgs/svgItems/raffle6/298_HornedHelmetRight.svg delete mode 100644 svgs/svgItems/raffle6/299_Longbow.svg delete mode 100644 svgs/svgItems/raffle6/299_LongbowBack.svg delete mode 100644 svgs/svgItems/raffle6/299_LongbowLeft.svg delete mode 100644 svgs/svgItems/raffle6/299_LongbowRight.svg delete mode 100644 svgs/svgItems/raffle6/300_FeatheredCap.svg delete mode 100644 svgs/svgItems/raffle6/300_FeatheredCapBack.svg delete mode 100644 svgs/svgItems/raffle6/300_FeatheredCapLeft.svg delete mode 100644 svgs/svgItems/raffle6/300_FeatheredCapRight.svg delete mode 100644 svgs/svgItems/raffle6/301_AlluringEyes.svg delete mode 100644 svgs/svgItems/raffle6/301_AlluringEyesBack.svg delete mode 100644 svgs/svgItems/raffle6/301_AlluringEyesLeft.svg delete mode 100644 svgs/svgItems/raffle6/301_AlluringEyesRight.svg delete mode 100644 svgs/svgItems/raffle6/302_GeishaHeadpiece.svg delete mode 100644 svgs/svgItems/raffle6/302_GeishaHeadpieceBack.svg delete mode 100644 svgs/svgItems/raffle6/302_GeishaHeadpieceLeft.svg delete mode 100644 svgs/svgItems/raffle6/302_GeishaHeadpieceRight.svg delete mode 100644 svgs/svgItems/raffle6/303_Kimono.svg delete mode 100644 svgs/svgItems/raffle6/303_KimonoBack.svg delete mode 100644 svgs/svgItems/raffle6/303_KimonoBackLeft.svg delete mode 100644 svgs/svgItems/raffle6/303_KimonoBackLeftUp.svg delete mode 100644 svgs/svgItems/raffle6/303_KimonoBackRight.svg delete mode 100644 svgs/svgItems/raffle6/303_KimonoBackRightUp.svg delete mode 100644 svgs/svgItems/raffle6/303_KimonoLeft.svg delete mode 100644 svgs/svgItems/raffle6/303_KimonoLeftUp.svg delete mode 100644 svgs/svgItems/raffle6/303_KimonoRight.svg delete mode 100644 svgs/svgItems/raffle6/303_KimonoRightUp.svg delete mode 100644 svgs/svgItems/raffle6/303_KimonoSideLeft.svg delete mode 100644 svgs/svgItems/raffle6/303_KimonoSideLeftDown.svg delete mode 100644 svgs/svgItems/raffle6/303_KimonoSideLeftUp.svg delete mode 100644 svgs/svgItems/raffle6/303_KimonoSideRight.svg delete mode 100644 svgs/svgItems/raffle6/303_KimonoSideRightDown.svg delete mode 100644 svgs/svgItems/raffle6/303_KimonoSideRightUp.svg delete mode 100644 svgs/svgItems/raffle6/304_PaperFan.svg delete mode 100644 svgs/svgItems/raffle6/304_PaperFanBack.svg delete mode 100644 svgs/svgItems/raffle6/304_PaperFanLeft.svg delete mode 100644 svgs/svgItems/raffle6/304_PaperFanRight.svg delete mode 100644 svgs/svgItems/raffle6/305_SusButterfly.svg delete mode 100644 svgs/svgItems/raffle6/305_SusButterflyBack.svg delete mode 100644 svgs/svgItems/raffle6/305_SusButterflyLeft.svg delete mode 100644 svgs/svgItems/raffle6/305_SusButterflyRight.svg delete mode 100644 svgs/svgItems/raffle6/306_FlowerStuds.svg delete mode 100644 svgs/svgItems/raffle6/306_FlowerStudsBack.svg delete mode 100644 svgs/svgItems/raffle6/306_FlowerStudsLeft.svg delete mode 100644 svgs/svgItems/raffle6/306_FlowerStudsRight.svg delete mode 100644 svgs/svgItems/raffle6/307_FairyWings.svg delete mode 100644 svgs/svgItems/raffle6/307_FairyWingsBack.svg delete mode 100644 svgs/svgItems/raffle6/307_FairyWingsLeft.svg delete mode 100644 svgs/svgItems/raffle6/307_FairyWingsLeftUp.svg delete mode 100644 svgs/svgItems/raffle6/307_FairyWingsRight.svg delete mode 100644 svgs/svgItems/raffle6/307_FairyWingsRightUp.svg delete mode 100644 svgs/svgItems/raffle6/307_FairyWingsSideLeft.svg delete mode 100644 svgs/svgItems/raffle6/307_FairyWingsSideRight.svg delete mode 100644 svgs/svgItems/raffle6/308_RedHair.svg delete mode 100644 svgs/svgItems/raffle6/308_RedHairBack.svg delete mode 100644 svgs/svgItems/raffle6/308_RedHairLeft.svg delete mode 100644 svgs/svgItems/raffle6/308_RedHairRight.svg delete mode 100644 svgs/svgItems/raffle6/309_CitaadelHelm.svg delete mode 100644 svgs/svgItems/raffle6/309_CitaadelHelmBack.svg delete mode 100644 svgs/svgItems/raffle6/309_CitaadelHelmLeft.svg delete mode 100644 svgs/svgItems/raffle6/309_CitaadelHelmRight.svg delete mode 100644 svgs/svgItems/raffle6/310_PlateArmor.svg delete mode 100644 svgs/svgItems/raffle6/310_PlateArmorBack.svg delete mode 100644 svgs/svgItems/raffle6/310_PlateArmorBackLeft.svg delete mode 100644 svgs/svgItems/raffle6/310_PlateArmorBackLeftUp.svg delete mode 100644 svgs/svgItems/raffle6/310_PlateArmorBackRight.svg delete mode 100644 svgs/svgItems/raffle6/310_PlateArmorBackRightUp.svg delete mode 100644 svgs/svgItems/raffle6/310_PlateArmorLeft.svg delete mode 100644 svgs/svgItems/raffle6/310_PlateArmorLeftUp.svg delete mode 100644 svgs/svgItems/raffle6/310_PlateArmorRight.svg delete mode 100644 svgs/svgItems/raffle6/310_PlateArmorRightUp.svg delete mode 100644 svgs/svgItems/raffle6/310_PlateArmorSideLeft.svg delete mode 100644 svgs/svgItems/raffle6/310_PlateArmorSideLeftDown.svg delete mode 100644 svgs/svgItems/raffle6/310_PlateArmorSideLeftUp.svg delete mode 100644 svgs/svgItems/raffle6/310_PlateArmorSideRight.svg delete mode 100644 svgs/svgItems/raffle6/310_PlateArmorSideRightDown.svg delete mode 100644 svgs/svgItems/raffle6/310_PlateArmorSideRightUp.svg delete mode 100644 svgs/svgItems/raffle6/311_SpiritSword.svg delete mode 100644 svgs/svgItems/raffle6/311_SpiritSwordBack.svg delete mode 100644 svgs/svgItems/raffle6/311_SpiritSwordLeft.svg delete mode 100644 svgs/svgItems/raffle6/311_SpiritSwordRight.svg delete mode 100644 svgs/svgItems/raffle6/312_PlateShield.svg delete mode 100644 svgs/svgItems/raffle6/312_PlateShieldBack.svg delete mode 100644 svgs/svgItems/raffle6/312_PlateShieldLeft.svg delete mode 100644 svgs/svgItems/raffle6/312_PlateShieldRight.svg delete mode 100644 svgs/svgItems/raffle6/313_KabutoHelmet.svg delete mode 100644 svgs/svgItems/raffle6/313_KabutoHelmetBack.svg delete mode 100644 svgs/svgItems/raffle6/313_KabutoHelmetLeft.svg delete mode 100644 svgs/svgItems/raffle6/313_KabutoHelmetRight.svg delete mode 100644 svgs/svgItems/raffle6/314_YoroiArmor.svg delete mode 100644 svgs/svgItems/raffle6/314_YoroiArmorBack.svg delete mode 100644 svgs/svgItems/raffle6/314_YoroiArmorBackLeft.svg delete mode 100644 svgs/svgItems/raffle6/314_YoroiArmorBackLeftUp.svg delete mode 100644 svgs/svgItems/raffle6/314_YoroiArmorBackRight.svg delete mode 100644 svgs/svgItems/raffle6/314_YoroiArmorBackRightUp.svg delete mode 100644 svgs/svgItems/raffle6/314_YoroiArmorLeft.svg delete mode 100644 svgs/svgItems/raffle6/314_YoroiArmorLeftUp.svg delete mode 100644 svgs/svgItems/raffle6/314_YoroiArmorRight.svg delete mode 100644 svgs/svgItems/raffle6/314_YoroiArmorRightUp.svg delete mode 100644 svgs/svgItems/raffle6/314_YoroiArmorSideLeft.svg delete mode 100644 svgs/svgItems/raffle6/314_YoroiArmorSideLeftDown.svg delete mode 100644 svgs/svgItems/raffle6/314_YoroiArmorSideLeftUp.svg delete mode 100644 svgs/svgItems/raffle6/314_YoroiArmorSideRight.svg delete mode 100644 svgs/svgItems/raffle6/314_YoroiArmorSideRightDown.svg delete mode 100644 svgs/svgItems/raffle6/314_YoroiArmorSideRightUp.svg delete mode 100644 svgs/svgItems/raffle6/315_HaanzoKatana.svg delete mode 100644 svgs/svgItems/raffle6/315_HaanzoKatanaBack.svg delete mode 100644 svgs/svgItems/raffle6/315_HaanzoKatanaLeft.svg delete mode 100644 svgs/svgItems/raffle6/315_HaanzoKatanaRight.svg delete mode 100644 svgs/svgItems/raffle6/EmptyFile.svg diff --git a/contracts/Aavegotchi/WearableDiamond/WearableDiamond.sol b/contracts/Aavegotchi/WearableDiamond/WearableDiamond.sol index 02529c5d4..b3c08fc6a 100644 --- a/contracts/Aavegotchi/WearableDiamond/WearableDiamond.sol +++ b/contracts/Aavegotchi/WearableDiamond/WearableDiamond.sol @@ -13,16 +13,12 @@ import {DiamondLoupeFacet} from "../../shared/facets/DiamondLoupeFacet.sol"; import {OwnershipFacet} from "../../shared/facets/OwnershipFacet.sol"; contract WearableDiamond { - constructor( - address _contractOwner, - address _diamondCutFacet, - address _diaomondLoupeFacet, - address _ownershipFacet - ) { + constructor(address _contractOwner, address _diamondCutFacet, address _diaomondLoupeFacet, address _ownershipFacet, address _aavegotchiDiamond) { WearableLibDiamond.setContractOwner(_contractOwner); WearableLibDiamond.addDiamondFunctions(_diamondCutFacet, _diaomondLoupeFacet, _ownershipFacet); WearableLibDiamond.DiamondStorage storage ds = WearableLibDiamond.diamondStorage(); ds.supportedInterfaces[0xd9b67a26] = true; //erc1155 + ds.aavegotchiDiamond = _aavegotchiDiamond; } // Find facet for function that is called and execute the diff --git a/contracts/Aavegotchi/WearableDiamond/libraries/WearableLibDiamond.sol b/contracts/Aavegotchi/WearableDiamond/libraries/WearableLibDiamond.sol index ceb24320e..f802a0fb8 100644 --- a/contracts/Aavegotchi/WearableDiamond/libraries/WearableLibDiamond.sol +++ b/contracts/Aavegotchi/WearableDiamond/libraries/WearableLibDiamond.sol @@ -68,7 +68,7 @@ library WearableLibDiamond { } function enforceIsDiamond() internal view { - require(msg.sender == AAVEGOTCHI_DIAMOND, "LibDiamond: Caller must be Aavegotchi Diamond"); + require(msg.sender == diamondStorage().aavegotchiDiamond, "LibDiamond: Caller must be Aavegotchi Diamond"); } event DiamondCut(IDiamondCut.FacetCut[] _diamondCut, address _init, bytes _calldata); diff --git a/contracts/Aavegotchi/facets/DAOFacet.sol b/contracts/Aavegotchi/facets/DAOFacet.sol index 52eda95e0..59dafcf6f 100644 --- a/contracts/Aavegotchi/facets/DAOFacet.sol +++ b/contracts/Aavegotchi/facets/DAOFacet.sol @@ -91,7 +91,7 @@ contract DAOFacet is Modifiers { //First handle global collateralTypes array uint256 index = s.collateralTypeIndexes[newCollateralType]; - bool collateralExists = index > 0 || s.collateralTypes[0] == newCollateralType; + bool collateralExists = index > 0 || ((s.collateralTypes.length > 0) && (s.collateralTypes[0] == newCollateralType)); if (!collateralExists) { s.collateralTypes.push(newCollateralType); diff --git a/contracts/shared/Diamond.sol b/contracts/shared/Diamond.sol new file mode 100644 index 000000000..7dfdafa16 --- /dev/null +++ b/contracts/shared/Diamond.sol @@ -0,0 +1,44 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.1; + +/******************************************************************************\ +* Authors: Nick Mudge (https://twitter.com/mudgen) +* +* Implementation of a diamond. +/******************************************************************************/ + +import {LibDiamond} from "./libraries/LibDiamond.sol"; +import {DiamondCutFacet} from "./facets/DiamondCutFacet.sol"; +import {DiamondLoupeFacet} from "./facets/DiamondLoupeFacet.sol"; +import {OwnershipFacet} from "./facets/OwnershipFacet.sol"; + +contract Diamond { + constructor(address _contractOwner) { + LibDiamond.setContractOwner(_contractOwner); + LibDiamond.addDiamondFunctions(address(new DiamondCutFacet()), address(new DiamondLoupeFacet()), address(new OwnershipFacet())); + } + + // Find facet for function that is called and execute the + // function if a facet is found and return any value. + fallback() external payable { + LibDiamond.DiamondStorage storage ds; + bytes32 position = LibDiamond.DIAMOND_STORAGE_POSITION; + assembly { + ds.slot := position + } + address facet = ds.selectorToFacetAndPosition[msg.sig].facetAddress; + require(facet != address(0), "Diamond: Function does not exist"); + assembly { + calldatacopy(0, 0, calldatasize()) + let result := delegatecall(gas(), facet, 0, calldatasize(), 0, 0) + returndatacopy(0, 0, returndatasize()) + switch result + case 0 { + revert(0, returndatasize()) + } + default { + return(0, returndatasize()) + } + } + } +} diff --git a/data/itemTypes/forgewearablesSideViews.ts b/data/itemTypes/forgewearablesSideViews.ts index 2ea69844c..a79e5e0c2 100644 --- a/data/itemTypes/forgewearablesSideViews.ts +++ b/data/itemTypes/forgewearablesSideViews.ts @@ -497,4 +497,4 @@ export const forgeSideExceptions: Exceptions[] = [ side: "wearables-back", exceptionBool: true, }, -]; \ No newline at end of file +]; diff --git a/data/itemTypes/itemTypes.ts b/data/itemTypes/itemTypes.ts index eabc60eb6..54b5d1246 100644 --- a/data/itemTypes/itemTypes.ts +++ b/data/itemTypes/itemTypes.ts @@ -1,4 +1,4 @@ -import { ItemTypeInput } from "../../scripts/itemTypeHelpers"; +import { ItemTypeInputNew } from "../../scripts/itemTypeHelpers"; /* global ethers */ /* @@ -22,10 +22,10 @@ export function maxQuantityToRarity(quantity: number) { else if (quantity >= 1) return "Godlike"; } -export const itemTypes: ItemTypeInput[] = [ +export const itemTypes: ItemTypeInputNew[] = [ { svgId: 0, - name: "The Void", + name: "Void", setId: [], author: "Xibot", description: "The Void", @@ -256,7 +256,7 @@ export const itemTypes: ItemTypeInput[] = [ }, { svgId: 11, - name: "Link Mess Dress", + name: "Mess Dress", setId: [4], author: "Xibot", description: "", @@ -829,7 +829,7 @@ export const itemTypes: ItemTypeInput[] = [ }, { svgId: 36, - name: "ETH Logo Glasses", + name: "ETH Maxi Glasses", setId: [15, 61], author: "Xibot", description: "", @@ -973,7 +973,7 @@ export const itemTypes: ItemTypeInput[] = [ }, { svgId: 42, - name: "Eagle Mask", + name: "Nogara Eagle Mask", setId: [17], author: "Xibot", description: "", @@ -997,7 +997,7 @@ export const itemTypes: ItemTypeInput[] = [ }, { svgId: 43, - name: "Eagle Armor", + name: "Nogara Eagle Armor", setId: [17], author: "Xibot", description: "", @@ -1237,7 +1237,7 @@ export const itemTypes: ItemTypeInput[] = [ }, { svgId: 53, - name: "All-Seeing Eyes", + name: "All Seeing Eyes", setId: [20, 21], author: "Xibot", description: "", @@ -1405,7 +1405,7 @@ export const itemTypes: ItemTypeInput[] = [ }, { svgId: 60, - name: "Common Wizard Hat", + name: "Wizard Hat", setId: [25, 29], author: "Xibot", description: "", @@ -1429,7 +1429,7 @@ export const itemTypes: ItemTypeInput[] = [ }, { svgId: 61, - name: "Legendary Wizard Hat", + name: "Wizard Hat Legendary", setId: [26, 30], author: "Xibot", description: "", @@ -1453,7 +1453,7 @@ export const itemTypes: ItemTypeInput[] = [ }, { svgId: 62, - name: "Mythical Wizard Hat", + name: "Wizard Hat Mythical", setId: [27, 31], author: "Xibot", description: "", @@ -1477,7 +1477,7 @@ export const itemTypes: ItemTypeInput[] = [ }, { svgId: 63, - name: "Godlike Wizard Hat", + name: "Wizard Hat Godlike", setId: [28, 32], author: "Xibot", description: "", @@ -1501,7 +1501,7 @@ export const itemTypes: ItemTypeInput[] = [ }, { svgId: 64, - name: "Common Wizard Staff", + name: "Wizard Staff", setId: [25, 26, 27, 28], author: "Xibot", description: "", @@ -1525,7 +1525,7 @@ export const itemTypes: ItemTypeInput[] = [ }, { svgId: 65, - name: "Legendary Wizard Staff", + name: "Wizard Staff Legendary", setId: [29, 30, 31, 32], author: "Xibot", description: "", @@ -1549,7 +1549,7 @@ export const itemTypes: ItemTypeInput[] = [ }, { svgId: 66, - name: "Wizard Visor", + name: "Future Wizard Visor", setId: [25, 26, 27, 28, 29, 30, 31, 32], author: "Xibot", description: "", @@ -1573,7 +1573,7 @@ export const itemTypes: ItemTypeInput[] = [ }, { svgId: 67, - name: "Straw Hat", + name: "Farmer Straw Hat", setId: [33, 34, 68], author: "Xibot", description: "", @@ -1621,7 +1621,7 @@ export const itemTypes: ItemTypeInput[] = [ }, { svgId: 69, - name: "Pitchfork", + name: "Farmer Pitchfork", setId: [33, 68], author: "Xibot", description: "", @@ -1645,7 +1645,7 @@ export const itemTypes: ItemTypeInput[] = [ }, { svgId: 70, - name: "Handsaw", + name: "Farmer Handsaw", setId: [34], author: "Cryptofluffycat", description: "", @@ -1669,7 +1669,7 @@ export const itemTypes: ItemTypeInput[] = [ }, { svgId: 71, - name: "Red Santa Hat", + name: "Santagotchi Hat", setId: [69], author: "Xibot", description: "", @@ -1741,7 +1741,7 @@ export const itemTypes: ItemTypeInput[] = [ }, { svgId: 74, - name: "Jaay Suit", + name: "Jaay Hao Suit", setId: [35, 36, 63], author: "Xibot", description: "", @@ -1837,7 +1837,7 @@ export const itemTypes: ItemTypeInput[] = [ }, { svgId: 78, - name: "Black Jeans", + name: "Skater Jeans", setId: [37], author: "Xibot", description: "", @@ -1885,7 +1885,7 @@ export const itemTypes: ItemTypeInput[] = [ }, { svgId: 80, - name: "Sushi Bandana", + name: "Sushi Headband", setId: [38, 39, 40], author: "Xibot", description: "", @@ -1909,7 +1909,7 @@ export const itemTypes: ItemTypeInput[] = [ }, { svgId: 81, - name: "Sushi Coat", + name: "Sushi Robe", setId: [38, 39, 40], author: "Xibot", description: "", @@ -1933,7 +1933,7 @@ export const itemTypes: ItemTypeInput[] = [ }, { svgId: 82, - name: "Sushi Piece", + name: "Sushi Roll", setId: [39, 40], author: "Xibot", description: "", @@ -2005,7 +2005,7 @@ export const itemTypes: ItemTypeInput[] = [ }, { svgId: 85, - name: "Gentleman Coat", + name: "Gentleman Suit", setId: [41], author: "Xibot", description: "", @@ -2029,7 +2029,7 @@ export const itemTypes: ItemTypeInput[] = [ }, { svgId: 86, - name: "Monocle", + name: "Gentleman Monocle", setId: [41], author: "Xibot", description: "", @@ -2101,7 +2101,7 @@ export const itemTypes: ItemTypeInput[] = [ }, { svgId: 89, - name: "Pickaxe", + name: "Miner Pickaxe", setId: [42, 65], author: "Xibot", description: "", @@ -2149,7 +2149,7 @@ export const itemTypes: ItemTypeInput[] = [ }, { svgId: 91, - name: "Pajama Shirt", + name: "Pajama Pants", setId: [43, 44, 45, 66], author: "Xibot", description: "", @@ -2197,7 +2197,7 @@ export const itemTypes: ItemTypeInput[] = [ }, { svgId: 93, - name: "Fluffy Pillow", + name: "Fluffy Blanket", setId: [45], author: "Xibot", description: "", @@ -2221,7 +2221,7 @@ export const itemTypes: ItemTypeInput[] = [ }, { svgId: 94, - name: "Sweatband", + name: "Runner Sweatband", setId: [46, 47, 48, 49], author: "Xibot", description: "", @@ -2245,7 +2245,7 @@ export const itemTypes: ItemTypeInput[] = [ }, { svgId: 95, - name: "Track Shorts", + name: "Runner Shorts", setId: [47, 48], author: "Xibot", description: "", @@ -2317,7 +2317,7 @@ export const itemTypes: ItemTypeInput[] = [ }, { svgId: 98, - name: "Day Dress", + name: "Lady Skirt", setId: [50, 51, 52], author: "Xibot", description: "", @@ -2341,7 +2341,7 @@ export const itemTypes: ItemTypeInput[] = [ }, { svgId: 99, - name: "Parasol", + name: "Lady Parasol", setId: [51, 52], author: "Xibot", description: "", @@ -2365,7 +2365,7 @@ export const itemTypes: ItemTypeInput[] = [ }, { svgId: 100, - name: "Clutch", + name: "Lady Clutch", setId: [50, 52], author: "Xibot", description: "", @@ -2389,7 +2389,7 @@ export const itemTypes: ItemTypeInput[] = [ }, { svgId: 101, - name: "Witchy Hat", + name: "Witch Hat", setId: [53], author: "Xibot", description: "", @@ -2413,7 +2413,7 @@ export const itemTypes: ItemTypeInput[] = [ }, { svgId: 102, - name: "Witchy Cloak", + name: "Witch Cape", setId: [53], author: "Xibot", description: "", @@ -2437,7 +2437,7 @@ export const itemTypes: ItemTypeInput[] = [ }, { svgId: 103, - name: "Witchy Wand", + name: "Witch Wand", setId: [53], author: "Xibot", description: "", @@ -2557,7 +2557,7 @@ export const itemTypes: ItemTypeInput[] = [ }, { svgId: 108, - name: "Rasta Hat", + name: "Rasta Dreds", setId: [56], author: "Cawito", description: "", @@ -2773,7 +2773,7 @@ export const itemTypes: ItemTypeInput[] = [ }, { svgId: 117, - name: "Cool shades", + name: "Deal With It shades", setId: [59, 60, 67], author: "Xibot", description: "", @@ -2866,7 +2866,7 @@ export const itemTypes: ItemTypeInput[] = [ }, { svgId: 121, - name: "Wine", + name: "Wine Bottle", setId: [], author: "Cawito", description: "", @@ -3241,7 +3241,7 @@ export const itemTypes: ItemTypeInput[] = [ }, { svgId: 139, - name: "Snapshot Cap", + name: "Snapshot Hat", setId: [71], author: "xibot", description: "", @@ -3621,7 +3621,7 @@ export const itemTypes: ItemTypeInput[] = [ }, { svgId: 158, - name: "Lil Pump Drank", + name: "Lil Pump Drink", setId: [83, 84], author: "xibot", description: "", @@ -3723,9 +3723,9 @@ export const itemTypes: ItemTypeInput[] = [ //badges { - name: "Rarity Farming SZN 1 Round 1 TOP 10 RARITY", + name: "Rarity Farming SZN 1 Rnd 1 Top 10 Rarity", description: - "This Aavegotchi achieved a rank in the top 10 of RARITY for the very first round of the first ever season of Rarity Farming. \n\nFrom April 20 to May 4, 2021, the first season of Rarity Farming featured three main leaderboards that any summoned Aavegotchi could participate in. All competing Aavegotchis were from the original Haunt 1 portals of which there were 10,000 total.", + "This Aavegotchi achieved a rank in the top 10 of Rarity for the very first round of the first ever season of Rarity Farming. \n\nFrom April 20 to May 4, 2021, the first season of Rarity Farming featured three main leaderboards that any summoned Aavegotchi could participate in. All competing Aavegotchis were from the original Haunt 1 portals of which there were 10,000 total.", svgId: 163, minLevel: 0, canBeTransferred: false, @@ -3745,9 +3745,9 @@ export const itemTypes: ItemTypeInput[] = [ }, { - name: "Rarity Farming SZN 1 Round 1 TOP 10 KINSHIP", + name: "Rarity Farming SZN 1 Rnd 1 Top 10 Kinship", description: - "This Aavegotchi achieved a rank in the top 10 of RARITY for the very first round of the first ever season of Rarity Farming. \n\nFrom April 20 to May 4, 2021, the first season of Rarity Farming featured three main leaderboards that any summoned Aavegotchi could participate in. All competing Aavegotchis were from the original Haunt 1 portals of which there were 10,000 total.", + "This Aavegotchi achieved a rank in the top 10 of Rarity for the very first round of the first ever season of Rarity Farming. \n\nFrom April 20 to May 4, 2021, the first season of Rarity Farming featured three main leaderboards that any summoned Aavegotchi could participate in. All competing Aavegotchis were from the original Haunt 1 portals of which there were 10,000 total.", svgId: 164, canBeTransferred: false, totalQuantity: 0, @@ -3767,9 +3767,9 @@ export const itemTypes: ItemTypeInput[] = [ }, { - name: "Rarity Farming SZN 1 Round 1 TOP 10 EXPERIENCE", + name: "Rarity Farming SZN 1 Rnd 1 Top 10 XP", description: - "This Aavegotchi achieved a rank in the top 10 of EXPERIENCE for the very first round of the first ever season of Rarity Farming. \n\nFrom April 20 to May 4, 2021, the first season of Rarity Farming featured three main leaderboards that any summoned Aavegotchi could participate in. All competing Aavegotchis were from the original Haunt 1 portals of which there were 10,000 total.", + "This Aavegotchi achieved a rank in the top 10 of XP for the very first round of the first ever season of Rarity Farming. \n\nFrom April 20 to May 4, 2021, the first season of Rarity Farming featured three main leaderboards that any summoned Aavegotchi could participate in. All competing Aavegotchis were from the original Haunt 1 portals of which there were 10,000 total.", svgId: 165, canBeTransferred: false, canPurchaseWithGhst: false, @@ -3789,9 +3789,9 @@ export const itemTypes: ItemTypeInput[] = [ }, { - name: "Rarity Farming SZN 1 Round 1 TOP 100 RARITY", + name: "Rarity Farming SZN 1 Rnd 1 Top 100 Rarity", description: - "This Aavegotchi achieved a rank in the top 100 of RARITY for the very first round of the first ever season of Rarity Farming. \n\nFrom April 20 to May 4, 2021, the first season of Rarity Farming featured three main leaderboards that any summoned Aavegotchi could participate in. All competing Aavegotchis were from the original Haunt 1 portals of which there were 10,000 total.", + "This Aavegotchi achieved a rank in the top 100 of Rarity for the very first round of the first ever season of Rarity Farming. \n\nFrom April 20 to May 4, 2021, the first season of Rarity Farming featured three main leaderboards that any summoned Aavegotchi could participate in. All competing Aavegotchis were from the original Haunt 1 portals of which there were 10,000 total.", svgId: 166, canBeTransferred: false, canPurchaseWithGhst: false, @@ -3811,9 +3811,9 @@ export const itemTypes: ItemTypeInput[] = [ }, { - name: "Rarity Farming SZN 1 Round 1 TOP 100 KINSHIP", + name: "Rarity Farming SZN 1 Rnd 1 Top 100 Kinship", description: - "This Aavegotchi achieved a rank in the top 100 of KINSHIP for the very first round of the first ever season of Rarity Farming. \n\nFrom April 20 to May 4, 2021, the first season of Rarity Farming featured three main leaderboards that any summoned Aavegotchi could participate in. All competing Aavegotchis were from the original Haunt 1 portals of which there were 10,000 total.", + "This Aavegotchi achieved a rank in the top 100 of Kinship for the very first round of the first ever season of Rarity Farming. \n\nFrom April 20 to May 4, 2021, the first season of Rarity Farming featured three main leaderboards that any summoned Aavegotchi could participate in. All competing Aavegotchis were from the original Haunt 1 portals of which there were 10,000 total.", svgId: 167, minLevel: 0, canBeTransferred: false, @@ -3833,9 +3833,9 @@ export const itemTypes: ItemTypeInput[] = [ }, { - name: "Rarity Farming SZN 1 Round 1 TOP 100 EXPERIENCE", + name: "Rarity Farming SZN 1 Rnd 1 Top 100 XP", description: - "This Aavegotchi achieved a rank in the top 100 of EXPERIENCE for the very first round of the first ever season of Rarity Farming. \n\nFrom April 20 to May 4, 2021, the first season of Rarity Farming featured three main leaderboards that any summoned Aavegotchi could participate in. All competing Aavegotchis were from the original Haunt 1 portals of which there were 10,000 total.", + "This Aavegotchi achieved a rank in the top 100 of XP for the very first round of the first ever season of Rarity Farming. \n\nFrom April 20 to May 4, 2021, the first season of Rarity Farming featured three main leaderboards that any summoned Aavegotchi could participate in. All competing Aavegotchis were from the original Haunt 1 portals of which there were 10,000 total.", svgId: 168, canBeTransferred: false, canPurchaseWithGhst: false, @@ -3855,9 +3855,9 @@ export const itemTypes: ItemTypeInput[] = [ }, { - name: "Rarity Farming SZN 1 Round 2 TOP 10 RARITY", + name: "Rarity Farming SZN 1 Rnd 2 Top 10 Rarity", description: - "This Aavegotchi achieved a rank in the top 10 of RARITY for the second round of the first ever season of Rarity Farming. \n\nFrom April 20 to May 4, 2021, the first season of Rarity Farming featured three main leaderboards that any summoned Aavegotchi could participate in. All competing Aavegotchis were from the original Haunt 1 portals of which there were 10,000 total.", + "This Aavegotchi achieved a rank in the top 10 of Rarity for the second round of the first ever season of Rarity Farming. \n\nFrom April 20 to May 4, 2021, the first season of Rarity Farming featured three main leaderboards that any summoned Aavegotchi could participate in. All competing Aavegotchis were from the original Haunt 1 portals of which there were 10,000 total.", svgId: 169, minLevel: 0, canBeTransferred: false, @@ -3877,9 +3877,9 @@ export const itemTypes: ItemTypeInput[] = [ }, { - name: "Rarity Farming SZN 1 Round 2 TOP 10 KINSHIP", + name: "Rarity Farming SZN 1 Rnd 2 Top 10 Kinship", description: - "This Aavegotchi achieved a rank in the top 10 of RARITY for the second round of the first ever season of Rarity Farming. \n\nFrom April 20 to May 4, 2021, the first season of Rarity Farming featured three main leaderboards that any summoned Aavegotchi could participate in. All competing Aavegotchis were from the original Haunt 1 portals of which there were 10,000 total.", + "This Aavegotchi achieved a rank in the top 10 of Rarity for the second round of the first ever season of Rarity Farming. \n\nFrom April 20 to May 4, 2021, the first season of Rarity Farming featured three main leaderboards that any summoned Aavegotchi could participate in. All competing Aavegotchis were from the original Haunt 1 portals of which there were 10,000 total.", svgId: 170, canBeTransferred: false, canPurchaseWithGhst: false, @@ -3899,9 +3899,9 @@ export const itemTypes: ItemTypeInput[] = [ }, { - name: "Rarity Farming SZN 1 Round 2 TOP 10 EXPERIENCE", + name: "Rarity Farming SZN 1 Rnd 2 Top 10 XP", description: - "This Aavegotchi achieved a rank in the top 10 of EXPERIENCE for the second round of the first ever season of Rarity Farming. \n\nFrom April 20 to May 4, 2021, the first season of Rarity Farming featured three main leaderboards that any summoned Aavegotchi could participate in. All competing Aavegotchis were from the original Haunt 1 portals of which there were 10,000 total.", + "This Aavegotchi achieved a rank in the top 10 of XP for the second round of the first ever season of Rarity Farming. \n\nFrom April 20 to May 4, 2021, the first season of Rarity Farming featured three main leaderboards that any summoned Aavegotchi could participate in. All competing Aavegotchis were from the original Haunt 1 portals of which there were 10,000 total.", svgId: 171, canBeTransferred: false, totalQuantity: 0, @@ -3921,9 +3921,9 @@ export const itemTypes: ItemTypeInput[] = [ }, { - name: "Rarity Farming SZN 1 Round 2 TOP 100 RARITY", + name: "Rarity Farming SZN 1 Rnd 2 Top 100 Rarity", description: - "This Aavegotchi achieved a rank in the top 100 of RARITY for the second round of the first ever season of Rarity Farming. \n\nFrom April 20 to May 4, 2021, the first season of Rarity Farming featured three main leaderboards that any summoned Aavegotchi could participate in. All competing Aavegotchis were from the original Haunt 1 portals of which there were 10,000 total.", + "This Aavegotchi achieved a rank in the top 100 of Rarity for the second round of the first ever season of Rarity Farming. \n\nFrom April 20 to May 4, 2021, the first season of Rarity Farming featured three main leaderboards that any summoned Aavegotchi could participate in. All competing Aavegotchis were from the original Haunt 1 portals of which there were 10,000 total.", svgId: 172, canBeTransferred: false, totalQuantity: 0, @@ -3943,9 +3943,9 @@ export const itemTypes: ItemTypeInput[] = [ }, { - name: "Rarity Farming SZN 1 Round 2 TOP 100 KINSHIP", + name: "Rarity Farming SZN 1 Rnd 2 Top 100 Kinship", description: - "This Aavegotchi achieved a rank in the top 100 of KINSHIP for the second round of the first ever season of Rarity Farming. \n\nFrom April 20 to May 4, 2021, the first season of Rarity Farming featured three main leaderboards that any summoned Aavegotchi could participate in. All competing Aavegotchis were from the original Haunt 1 portals of which there were 10,000 total.", + "This Aavegotchi achieved a rank in the top 100 of Kinship for the second round of the first ever season of Rarity Farming. \n\nFrom April 20 to May 4, 2021, the first season of Rarity Farming featured three main leaderboards that any summoned Aavegotchi could participate in. All competing Aavegotchis were from the original Haunt 1 portals of which there were 10,000 total.", svgId: 173, minLevel: 0, canBeTransferred: false, @@ -3965,9 +3965,9 @@ export const itemTypes: ItemTypeInput[] = [ }, { - name: "Rarity Farming SZN 1 Round 2 TOP 100 EXPERIENCE", + name: "Rarity Farming SZN 1 Rnd 2 Top 100 XP", description: - "This Aavegotchi achieved a rank in the top 100 of EXPERIENCE for the second round of the first ever season of Rarity Farming. \n\nFrom April 20 to May 4, 2021, the first season of Rarity Farming featured three main leaderboards that any summoned Aavegotchi could participate in. All competing Aavegotchis were from the original Haunt 1 portals of which there were 10,000 total.", + "This Aavegotchi achieved a rank in the top 100 of XP for the second round of the first ever season of Rarity Farming. \n\nFrom April 20 to May 4, 2021, the first season of Rarity Farming featured three main leaderboards that any summoned Aavegotchi could participate in. All competing Aavegotchis were from the original Haunt 1 portals of which there were 10,000 total.", svgId: 174, canBeTransferred: false, totalQuantity: 0, @@ -3987,7 +3987,7 @@ export const itemTypes: ItemTypeInput[] = [ }, { - name: "Unicly LP uGOTCHI/ETH Q2 2021", + name: "unicly Baadge", description: "The owner of this Aavegotchi provided liquidity to the NFT fractionalization platform Unicly for the uGOTCHI/ETH pair.\n This baadge was bestowed during May 2021 to each Aavegotchi in the owner's wallet at the time of snapshot. Unicly's liquidity mining program had been pushed back a few weeks and the least that could be done was to honor these early providers with a baadge.", svgId: 175, @@ -4008,20 +4008,920 @@ export const itemTypes: ItemTypeInput[] = [ canPurchaseWithGhst: false, }, + { + name: "Rarity Farming SZN 1 Rnd 3 Top 10 Rarity", + description: + "This Aavegotchi achieved a rank in the top 10 of Rarity for the second round of the first ever season of Rarity Farming. \n\nFrom April 20 to June 15, 2021, the first season of Rarity Farming featured three main leaderboards that any summoned Aavegotchi could participate in. All competing Aavegotchis were from the original Haunt 1 portals of which there were 10,000 total.", + svgId: 176, + minLevel: 0, + canBeTransferred: false, + canPurchaseWithGhst: false, + totalQuantity: 0, + maxQuantity: 10, + setId: [], + author: "xibot", + dimensions: { x: 0, y: 0, width: 0, height: 0 }, + allowedCollaterals: [], + ghstPrice: 0, + traitModifiers: [0, 0, 0, 0, 0, 0], + slotPositions: "none", + category: 1, + experienceBonus: 0, + kinshipBonus: 0, + }, + + { + name: "Rarity Farming SZN 1 Rnd 3 Top 10 Kinship", + description: + "This Aavegotchi achieved a rank in the top 10 of Rarity for the second round of the first ever season of Rarity Farming. \n\nFrom April 20 to June 15, 2021, the first season of Rarity Farming featured three main leaderboards that any summoned Aavegotchi could participate in. All competing Aavegotchis were from the original Haunt 1 portals of which there were 10,000 total.", + svgId: 177, + canBeTransferred: false, + canPurchaseWithGhst: false, + totalQuantity: 0, + minLevel: 0, + maxQuantity: 10, + setId: [], + author: "xibot", + dimensions: { x: 0, y: 0, width: 0, height: 0 }, + allowedCollaterals: [], + ghstPrice: 0, + traitModifiers: [0, 0, 0, 0, 0, 0], + slotPositions: "none", + category: 1, + experienceBonus: 0, + kinshipBonus: 0, + }, + + { + name: "Rarity Farming SZN 1 Rnd 3 Top 10 XP", + description: + "This Aavegotchi achieved a rank in the top 10 of XP for the second round of the first ever season of Rarity Farming. \n\nFrom April 20 to June 15, 2021, the first season of Rarity Farming featured three main leaderboards that any summoned Aavegotchi could participate in. All competing Aavegotchis were from the original Haunt 1 portals of which there were 10,000 total.", + svgId: 178, + canBeTransferred: false, + totalQuantity: 0, + canPurchaseWithGhst: false, + minLevel: 0, + maxQuantity: 10, + setId: [], + author: "xibot", + dimensions: { x: 0, y: 0, width: 0, height: 0 }, + allowedCollaterals: [], + ghstPrice: 0, + traitModifiers: [0, 0, 0, 0, 0, 0], + slotPositions: "none", + category: 1, + experienceBonus: 0, + kinshipBonus: 0, + }, + + { + name: "Rarity Farming SZN 1 Rnd 3 Top 100 Rarity", + description: + "This Aavegotchi achieved a rank in the top 100 of Rarity for the second round of the first ever season of Rarity Farming. \n\nFrom April 20 to June 15, 2021, the first season of Rarity Farming featured three main leaderboards that any summoned Aavegotchi could participate in. All competing Aavegotchis were from the original Haunt 1 portals of which there were 10,000 total.", + svgId: 179, + canBeTransferred: false, + totalQuantity: 0, + minLevel: 0, + maxQuantity: 90, + setId: [], + author: "xibot", + dimensions: { x: 0, y: 0, width: 0, height: 0 }, + allowedCollaterals: [], + ghstPrice: 0, + traitModifiers: [0, 0, 0, 0, 0, 0], + slotPositions: "none", + category: 1, + experienceBonus: 0, + kinshipBonus: 0, + canPurchaseWithGhst: false, + }, + + { + name: "Rarity Farming SZN 1 Rnd 3 Top 100 Kinship", + description: + "This Aavegotchi achieved a rank in the top 100 of Kinship for the second round of the first ever season of Rarity Farming. \n\nFrom April 20 to June 15, 2021, the first season of Rarity Farming featured three main leaderboards that any summoned Aavegotchi could participate in. All competing Aavegotchis were from the original Haunt 1 portals of which there were 10,000 total.", + svgId: 180, + minLevel: 0, + canBeTransferred: false, + totalQuantity: 0, + maxQuantity: 90, + setId: [], + author: "xibot", + dimensions: { x: 0, y: 0, width: 0, height: 0 }, + allowedCollaterals: [], + ghstPrice: 0, + traitModifiers: [0, 0, 0, 0, 0, 0], + slotPositions: "none", + category: 1, + experienceBonus: 0, + kinshipBonus: 0, + canPurchaseWithGhst: false, + }, + + { + name: "Rarity Farming SZN 1 Rnd 3 Top 100 XP", + description: + "This Aavegotchi achieved a rank in the top 100 of XP for the second round of the first ever season of Rarity Farming. \n\nFrom April 20 to June 15, 2021, the first season of Rarity Farming featured three main leaderboards that any summoned Aavegotchi could participate in. All competing Aavegotchis were from the original Haunt 1 portals of which there were 10,000 total.", + svgId: 181, + canBeTransferred: false, + totalQuantity: 0, + minLevel: 0, + maxQuantity: 90, + setId: [], + author: "xibot", + dimensions: { x: 0, y: 0, width: 0, height: 0 }, + allowedCollaterals: [], + ghstPrice: 0, + traitModifiers: [0, 0, 0, 0, 0, 0], + slotPositions: "none", + category: 1, + experienceBonus: 0, + kinshipBonus: 0, + canPurchaseWithGhst: false, + }, + + { + name: "Rarity Farming SZN 1 Rnd 4 Top 10 Rarity", + description: + "This Aavegotchi achieved a rank in the top 10 of Rarity for the second round of the first ever season of Rarity Farming. \n\nFrom April 20 to June 15, 2021, the first season of Rarity Farming featured three main leaderboards that any summoned Aavegotchi could participate in. All competing Aavegotchis were from the original Haunt 1 portals of which there were 10,000 total.", + svgId: 182, + minLevel: 0, + canBeTransferred: false, + canPurchaseWithGhst: false, + totalQuantity: 0, + maxQuantity: 10, + setId: [], + author: "xibot", + dimensions: { x: 0, y: 0, width: 0, height: 0 }, + allowedCollaterals: [], + ghstPrice: 0, + traitModifiers: [0, 0, 0, 0, 0, 0], + slotPositions: "none", + category: 1, + experienceBonus: 0, + kinshipBonus: 0, + }, + + { + name: "Rarity Farming SZN 1 Rnd 4 Top 10 Kinship", + description: + "This Aavegotchi achieved a rank in the top 10 of Rarity for the second round of the first ever season of Rarity Farming. \n\nFrom April 20 to June 15, 2021, the first season of Rarity Farming featured three main leaderboards that any summoned Aavegotchi could participate in. All competing Aavegotchis were from the original Haunt 1 portals of which there were 10,000 total.", + svgId: 183, + canBeTransferred: false, + canPurchaseWithGhst: false, + totalQuantity: 0, + minLevel: 0, + maxQuantity: 10, + setId: [], + author: "xibot", + dimensions: { x: 0, y: 0, width: 0, height: 0 }, + allowedCollaterals: [], + ghstPrice: 0, + traitModifiers: [0, 0, 0, 0, 0, 0], + slotPositions: "none", + category: 1, + experienceBonus: 0, + kinshipBonus: 0, + }, + + { + name: "Rarity Farming SZN 1 Rnd 4 Top 10 XP", + description: + "This Aavegotchi achieved a rank in the top 10 of XP for the second round of the first ever season of Rarity Farming. \n\nFrom April 20 to June 15, 2021, the first season of Rarity Farming featured three main leaderboards that any summoned Aavegotchi could participate in. All competing Aavegotchis were from the original Haunt 1 portals of which there were 10,000 total.", + svgId: 184, + canBeTransferred: false, + totalQuantity: 0, + canPurchaseWithGhst: false, + minLevel: 0, + maxQuantity: 10, + setId: [], + author: "xibot", + dimensions: { x: 0, y: 0, width: 0, height: 0 }, + allowedCollaterals: [], + ghstPrice: 0, + traitModifiers: [0, 0, 0, 0, 0, 0], + slotPositions: "none", + category: 1, + experienceBonus: 0, + kinshipBonus: 0, + }, + + { + name: "Rarity Farming SZN 1 Rnd 4 Top 100 Rarity", + description: + "This Aavegotchi achieved a rank in the top 100 of Rarity for the second round of the first ever season of Rarity Farming. \n\nFrom April 20 to June 15, 2021, the first season of Rarity Farming featured three main leaderboards that any summoned Aavegotchi could participate in. All competing Aavegotchis were from the original Haunt 1 portals of which there were 10,000 total.", + svgId: 185, + canBeTransferred: false, + totalQuantity: 0, + minLevel: 0, + maxQuantity: 90, + setId: [], + author: "xibot", + dimensions: { x: 0, y: 0, width: 0, height: 0 }, + allowedCollaterals: [], + ghstPrice: 0, + traitModifiers: [0, 0, 0, 0, 0, 0], + slotPositions: "none", + category: 1, + experienceBonus: 0, + kinshipBonus: 0, + canPurchaseWithGhst: false, + }, + + { + name: "Rarity Farming SZN 1 Rnd 4 Top 100 Kinship", + description: + "This Aavegotchi achieved a rank in the top 100 of Kinship for the second round of the first ever season of Rarity Farming. \n\nFrom April 20 to June 15, 2021, the first season of Rarity Farming featured three main leaderboards that any summoned Aavegotchi could participate in. All competing Aavegotchis were from the original Haunt 1 portals of which there were 10,000 total.", + svgId: 186, + minLevel: 0, + canBeTransferred: false, + totalQuantity: 0, + maxQuantity: 90, + setId: [], + author: "xibot", + dimensions: { x: 0, y: 0, width: 0, height: 0 }, + allowedCollaterals: [], + ghstPrice: 0, + traitModifiers: [0, 0, 0, 0, 0, 0], + slotPositions: "none", + category: 1, + experienceBonus: 0, + kinshipBonus: 0, + canPurchaseWithGhst: false, + }, + + { + name: "Rarity Farming SZN 1 Rnd 4 Top 100 XP", + description: + "This Aavegotchi achieved a rank in the top 100 of XP for the second round of the first ever season of Rarity Farming. \n\nFrom April 20 to June 15, 2021, the first season of Rarity Farming featured three main leaderboards that any summoned Aavegotchi could participate in. All competing Aavegotchis were from the original Haunt 1 portals of which there were 10,000 total.", + svgId: 187, + canBeTransferred: false, + totalQuantity: 0, + minLevel: 0, + maxQuantity: 90, + setId: [], + author: "xibot", + dimensions: { x: 0, y: 0, width: 0, height: 0 }, + allowedCollaterals: [], + ghstPrice: 0, + traitModifiers: [0, 0, 0, 0, 0, 0], + slotPositions: "none", + category: 1, + experienceBonus: 0, + kinshipBonus: 0, + canPurchaseWithGhst: false, + }, + + { + name: "Rarity Farming SZN 1 finals 1st Place Rarity", + description: + "Scored across all four rounds, this Aavegotchi is the ultimate chaampion of rarity for Rarity Farming SZN 1. Aamazing! From April 20 to June 15, 2021, the first season of Rarity Farming featured three main leaderboards that any summoned Aavegotchi could participate in. All competing Aavegotchis were from the original Haunt 1 portals of which there were 10,000 total.", + svgId: 188, + canBeTransferred: false, + totalQuantity: 0, + minLevel: 0, + maxQuantity: 1, + setId: [], + author: "xibot", + dimensions: { x: 0, y: 0, width: 0, height: 0 }, + allowedCollaterals: [], + ghstPrice: 0, + traitModifiers: [0, 0, 0, 0, 0, 0], + slotPositions: "none", + category: 1, + experienceBonus: 0, + kinshipBonus: 0, + canPurchaseWithGhst: false, + }, + { + name: "Rarity Farming SZN 1 finals 1st Place Kinship", + description: + "Scored across all four rounds, this Aavegotchi is the ultimate chaampion of kinship for Rarity Farming SZN 1. Aamazing! From April 20 to June 15, 2021, the first season of Rarity Farming featured three main leaderboards that any summoned Aavegotchi could participate in. All competing Aavegotchis were from the original Haunt 1 portals of which there were 10,000 total.", + svgId: 189, + canBeTransferred: false, + totalQuantity: 0, + minLevel: 0, + maxQuantity: 1, + setId: [], + author: "xibot", + dimensions: { x: 0, y: 0, width: 0, height: 0 }, + allowedCollaterals: [], + ghstPrice: 0, + traitModifiers: [0, 0, 0, 0, 0, 0], + slotPositions: "none", + category: 1, + experienceBonus: 0, + kinshipBonus: 0, + canPurchaseWithGhst: false, + }, + { + name: "Rarity Farming SZN 1 finals 1st Place XP", + description: + "Scored across all four rounds, this Aavegotchi is the ultimate chaampion of experience for Rarity Farming SZN 1. Aamazing! From April 20 to June 15, 2021, the first season of Rarity Farming featured three main leaderboards that any summoned Aavegotchi could participate in. All competing Aavegotchis were from the original Haunt 1 portals of which there were 10,000 total.", + svgId: 190, + canBeTransferred: false, + totalQuantity: 0, + minLevel: 0, + maxQuantity: 1, + setId: [], + author: "xibot", + dimensions: { x: 0, y: 0, width: 0, height: 0 }, + allowedCollaterals: [], + ghstPrice: 0, + traitModifiers: [0, 0, 0, 0, 0, 0], + slotPositions: "none", + category: 1, + experienceBonus: 0, + kinshipBonus: 0, + canPurchaseWithGhst: false, + }, + + { + name: "Rarity Farming SZN 1 finals 2nd Place Rarity", + description: + "Scored across all four rounds, this Aavegotchi is the 2nd highest ranked of rarity for Rarity Farming SZN 1. Incredible! From April 20 to June 15, 2021, the first season of Rarity Farming featured three main leaderboards that any summoned Aavegotchi could participate in. All competing Aavegotchis were from the original Haunt 1 portals of which there were 10,000 total.", + svgId: 191, + canBeTransferred: false, + totalQuantity: 0, + minLevel: 0, + maxQuantity: 1, + setId: [], + author: "xibot", + dimensions: { x: 0, y: 0, width: 0, height: 0 }, + allowedCollaterals: [], + ghstPrice: 0, + traitModifiers: [0, 0, 0, 0, 0, 0], + slotPositions: "none", + category: 1, + experienceBonus: 0, + kinshipBonus: 0, + canPurchaseWithGhst: false, + }, + { + name: "Rarity Farming SZN 1 finals 2nd Place Kinship", + description: + "Scored across all four rounds, this Aavegotchi is the 2nd highest ranked of kinship for Rarity Farming SZN 1. Incredible! From April 20 to June 15, 2021, the first season of Rarity Farming featured three main leaderboards that any summoned Aavegotchi could participate in. All competing Aavegotchis were from the original Haunt 1 portals of which there were 10,000 total.", + svgId: 192, + canBeTransferred: false, + totalQuantity: 0, + minLevel: 0, + maxQuantity: 1, + setId: [], + author: "xibot", + dimensions: { x: 0, y: 0, width: 0, height: 0 }, + allowedCollaterals: [], + ghstPrice: 0, + traitModifiers: [0, 0, 0, 0, 0, 0], + slotPositions: "none", + category: 1, + experienceBonus: 0, + kinshipBonus: 0, + canPurchaseWithGhst: false, + }, + { + name: "Rarity Farming SZN 1 finals 2nd Place XP", + description: + "Scored across all four rounds, this Aavegotchi is the 2nd highest ranked of experience for Rarity Farming SZN 1. Incredible! From April 20 to June 15, 2021, the first season of Rarity Farming featured three main leaderboards that any summoned Aavegotchi could participate in. All competing Aavegotchis were from the original Haunt 1 portals of which there were 10,000 total.", + svgId: 193, + canBeTransferred: false, + totalQuantity: 0, + minLevel: 0, + maxQuantity: 1, + setId: [], + author: "xibot", + dimensions: { x: 0, y: 0, width: 0, height: 0 }, + allowedCollaterals: [], + ghstPrice: 0, + traitModifiers: [0, 0, 0, 0, 0, 0], + slotPositions: "none", + category: 1, + experienceBonus: 0, + kinshipBonus: 0, + canPurchaseWithGhst: false, + }, + + { + name: "Rarity Farming SZN 1 finals 3rd Place Rarity", + description: + "Scored across all four rounds, this Aavegotchi is the 3rd highest ranked of rarity for Rarity Farming SZN 1. Impressive! From April 20 to June 15, 2021, the first season of Rarity Farming featured three main leaderboards that any summoned Aavegotchi could participate in. All competing Aavegotchis were from the original Haunt 1 portals of which there were 10,000 total.", + svgId: 194, + canBeTransferred: false, + totalQuantity: 0, + minLevel: 0, + maxQuantity: 1, + setId: [], + author: "xibot", + dimensions: { x: 0, y: 0, width: 0, height: 0 }, + allowedCollaterals: [], + ghstPrice: 0, + traitModifiers: [0, 0, 0, 0, 0, 0], + slotPositions: "none", + category: 1, + experienceBonus: 0, + kinshipBonus: 0, + canPurchaseWithGhst: false, + }, + { + name: "Rarity Farming SZN 1 finals 3rd Place Kinship", + description: + "Scored across all four rounds, this Aavegotchi is the 3rd highest ranked of kinship for Rarity Farming SZN 1. Impressive! From April 20 to June 15, 2021, the first season of Rarity Farming featured three main leaderboards that any summoned Aavegotchi could participate in. All competing Aavegotchis were from the original Haunt 1 portals of which there were 10,000 total.", + svgId: 195, + canBeTransferred: false, + totalQuantity: 0, + minLevel: 0, + maxQuantity: 1, + setId: [], + author: "xibot", + dimensions: { x: 0, y: 0, width: 0, height: 0 }, + allowedCollaterals: [], + ghstPrice: 0, + traitModifiers: [0, 0, 0, 0, 0, 0], + slotPositions: "none", + category: 1, + experienceBonus: 0, + kinshipBonus: 0, + canPurchaseWithGhst: false, + }, + { + name: "Rarity Farming SZN 1 finals 3rd Place XP", + description: + "Scored across all four rounds, this Aavegotchi is the 3rd highest ranked of experience for Rarity Farming SZN 1. Impressive! From April 20 to June 15, 2021, the first season of Rarity Farming featured three main leaderboards that any summoned Aavegotchi could participate in. All competing Aavegotchis were from the original Haunt 1 portals of which there were 10,000 total.", + svgId: 196, + canBeTransferred: false, + totalQuantity: 0, + minLevel: 0, + maxQuantity: 1, + setId: [], + author: "xibot", + dimensions: { x: 0, y: 0, width: 0, height: 0 }, + allowedCollaterals: [], + ghstPrice: 0, + traitModifiers: [0, 0, 0, 0, 0, 0], + slotPositions: "none", + category: 1, + experienceBonus: 0, + kinshipBonus: 0, + canPurchaseWithGhst: false, + }, + + { + name: "Rarity Farming SZN 1 plaayer", + description: + "This Aavegotchi achieved leaderboard ranking in at least one category during the first ever season of Rarity Farming. Great job fren! From April 20 to June 15, 2021, the first season of Rarity Farming featured three main leaderboards that any summoned Aavegotchi could participate in. All competing Aavegotchis were from the original Haunt 1 portals of which there were 10,000 total.", + svgId: 197, + canBeTransferred: false, + totalQuantity: 0, + minLevel: 0, + maxQuantity: 6318, + setId: [], + author: "xibot", + dimensions: { x: 0, y: 0, width: 0, height: 0 }, + allowedCollaterals: [], + ghstPrice: 0, + traitModifiers: [0, 0, 0, 0, 0, 0], + slotPositions: "none", + category: 1, + experienceBonus: 0, + kinshipBonus: 0, + canPurchaseWithGhst: false, + }, + { + name: "consensus", + description: + "This frenly Aavegotchi was named C21 for good reason. It was summoned live during the Polygon bridging demo at Consensus 21 by Pixelcraft Studios co-founder Jesse aka gldnXross. This naturally sleepy gotchi is living the dream!", + svgId: 198, + canBeTransferred: false, + totalQuantity: 0, + minLevel: 0, + maxQuantity: 1, + setId: [], + author: "xibot", + dimensions: { x: 0, y: 0, width: 0, height: 0 }, + allowedCollaterals: [], + ghstPrice: 0, + traitModifiers: [0, 0, 0, 0, 0, 0], + slotPositions: "none", + category: 1, + experienceBonus: 0, + kinshipBonus: 0, + canPurchaseWithGhst: false, + }, { svgId: 199, - name: "Steampunk Goggles", + name: "Steampunk Glasses", + setId: [89], + author: "xibot", + description: "", + dimensions: { x: 15, y: 20, width: 34, height: 19 }, + allowedCollaterals: [], + minLevel: 1, + ghstPrice: 100, + maxQuantity: 250, + traitModifiers: [0, 0, 3, 0, 0, 0], + canPurchaseWithGhst: false, + slotPositions: "eyes", + category: 0, + canBeTransferred: true, + totalQuantity: 0, + experienceBonus: 0, + kinshipBonus: 0, + }, + { + svgId: 200, + name: "Steampunk Trousers", + setId: [89], + author: "xibot", + description: "", + dimensions: { x: 15, y: 41, width: 34, height: 14 }, + allowedCollaterals: [], + minLevel: 1, + ghstPrice: 10, + maxQuantity: 500, + traitModifiers: [0, 0, 2, 0, 0, 0], + canPurchaseWithGhst: false, + slotPositions: "body", + category: 0, + canBeTransferred: true, + totalQuantity: 0, + experienceBonus: 0, + kinshipBonus: 0, + }, + { + svgId: 201, + name: "Mechanical Claw", setId: [89], author: "xibot", description: "", - dimensions: { x: 15, y: 20, width: 34, height: 19 }, + dimensions: { x: 1, y: 33, width: 14, height: 11 }, + allowedCollaterals: [], + minLevel: 1, + ghstPrice: 300, + maxQuantity: 100, + traitModifiers: [0, 2, 2, 0, 0, 0], + canPurchaseWithGhst: false, + slotPositions: "hands", + category: 0, + canBeTransferred: true, + totalQuantity: 0, + experienceBonus: 0, + kinshipBonus: 0, + }, + { + svgId: 202, + name: "Cyberpunk VR", + setId: [88, 92], + author: "xibot", + description: "", + dimensions: { x: 14, y: 5, width: 36, height: 26 }, + allowedCollaterals: [], + minLevel: 1, + ghstPrice: 2000, + maxQuantity: 50, + traitModifiers: [2, 3, 0, 0, 0, 0], + canPurchaseWithGhst: false, + slotPositions: "eyes", + category: 0, + canBeTransferred: true, + totalQuantity: 0, + experienceBonus: 0, + kinshipBonus: 0, + }, + { + svgId: 203, + name: "Gamer Jacket", + setId: [88, 90], + author: "xibot", + description: "", + dimensions: { x: 12, y: 32, width: 34, height: 20 }, + allowedCollaterals: [], + minLevel: 1, + ghstPrice: 100, + maxQuantity: 250, + traitModifiers: [1, 2, 0, 0, 0, 0], + canPurchaseWithGhst: false, + slotPositions: "body", + category: 0, + canBeTransferred: true, + totalQuantity: 0, + experienceBonus: 0, + kinshipBonus: 0, + }, + { + svgId: 204, + name: "Game Controller", + setId: [88, 90], + author: "xibot", + description: "", + dimensions: { x: 0, y: 35, width: 16, height: 13 }, + allowedCollaterals: [], + minLevel: 1, + ghstPrice: 10, + maxQuantity: 500, + traitModifiers: [1, 1, 0, 0, 0, 0], + canPurchaseWithGhst: false, + slotPositions: "hands", + category: 0, + canBeTransferred: true, + totalQuantity: 0, + experienceBonus: 0, + kinshipBonus: 0, + }, + { + svgId: 205, + name: "Gotchi Mug", + setId: [], + author: "xibot", + description: "", + dimensions: { x: 1, y: 29, width: 13, height: 15 }, + allowedCollaterals: [], + minLevel: 1, + ghstPrice: 5, + maxQuantity: 1000, + traitModifiers: [1, 0, 0, 0, 0, 0], + canPurchaseWithGhst: false, + slotPositions: "hands", + category: 0, + canBeTransferred: true, + totalQuantity: 0, + experienceBonus: 0, + kinshipBonus: 0, + }, + + { + svgId: 206, + name: "Biker Helmet", + setId: [93], + author: "xibot", + description: "", + dimensions: { x: 12, y: 2, width: 40, height: 30 }, + allowedCollaterals: [], + minLevel: 1, + ghstPrice: 100, + maxQuantity: 250, + traitModifiers: [0, 2, 0, 1, 0, 0], + canPurchaseWithGhst: false, + slotPositions: "head", + category: 0, + canBeTransferred: true, + totalQuantity: 0, + experienceBonus: 0, + kinshipBonus: 0, + }, + { + svgId: 207, + name: "Biker Jacket", + setId: [93], + author: "xibot", + description: "", + dimensions: { x: 15, y: 33, width: 34, height: 20 }, + allowedCollaterals: [], + minLevel: 1, + ghstPrice: 10, + maxQuantity: 500, + traitModifiers: [0, 2, 0, 0, 0, 0], + canPurchaseWithGhst: false, + slotPositions: "body", + category: 0, + canBeTransferred: true, + totalQuantity: 0, + experienceBonus: 0, + kinshipBonus: 0, + }, + { + svgId: 208, + name: "Aviators", + setId: [93], + author: "xibot", + description: "", + dimensions: { x: 15, y: 21, width: 34, height: 11 }, + allowedCollaterals: [], + minLevel: 1, + ghstPrice: 10, + maxQuantity: 500, + traitModifiers: [0, 0, 2, 0, 0, 0], + canPurchaseWithGhst: false, + slotPositions: "eyes", + category: 0, + canBeTransferred: true, + totalQuantity: 0, + experienceBonus: 0, + kinshipBonus: 0, + }, + { + svgId: 209, + name: "Horseshoe Mustache", + setId: [93], + author: "xibot", + description: "", + dimensions: { x: 23, y: 32, width: 18, height: 9 }, + allowedCollaterals: [], + minLevel: 1, + ghstPrice: 300, + maxQuantity: 100, + traitModifiers: [-2, 0, 2, 0, 0, 0], + canPurchaseWithGhst: false, + slotPositions: "face", + category: 0, + canBeTransferred: true, + totalQuantity: 0, + experienceBonus: 0, + kinshipBonus: 0, + }, + + { + svgId: 210, + name: "H1 background", + setId: [], + author: "xibot", + description: "", + dimensions: { x: 0, y: 0, width: 64, height: 64 }, + allowedCollaterals: [], + minLevel: 1, + ghstPrice: 5, + maxQuantity: 10000, + traitModifiers: [1, 0, 0, 0, 0, 0], + canPurchaseWithGhst: false, + slotPositions: "background", + category: 0, + canBeTransferred: false, + totalQuantity: 0, + experienceBonus: 0, + kinshipBonus: 0, + }, + { + svgId: 211, + name: "Guy Fauwkes Mask", + setId: [94, 114], + author: "xibot", + description: "", + dimensions: { x: 15, y: 6, width: 34, height: 39 }, + allowedCollaterals: [], + minLevel: 1, + ghstPrice: 5, + maxQuantity: 1000, + traitModifiers: [0, 0, 1, 0, 0, 0], + canPurchaseWithGhst: false, + slotPositions: "head", + category: 0, + canBeTransferred: true, + totalQuantity: 0, + experienceBonus: 0, + kinshipBonus: 0, + }, + { + svgId: 212, + name: "1337 Laptop", + setId: [94, 95, 112, 114], + author: "xibot", + description: "", + dimensions: { x: 0, y: 30, width: 16, height: 14 }, + allowedCollaterals: [], + minLevel: 1, + ghstPrice: 3000, + maxQuantity: 50, + traitModifiers: [-2, 0, 0, 3, 0, 0], + canPurchaseWithGhst: false, + slotPositions: "hands", + category: 0, + canBeTransferred: true, + totalQuantity: 0, + experienceBonus: 0, + kinshipBonus: 0, + }, + { + svgId: 213, + name: "H4xx0r Shirt", + setId: [94, 95], + author: "xibot", + description: "", + dimensions: { x: 10, y: 31, width: 44, height: 22 }, + allowedCollaterals: [], + minLevel: 1, + ghstPrice: 300, + maxQuantity: 100, + traitModifiers: [-4, 0, 0, 0, 0, 0], + canPurchaseWithGhst: false, + slotPositions: "body", + category: 0, + canBeTransferred: true, + totalQuantity: 0, + experienceBonus: 0, + kinshipBonus: 0, + }, + { + svgId: 214, + name: "Matrix Eyes", + setId: [95], + author: "xibot", + description: "", + dimensions: { x: 20, y: 22, width: 24, height: 8 }, + allowedCollaterals: [], + minLevel: 1, + ghstPrice: 10000, + maxQuantity: 5, + traitModifiers: [-3, -3, 0, 0, 0, 0], + canPurchaseWithGhst: false, + slotPositions: "eyes", + category: 0, + canBeTransferred: true, + totalQuantity: 0, + experienceBonus: 0, + kinshipBonus: 0, + }, + { + svgId: 215, + name: "Cyborg Eye", + setId: [96], + author: "xibot", + description: "", + dimensions: { x: 32, y: 15, width: 17, height: 19 }, + allowedCollaterals: [], + minLevel: 1, + ghstPrice: 300, + maxQuantity: 100, + traitModifiers: [2, 2, 0, 0, 0, 0], + canPurchaseWithGhst: false, + slotPositions: "eyes", + category: 0, + canBeTransferred: true, + totalQuantity: 0, + experienceBonus: 0, + kinshipBonus: 0, + }, + { + svgId: 216, + name: "Rainbow Vomit", + setId: [96], + author: "xibot", + description: "", + dimensions: { x: 22, y: 32, width: 20, height: 23 }, + allowedCollaterals: [], + minLevel: 1, + ghstPrice: 3000, + maxQuantity: 50, + traitModifiers: [0, 0, -5, 0, 0, 0], + canPurchaseWithGhst: false, + slotPositions: "face", + category: 0, + canBeTransferred: true, + totalQuantity: 0, + experienceBonus: 0, + kinshipBonus: 0, + }, + { + svgId: 217, + name: "Cyborg Gun", + setId: [96], + author: "xibot", + description: "", + dimensions: { x: 2, y: 33, width: 13, height: 11 }, + allowedCollaterals: [], + minLevel: 1, + ghstPrice: 3000, + maxQuantity: 50, + traitModifiers: [2, 3, 0, 0, 0, 0], + canPurchaseWithGhst: false, + slotPositions: "hands", + category: 0, + canBeTransferred: true, + totalQuantity: 0, + experienceBonus: 0, + kinshipBonus: 0, + }, + { + svgId: 218, + name: "Mohawk", + setId: [97], + author: "xibot", + description: "", + dimensions: { x: 27, y: 0, width: 10, height: 22 }, + allowedCollaterals: [], + minLevel: 1, + ghstPrice: 10, + maxQuantity: 500, + traitModifiers: [1, 1, 0, 0, 0, 0], + canPurchaseWithGhst: false, + slotPositions: "head", + category: 0, + canBeTransferred: true, + totalQuantity: 0, + experienceBonus: 0, + kinshipBonus: 0, + }, + { + svgId: 219, + name: "Mutton Chops", + setId: [97], + author: "xibot", + description: "", + dimensions: { x: 15, y: 21, width: 34, height: 19 }, allowedCollaterals: [], minLevel: 1, ghstPrice: 100, maxQuantity: 250, - traitModifiers: [0, 0, 3, 0, 0, 0], + traitModifiers: [0, 0, 2, -1, 0, 0], canPurchaseWithGhst: false, - slotPositions: "eyes", + slotPositions: "face", category: 0, canBeTransferred: true, totalQuantity: 0, @@ -4029,17 +4929,57 @@ export const itemTypes: ItemTypeInput[] = [ kinshipBonus: 0, }, { - svgId: 200, - name: "Steampunk Trousers", - setId: [89], + svgId: 220, + name: "Punk Shirt", + setId: [97], + author: "xibot", + description: "", + dimensions: { x: 9, y: 32, width: 46, height: 21 }, + allowedCollaterals: [], + minLevel: 1, + ghstPrice: 300, + maxQuantity: 100, + traitModifiers: [1, 3, 0, 0, 0, 0], + canPurchaseWithGhst: false, + slotPositions: "body", + category: 0, + canBeTransferred: true, + totalQuantity: 0, + experienceBonus: 0, + kinshipBonus: 0, + }, + { + svgId: 221, + name: "Pirate Hat", + setId: [98], + author: "xibot", + description: "", + dimensions: { x: 7, y: 0, width: 50, height: 20 }, + allowedCollaterals: [], + minLevel: 1, + ghstPrice: 5, + maxQuantity: 1000, + traitModifiers: [0, 0, 0, -1, 0, 0], + canPurchaseWithGhst: false, + slotPositions: "head", + category: 0, + canBeTransferred: true, + totalQuantity: 0, + experienceBonus: 0, + kinshipBonus: 0, + }, + { + svgId: 222, + name: "Pirate Coat", + setId: [98], author: "xibot", description: "", - dimensions: { x: 15, y: 41, width: 34, height: 14 }, + dimensions: { x: 10, y: 31, width: 44, height: 24 }, allowedCollaterals: [], minLevel: 1, ghstPrice: 10, maxQuantity: 500, - traitModifiers: [0, 0, 2, 0, 0, 0], + traitModifiers: [0, 0, 1, -1, 0, 0], canPurchaseWithGhst: false, slotPositions: "body", category: 0, @@ -4049,17 +4989,17 @@ export const itemTypes: ItemTypeInput[] = [ kinshipBonus: 0, }, { - svgId: 201, - name: "Mechanical Claw", - setId: [89], + svgId: 223, + name: "Hook Hand", + setId: [98], author: "xibot", description: "", - dimensions: { x: 1, y: 33, width: 14, height: 11 }, + dimensions: { x: 1, y: 35, width: 9, height: 9 }, allowedCollaterals: [], minLevel: 1, - ghstPrice: 300, - maxQuantity: 100, - traitModifiers: [0, 2, 2, 0, 0, 0], + ghstPrice: 10, + maxQuantity: 500, + traitModifiers: [0, 0, 1, -1, 0, 0], canPurchaseWithGhst: false, slotPositions: "hands", category: 0, @@ -4069,17 +5009,17 @@ export const itemTypes: ItemTypeInput[] = [ kinshipBonus: 0, }, { - svgId: 202, - name: "VR Headset", - setId: [88, 92], + svgId: 224, + name: "Pirate Patch", + setId: [98], author: "xibot", description: "", - dimensions: { x: 14, y: 5, width: 36, height: 26 }, + dimensions: { x: 15, y: 21, width: 34, height: 10 }, allowedCollaterals: [], minLevel: 1, - ghstPrice: 2000, - maxQuantity: 50, - traitModifiers: [2, 3, 0, 0, 0, 0], + ghstPrice: 100, + maxQuantity: 250, + traitModifiers: [0, 0, 2, -1, 0, 0], canPurchaseWithGhst: false, slotPositions: "eyes", category: 0, @@ -4089,19 +5029,19 @@ export const itemTypes: ItemTypeInput[] = [ kinshipBonus: 0, }, { - svgId: 203, - name: "Gamer Jacket", - setId: [88, 90], + svgId: 225, + name: "Basketball", + setId: [99], author: "xibot", description: "", - dimensions: { x: 12, y: 32, width: 34, height: 20 }, + dimensions: { x: 1, y: 28, width: 13, height: 13 }, allowedCollaterals: [], minLevel: 1, - ghstPrice: 100, - maxQuantity: 250, - traitModifiers: [1, 2, 0, 0, 0, 0], + ghstPrice: 5, + maxQuantity: 1000, + traitModifiers: [1, 0, 0, 0, 0, 0], canPurchaseWithGhst: false, - slotPositions: "body", + slotPositions: "hands", category: 0, canBeTransferred: true, totalQuantity: 0, @@ -4109,19 +5049,19 @@ export const itemTypes: ItemTypeInput[] = [ kinshipBonus: 0, }, { - svgId: 204, - name: "Game Controller", - setId: [88, 90], + svgId: 226, + name: "Red Headband", + setId: [99], author: "xibot", description: "", - dimensions: { x: 0, y: 35, width: 16, height: 13 }, + dimensions: { x: 15, y: 14, width: 34, height: 6 }, allowedCollaterals: [], minLevel: 1, - ghstPrice: 10, - maxQuantity: 500, - traitModifiers: [1, 1, 0, 0, 0, 0], + ghstPrice: 100, + maxQuantity: 250, + traitModifiers: [2, -1, 0, 0, 0, 0], canPurchaseWithGhst: false, - slotPositions: "hands", + slotPositions: "head", category: 0, canBeTransferred: true, totalQuantity: 0, @@ -4129,38 +5069,37 @@ export const itemTypes: ItemTypeInput[] = [ kinshipBonus: 0, }, { - svgId: 205, - name: "Gotchi Mug", - setId: [], + svgId: 227, + name: "MJ Jersey", + setId: [99], author: "xibot", description: "", - dimensions: { x: 1, y: 29, width: 13, height: 15 }, + dimensions: { x: 15, y: 33, width: 34, height: 22 }, allowedCollaterals: [], minLevel: 1, - ghstPrice: 5, - maxQuantity: 1000, - traitModifiers: [1, 0, 0, 0, 0, 0], + ghstPrice: 100, + maxQuantity: 250, + traitModifiers: [1, -2, 0, 0, 0, 0], canPurchaseWithGhst: false, - slotPositions: "hands", + slotPositions: "body", category: 0, canBeTransferred: true, totalQuantity: 0, experienceBonus: 0, kinshipBonus: 0, }, - { - svgId: 206, - name: "Biker Helmet", - setId: [93], + svgId: 228, + name: "10 Gallon Hat", + setId: [100, 113], author: "xibot", description: "", - dimensions: { x: 12, y: 2, width: 40, height: 30 }, + dimensions: { x: 9, y: 3, width: 46, height: 18 }, allowedCollaterals: [], minLevel: 1, - ghstPrice: 100, - maxQuantity: 250, - traitModifiers: [0, 2, 0, 1, 0, 0], + ghstPrice: 5, + maxQuantity: 1000, + traitModifiers: [0, 0, 0, 1, 0, 0], canPurchaseWithGhst: false, slotPositions: "head", category: 0, @@ -4170,19 +5109,19 @@ export const itemTypes: ItemTypeInput[] = [ kinshipBonus: 0, }, { - svgId: 207, - name: "Biker Jacket", - setId: [93], + svgId: 229, + name: "Lasso", + setId: [100], author: "xibot", description: "", - dimensions: { x: 15, y: 33, width: 34, height: 20 }, + dimensions: { x: 2, y: 23, width: 12, height: 26 }, allowedCollaterals: [], minLevel: 1, ghstPrice: 10, maxQuantity: 500, - traitModifiers: [0, 2, 0, 0, 0, 0], + traitModifiers: [0, 1, 0, 1, 0, 0], canPurchaseWithGhst: false, - slotPositions: "body", + slotPositions: "hands", category: 0, canBeTransferred: true, totalQuantity: 0, @@ -4190,19 +5129,19 @@ export const itemTypes: ItemTypeInput[] = [ kinshipBonus: 0, }, { - svgId: 208, - name: "Aviators", - setId: [93], + svgId: 230, + name: "Wraangler Jeans", + setId: [100], author: "xibot", description: "", - dimensions: { x: 15, y: 21, width: 34, height: 11 }, + dimensions: { x: 15, y: 40, width: 34, height: 15 }, allowedCollaterals: [], minLevel: 1, - ghstPrice: 10, - maxQuantity: 500, - traitModifiers: [0, 0, 2, 0, 0, 0], + ghstPrice: 5, + maxQuantity: 1000, + traitModifiers: [0, 1, 0, 0, 0, 0], canPurchaseWithGhst: false, - slotPositions: "eyes", + slotPositions: "body", category: 0, canBeTransferred: true, totalQuantity: 0, @@ -4210,60 +5149,59 @@ export const itemTypes: ItemTypeInput[] = [ kinshipBonus: 0, }, { - svgId: 209, - name: "Horseshoe Mustache", - setId: [93], - author: "xibot", + svgId: 231, + name: "Comfy Poncho", + setId: [101, 102, 103, 104, 113], + author: "rod", description: "", - dimensions: { x: 23, y: 32, width: 18, height: 9 }, + dimensions: { x: 12, y: 31, width: 40, height: 24 }, allowedCollaterals: [], minLevel: 1, - ghstPrice: 300, - maxQuantity: 100, - traitModifiers: [-2, 0, 2, 0, 0, 0], + ghstPrice: 10, + maxQuantity: 500, + traitModifiers: [-2, 0, 0, 0, 0, 0], canPurchaseWithGhst: false, - slotPositions: "face", + slotPositions: "body", category: 0, canBeTransferred: true, totalQuantity: 0, experienceBonus: 0, kinshipBonus: 0, }, - { - svgId: 210, - name: "Haunt1 BG", - setId: [], - author: "xibot", + svgId: 232, + name: "Poncho Hoodie", + setId: [101, 102, 103, 104], + author: "rod", description: "", - dimensions: { x: 0, y: 0, width: 64, height: 64 }, + dimensions: { x: 12, y: 1, width: 40, height: 30 }, allowedCollaterals: [], minLevel: 1, ghstPrice: 5, - maxQuantity: 10000, - traitModifiers: [1, 0, 0, 0, 0, 0], + maxQuantity: 1000, + traitModifiers: [-1, 0, 0, 0, 0, 0], canPurchaseWithGhst: false, - slotPositions: "background", + slotPositions: "head", category: 0, - canBeTransferred: false, + canBeTransferred: true, totalQuantity: 0, experienceBonus: 0, kinshipBonus: 0, }, { - svgId: 211, - name: "Guy Fawkes Mask", - setId: [94, 114], + svgId: 233, + name: "Uncommon Cacti", + setId: [101, 105], author: "xibot", description: "", - dimensions: { x: 15, y: 6, width: 34, height: 39 }, + dimensions: { x: 40, y: 45, width: 23, height: 17 }, allowedCollaterals: [], minLevel: 1, - ghstPrice: 5, - maxQuantity: 1000, - traitModifiers: [0, 0, 1, 0, 0, 0], + ghstPrice: 10, + maxQuantity: 500, + traitModifiers: [0, 0, -1, 1, 0, 0], canPurchaseWithGhst: false, - slotPositions: "head", + slotPositions: "pet", category: 0, canBeTransferred: true, totalQuantity: 0, @@ -4271,19 +5209,19 @@ export const itemTypes: ItemTypeInput[] = [ kinshipBonus: 0, }, { - svgId: 212, - name: "1337 Laptop", - setId: [94, 95, 112, 114], + svgId: 234, + name: "Shaaman Poncho", + setId: [105, 106, 107, 108, 111], author: "xibot", description: "", - dimensions: { x: 0, y: 30, width: 16, height: 14 }, + dimensions: { x: 12, y: 31, width: 40, height: 24 }, allowedCollaterals: [], minLevel: 1, ghstPrice: 3000, maxQuantity: 50, - traitModifiers: [-2, 0, 0, 3, 0, 0], + traitModifiers: [-5, 0, 0, 0, 0, 0], canPurchaseWithGhst: false, - slotPositions: "hands", + slotPositions: "body", category: 0, canBeTransferred: true, totalQuantity: 0, @@ -4291,19 +5229,19 @@ export const itemTypes: ItemTypeInput[] = [ kinshipBonus: 0, }, { - svgId: 213, - name: "H4xx0r Shirt", - setId: [94, 95], + svgId: 235, + name: "Shaaman Hoodie", + setId: [105, 106, 107, 108, 111], author: "xibot", description: "", - dimensions: { x: 10, y: 31, width: 44, height: 22 }, + dimensions: { x: 12, y: 1, width: 40, height: 30 }, allowedCollaterals: [], minLevel: 1, ghstPrice: 300, maxQuantity: 100, traitModifiers: [-4, 0, 0, 0, 0, 0], canPurchaseWithGhst: false, - slotPositions: "body", + slotPositions: "head", category: 0, canBeTransferred: true, totalQuantity: 0, @@ -4311,19 +5249,19 @@ export const itemTypes: ItemTypeInput[] = [ kinshipBonus: 0, }, { - svgId: 214, - name: "Matrix Eyes", - setId: [95], + svgId: 236, + name: "Blue Cacti", + setId: [102, 106], author: "xibot", description: "", - dimensions: { x: 20, y: 22, width: 24, height: 8 }, + dimensions: { x: 40, y: 45, width: 23, height: 17 }, allowedCollaterals: [], minLevel: 1, - ghstPrice: 10000, - maxQuantity: 5, - traitModifiers: [-3, -3, 0, 0, 0, 0], + ghstPrice: 100, + maxQuantity: 250, + traitModifiers: [0, 0, -1, 2, 0, 0], canPurchaseWithGhst: false, - slotPositions: "eyes", + slotPositions: "pet", category: 0, canBeTransferred: true, totalQuantity: 0, @@ -4331,19 +5269,19 @@ export const itemTypes: ItemTypeInput[] = [ kinshipBonus: 0, }, { - svgId: 215, - name: "Cyborg Eye", - setId: [96], + svgId: 237, + name: "Mythical Cacti", + setId: [103, 107], author: "xibot", description: "", - dimensions: { x: 32, y: 15, width: 17, height: 19 }, + dimensions: { x: 1, y: 48, width: 62, height: 14 }, allowedCollaterals: [], minLevel: 1, - ghstPrice: 300, - maxQuantity: 100, - traitModifiers: [2, 2, 0, 0, 0, 0], + ghstPrice: 3000, + maxQuantity: 50, + traitModifiers: [0, 0, -2, 3, 0, 0], canPurchaseWithGhst: false, - slotPositions: "eyes", + slotPositions: "pet", category: 0, canBeTransferred: true, totalQuantity: 0, @@ -4351,19 +5289,19 @@ export const itemTypes: ItemTypeInput[] = [ kinshipBonus: 0, }, { - svgId: 216, - name: "Rainbow Vomit", - setId: [96], + svgId: 238, + name: "Godlike Cacti", + setId: [104, 108, 111], author: "xibot", description: "", - dimensions: { x: 22, y: 32, width: 20, height: 23 }, + dimensions: { x: 1, y: 48, width: 62, height: 14 }, allowedCollaterals: [], minLevel: 1, - ghstPrice: 3000, - maxQuantity: 50, - traitModifiers: [0, 0, -5, 0, 0, 0], + ghstPrice: 10000, + maxQuantity: 5, + traitModifiers: [0, 0, -3, 3, 0, 0], canPurchaseWithGhst: false, - slotPositions: "face", + slotPositions: "pet", category: 0, canBeTransferred: true, totalQuantity: 0, @@ -4371,19 +5309,19 @@ export const itemTypes: ItemTypeInput[] = [ kinshipBonus: 0, }, { - svgId: 217, - name: "Energy Gun", - setId: [96], + svgId: 239, + name: "Wagie Cap", + setId: [109], author: "xibot", description: "", - dimensions: { x: 2, y: 33, width: 13, height: 11 }, + dimensions: { x: 15, y: 4, width: 34, height: 19 }, allowedCollaterals: [], - minLevel: 1, - ghstPrice: 3000, - maxQuantity: 50, - traitModifiers: [2, 3, 0, 0, 0, 0], + minLevel: 1, + ghstPrice: 10, + maxQuantity: 500, + traitModifiers: [0, -2, 0, 0, 0, 0], canPurchaseWithGhst: false, - slotPositions: "hands", + slotPositions: "head", category: 0, canBeTransferred: true, totalQuantity: 0, @@ -4391,19 +5329,19 @@ export const itemTypes: ItemTypeInput[] = [ kinshipBonus: 0, }, { - svgId: 218, - name: "Mohawk", - setId: [97], + svgId: 240, + name: "Headphones", + setId: [109], author: "xibot", description: "", - dimensions: { x: 27, y: 0, width: 10, height: 22 }, + dimensions: { x: 11, y: 2, width: 42, height: 29 }, allowedCollaterals: [], minLevel: 1, ghstPrice: 10, maxQuantity: 500, - traitModifiers: [1, 1, 0, 0, 0, 0], + traitModifiers: [0, -2, 0, 0, 0, 0], canPurchaseWithGhst: false, - slotPositions: "head", + slotPositions: "face", category: 0, canBeTransferred: true, totalQuantity: 0, @@ -4411,19 +5349,19 @@ export const itemTypes: ItemTypeInput[] = [ kinshipBonus: 0, }, { - svgId: 219, - name: "Mutton Chops", - setId: [97], + svgId: 241, + name: "WGMI Shirt", + setId: [109], author: "xibot", description: "", - dimensions: { x: 15, y: 21, width: 34, height: 19 }, + dimensions: { x: 12, y: 32, width: 40, height: 21 }, allowedCollaterals: [], minLevel: 1, ghstPrice: 100, maxQuantity: 250, - traitModifiers: [0, 0, 2, -1, 0, 0], + traitModifiers: [0, -3, 0, 0, 0, 0], canPurchaseWithGhst: false, - slotPositions: "face", + slotPositions: "body", category: 0, canBeTransferred: true, totalQuantity: 0, @@ -4431,19 +5369,19 @@ export const itemTypes: ItemTypeInput[] = [ kinshipBonus: 0, }, { - svgId: 220, - name: "Punk Shirt", - setId: [97], - author: "xibot", + svgId: 242, + name: "Yellow Manbun", + setId: [110, 112], + author: "esveebee", description: "", - dimensions: { x: 9, y: 32, width: 46, height: 21 }, + dimensions: { x: 15, y: 0, width: 34, height: 22 }, allowedCollaterals: [], minLevel: 1, ghstPrice: 300, maxQuantity: 100, - traitModifiers: [1, 3, 0, 0, 0, 0], + traitModifiers: [-2, -2, 0, 0, 0, 0], canPurchaseWithGhst: false, - slotPositions: "body", + slotPositions: "head", category: 0, canBeTransferred: true, totalQuantity: 0, @@ -4451,19 +5389,19 @@ export const itemTypes: ItemTypeInput[] = [ kinshipBonus: 0, }, { - svgId: 221, - name: "Pirate Hat", - setId: [98], - author: "xibot", + svgId: 243, + name: "Tinted Shades", + setId: [110, 112], + author: "esveebee", description: "", - dimensions: { x: 7, y: 0, width: 50, height: 20 }, + dimensions: { x: 15, y: 22, width: 34, height: 9 }, allowedCollaterals: [], minLevel: 1, - ghstPrice: 5, - maxQuantity: 1000, - traitModifiers: [0, 0, 0, -1, 0, 0], + ghstPrice: 100, + maxQuantity: 250, + traitModifiers: [0, -3, 0, 0, 0, 0], canPurchaseWithGhst: false, - slotPositions: "head", + slotPositions: "eyes", category: 0, canBeTransferred: true, totalQuantity: 0, @@ -4471,17 +5409,17 @@ export const itemTypes: ItemTypeInput[] = [ kinshipBonus: 0, }, { - svgId: 222, - name: "Pirate Coat", - setId: [98], - author: "xibot", + svgId: 244, + name: "VNeck Shirt", + setId: [110, 112], + author: "esveebee", description: "", - dimensions: { x: 10, y: 31, width: 44, height: 24 }, + dimensions: { x: 12, y: 32, width: 40, height: 23 }, allowedCollaterals: [], minLevel: 1, - ghstPrice: 10, - maxQuantity: 500, - traitModifiers: [0, 0, 1, -1, 0, 0], + ghstPrice: 100, + maxQuantity: 250, + traitModifiers: [0, -3, 0, 0, 0, 0], canPurchaseWithGhst: false, slotPositions: "body", category: 0, @@ -4491,19 +5429,19 @@ export const itemTypes: ItemTypeInput[] = [ kinshipBonus: 0, }, { - svgId: 223, - name: "Hook Hand", - setId: [98], + svgId: 245, + name: "Gecko Hat", + setId: [117], author: "xibot", description: "", - dimensions: { x: 1, y: 35, width: 9, height: 9 }, + dimensions: { x: 15, y: 3, width: 34, height: 27 }, allowedCollaterals: [], minLevel: 1, - ghstPrice: 10, - maxQuantity: 500, - traitModifiers: [0, 0, 1, -1, 0, 0], + ghstPrice: "", + maxQuantity: 250, + traitModifiers: [0, 0, -3, 0, 0, 0], canPurchaseWithGhst: false, - slotPositions: "hands", + slotPositions: "eyes", category: 0, canBeTransferred: true, totalQuantity: 0, @@ -4511,17 +5449,17 @@ export const itemTypes: ItemTypeInput[] = [ kinshipBonus: 0, }, { - svgId: 224, - name: "Pirate Patch", - setId: [98], + svgId: 246, + name: "APY Shades", + setId: [122], author: "xibot", description: "", - dimensions: { x: 15, y: 21, width: 34, height: 10 }, + dimensions: { x: 15, y: 20, width: 34, height: 12 }, allowedCollaterals: [], minLevel: 1, - ghstPrice: 100, - maxQuantity: 250, - traitModifiers: [0, 0, 2, -1, 0, 0], + ghstPrice: "", + maxQuantity: 500, + traitModifiers: [1, 0, 0, 1, 0, 0], canPurchaseWithGhst: false, slotPositions: "eyes", category: 0, @@ -4531,17 +5469,17 @@ export const itemTypes: ItemTypeInput[] = [ kinshipBonus: 0, }, { - svgId: 225, - name: "Basketball", - setId: [99], + svgId: 247, + name: "Up Arrow", + setId: [122], author: "xibot", description: "", - dimensions: { x: 1, y: 28, width: 13, height: 13 }, + dimensions: { x: 0, y: 24, width: 16, height: 26 }, allowedCollaterals: [], minLevel: 1, - ghstPrice: 5, - maxQuantity: 1000, - traitModifiers: [1, 0, 0, 0, 0, 0], + ghstPrice: "", + maxQuantity: 500, + traitModifiers: [1, 0, 0, 1, 0, 0], canPurchaseWithGhst: false, slotPositions: "hands", category: 0, @@ -4551,19 +5489,19 @@ export const itemTypes: ItemTypeInput[] = [ kinshipBonus: 0, }, { - svgId: 226, - name: "Red Headband", - setId: [99], + svgId: 248, + name: "Up Only Shirt", + setId: [122], author: "xibot", description: "", - dimensions: { x: 15, y: 14, width: 34, height: 6 }, + dimensions: { x: 12, y: 32, width: 40, height: 21 }, allowedCollaterals: [], minLevel: 1, - ghstPrice: 100, - maxQuantity: 250, - traitModifiers: [2, -1, 0, 0, 0, 0], + ghstPrice: "", + maxQuantity: 500, + traitModifiers: [1, 0, 0, 1, 0, 0], canPurchaseWithGhst: false, - slotPositions: "head", + slotPositions: "body", category: 0, canBeTransferred: true, totalQuantity: 0, @@ -4571,19 +5509,19 @@ export const itemTypes: ItemTypeInput[] = [ kinshipBonus: 0, }, { - svgId: 227, - name: "23 Jersey", - setId: [99], + svgId: 249, + name: "CoinGecko Eyes", + setId: [116, 117], author: "xibot", description: "", - dimensions: { x: 15, y: 33, width: 34, height: 22 }, + dimensions: { x: 19, y: 20, width: 26, height: 12 }, allowedCollaterals: [], minLevel: 1, - ghstPrice: 100, + ghstPrice: "", maxQuantity: 250, - traitModifiers: [1, -2, 0, 0, 0, 0], + traitModifiers: [0, 0, -2, -1, 0, 0], canPurchaseWithGhst: false, - slotPositions: "body", + slotPositions: "eyes", category: 0, canBeTransferred: true, totalQuantity: 0, @@ -4591,19 +5529,19 @@ export const itemTypes: ItemTypeInput[] = [ kinshipBonus: 0, }, { - svgId: 228, - name: "10 Gallon Hat", - setId: [100, 113], + svgId: 250, + name: "CoinGecko Tee", + setId: [116, 117], author: "xibot", description: "", - dimensions: { x: 9, y: 3, width: 46, height: 18 }, + dimensions: { x: 12, y: 32, width: 40, height: 21 }, allowedCollaterals: [], minLevel: 1, - ghstPrice: 5, - maxQuantity: 1000, - traitModifiers: [0, 0, 0, 1, 0, 0], + ghstPrice: "", + maxQuantity: 250, + traitModifiers: [0, 0, -2, -1, 0, 0], canPurchaseWithGhst: false, - slotPositions: "head", + slotPositions: "body", category: 0, canBeTransferred: true, totalQuantity: 0, @@ -4611,17 +5549,17 @@ export const itemTypes: ItemTypeInput[] = [ kinshipBonus: 0, }, { - svgId: 229, - name: "Lasso", - setId: [100], + svgId: 251, + name: "CoinGecko Candies", + setId: [116, 117], author: "xibot", description: "", - dimensions: { x: 2, y: 23, width: 12, height: 26 }, + dimensions: { x: 1, y: 25, width: 14, height: 20 }, allowedCollaterals: [], minLevel: 1, - ghstPrice: 10, - maxQuantity: 500, - traitModifiers: [0, 1, 0, 1, 0, 0], + ghstPrice: "", + maxQuantity: 250, + traitModifiers: [0, 0, -1, -2, 0, 0], canPurchaseWithGhst: false, slotPositions: "hands", category: 0, @@ -4631,19 +5569,19 @@ export const itemTypes: ItemTypeInput[] = [ kinshipBonus: 0, }, { - svgId: 230, - name: "Wraangler Jeans", - setId: [100], + svgId: 252, + name: "Aastronaut Helmet", + setId: [115], author: "xibot", description: "", - dimensions: { x: 15, y: 40, width: 34, height: 15 }, + dimensions: { x: 12, y: 5, width: 40, height: 35 }, allowedCollaterals: [], minLevel: 1, - ghstPrice: 5, + ghstPrice: "", maxQuantity: 1000, - traitModifiers: [0, 1, 0, 0, 0, 0], + traitModifiers: [0, 0, 1, 0, 0, 0], canPurchaseWithGhst: false, - slotPositions: "body", + slotPositions: "head", category: 0, canBeTransferred: true, totalQuantity: 0, @@ -4651,17 +5589,17 @@ export const itemTypes: ItemTypeInput[] = [ kinshipBonus: 0, }, { - svgId: 231, - name: "Comfy Poncho", - setId: [101, 102, 103, 104, 113], - author: "rod", + svgId: 253, + name: "Aastronaut Suit", + setId: [115], + author: "xibot", description: "", - dimensions: { x: 12, y: 31, width: 40, height: 24 }, + dimensions: { x: 7, y: 31, width: 50, height: 24 }, allowedCollaterals: [], minLevel: 1, - ghstPrice: 10, - maxQuantity: 500, - traitModifiers: [-2, 0, 0, 0, 0, 0], + ghstPrice: "", + maxQuantity: 1000, + traitModifiers: [0, 0, 1, 0, 0, 0], canPurchaseWithGhst: false, slotPositions: "body", category: 0, @@ -4671,17 +5609,37 @@ export const itemTypes: ItemTypeInput[] = [ kinshipBonus: 0, }, { - svgId: 232, - name: "Poncho Hoodie", - setId: [101, 102, 103, 104], - author: "rod", + svgId: 254, + name: "uGOTCHI Token", + setId: [115], + author: "xibot", description: "", - dimensions: { x: 12, y: 1, width: 40, height: 30 }, + dimensions: { x: 0, y: 34, width: 12, height: 12 }, allowedCollaterals: [], minLevel: 1, - ghstPrice: 5, + ghstPrice: "", maxQuantity: 1000, - traitModifiers: [-1, 0, 0, 0, 0, 0], + traitModifiers: [0, 0, 1, 0, 0, 0], + canPurchaseWithGhst: false, + slotPositions: "hands", + category: 0, + canBeTransferred: true, + totalQuantity: 0, + experienceBonus: 0, + kinshipBonus: 0, + }, + { + svgId: 255, + name: "Lil Bubble Helmet", + setId: [118], + author: "xibot", + description: "", + dimensions: { x: 14, y: 5, width: 36, height: 35 }, + allowedCollaterals: [], + minLevel: 1, + ghstPrice: "", + maxQuantity: 100, + traitModifiers: [2, -2, 0, 0, 0, 0], canPurchaseWithGhst: false, slotPositions: "head", category: 0, @@ -4691,19 +5649,19 @@ export const itemTypes: ItemTypeInput[] = [ kinshipBonus: 0, }, { - svgId: 233, - name: "Uncommon Cacti", - setId: [101, 105], + svgId: 256, + name: "Lil Bubble Space Suit", + setId: [118], author: "xibot", description: "", - dimensions: { x: 40, y: 45, width: 23, height: 17 }, + dimensions: { x: 7, y: 31, width: 50, height: 24 }, allowedCollaterals: [], minLevel: 1, - ghstPrice: 10, - maxQuantity: 500, - traitModifiers: [0, 0, -1, 1, 0, 0], + ghstPrice: "", + maxQuantity: 100, + traitModifiers: [2, -2, 0, 0, 0, 0], canPurchaseWithGhst: false, - slotPositions: "pet", + slotPositions: "body", category: 0, canBeTransferred: true, totalQuantity: 0, @@ -4711,19 +5669,19 @@ export const itemTypes: ItemTypeInput[] = [ kinshipBonus: 0, }, { - svgId: 234, - name: "Shaaman Poncho", - setId: [105, 106, 107, 108, 111], + svgId: 257, + name: "Bitcoin Guitar", + setId: [118], author: "xibot", description: "", - dimensions: { x: 12, y: 31, width: 40, height: 24 }, + dimensions: { x: 0, y: 17, width: 15, height: 38 }, allowedCollaterals: [], minLevel: 1, - ghstPrice: 3000, - maxQuantity: 50, - traitModifiers: [-5, 0, 0, 0, 0, 0], + ghstPrice: "", + maxQuantity: 100, + traitModifiers: [4, 0, 0, 0, 0, 0], canPurchaseWithGhst: false, - slotPositions: "body", + slotPositions: "hands", category: 0, canBeTransferred: true, totalQuantity: 0, @@ -4731,19 +5689,19 @@ export const itemTypes: ItemTypeInput[] = [ kinshipBonus: 0, }, { - svgId: 235, - name: "Shaaman Hoodie", - setId: [105, 106, 107, 108, 111], + svgId: 258, + name: "Hanfu", + setId: [120, 121], author: "xibot", description: "", - dimensions: { x: 12, y: 1, width: 40, height: 30 }, + dimensions: { x: 10, y: 31, width: 44, height: 25 }, allowedCollaterals: [], minLevel: 1, - ghstPrice: 300, - maxQuantity: 100, - traitModifiers: [-4, 0, 0, 0, 0, 0], + ghstPrice: "", + maxQuantity: 5, + traitModifiers: [-3, 0, 0, 3, 0, 0], canPurchaseWithGhst: false, - slotPositions: "head", + slotPositions: "body", category: 0, canBeTransferred: true, totalQuantity: 0, @@ -4751,19 +5709,19 @@ export const itemTypes: ItemTypeInput[] = [ kinshipBonus: 0, }, { - svgId: 236, - name: "Rare Cacti", - setId: [102, 106], + svgId: 259, + name: "Bushy Eyebrows", + setId: [120, 121], author: "xibot", description: "", - dimensions: { x: 40, y: 45, width: 23, height: 17 }, + dimensions: { x: 16, y: 18, width: 32, height: 9 }, allowedCollaterals: [], minLevel: 1, - ghstPrice: 100, - maxQuantity: 250, - traitModifiers: [0, 0, -1, 2, 0, 0], + ghstPrice: "", + maxQuantity: 5, + traitModifiers: [-3, 0, 0, 3, 0, 0], canPurchaseWithGhst: false, - slotPositions: "pet", + slotPositions: "eyes", category: 0, canBeTransferred: true, totalQuantity: 0, @@ -4771,19 +5729,19 @@ export const itemTypes: ItemTypeInput[] = [ kinshipBonus: 0, }, { - svgId: 237, - name: "Mythical Cacti", - setId: [103, 107], + svgId: 260, + name: "Ancient Beard", + setId: [120, 121], author: "xibot", description: "", - dimensions: { x: 1, y: 48, width: 62, height: 14 }, + dimensions: { x: 25, y: 32, width: 14, height: 14 }, allowedCollaterals: [], minLevel: 1, - ghstPrice: 3000, - maxQuantity: 50, - traitModifiers: [0, 0, -2, 3, 0, 0], + ghstPrice: "", + maxQuantity: 5, + traitModifiers: [-2, 0, 0, 4, 0, 0], canPurchaseWithGhst: false, - slotPositions: "pet", + slotPositions: "face", category: 0, canBeTransferred: true, totalQuantity: 0, @@ -4791,17 +5749,17 @@ export const itemTypes: ItemTypeInput[] = [ kinshipBonus: 0, }, { - svgId: 238, - name: "Godlike Cacti", - setId: [104, 108, 111], + svgId: 261, + name: "Aantena Bot", + setId: [119], author: "xibot", description: "", - dimensions: { x: 1, y: 48, width: 62, height: 14 }, + dimensions: { x: 44, y: 33, width: 17, height: 26 }, allowedCollaterals: [], minLevel: 1, - ghstPrice: 10000, - maxQuantity: 5, - traitModifiers: [0, 0, -3, 3, 0, 0], + ghstPrice: "", + maxQuantity: 50, + traitModifiers: [0, -2, 0, 3, 0, 0], canPurchaseWithGhst: false, slotPositions: "pet", category: 0, @@ -4811,19 +5769,19 @@ export const itemTypes: ItemTypeInput[] = [ kinshipBonus: 0, }, { - svgId: 239, - name: "Wagie Cap", - setId: [109], + svgId: 262, + name: "Radar Eyes", + setId: [119], author: "xibot", description: "", - dimensions: { x: 15, y: 4, width: 34, height: 19 }, + dimensions: { x: 19, y: 20, width: 26, height: 12 }, allowedCollaterals: [], minLevel: 1, - ghstPrice: 10, - maxQuantity: 500, - traitModifiers: [0, -2, 0, 0, 0, 0], + ghstPrice: "", + maxQuantity: 50, + traitModifiers: [0, -2, 0, 3, 0, 0], canPurchaseWithGhst: false, - slotPositions: "head", + slotPositions: "eyes", category: 0, canBeTransferred: true, totalQuantity: 0, @@ -4831,17 +5789,17 @@ export const itemTypes: ItemTypeInput[] = [ kinshipBonus: 0, }, { - svgId: 240, - name: "Headphones", - setId: [109], + svgId: 263, + name: "Signal Headset", + setId: [119], author: "xibot", description: "", - dimensions: { x: 11, y: 2, width: 42, height: 29 }, + dimensions: { x: 11, y: 6, width: 42, height: 25 }, allowedCollaterals: [], minLevel: 1, - ghstPrice: 10, - maxQuantity: 500, - traitModifiers: [0, -2, 0, 0, 0, 0], + ghstPrice: "", + maxQuantity: 50, + traitModifiers: [0, -2, 0, 3, 0, 0], canPurchaseWithGhst: false, slotPositions: "face", category: 0, @@ -4851,464 +5809,620 @@ export const itemTypes: ItemTypeInput[] = [ kinshipBonus: 0, }, { - svgId: 241, - name: "WGMI Shirt", - setId: [109], + svgId: 264, + name: "Aastronaut Crew Member", + setId: [], author: "xibot", - description: "", - dimensions: { x: 12, y: 32, width: 40, height: 21 }, + description: + 'This baadge signifies that this is one of the original five Aavegotchis to be bridged from Polygon to Ethereum. Dubbed the "Aastronauts" these pioneering gotchis were fractionalized on the Unicly platform in the form of uGOTCHI tokens. In October of 2021 the uGOTCHI collection was unlocked and all five Aastronauts were auctioned to new owners.', + dimensions: { x: 0, y: 0, width: 0, height: 0 }, allowedCollaterals: [], - minLevel: 1, - ghstPrice: 100, - maxQuantity: 250, - traitModifiers: [0, -3, 0, 0, 0, 0], + minLevel: 0, + ghstPrice: 0, + rarityLevel: "godlike", + maxQuantity: 5, + traitModifiers: [0, 0, 0, 0, 0, 0], canPurchaseWithGhst: false, - slotPositions: "body", - category: 0, - canBeTransferred: true, + slotPositions: "none", + category: 1, + canBeTransferred: false, + totalQuantity: 5, + experienceBonus: 0, + kinshipBonus: 0, + }, + { + name: "Rarity Farming SZN2 1st Place Rarity", //0 + description: + "Scored across all four rounds, this Aavegotchi is the ultimate chaampion of rarity for Rarity Farming SZN 2. Aamazing! From October 12 to Dec 7, 2021, the second season of Rarity Farming distributed a staggering 2 million GHST. The frenly competition featured three main leaderboards that any summoned Aavegotchi could participate in plus two additional Rookie Leaderboards for Haunt 2 Aavegotchis.", + svgId: 265, + minLevel: 0, + canBeTransferred: false, + rarityLevel: "godlike", + maxQuantity: 1, totalQuantity: 0, + setId: [], + author: "xibot", + dimensions: { x: 0, y: 0, width: 0, height: 0 }, + allowedCollaterals: [], + ghstPrice: 0, + traitModifiers: [0, 0, 0, 0, 0, 0], + slotPositions: "none", + category: 1, experienceBonus: 0, kinshipBonus: 0, + canPurchaseWithGhst: false, }, { - svgId: 242, - name: "Maan Bun", - setId: [110, 112], - author: "esveebee", - description: "", - dimensions: { x: 15, y: 0, width: 34, height: 22 }, + name: "Rarity Farming SZN2 1st Place Kinship", //1 + description: + "Scored across all four rounds, this Aavegotchi is the ultimate chaampion of kinship for Rarity Farming SZN 2. Aamazing! From October 12 to Dec 7, 2021, the second season of Rarity Farming distributed a staggering 2 million GHST. The frenly competition featured three main leaderboards that any summoned Aavegotchi could participate in plus two additional Rookie Leaderboards for Haunt 2 Aavegotchis.", + svgId: 266, + minLevel: 0, + canBeTransferred: false, + rarityLevel: "godlike", + maxQuantity: 1, + totalQuantity: 0, + setId: [], + author: "xibot", + dimensions: { x: 0, y: 0, width: 0, height: 0 }, allowedCollaterals: [], - minLevel: 1, - ghstPrice: 300, - maxQuantity: 100, - traitModifiers: [-2, -2, 0, 0, 0, 0], + ghstPrice: 0, + traitModifiers: [0, 0, 0, 0, 0, 0], + slotPositions: "none", + category: 1, + experienceBonus: 0, + kinshipBonus: 0, canPurchaseWithGhst: false, - slotPositions: "head", - category: 0, - canBeTransferred: true, + }, + { + name: "Rarity Farming SZN2 1st Place XP", //2 + description: + "Scored across all four rounds, this Aavegotchi is the ultimate chaampion of XP for Rarity Farming SZN 2. Aamazing! From October 12 to Dec 7, 2021, the second season of Rarity Farming distributed a staggering 2 million GHST. The frenly competition featured three main leaderboards that any summoned Aavegotchi could participate in plus two additional Rookie Leaderboards for Haunt 2 Aavegotchis.", + svgId: 267, + minLevel: 0, + canBeTransferred: false, + rarityLevel: "godlike", + maxQuantity: 1, totalQuantity: 0, + setId: [], + author: "xibot", + dimensions: { x: 0, y: 0, width: 0, height: 0 }, + allowedCollaterals: [], + ghstPrice: 0, + traitModifiers: [0, 0, 0, 0, 0, 0], + slotPositions: "none", + category: 1, experienceBonus: 0, kinshipBonus: 0, + canPurchaseWithGhst: false, }, { - svgId: 243, - name: "Tinted Shades", - setId: [110, 112], - author: "esveebee", - description: "", - dimensions: { x: 15, y: 22, width: 34, height: 9 }, + name: "Rarity Farming SZN2 Rarity 2nd Place", //3 + description: + "Scored across all four rounds, this Aavegotchi is the 2nd highest ranked of all gotchis in the rarity category for Rarity Farming SZN 2. Incredible! From October 12 to Dec 7, 2021, the second season of Rarity Farming distributed a staggering 2 million GHST. The frenly competition featured three main leaderboards that any summoned Aavegotchi could participate in plus two additional Rookie Leaderboards for Haunt 2 Aavegotchis.", + svgId: 268, + minLevel: 0, + canBeTransferred: false, + rarityLevel: "godlike", + maxQuantity: 1, + totalQuantity: 0, + setId: [], + author: "xibot", + dimensions: { x: 0, y: 0, width: 0, height: 0 }, allowedCollaterals: [], - minLevel: 1, - ghstPrice: 100, - maxQuantity: 250, - traitModifiers: [0, -3, 0, 0, 0, 0], + ghstPrice: 0, + traitModifiers: [0, 0, 0, 0, 0, 0], + slotPositions: "none", + category: 1, + experienceBonus: 0, + kinshipBonus: 0, canPurchaseWithGhst: false, - slotPositions: "eyes", - category: 0, - canBeTransferred: true, + }, + { + name: "Rarity Farming SZN2 Kinship 2nd Place", //4 + description: + "Scored across all four rounds, this Aavegotchi is the 2nd highest ranked of all gotchis in the kinship category for Rarity Farming SZN 2. Incredible! From October 12 to Dec 7, 2021, the second season of Rarity Farming distributed a staggering 2 million GHST. The frenly competition featured three main leaderboards that any summoned Aavegotchi could participate in plus two additional Rookie Leaderboards for Haunt 2 Aavegotchis.", + svgId: 269, + minLevel: 0, + canBeTransferred: false, + rarityLevel: "godlike", + maxQuantity: 1, totalQuantity: 0, + setId: [], + author: "xibot", + dimensions: { x: 0, y: 0, width: 0, height: 0 }, + allowedCollaterals: [], + ghstPrice: 0, + traitModifiers: [0, 0, 0, 0, 0, 0], + slotPositions: "none", + category: 1, experienceBonus: 0, kinshipBonus: 0, + canPurchaseWithGhst: false, }, { - svgId: 244, - name: "V-Neck Shirt", - setId: [110, 112], - author: "esveebee", - description: "", - dimensions: { x: 12, y: 32, width: 40, height: 23 }, + name: "Rarity Farming SZN2 XP 2nd Place", //5 + description: + "Scored across all four rounds, this Aavegotchi is the 2nd highest ranked of all gotchis in the XP category for Rarity Farming SZN 2. Incredible! From October 12 to Dec 7, 2021, the second season of Rarity Farming distributed a staggering 2 million GHST. The frenly competition featured three main leaderboards that any summoned Aavegotchi could participate in plus two additional Rookie Leaderboards for Haunt 2 Aavegotchis.", + svgId: 270, + minLevel: 0, + canBeTransferred: false, + rarityLevel: "godlike", + maxQuantity: 1, + totalQuantity: 0, + setId: [], + author: "xibot", + dimensions: { x: 0, y: 0, width: 0, height: 0 }, allowedCollaterals: [], - minLevel: 1, - ghstPrice: 100, - maxQuantity: 250, - traitModifiers: [0, -3, 0, 0, 0, 0], + ghstPrice: 0, + traitModifiers: [0, 0, 0, 0, 0, 0], + slotPositions: "none", + category: 1, + experienceBonus: 0, + kinshipBonus: 0, canPurchaseWithGhst: false, - slotPositions: "body", - category: 0, - canBeTransferred: true, + }, + { + name: "Rarity Farming SZN2 Rarity 3rd Place", //6 + description: + "Scored across all four rounds, this Aavegotchi is the 3rd highest ranked of all gotchis in the rarity category for Rarity Farming SZN 2. Impressive! From October 12 to Dec 7, 2021, the second season of Rarity Farming distributed a staggering 2 million GHST. The frenly competition featured three main leaderboards that any summoned Aavegotchi could participate in plus two additional Rookie Leaderboards for Haunt 2 Aavegotchis.", + svgId: 271, + minLevel: 0, + canBeTransferred: false, + rarityLevel: "godlike", + maxQuantity: 1, totalQuantity: 0, + setId: [], + author: "xibot", + dimensions: { x: 0, y: 0, width: 0, height: 0 }, + allowedCollaterals: [], + ghstPrice: 0, + traitModifiers: [0, 0, 0, 0, 0, 0], + slotPositions: "none", + category: 1, experienceBonus: 0, kinshipBonus: 0, + canPurchaseWithGhst: false, }, { - svgId: 245, - name: "Gecko Hat", - setId: [117], + name: "Rarity Farming SZN2 Kinship 3rd Place", //7 + description: + "Scored across all four rounds, this Aavegotchi is the 3rd highest ranked of all gotchis in the kinship category for Rarity Farming SZN 2. Impressive! From October 12 to Dec 7, 2021, the second season of Rarity Farming distributed a staggering 2 million GHST. The frenly competition featured three main leaderboards that any summoned Aavegotchi could participate in plus two additional Rookie Leaderboards for Haunt 2 Aavegotchis.", + svgId: 272, + minLevel: 0, + canBeTransferred: false, + rarityLevel: "godlike", + maxQuantity: 1, + totalQuantity: 0, + setId: [], author: "xibot", - description: "", - dimensions: { x: 15, y: 3, width: 34, height: 27 }, + dimensions: { x: 0, y: 0, width: 0, height: 0 }, allowedCollaterals: [], - minLevel: 1, - ghstPrice: "", - maxQuantity: 250, - traitModifiers: [0, 0, -3, 0, 0, 0], - canPurchaseWithGhst: false, - slotPositions: "eyes", - category: 0, - canBeTransferred: true, - totalQuantity: 0, + ghstPrice: 0, + traitModifiers: [0, 0, 0, 0, 0, 0], + slotPositions: "none", + category: 1, experienceBonus: 0, kinshipBonus: 0, + canPurchaseWithGhst: false, }, { - svgId: 246, - name: "APY Shades", - setId: [122], + name: "Rarity Farming SZN2 XP 3rd Place", //8 + description: + "Scored across all four rounds, this Aavegotchi is the 3rd highest ranked of all gotchis in the XP category for Rarity Farming SZN 2. Impressive! From October 12 to Dec 7, 2021, the second season of Rarity Farming distributed a staggering 2 million GHST. The frenly competition featured three main leaderboards that any summoned Aavegotchi could participate in plus two additional Rookie Leaderboards for Haunt 2 Aavegotchis.", + svgId: 273, + minLevel: 0, + canBeTransferred: false, + rarityLevel: "godlike", + maxQuantity: 1, + totalQuantity: 0, + setId: [], author: "xibot", - description: "", - dimensions: { x: 15, y: 20, width: 34, height: 12 }, + dimensions: { x: 0, y: 0, width: 0, height: 0 }, allowedCollaterals: [], - minLevel: 1, - ghstPrice: "", - maxQuantity: 500, - traitModifiers: [1, 0, 0, 1, 0, 0], - canPurchaseWithGhst: false, - slotPositions: "eyes", - category: 0, - canBeTransferred: true, - totalQuantity: 0, + ghstPrice: 0, + traitModifiers: [0, 0, 0, 0, 0, 0], + slotPositions: "none", + category: 1, experienceBonus: 0, kinshipBonus: 0, + canPurchaseWithGhst: false, }, { - svgId: 247, - name: "Up Arrow", - setId: [122], + name: "Rarity Farming SZN2 Raanked", //9 + description: + "This Aavegotchi achieved leaderboard ranking in at least one category during the second season of Rarity Farming. From October 12 to Dec 7, 2021, the second season of Rarity Farming distributed a staggering 2 million GHST. The frenly competition featured three main leaderboards that any summoned Aavegotchi could participate in plus two additional Rookie Leaderboards for Haunt 2 Aavegotchis.", + svgId: 274, + minLevel: 0, + canBeTransferred: false, + rarityLevel: "common", + maxQuantity: 11000, + totalQuantity: 0, + setId: [], author: "xibot", - description: "", - dimensions: { x: 0, y: 24, width: 16, height: 26 }, + dimensions: { x: 0, y: 0, width: 0, height: 0 }, allowedCollaterals: [], - minLevel: 1, - ghstPrice: "", - maxQuantity: 500, - traitModifiers: [1, 0, 0, 1, 0, 0], - canPurchaseWithGhst: false, - slotPositions: "hands", - category: 0, - canBeTransferred: true, - totalQuantity: 0, + ghstPrice: 0, + traitModifiers: [0, 0, 0, 0, 0, 0], + slotPositions: "none", + category: 1, experienceBonus: 0, kinshipBonus: 0, + canPurchaseWithGhst: false, }, { - svgId: 248, - name: "Up Only Shirt", - setId: [122], + name: "Rarity Farming SZN2 ROOKIE OF THE YEAR", //10 + description: + "This Aavegotchi was the best performing of all Haunt 2 Aavegotchis during Rarity Farming Season 2. This includes the gotchi's Base Rartity Score and ranking on the Rookie Kinship and XP leaderboards. From October 12 to Dec 7, 2021, the second season of Rarity Farming distributed a staggering 2 million GHST. The frenly competition featured three main leaderboards that any summoned Aavegotchi could participate in plus two additional Rookie Leaderboards for Haunt 2 Aavegotchis.", + svgId: 275, + minLevel: 0, + canBeTransferred: false, + rarityLevel: "godlike", + maxQuantity: 1, + totalQuantity: 0, + setId: [], author: "xibot", - description: "", - dimensions: { x: 12, y: 32, width: 40, height: 21 }, + dimensions: { x: 0, y: 0, width: 0, height: 0 }, allowedCollaterals: [], - minLevel: 1, - ghstPrice: "", - maxQuantity: 500, - traitModifiers: [1, 0, 0, 1, 0, 0], - canPurchaseWithGhst: false, - slotPositions: "body", - category: 0, - canBeTransferred: true, - totalQuantity: 0, + ghstPrice: 0, + traitModifiers: [0, 0, 0, 0, 0, 0], + slotPositions: "none", + category: 1, experienceBonus: 0, kinshipBonus: 0, + canPurchaseWithGhst: false, }, { - svgId: 249, - name: "Gecko Eyes", - setId: [116, 117], + name: "Rarity Farming SZN2 1st Place Rookie Kinship", //11 + description: + "Scored across all four rounds, this Aavegotchi delivered the best rookie kinship scores for Rarity Farming SZN 2! From October 12 to Dec 7, 2021, the second season of Rarity Farming distributed a staggering 2 million GHST. The frenly competition featured three main leaderboards that any summoned Aavegotchi could participate in plus two additional Rookie Leaderboards for Haunt 2 Aavegotchis.", + svgId: 276, + minLevel: 0, + canBeTransferred: false, + rarityLevel: "godlike", + maxQuantity: 1, + totalQuantity: 0, + setId: [], author: "xibot", - description: "", - dimensions: { x: 19, y: 20, width: 26, height: 12 }, + dimensions: { x: 0, y: 0, width: 0, height: 0 }, allowedCollaterals: [], - minLevel: 1, - ghstPrice: "", - maxQuantity: 250, - traitModifiers: [0, 0, -2, -1, 0, 0], - canPurchaseWithGhst: false, - slotPositions: "eyes", - category: 0, - canBeTransferred: true, - totalQuantity: 0, + ghstPrice: 0, + traitModifiers: [0, 0, 0, 0, 0, 0], + slotPositions: "none", + category: 1, experienceBonus: 0, kinshipBonus: 0, + canPurchaseWithGhst: false, }, { - svgId: 250, - name: "CoinGecko Tee", - setId: [116, 117], + name: "Rarity Farming SZN2 1st Place Rookie XP", //12 + description: + "Scored across all four rounds, this Aavegotchi delivered the best rookie XP scores for Rarity Farming SZN 2! From October 12 to Dec 7, 2021, the second season of Rarity Farming distributed a staggering 2 million GHST. The frenly competition featured three main leaderboards that any summoned Aavegotchi could participate in plus two additional Rookie Leaderboards for Haunt 2 Aavegotchis.", + svgId: 277, + minLevel: 0, + canBeTransferred: false, + rarityLevel: "godlike", + maxQuantity: 1, + totalQuantity: 0, + setId: [], author: "xibot", - description: "", - dimensions: { x: 12, y: 32, width: 40, height: 21 }, + dimensions: { x: 0, y: 0, width: 0, height: 0 }, allowedCollaterals: [], - minLevel: 1, - ghstPrice: "", - maxQuantity: 250, - traitModifiers: [0, 0, -2, -1, 0, 0], - canPurchaseWithGhst: false, - slotPositions: "body", - category: 0, - canBeTransferred: true, - totalQuantity: 0, + ghstPrice: 0, + traitModifiers: [0, 0, 0, 0, 0, 0], + slotPositions: "none", + category: 1, experienceBonus: 0, kinshipBonus: 0, + canPurchaseWithGhst: false, }, { - svgId: 251, - name: "Candy Jaar", - setId: [116, 117], + name: "Rarity Farming SZN2 Kinship ROOKIE 2nd Place", //13 + description: + "Scored across all four rounds, this Aavegotchi ranked 2nd overall for Rarity Farming SZN 2 rookie kinship scores! From October 12 to Dec 7, 2021, the second season of Rarity Farming distributed a staggering 2 million GHST. The frenly competition featured three main leaderboards that any summoned Aavegotchi could participate in plus two additional Rookie Leaderboards for Haunt 2 Aavegotchis.", + svgId: 278, + minLevel: 0, + canBeTransferred: false, + rarityLevel: "godlike", + maxQuantity: 1, + totalQuantity: 0, + setId: [], author: "xibot", - description: "", - dimensions: { x: 1, y: 25, width: 14, height: 20 }, + dimensions: { x: 0, y: 0, width: 0, height: 0 }, allowedCollaterals: [], - minLevel: 1, - ghstPrice: "", - maxQuantity: 250, - traitModifiers: [0, 0, -1, -2, 0, 0], - canPurchaseWithGhst: false, - slotPositions: "hands", - category: 0, - canBeTransferred: true, - totalQuantity: 0, + ghstPrice: 0, + traitModifiers: [0, 0, 0, 0, 0, 0], + slotPositions: "none", + category: 1, experienceBonus: 0, kinshipBonus: 0, + canPurchaseWithGhst: false, }, { - svgId: 252, - name: "Aastronaut Helmet", - setId: [115], + name: "Rarity Farming SZN2 XP ROOKIE 2nd Place", //14 + description: + "Scored across all four rounds, this Aavegotchi ranked 2nd overall for Rarity Farming SZN 2 rookie XP scores! From October 12 to Dec 7, 2021, the second season of Rarity Farming distributed a staggering 2 million GHST. The frenly competition featured three main leaderboards that any summoned Aavegotchi could participate in plus two additional Rookie Leaderboards for Haunt 2 Aavegotchis.", + svgId: 279, + minLevel: 0, + canBeTransferred: false, + rarityLevel: "godlike", + maxQuantity: 1, + totalQuantity: 0, + setId: [], author: "xibot", - description: "", - dimensions: { x: 12, y: 5, width: 40, height: 35 }, + dimensions: { x: 0, y: 0, width: 0, height: 0 }, allowedCollaterals: [], - minLevel: 1, - ghstPrice: "", - maxQuantity: 1000, - traitModifiers: [0, 0, 1, 0, 0, 0], - canPurchaseWithGhst: false, - slotPositions: "head", - category: 0, - canBeTransferred: true, - totalQuantity: 0, + ghstPrice: 0, + traitModifiers: [0, 0, 0, 0, 0, 0], + slotPositions: "none", + category: 1, experienceBonus: 0, kinshipBonus: 0, + canPurchaseWithGhst: false, }, { - svgId: 253, - name: "Aastronaut Suit", - setId: [115], + name: "Rarity Farming SZN2 Kinship ROOKIE 3rd Place", //15 + description: + "Scored across all four rounds, this Aavegotchi ranked 3rd overall for Rarity Farming SZN 2 rookie kinship scores! From October 12 to Dec 7, 2021, the second season of Rarity Farming distributed a staggering 2 million GHST. The frenly competition featured three main leaderboards that any summoned Aavegotchi could participate in plus two additional Rookie Leaderboards for Haunt 2 Aavegotchis.", + svgId: 280, + minLevel: 0, + canBeTransferred: false, + rarityLevel: "godlike", + maxQuantity: 1, + totalQuantity: 0, + setId: [], author: "xibot", - description: "", - dimensions: { x: 7, y: 31, width: 50, height: 24 }, + dimensions: { x: 0, y: 0, width: 0, height: 0 }, allowedCollaterals: [], - minLevel: 1, - ghstPrice: "", - maxQuantity: 1000, - traitModifiers: [0, 0, 1, 0, 0, 0], + ghstPrice: 0, + traitModifiers: [0, 0, 0, 0, 0, 0], + slotPositions: "none", + category: 1, + experienceBonus: 0, + kinshipBonus: 0, canPurchaseWithGhst: false, - slotPositions: "body", - category: 0, - canBeTransferred: true, + }, + { + name: "Rarity Farming SZN2 XP ROOKIE 3rd Place", //16 + description: + "Scored across all four rounds, this Aavegotchi ranked 3rd overall for Rarity Farming SZN 2 rookie XP scores! From October 12 to Dec 7, 2021, the second season of Rarity Farming distributed a staggering 2 million GHST. The frenly competition featured three main leaderboards that any summoned Aavegotchi could participate in plus two additional Rookie Leaderboards for Haunt 2 Aavegotchis.", + svgId: 281, + minLevel: 0, + canBeTransferred: false, + rarityLevel: "godlike", + maxQuantity: 1, totalQuantity: 0, + setId: [], + author: "xibot", + dimensions: { x: 0, y: 0, width: 0, height: 0 }, + allowedCollaterals: [], + ghstPrice: 0, + traitModifiers: [0, 0, 0, 0, 0, 0], + slotPositions: "none", + category: 1, experienceBonus: 0, kinshipBonus: 0, + canPurchaseWithGhst: false, }, { - svgId: 254, - name: "uGOTCHI Token", - setId: [115], + name: "Rarity Farming SZN2 Rarity Top 10", //17 + description: + "This Aavegotchi achieved a rank in the top 10 of Rarity for Rarity Farming SZN 2. From October 12 to Dec 7, 2021, the second season of Rarity Farming distributed a staggering 2 million GHST. The frenly competition featured three main leaderboards that any summoned Aavegotchi could participate in plus two additional Rookie Leaderboards for Haunt 2 Aavegotchis.", + svgId: 282, + minLevel: 0, + canBeTransferred: false, + rarityLevel: "mythical", + maxQuantity: 10, + totalQuantity: 0, + setId: [], author: "xibot", - description: "", - dimensions: { x: 0, y: 34, width: 12, height: 12 }, + dimensions: { x: 0, y: 0, width: 0, height: 0 }, allowedCollaterals: [], - minLevel: 1, - ghstPrice: "", - maxQuantity: 1000, - traitModifiers: [0, 0, 1, 0, 0, 0], - canPurchaseWithGhst: false, - slotPositions: "hands", - category: 0, - canBeTransferred: true, - totalQuantity: 0, + ghstPrice: 0, + traitModifiers: [0, 0, 0, 0, 0, 0], + slotPositions: "none", + category: 1, experienceBonus: 0, kinshipBonus: 0, + canPurchaseWithGhst: false, }, { - svgId: 255, - name: "Space Helmet", - setId: [118], + name: "Rarity Farming SZN2 Kinship Top 10", //18 + description: + "This Aavegotchi achieved a rank in the top 10 of Kinship for Rarity Farming SZN 2. From October 12 to Dec 7, 2021, the second season of Rarity Farming distributed a staggering 2 million GHST. The frenly competition featured three main leaderboards that any summoned Aavegotchi could participate in plus two additional Rookie Leaderboards for Haunt 2 Aavegotchis.", + svgId: 283, + minLevel: 0, + canBeTransferred: false, + rarityLevel: "mythical", + maxQuantity: 10, + totalQuantity: 0, + setId: [], author: "xibot", - description: "", - dimensions: { x: 14, y: 5, width: 36, height: 35 }, + dimensions: { x: 0, y: 0, width: 0, height: 0 }, allowedCollaterals: [], - minLevel: 1, - ghstPrice: "", - maxQuantity: 100, - traitModifiers: [2, -2, 0, 0, 0, 0], - canPurchaseWithGhst: false, - slotPositions: "head", - category: 0, - canBeTransferred: true, - totalQuantity: 0, + ghstPrice: 0, + traitModifiers: [0, 0, 0, 0, 0, 0], + slotPositions: "none", + category: 1, experienceBonus: 0, kinshipBonus: 0, + canPurchaseWithGhst: false, }, { - svgId: 256, - name: "Lil Bubble Space Suit", - setId: [118], + name: "Rarity Farming SZN2 XP Top 10", //19 + description: + "This Aavegotchi achieved a rank in the top 10 of XP for Rarity Farming SZN 2. From October 12 to Dec 7, 2021, the second season of Rarity Farming distributed a staggering 2 million GHST. The frenly competition featured three main leaderboards that any summoned Aavegotchi could participate in plus two additional Rookie Leaderboards for Haunt 2 Aavegotchis.", + svgId: 284, + minLevel: 0, + canBeTransferred: false, + rarityLevel: "mythical", + maxQuantity: 10, + totalQuantity: 0, + setId: [], author: "xibot", - description: "", - dimensions: { x: 7, y: 31, width: 50, height: 24 }, + dimensions: { x: 0, y: 0, width: 0, height: 0 }, allowedCollaterals: [], - minLevel: 1, - ghstPrice: "", - maxQuantity: 100, - traitModifiers: [2, -2, 0, 0, 0, 0], - canPurchaseWithGhst: false, - slotPositions: "body", - category: 0, - canBeTransferred: true, - totalQuantity: 0, + ghstPrice: 0, + traitModifiers: [0, 0, 0, 0, 0, 0], + slotPositions: "none", + category: 1, experienceBonus: 0, kinshipBonus: 0, + canPurchaseWithGhst: false, }, { - svgId: 257, - name: "Bitcoin Guitar", - setId: [118], + name: "Rarity Farming SZN2 Rarity Top 100", //20 + description: + "This Aavegotchi achieved a rank in the top 100 of Rarity for Rarity Farming SZN 2. From October 12 to Dec 7, 2021, the second season of Rarity Farming distributed a staggering 2 million GHST. The frenly competition featured three main leaderboards that any summoned Aavegotchi could participate in plus two additional Rookie Leaderboards for Haunt 2 Aavegotchis.", + svgId: 285, + minLevel: 0, + canBeTransferred: false, + rarityLevel: "legendary", + maxQuantity: 90, + totalQuantity: 0, + setId: [], author: "xibot", - description: "", - dimensions: { x: 0, y: 17, width: 15, height: 38 }, + dimensions: { x: 0, y: 0, width: 0, height: 0 }, allowedCollaterals: [], - minLevel: 1, - ghstPrice: "", - maxQuantity: 100, - traitModifiers: [4, 0, 0, 0, 0, 0], - canPurchaseWithGhst: false, - slotPositions: "hands", - category: 0, - canBeTransferred: true, - totalQuantity: 0, + ghstPrice: 0, + traitModifiers: [0, 0, 0, 0, 0, 0], + slotPositions: "none", + category: 1, experienceBonus: 0, kinshipBonus: 0, + canPurchaseWithGhst: false, }, { - svgId: 258, - name: "Taoist Robe", - setId: [120, 121], + name: "Rarity Farming SZN2 Kinship Top 100", //21 + description: + "This Aavegotchi achieved a rank in the top 100 of Kinship for Rarity Farming SZN 2. From October 12 to Dec 7, 2021, the second season of Rarity Farming distributed a staggering 2 million GHST. The frenly competition featured three main leaderboards that any summoned Aavegotchi could participate in plus two additional Rookie Leaderboards for Haunt 2 Aavegotchis.", + svgId: 286, + minLevel: 0, + canBeTransferred: false, + rarityLevel: "legendary", + maxQuantity: 90, + totalQuantity: 0, + setId: [], author: "xibot", - description: "", - dimensions: { x: 10, y: 31, width: 44, height: 25 }, + dimensions: { x: 0, y: 0, width: 0, height: 0 }, allowedCollaterals: [], - minLevel: 1, - ghstPrice: "", - maxQuantity: 5, - traitModifiers: [-3, 0, 0, 3, 0, 0], - canPurchaseWithGhst: false, - slotPositions: "body", - category: 0, - canBeTransferred: true, - totalQuantity: 0, + ghstPrice: 0, + traitModifiers: [0, 0, 0, 0, 0, 0], + slotPositions: "none", + category: 1, experienceBonus: 0, kinshipBonus: 0, + canPurchaseWithGhst: false, }, { - svgId: 259, - name: "Bushy Eyebrows", - setId: [120, 121], + name: "Rarity Farming SZN2 XP Top 100", //22 + description: + "This Aavegotchi achieved a rank in the top 100 of XP for Rarity Farming SZN 2. From October 12 to Dec 7, 2021, the second season of Rarity Farming distributed a staggering 2 million GHST. The frenly competition featured three main leaderboards that any summoned Aavegotchi could participate in plus two additional Rookie Leaderboards for Haunt 2 Aavegotchis.", + svgId: 287, + minLevel: 0, + canBeTransferred: false, + rarityLevel: "legendary", + maxQuantity: 90, + totalQuantity: 0, + setId: [], author: "xibot", - description: "", - dimensions: { x: 16, y: 18, width: 32, height: 9 }, + dimensions: { x: 0, y: 0, width: 0, height: 0 }, allowedCollaterals: [], - minLevel: 1, - ghstPrice: "", - maxQuantity: 5, - traitModifiers: [-3, 0, 0, 3, 0, 0], - canPurchaseWithGhst: false, - slotPositions: "eyes", - category: 0, - canBeTransferred: true, - totalQuantity: 0, + ghstPrice: 0, + traitModifiers: [0, 0, 0, 0, 0, 0], + slotPositions: "none", + category: 1, experienceBonus: 0, kinshipBonus: 0, + canPurchaseWithGhst: false, }, { - svgId: 260, - name: "Beard of Wisdom", - setId: [120, 121], + name: "Rarity Farming SZN2 XP ROOKIE Top 10", //23 + description: + "This Aavegotchi achieved a rank in the top 10 on the ROOKIE XP leaderboard for Rarity Farming SZN 2. From October 12 to Dec 7, 2021, the second season of Rarity Farming distributed a staggering 2 million GHST. The frenly competition featured three main leaderboards that any summoned Aavegotchi could participate in plus two additional Rookie Leaderboards for Haunt 2 Aavegotchis.", + svgId: 288, + minLevel: 0, + canBeTransferred: false, + rarityLevel: "mythical", + maxQuantity: 10, + totalQuantity: 0, + setId: [], author: "xibot", - description: "", - dimensions: { x: 25, y: 32, width: 14, height: 14 }, + dimensions: { x: 0, y: 0, width: 0, height: 0 }, allowedCollaterals: [], - minLevel: 1, - ghstPrice: "", - maxQuantity: 5, - traitModifiers: [-2, 0, 0, 4, 0, 0], - canPurchaseWithGhst: false, - slotPositions: "face", - category: 0, - canBeTransferred: true, - totalQuantity: 0, + ghstPrice: 0, + traitModifiers: [0, 0, 0, 0, 0, 0], + slotPositions: "none", + category: 1, experienceBonus: 0, kinshipBonus: 0, + canPurchaseWithGhst: false, }, { - svgId: 261, - name: "Aantenna Bot", - setId: [119], + name: "Rarity Farming SZN2 Kinship ROOKIE Top 10", //24 + description: + "This Aavegotchi achieved a rank in the top 10 of the ROOKIE Kinship leaderboard for Rarity Farming SZN 2. From October 12 to Dec 7, 2021, the second season of Rarity Farming distributed a staggering 2 million GHST. The frenly competition featured three main leaderboards that any summoned Aavegotchi could participate in plus two additional Rookie Leaderboards for Haunt 2 Aavegotchis.", + svgId: 289, + minLevel: 0, + canBeTransferred: false, + rarityLevel: "mythical", + maxQuantity: 10, + totalQuantity: 0, + setId: [], author: "xibot", - description: "", - dimensions: { x: 44, y: 33, width: 17, height: 26 }, + dimensions: { x: 0, y: 0, width: 0, height: 0 }, allowedCollaterals: [], - minLevel: 1, - ghstPrice: "", - maxQuantity: 50, - traitModifiers: [0, -2, 0, 3, 0, 0], - canPurchaseWithGhst: false, - slotPositions: "pet", - category: 0, - canBeTransferred: true, - totalQuantity: 0, + ghstPrice: 0, + traitModifiers: [0, 0, 0, 0, 0, 0], + slotPositions: "none", + category: 1, experienceBonus: 0, kinshipBonus: 0, + canPurchaseWithGhst: false, }, { - svgId: 262, - name: "Radar Eyes", - setId: [119], + name: "Rarity Farming SZN2 XP ROOKIE Top 100", //25 + description: + "This Aavegotchi achieved a rank in the top 100 on the ROOKIE XP leaderboard for Rarity Farming SZN 2. From October 12 to Dec 7, 2021, the second season of Rarity Farming distributed a staggering 2 million GHST. The frenly competition featured three main leaderboards that any summoned Aavegotchi could participate in plus two additional Rookie Leaderboards for Haunt 2 Aavegotchis.", + svgId: 290, + minLevel: 0, + canBeTransferred: false, + rarityLevel: "legendary", + maxQuantity: 90, + totalQuantity: 0, + setId: [], author: "xibot", - description: "", - dimensions: { x: 19, y: 20, width: 26, height: 12 }, + dimensions: { x: 0, y: 0, width: 0, height: 0 }, allowedCollaterals: [], - minLevel: 1, - ghstPrice: "", - maxQuantity: 50, - traitModifiers: [0, -2, 0, 3, 0, 0], - canPurchaseWithGhst: false, - slotPositions: "eyes", - category: 0, - canBeTransferred: true, - totalQuantity: 0, + ghstPrice: 0, + traitModifiers: [0, 0, 0, 0, 0, 0], + slotPositions: "none", + category: 1, experienceBonus: 0, kinshipBonus: 0, + canPurchaseWithGhst: false, }, { - svgId: 263, - name: "Signal Headset", - setId: [119], + name: "Rarity Farming SZN2 Kinship ROOKIE Top 100", //26 + description: + "This Aavegotchi achieved a rank in the top 100 of the ROOKIE Kinship leaderboard for Rarity Farming SZN 2. From October 12 to Dec 7, 2021, the second season of Rarity Farming distributed a staggering 2 million GHST. The frenly competition featured three main leaderboards that any summoned Aavegotchi could participate in plus two additional Rookie Leaderboards for Haunt 2 Aavegotchis.", + svgId: 291, + minLevel: 0, + canBeTransferred: false, + rarityLevel: "legendary", + maxQuantity: 90, + totalQuantity: 0, + setId: [], author: "xibot", - description: "", - dimensions: { x: 11, y: 6, width: 42, height: 25 }, + dimensions: { x: 0, y: 0, width: 0, height: 0 }, allowedCollaterals: [], - minLevel: 1, - ghstPrice: "", - maxQuantity: 50, - traitModifiers: [0, -2, 0, 3, 0, 0], - canPurchaseWithGhst: false, - slotPositions: "face", - category: 0, - canBeTransferred: true, - totalQuantity: 0, + ghstPrice: 0, + traitModifiers: [0, 0, 0, 0, 0, 0], + slotPositions: "none", + category: 1, experienceBonus: 0, kinshipBonus: 0, + canPurchaseWithGhst: false, }, { svgId: 292, @@ -5792,9 +6906,9 @@ export const itemTypes: ItemTypeInput[] = [ }, { - name: "CHAAMPION of Rarity Farming SZN3 (Rarity)", + name: "Rarity Farming SZN3 1st Place Rarity", description: - "Scored across all four rounds, this Aavegotchi is the ultimate chaampion of RARITY for Rarity Farming SZN 3. Aamazing! From February 24 to April 22, 2022, the third season of Rarity Farming distributed 1.5 million GHST over 8 weeks. Each of the 3 leaderboards increased from 5k to 7500 winning gotchis each round!", + "Scored across all four rounds, this Aavegotchi is the ultimate chaampion of Rarity for Rarity Farming SZN 3. Aamazing! From February 24 to April 22, 2022, the third season of Rarity Farming distributed 1.5 million GHST over 8 weeks. Each of the 3 leaderboards increased from 5k to 7500 winning gotchis each round!", svgId: 316, minLevel: 0, canBeTransferred: false, @@ -5813,9 +6927,9 @@ export const itemTypes: ItemTypeInput[] = [ canPurchaseWithGhst: false, }, { - name: "CHAAMPION of Rarity Farming SZN3 (Kinship)", + name: "Rarity Farming SZN3 1st Place Kinship", description: - "Scored across all four rounds, this Aavegotchi is the ultimate chaampion of KINSHIP for Rarity Farming SZN 3. Aamazing! From February 24 to April 22, 2022, the third season of Rarity Farming distributed 1.5 million GHST over 8 weeks. Each of the 3 leaderboards increased from 5k to 7500 winning gotchis each round!", + "Scored across all four rounds, this Aavegotchi is the ultimate chaampion of Kinship for Rarity Farming SZN 3. Aamazing! From February 24 to April 22, 2022, the third season of Rarity Farming distributed 1.5 million GHST over 8 weeks. Each of the 3 leaderboards increased from 5k to 7500 winning gotchis each round!", svgId: 317, minLevel: 0, canBeTransferred: false, @@ -5834,7 +6948,7 @@ export const itemTypes: ItemTypeInput[] = [ canPurchaseWithGhst: false, }, { - name: "CHAAMPION of Rarity Farming SZN3 (XP)", + name: "Rarity Farming SZN3 1st Place XP", description: "Scored across all four rounds, this Aavegotchi is the ultimate chaampion of XP for Rarity Farming SZN 3. Aamazing! From February 24 to April 22, 2022, the third season of Rarity Farming distributed 1.5 million GHST over 8 weeks. Each of the 3 leaderboards increased from 5k to 7500 winning gotchis each round!", svgId: 318, @@ -5855,9 +6969,9 @@ export const itemTypes: ItemTypeInput[] = [ canPurchaseWithGhst: false, }, { - name: "Rarity Farming SZN3 RARITY 2nd Place", + name: "Rarity Farming SZN3 Rarity 2nd Place", description: - "Scored across all four rounds, this Aavegotchi is the 2nd highest ranked of all RARITY for Rarity Farming SZN 3. Incredible! From February 24 to April 22, 2022, the third season of Rarity Farming distributed 1.5 million GHST over 8 weeks. Each of the 3 leaderboards increased from 5k to 7500 winning gotchis each round!", + "Scored across all four rounds, this Aavegotchi is the 2nd highest ranked of all Rarity for Rarity Farming SZN 3. Incredible! From February 24 to April 22, 2022, the third season of Rarity Farming distributed 1.5 million GHST over 8 weeks. Each of the 3 leaderboards increased from 5k to 7500 winning gotchis each round!", svgId: 319, minLevel: 0, canBeTransferred: false, @@ -5876,9 +6990,9 @@ export const itemTypes: ItemTypeInput[] = [ canPurchaseWithGhst: false, }, { - name: "Rarity Farming SZN3 KINSHIP 2nd Place", + name: "Rarity Farming SZN3 Kinship 2nd Place", description: - "Scored across all four rounds, this Aavegotchi is the 2nd highest ranked of all KINSHIP for Rarity Farming SZN 3. Incredible! From February 24 to April 22, 2022, the third season of Rarity Farming distributed 1.5 million GHST over 8 weeks. Each of the 3 leaderboards increased from 5k to 7500 winning gotchis each round!", + "Scored across all four rounds, this Aavegotchi is the 2nd highest ranked of all Kinship for Rarity Farming SZN 3. Incredible! From February 24 to April 22, 2022, the third season of Rarity Farming distributed 1.5 million GHST over 8 weeks. Each of the 3 leaderboards increased from 5k to 7500 winning gotchis each round!", svgId: 320, minLevel: 0, canBeTransferred: false, @@ -5918,9 +7032,9 @@ export const itemTypes: ItemTypeInput[] = [ canPurchaseWithGhst: false, }, { - name: "Rarity Farming SZN3 RARITY 3rd Place", + name: "Rarity Farming SZN3 Rarity 3rd Place", description: - "Scored across all four rounds, this Aavegotchi is the 3rd highest ranked of all RARITY for Rarity Farming SZN 3. Impressive! From February 24 to April 22, 2022, the third season of Rarity Farming distributed 1.5 million GHST over 8 weeks. Each of the 3 leaderboards increased from 5k to 7500 winning gotchis each round!", + "Scored across all four rounds, this Aavegotchi is the 3rd highest ranked of all Rarity for Rarity Farming SZN 3. Impressive! From February 24 to April 22, 2022, the third season of Rarity Farming distributed 1.5 million GHST over 8 weeks. Each of the 3 leaderboards increased from 5k to 7500 winning gotchis each round!", svgId: 322, minLevel: 0, canBeTransferred: false, @@ -5939,9 +7053,9 @@ export const itemTypes: ItemTypeInput[] = [ canPurchaseWithGhst: false, }, { - name: "Rarity Farming SZN3 KINSHIP 3rd Place", + name: "Rarity Farming SZN3 Kinship 3rd Place", description: - "Scored across all four rounds, this Aavegotchi is the 3rd highest ranked of all KINSHIP for Rarity Farming SZN 3. Impressive! From February 24 to April 22, 2022, the third season of Rarity Farming distributed 1.5 million GHST over 8 weeks. Each of the 3 leaderboards increased from 5k to 7500 winning gotchis each round!", + "Scored across all four rounds, this Aavegotchi is the 3rd highest ranked of all Kinship for Rarity Farming SZN 3. Impressive! From February 24 to April 22, 2022, the third season of Rarity Farming distributed 1.5 million GHST over 8 weeks. Each of the 3 leaderboards increased from 5k to 7500 winning gotchis each round!", svgId: 323, minLevel: 0, canBeTransferred: false, @@ -6002,9 +7116,9 @@ export const itemTypes: ItemTypeInput[] = [ canPurchaseWithGhst: false, }, { - name: "Rarity Farming SZN3 RARITY Top 10", + name: "Rarity Farming SZN3 Rarity Top 10", description: - "This Aavegotchi achieved a rank in the top 10 of RARITY for Rarity Farming SZN 3. From February 24 to April 22, 2022, the third season of Rarity Farming distributed 1.5 million GHST over 8 weeks. Each of the 3 leaderboards increased from 5k to 7500 winning gotchis each round!", + "This Aavegotchi achieved a rank in the top 10 of Rarity for Rarity Farming SZN 3. From February 24 to April 22, 2022, the third season of Rarity Farming distributed 1.5 million GHST over 8 weeks. Each of the 3 leaderboards increased from 5k to 7500 winning gotchis each round!", svgId: 326, minLevel: 0, canBeTransferred: false, @@ -6023,9 +7137,9 @@ export const itemTypes: ItemTypeInput[] = [ canPurchaseWithGhst: false, }, { - name: "Rarity Farming SZN3 KINSHIP Top 10", + name: "Rarity Farming SZN3 Kinship Top 10", description: - "This Aavegotchi achieved a rank in the top 10 of KINSHIP for Rarity Farming SZN 3. From February 24 to April 22, 2022, the third season of Rarity Farming distributed 1.5 million GHST over 8 weeks. Each of the 3 leaderboards increased from 5k to 7500 winning gotchis each round!", + "This Aavegotchi achieved a rank in the top 10 of Kinship for Rarity Farming SZN 3. From February 24 to April 22, 2022, the third season of Rarity Farming distributed 1.5 million GHST over 8 weeks. Each of the 3 leaderboards increased from 5k to 7500 winning gotchis each round!", svgId: 327, minLevel: 0, canBeTransferred: false, @@ -6065,9 +7179,9 @@ export const itemTypes: ItemTypeInput[] = [ canPurchaseWithGhst: false, }, { - name: "Rarity Farming SZN3 RARITY Top 100", + name: "Rarity Farming SZN3 Rarity Top 100", description: - "This Aavegotchi achieved a rank in the top 100 of RARITY for Rarity Farming SZN 3. From February 24 to April 22, 2022, the third season of Rarity Farming distributed 1.5 million GHST over 8 weeks. Each of the 3 leaderboards increased from 5k to 7500 winning gotchis each round!", + "This Aavegotchi achieved a rank in the top 100 of Rarity for Rarity Farming SZN 3. From February 24 to April 22, 2022, the third season of Rarity Farming distributed 1.5 million GHST over 8 weeks. Each of the 3 leaderboards increased from 5k to 7500 winning gotchis each round!", svgId: 329, minLevel: 0, canBeTransferred: false, @@ -6086,9 +7200,9 @@ export const itemTypes: ItemTypeInput[] = [ canPurchaseWithGhst: false, }, { - name: "Rarity Farming SZN3 KINSHIP Top 100", + name: "Rarity Farming SZN3 Kinship Top 100", description: - "This Aavegotchi achieved a rank in the top 100 of KINSHIP for Rarity Farming SZN 3. From February 24 to April 22, 2022, the third season of Rarity Farming distributed 1.5 million GHST over 8 weeks. Each of the 3 leaderboards increased from 5k to 7500 winning gotchis each round!", + "This Aavegotchi achieved a rank in the top 100 of Kinship for Rarity Farming SZN 3. From February 24 to April 22, 2022, the third season of Rarity Farming distributed 1.5 million GHST over 8 weeks. Each of the 3 leaderboards increased from 5k to 7500 winning gotchis each round!", svgId: 330, minLevel: 0, canBeTransferred: false, @@ -6130,7 +7244,7 @@ export const itemTypes: ItemTypeInput[] = [ }, { - name: "GOTCHI SMAASH 2022 Haalloween Party", + name: "Gotchi Smaash 2022 Haalloween Party", description: "This Aavegotchi ranked in GOTCHI SMAASH 2022, the first ever mass PvE event in the Gotchiverse. Mad Paampkins invaded Metaguild's Paartner Parcel and the Gotchiverse Citaadel during the third annual Aavegotchi Haalloween Party. 392 Aavegotchis banded together to claim victory and Alchemica candy!", svgId: 332, @@ -6177,9 +7291,9 @@ export const itemTypes: ItemTypeInput[] = [ }, { - name: "CHAAMPION of Rarity Farming SZN4 (Rarity)", + name: "Rarity Farming SZN4 1st Place Rarity", description: - "Scored across all four rounds, this Aavegotchi is the ultimate chaampion of RARITY for Rarity Farming SZN 4. FANTASTIC! From July 28th to September 22nd, 2022, the fourth season of Rarity Farming distributed 1.5 million GHST over 8 weeks. Each of the 3 leaderboards has 7500 winning gotchis each round!", + "Scored across all four rounds, this Aavegotchi is the ultimate chaampion of Rarity for Rarity Farming SZN 4. FANTASTIC! From July 28th to September 22nd, 2022, the fourth season of Rarity Farming distributed 1.5 million GHST over 8 weeks. Each of the 3 leaderboards has 7500 winning gotchis each round!", svgId: 334, minLevel: 0, canBeTransferred: false, @@ -6198,9 +7312,9 @@ export const itemTypes: ItemTypeInput[] = [ canPurchaseWithGhst: false, }, { - name: "CHAAMPION of Rarity Farming SZN4 (Kinship)", + name: "Rarity Farming SZN4 1st Place Kinship", description: - "Scored across all four rounds, this Aavegotchi is the ultimate chaampion of KINSHIP for Rarity Farming SZN 4. FANTASTIC! From July 28th to September 22nd, 2022, the fourth season of Rarity Farming distributed 1.5 million GHST over 8 weeks. Each of the 3 leaderboards has 7500 winning gotchis each round!", + "Scored across all four rounds, this Aavegotchi is the ultimate chaampion of Kinship for Rarity Farming SZN 4. FANTASTIC! From July 28th to September 22nd, 2022, the fourth season of Rarity Farming distributed 1.5 million GHST over 8 weeks. Each of the 3 leaderboards has 7500 winning gotchis each round!", svgId: 335, minLevel: 0, canBeTransferred: false, @@ -6219,7 +7333,7 @@ export const itemTypes: ItemTypeInput[] = [ canPurchaseWithGhst: false, }, { - name: "CHAAMPION of Rarity Farming SZN4 (XP)", + name: "Rarity Farming SZN4 1st Place XP", description: "Scored across all four rounds, this Aavegotchi is the ultimate chaampion of XP for Rarity Farming SZN 4. FANTASTIC! From July 28th to September 22nd, 2022, the fourth season of Rarity Farming distributed 1.5 million GHST over 8 weeks. Each of the 3 leaderboards has 7500 winning gotchis each round!", svgId: 336, @@ -6240,9 +7354,9 @@ export const itemTypes: ItemTypeInput[] = [ canPurchaseWithGhst: false, }, { - name: "Rarity Farming SZN4 RARITY 2nd Place", + name: "Rarity Farming SZN4 Rarity 2nd Place", description: - "Scored across all four rounds, this Aavegotchi is the 2nd highest ranked of all RARITY for Rarity Farming SZN 4. Incredible! From July 28th to September 22nd, 2022, the fourth season of Rarity Farming distributed 1.5 million GHST over 8 weeks. Each of the 3 leaderboards has 7500 winning gotchis each round!", + "Scored across all four rounds, this Aavegotchi is the 2nd highest ranked of all Rarity for Rarity Farming SZN 4. Incredible! From July 28th to September 22nd, 2022, the fourth season of Rarity Farming distributed 1.5 million GHST over 8 weeks. Each of the 3 leaderboards has 7500 winning gotchis each round!", svgId: 337, minLevel: 0, canBeTransferred: false, @@ -6261,9 +7375,9 @@ export const itemTypes: ItemTypeInput[] = [ canPurchaseWithGhst: false, }, { - name: "Rarity Farming SZN4 KINSHIP 2nd Place", + name: "Rarity Farming SZN4 Kinship 2nd Place", description: - "Scored across all four rounds, this Aavegotchi is the 2nd highest ranked of all KINSHIP for Rarity Farming SZN 4. Incredible! From July 28th to September 22nd, 2022, the fourth season of Rarity Farming distributed 1.5 million GHST over 8 weeks. Each of the 3 leaderboards has 7500 winning gotchis each round!", + "Scored across all four rounds, this Aavegotchi is the 2nd highest ranked of all Kinship for Rarity Farming SZN 4. Incredible! From July 28th to September 22nd, 2022, the fourth season of Rarity Farming distributed 1.5 million GHST over 8 weeks. Each of the 3 leaderboards has 7500 winning gotchis each round!", svgId: 338, minLevel: 0, canBeTransferred: false, @@ -6303,9 +7417,9 @@ export const itemTypes: ItemTypeInput[] = [ canPurchaseWithGhst: false, }, { - name: "Rarity Farming SZN4 RARITY 3rd Place", + name: "Rarity Farming SZN4 Rarity 3rd Place", description: - "Scored across all four rounds, this Aavegotchi is the 3rd highest ranked of all RARITY for Rarity Farming SZN 4. Impressive! From July 28th to September 22nd, 2022, the fourth season of Rarity Farming distributed 1.5 million GHST over 8 weeks. Each of the 3 leaderboards has 7500 winning gotchis each round!", + "Scored across all four rounds, this Aavegotchi is the 3rd highest ranked of all Rarity for Rarity Farming SZN 4. Impressive! From July 28th to September 22nd, 2022, the fourth season of Rarity Farming distributed 1.5 million GHST over 8 weeks. Each of the 3 leaderboards has 7500 winning gotchis each round!", svgId: 340, minLevel: 0, canBeTransferred: false, @@ -6324,9 +7438,9 @@ export const itemTypes: ItemTypeInput[] = [ canPurchaseWithGhst: false, }, { - name: "Rarity Farming SZN4 KINSHIP 3rd Place", + name: "Rarity Farming SZN4 Kinship 3rd Place", description: - "Scored across all four rounds, this Aavegotchi is the 3rd highest ranked of all KINSHIP for Rarity Farming SZN 4. Impressive! From July 28th to September 22nd, 2022, the fourth season of Rarity Farming distributed 1.5 million GHST over 8 weeks. Each of the 3 leaderboards has 7500 winning gotchis each round!", + "Scored across all four rounds, this Aavegotchi is the 3rd highest ranked of all Kinship for Rarity Farming SZN 4. Impressive! From July 28th to September 22nd, 2022, the fourth season of Rarity Farming distributed 1.5 million GHST over 8 weeks. Each of the 3 leaderboards has 7500 winning gotchis each round!", svgId: 341, minLevel: 0, canBeTransferred: false, @@ -6387,9 +7501,9 @@ export const itemTypes: ItemTypeInput[] = [ canPurchaseWithGhst: false, }, { - name: "Rarity Farming SZN4 RARITY Top 10", + name: "Rarity Farming SZN4 Rarity Top 10", description: - "This Aavegotchi achieved a rank in the top 10 of RARITY for Rarity Farming SZN 4. From July 28th to September 22nd, 2022, the fourth season of Rarity Farming distributed 1.5 million GHST over 8 weeks. Each of the 3 leaderboards has 7500 winning gotchis each round!", + "This Aavegotchi achieved a rank in the top 10 of Rarity for Rarity Farming SZN 4. From July 28th to September 22nd, 2022, the fourth season of Rarity Farming distributed 1.5 million GHST over 8 weeks. Each of the 3 leaderboards has 7500 winning gotchis each round!", svgId: 344, minLevel: 0, canBeTransferred: false, @@ -6408,9 +7522,9 @@ export const itemTypes: ItemTypeInput[] = [ canPurchaseWithGhst: false, }, { - name: "Rarity Farming SZN4 KINSHIP Top 10", + name: "Rarity Farming SZN4 Kinship Top 10", description: - "This Aavegotchi achieved a rank in the top 10 of KINSHIP for Rarity Farming SZN 4. From July 28th to September 22nd, 2022, the fourth season of Rarity Farming distributed 1.5 million GHST over 8 weeks. Each of the 3 leaderboards has 7500 winning gotchis each round!", + "This Aavegotchi achieved a rank in the top 10 of Kinship for Rarity Farming SZN 4. From July 28th to September 22nd, 2022, the fourth season of Rarity Farming distributed 1.5 million GHST over 8 weeks. Each of the 3 leaderboards has 7500 winning gotchis each round!", svgId: 345, minLevel: 0, canBeTransferred: false, @@ -6450,9 +7564,9 @@ export const itemTypes: ItemTypeInput[] = [ canPurchaseWithGhst: false, }, { - name: "Rarity Farming SZN4 RARITY Top 100", + name: "Rarity Farming SZN4 Rarity Top 100", description: - "This Aavegotchi achieved a rank in the top 100 of RARITY for Rarity Farming SZN 4. From July 28th to September 22nd, 2022, the fourth season of Rarity Farming distributed 1.5 million GHST over 8 weeks. Each of the 3 leaderboards has 7500 winning gotchis each round!", + "This Aavegotchi achieved a rank in the top 100 of Rarity for Rarity Farming SZN 4. From July 28th to September 22nd, 2022, the fourth season of Rarity Farming distributed 1.5 million GHST over 8 weeks. Each of the 3 leaderboards has 7500 winning gotchis each round!", svgId: 347, minLevel: 0, canBeTransferred: false, @@ -6471,9 +7585,9 @@ export const itemTypes: ItemTypeInput[] = [ canPurchaseWithGhst: false, }, { - name: "Rarity Farming SZN4 KINSHIP Top 100", + name: "Rarity Farming SZN4 Kinship Top 100", description: - "This Aavegotchi achieved a rank in the top 100 of KINSHIP for Rarity Farming SZN 4. From July 28th to September 22nd, 2022, the fourth season of Rarity Farming distributed 1.5 million GHST over 8 weeks. Each of the 3 leaderboards has 7500 winning gotchis each round!", + "This Aavegotchi achieved a rank in the top 100 of Kinship for Rarity Farming SZN 4. From July 28th to September 22nd, 2022, the fourth season of Rarity Farming distributed 1.5 million GHST over 8 weeks. Each of the 3 leaderboards has 7500 winning gotchis each round!", svgId: 348, minLevel: 0, canBeTransferred: false, diff --git a/scripts/deploy-mumbai.ts b/scripts/deploy-mumbai.ts new file mode 100644 index 000000000..7d6653566 --- /dev/null +++ b/scripts/deploy-mumbai.ts @@ -0,0 +1,512 @@ +/* global ethers hre */ + +import { run } from "hardhat"; +import { deployAndUpgradeWearableDiamond } from "./upgrades/upgrade-deployWearableDiamond"; +import { getAllItemTypes, SleeveObject } from "./itemTypeHelpers"; +import { itemTypes as allItemTypes } from "../data/itemTypes/itemTypes"; +import { wearableSets } from "./wearableSets"; +import { DAOFacet, SvgFacet } from "../typechain"; +import { BigNumberish } from "@ethersproject/bignumber"; +import { uploadSvgs } from "./svgHelperFunctions"; +import { getWearables } from "../svgs/allWearables"; +import { deployAndUpgradeForgeDiamond } from "./upgrades/forge/upgrade-deployAndUpgradeForgeDiamond"; +import { setForgeProperties } from "./upgrades/forge/upgrade-forgeSetters"; + +const diamond = require("../js/diamond-util/src/index.js"); + +function addCommas(nStr) { + nStr += ""; + const x = nStr.split("."); + let x1 = x[0]; + const x2 = x.length > 1 ? "." + x[1] : ""; + var rgx = /(\d+)(\d{3})/; + while (rgx.test(x1)) { + x1 = x1.replace(rgx, "$1" + "," + "$2"); + } + return x1 + x2; +} + +function strDisplay(str) { + return addCommas(str.toString()); +} + +async function main() { + if (!["mumbai", "hardhat", "localhost"].includes(hre.network.name)) { + throw Error("No network settings for " + hre.network.name); + } + + const ghstDiamondAddress = "0xc93A55a39356BddA580036Ce50044C106Dd211c8"; + const ghstStakingDiamondAddress = + "0x7279afC1C28b730f274961825Aae6163b5FeC600"; + const realmDiamondAddress = "0x726F201A9aB38cD56D60ee392165F1434C4F193D"; + const installationDiamondAddress = + "0x19f870bD94A34b3adAa9CaA439d333DA18d6812A"; //todo + const tileDiamondAddress = "0x9216c31d8146bCB3eA5a9162Dc1702e8AEDCa355"; //todo + const fakeGotchiArtDiamondAddress = + "0x330088c3372f4F78cF023DF16E1e1564109191dc"; + const fakeGotchiCardDiamondAddress = + "0x9E282FE4a0be6A0C4B9f7d9fEF10547da35c52EA"; + + const name = "Aavegotchi"; + const symbol = "GOTCHI"; + + const childChainManager = "0xb5505a6d998549090530911180f38aC5130101c6"; + const linkAddress = "0x326C977E6efc84E512bB9C30f76E30c160eD06FB"; + const vrfCoordinator = "0xdD3782915140c8f3b190B5D67eAc6dc5760C46E9"; // todo + const keyHash = + "0x6c3699283bda56ad74f6b855546325b68d482e983852a7a82979cc4807b641f4"; // todo + const fee = ethers.utils.parseEther("0.0001"); + + const accounts = await ethers.getSigners(); + const ownerAddress = await accounts[0].getAddress(); + console.log("Owner: " + ownerAddress); + + const dao = ownerAddress; // 'todo' + const daoTreasury = ownerAddress; + const rarityFarming = ownerAddress; // 'todo' + const pixelCraft = ownerAddress; // 'todo' + const itemManagers = [ownerAddress]; // 'todo' + + const ghstTokenContract = await ethers.getContractAt( + "GHSTFacet", + ghstDiamondAddress + ); + + const gasLimit = 12300000; + let totalGasUsed = ethers.BigNumber.from("0"); + let tx; + let receipt; + + async function deployFacets(...facets: any[]) { + const instances = []; + for (let facet of facets) { + let constructorArgs = []; + if (Array.isArray(facet)) { + [facet, constructorArgs] = facet; + } + const factory = await ethers.getContractFactory(facet); + const facetInstance = await factory.deploy(...constructorArgs); + await facetInstance.deployed(); + const tx = facetInstance.deployTransaction; + const receipt = await tx.wait(); + console.log(`${facet} deploy gas used:` + strDisplay(receipt.gasUsed)); + totalGasUsed = totalGasUsed.add(receipt.gasUsed); + instances.push(facetInstance); + } + return instances; + } + let [ + bridgeFacet, + aavegotchiFacet, + aavegotchiGameFacet, + svgFacet, + itemsFacet, + itemsTransferFacet, + collateralFacet, + daoFacet, + vrfFacet, + shopFacet, + metaTransactionsFacet, + erc1155MarketplaceFacet, + erc721MarketplaceFacet, + escrowFacet, + gotchiLendingFacet, + lendingGetterAndSetterFacet, + svgViewsFacet, + wearableSetsFacet, + whitelistFacet, + peripheryFacet, + ] = await deployFacets( + "contracts/Aavegotchi/facets/BridgeFacet.sol:BridgeFacet", + "contracts/Aavegotchi/facets/AavegotchiFacet.sol:AavegotchiFacet", + "AavegotchiGameFacet", + "SvgFacet", + "contracts/Aavegotchi/facets/ItemsFacet.sol:ItemsFacet", + "ItemsTransferFacet", + "CollateralFacet", + "DAOFacet", + "VrfFacet", + "ShopFacet", + "MetaTransactionsFacet", + "ERC1155MarketplaceFacet", + "ERC721MarketplaceFacet", + "EscrowFacet", + "GotchiLendingFacet", + "LendingGetterAndSetterFacet", + "SvgViewsFacet", + "WearableSetsFacet", + "WhitelistFacet", + "PeripheryFacet" + ); + + // eslint-disable-next-line no-unused-vars + const aavegotchiDiamond = await diamond.deploy({ + diamondName: "AavegotchiDiamond", + initDiamond: "contracts/Aavegotchi/InitDiamond.sol:InitDiamond", + facets: [ + ["BridgeFacet", bridgeFacet], + ["AavegotchiFacet", aavegotchiFacet], + ["AavegotchiGameFacet", aavegotchiGameFacet], + ["SvgFacet", svgFacet], + ["ItemsFacet", itemsFacet], + ["ItemsTransferFacet", itemsTransferFacet], + ["CollateralFacet", collateralFacet], + ["DAOFacet", daoFacet], + ["VrfFacet", vrfFacet], + ["ShopFacet", shopFacet], + ["MetaTransactionsFacet", metaTransactionsFacet], + ["ERC1155MarketplaceFacet", erc1155MarketplaceFacet], + ["ERC721MarketplaceFacet", erc721MarketplaceFacet], + ["EscrowFacet", escrowFacet], + ["GotchiLendingFacet", gotchiLendingFacet], + ["LendingGetterAndSetterFacet", lendingGetterAndSetterFacet], + ["SvgViewsFacet", svgViewsFacet], + ["WearableSetsFacet", wearableSetsFacet], + ["WhitelistFacet", whitelistFacet], + ["PeripheryFacet", peripheryFacet], + ], + owner: ownerAddress, + args: [ + [ + dao, + daoTreasury, + rarityFarming, + pixelCraft, + ghstDiamondAddress, + keyHash, + fee, + vrfCoordinator, + linkAddress, + childChainManager, + name, + symbol, + ], + ], + }); + console.log("Aavegotchi diamond address:" + aavegotchiDiamond.address); + + tx = aavegotchiDiamond.deployTransaction; + receipt = await tx.wait(); + console.log( + "Aavegotchi diamond deploy gas used:" + strDisplay(receipt.gasUsed) + ); + totalGasUsed = totalGasUsed.add(receipt.gasUsed); + + // get facets + daoFacet = await ethers.getContractAt("DAOFacet", aavegotchiDiamond.address); + aavegotchiGameFacet = await ethers.getContractAt( + "AavegotchiGameFacet", + aavegotchiDiamond.address + ); + erc1155MarketplaceFacet = await ethers.getContractAt( + "ERC1155MarketplaceFacet", + aavegotchiDiamond.address + ); + erc721MarketplaceFacet = await ethers.getContractAt( + "ERC721MarketplaceFacet", + aavegotchiDiamond.address + ); + peripheryFacet = await ethers.getContractAt( + "PeripheryFacet", + aavegotchiDiamond.address + ); + svgFacet = await ethers.getContractAt("SvgFacet", aavegotchiDiamond.address); + + // add item managers + console.log("Adding item managers"); + tx = await daoFacet.addItemManagers(itemManagers, { gasLimit: gasLimit }); + console.log("Adding item managers tx:", tx.hash); + receipt = await tx.wait(); + if (!receipt.status) { + throw Error(`Adding item manager failed: ${tx.hash}`); + } + + // create new haunt and upload payloads + let initialHauntSize = "10000"; + let portalPrice = ethers.utils.parseEther("100"); + tx = await daoFacet.createHaunt(initialHauntSize, portalPrice, "0x000000", { + gasLimit: gasLimit, + }); + receipt = await tx.wait(); + console.log("Haunt created:" + strDisplay(receipt.gasUsed)); + totalGasUsed = totalGasUsed.add(receipt.gasUsed); + + // add collateral info for haunt + console.log("Adding Collateral Types"); + const { getCollaterals } = require("./testCollateralTypes.js"); + tx = await daoFacet.addCollateralTypes( + 1, + getCollaterals(hre.network.name, ghstDiamondAddress), + { gasLimit: gasLimit } + ); + receipt = await tx.wait(); + console.log( + "Adding Collateral Types gas used::" + strDisplay(receipt.gasUsed) + ); + totalGasUsed = totalGasUsed.add(receipt.gasUsed); + + // deploy wearable diamond and set to aavegotchi diamond + const wearableDiamondAddress = await deployAndUpgradeWearableDiamond( + "0x38d67a8cb93ed3795764ec2ecf8ea284da329936", + "0x613d34492e7f105c74b7923648653a1e57e5a852", + "0x1709d0d0e696d64bce8add21da8f61f7a641dfaa", + aavegotchiDiamond.address + ); + tx = await peripheryFacet.setPeriphery(wearableDiamondAddress); + receipt = await tx.wait(); + if (!receipt.status) { + throw Error(`Error:: ${tx.hash}`); + } + console.log( + "Setting wearable diamond gas used::" + strDisplay(receipt.gasUsed) + ); + totalGasUsed = totalGasUsed.add(receipt.gasUsed); + + // add item types + console.log("Adding Item Types"); + const itemTypes = getAllItemTypes(allItemTypes, hre.ethers); + + let step = 20; + let sliceStep = itemTypes.length / step; + for (let i = 0; i < step; i++) { + tx = await daoFacet.addItemTypes( + itemTypes.slice(sliceStep * i, sliceStep * (i + 1)), + { gasLimit: gasLimit } + ); + receipt = await tx.wait(); + if (!receipt.status) { + throw Error(`Error:: ${tx.hash}`); + } + console.log( + `Adding Item Types (${i + 1} / ${step}) gas used:: ${strDisplay( + receipt.gasUsed + )}` + ); + totalGasUsed = totalGasUsed.add(receipt.gasUsed); + } + + // add wearable types sets + console.log("Adding Wearable Sets"); + step = 2; + sliceStep = wearableSets.length / step; + for (let i = 0; i < step; i++) { + tx = await daoFacet.addWearableSets( + wearableSets.slice(sliceStep * i, sliceStep * (i + 1)), + { gasLimit: gasLimit } + ); + receipt = await tx.wait(); + if (!receipt.status) { + throw Error(`Error:: ${tx.hash}`); + } + console.log( + `Adding Wearable Sets (${i + 1} / ${step}) gas used:: ${strDisplay( + receipt.gasUsed + )}` + ); + totalGasUsed = totalGasUsed.add(receipt.gasUsed); + } + + const { sleeves, wearables } = getWearables(); + + const svgsArray: string[] = wearables; + const sleeveSvgsArray: SleeveObject[] = sleeves; + + console.log("Upload SVGs"); + await uploadSvgs(svgFacet, svgsArray, "wearables", hre.ethers); + + console.log("Uploading Sleeves"); + await uploadSvgs( + svgFacet, + sleeveSvgsArray.map((value) => value.svg), + "sleeves", + hre.ethers + ); + console.log("Upload Done"); + + interface SleeveInput { + sleeveId: BigNumberish; + wearableId: BigNumberish; + } + let sleevesSvgId: number = 0; // TODO + let sleevesInput: SleeveInput[] = []; + for (const sleeve of sleeveSvgsArray) { + sleevesInput.push({ + sleeveId: sleevesSvgId, + wearableId: sleeve.id, + }); + sleevesSvgId++; + } + + console.log("Associating sleeves svgs with body wearable svgs."); + tx = await svgFacet.setSleeves(sleevesInput); + receipt = await tx.wait(); + if (!receipt.status) { + throw Error(`Error:: ${tx.hash}`); + } + console.log("Sleeves associating gas used::" + strDisplay(receipt.gasUsed)); + totalGasUsed = totalGasUsed.add(receipt.gasUsed); + + // console.log(`Mint prize items to target address: ${ownerAddress}`); + // const itemIds: number[] = itemTypes.map((value) => + // Number(value.svgId) + // ); + // const quantities: BigNumberish[] = itemTypes.map((value) => + // Number(value.maxQuantity) + // ); + // console.log("final quantities:", itemIds, quantities); + // tx = await daoFacet.mintItems(ownerAddress, itemIds, quantities); + // console.log("tx hash:", tx.hash); + // receipt = await tx.wait(); + // if (!receipt.status) { + // throw Error(`Error:: ${tx.hash}`); + // } + // console.log("Prize items minted:", tx.hash); + + // forge + let forgeDiamondAddress = await deployAndUpgradeForgeDiamond(); + await setForgeProperties(forgeDiamondAddress); + tx = await daoFacet.setForge(forgeDiamondAddress, { gasLimit: gasLimit }); + receipt = await tx.wait(); + console.log("Forge diamond set:" + strDisplay(receipt.gasUsed)); + totalGasUsed = totalGasUsed.add(receipt.gasUsed); + + // add erc721 and 1155 categories + console.log("Adding ERC721 categories"); + const erc721Categories = [ + { + erc721TokenAddress: realmDiamondAddress, + category: 4, + }, + { + erc721TokenAddress: fakeGotchiArtDiamondAddress, + category: 5, + }, + ]; + tx = await erc721MarketplaceFacet.setERC721Categories(erc721Categories, { + gasLimit: gasLimit, + }); + receipt = await tx.wait(); + if (!receipt.status) { + throw Error(`Error:: ${tx.hash}`); + } + console.log( + "Adding ERC721 categories gas used::" + strDisplay(receipt.gasUsed) + ); + totalGasUsed = totalGasUsed.add(receipt.gasUsed); + + console.log("Adding ERC1155 categories"); + const erc1155Categories = []; + for (let i = 0; i < 6; i++) { + erc1155Categories.push({ + erc1155TokenAddress: ghstStakingDiamondAddress, + erc1155TypeId: i, + category: 3, + }); + } + [ + 1, 141, 142, 143, 144, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, + ].forEach((id) => { + erc1155Categories.push({ + erc1155TokenAddress: installationDiamondAddress, + erc1155TypeId: id, + category: 4, + }); + }); + Array.from({ length: 31 }, (_, index) => index + 1).forEach((id) => { + erc1155Categories.push({ + erc1155TokenAddress: tileDiamondAddress, + erc1155TypeId: id, + category: 5, + }); + }); + erc1155Categories.push({ + erc1155TokenAddress: fakeGotchiCardDiamondAddress, + erc1155TypeId: 0, + category: 6, + }); + + const offset = 1_000_000_000; + const alloyCategory = 7; + const geodesCategory = 9; + const essenceCategory = 10; + const coresCategory = 11; + const alloyIds = [offset]; + const essenceIds = [offset + 1]; + const geodeIds = []; //[offset + 2, offset +3, offset+4, offset+5, offset+6, offset+7]; + for (let i = offset + 2; i < offset + 8; i++) { + geodeIds.push(i); + } + const coreIds = []; + for (let i = offset + 8; i < offset + 44; i++) { + coreIds.push(i); + } + const forgeFinalArray = [ + [alloyCategory, alloyIds], + [geodesCategory, geodeIds], + [essenceCategory, essenceIds], + [coresCategory, coreIds], + ]; + forgeFinalArray.forEach((el) => { + const category = el[0]; + const toAdd = el[1] as number[]; + + for (let index = 0; index < toAdd.length; index++) { + erc1155Categories.push({ + erc1155TokenAddress: forgeDiamondAddress, + erc1155TypeId: toAdd[index], + category: category, + }); + } + }); + + tx = await erc1155MarketplaceFacet.setERC1155Categories(erc1155Categories, { + gasLimit: gasLimit, + }); + receipt = await tx.wait(); + if (!receipt.status) { + throw Error(`Error:: ${tx.hash}`); + } + console.log( + "Adding ERC1155 categories gas used::" + strDisplay(receipt.gasUsed) + ); + totalGasUsed = totalGasUsed.add(receipt.gasUsed); + + // set realm address + tx = await aavegotchiGameFacet.setRealmAddress(realmDiamondAddress, { + gasLimit: gasLimit, + }); + receipt = await tx.wait(); + console.log("Realm diamond set:" + strDisplay(receipt.gasUsed)); + totalGasUsed = totalGasUsed.add(receipt.gasUsed); + + // TODO: allow revenue tokens? + + // // if (hre.network.name === 'mumbai') { + // // transfer ownership + // const newOwner = '0x94cb5C277FCC64C274Bd30847f0821077B231022' + // console.log('Transferring ownership of diamond: ' + aavegotchiDiamond.address) + // const diamond = await ethers.getContractAt('OwnershipFacet', aavegotchiDiamond.address) + // const tx = await diamond.transferOwnership(newOwner) + // console.log('Transaction hash: ' + tx.hash) + // receipt = await tx.wait() + // console.log('Transfer Transaction complete') + // console.log('Gas used:' + strDisplay(receipt.gasUsed)) + // totalGasUsed = totalGasUsed.add(receipt.gasUsed) + // // } + + console.log("Total gas used: " + strDisplay(totalGasUsed)); +} + +// We recommend this pattern to be able to use async/await everywhere +// and properly handle errors. +if (require.main === module) { + main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error); + process.exit(1); + }); +} + +exports.deployProject = main; diff --git a/scripts/itemTypeHelpers.ts b/scripts/itemTypeHelpers.ts index 3c3caead1..15b9ce3d0 100644 --- a/scripts/itemTypeHelpers.ts +++ b/scripts/itemTypeHelpers.ts @@ -82,12 +82,16 @@ export interface ItemTypeInputNew { svgId: BigNumberish; minLevel: BigNumberish; canBeTransferred: boolean; - rarityLevel: rarityLevel; + rarityLevel?: rarityLevel; setId: BigNumberish[]; author: string; + x?: number; + y?: number; + width?: number; + height?: number; dimensions: Dimensions; allowedCollaterals: BigNumberish[]; - ghstPrice: BigNumberish | BigNumberish; + ghstPrice: BigNumberish; traitModifiers: [ BigNumberish, BigNumberish, @@ -102,8 +106,8 @@ export interface ItemTypeInputNew { kinshipBonus: BigNumberish; rarityScoreModifier?: BigNumberish; canPurchaseWithGhst: boolean; - totalQuantity?: number; - maxQuantity?: number; + totalQuantity?: BigNumberish; + maxQuantity?: BigNumberish; } export interface ItemTypeOutput { @@ -118,7 +122,7 @@ export interface ItemTypeOutput { author: string; dimensions: Dimensions; allowedCollaterals: BigNumberish[]; - ghstPrice: BigNumberish | BigNumberish; + ghstPrice: BigNumberish; traitModifiers: [ BigNumberish, BigNumberish, @@ -437,15 +441,45 @@ export function getItemTypes( name: itemType.name.trim(), //Trim the name to remove empty spaces }; - const reducer = (prev: BigNumberish, cur: BigNumberish) => - Number(prev) + Math.abs(Number(cur)); - let traitBoosters = itemType.traitModifiers.reduce(reducer, 0); + // const reducer = (prev: BigNumberish, cur: BigNumberish) => + // Number(prev) + Math.abs(Number(cur)); + // let traitBoosters = itemType.traitModifiers.reduce(reducer, 0); + // if (itemType.category !== 1) { + // if (traitBoosters !== rarityLevelToTraitBoosters(itemType.rarityLevel)) { + // throw Error(`Trait Booster for ${itemType.name} does not match rarity`); + // } + // } - if (itemType.category !== 1) { - if (traitBoosters !== rarityLevelToTraitBoosters(itemType.rarityLevel)) { - throw Error(`Trait Booster for ${itemType.name} does not match rarity`); - } + if (!Array.isArray(itemType.allowedCollaterals)) { + throw Error("Is not array."); } + result.push(itemTypeOut); + } + return result; +} + +export function getAllItemTypes( + itemTypes: ItemTypeInputNew[], + ethers: any +): ItemTypeOutput[] { + const result = []; + for (const itemType of itemTypes) { + const maxQuantity = itemType.maxQuantity + ? Number(itemType.maxQuantity) + : rarityLevelToMaxQuantity(itemType.rarityLevel); + const ghstPrice = itemType.ghstPrice + ? itemType.ghstPrice.toString() + : rarityLevelToGhstPrice(itemType.rarityLevel); + + let itemTypeOut: ItemTypeOutput = { + ...itemType, + slotPositions: stringToSlotPositions(itemType.slotPositions), + ghstPrice: ethers.utils.parseEther(ghstPrice), + rarityScoreModifier: calculateRarityScoreModifier(maxQuantity), + maxQuantity: maxQuantity, + totalQuantity: 0, //New items always start at 0 + name: itemType.name.trim(), //Trim the name to remove empty spaces + }; if (!Array.isArray(itemType.allowedCollaterals)) { throw Error("Is not array."); @@ -488,7 +522,9 @@ export function getBaadgeItemTypes( return result; } -function rarityLevelToGhstPrice(rarityLevel: rarityLevel): BigNumberish { +function rarityLevelToGhstPrice( + rarityLevel: rarityLevel | undefined +): BigNumberish { switch (rarityLevel) { case "common": return "5"; @@ -498,15 +534,18 @@ function rarityLevelToGhstPrice(rarityLevel: rarityLevel): BigNumberish { return "100"; case "legendary": return "300"; - case "mythical": return "2000"; case "godlike": return "10000"; + default: + return "0"; } } -function rarityLevelToMaxQuantity(rarityLevel: rarityLevel): number { +function rarityLevelToMaxQuantity( + rarityLevel: rarityLevel | undefined +): number { switch (rarityLevel) { case "common": return 1000; @@ -520,10 +559,14 @@ function rarityLevelToMaxQuantity(rarityLevel: rarityLevel): number { return 50; case "godlike": return 5; + default: + return 0; } } -export function rarityLevelToTraitBoosters(rarityLevel: rarityLevel): number { +export function rarityLevelToTraitBoosters( + rarityLevel: rarityLevel | undefined +): number { switch (rarityLevel) { case "common": return 1; @@ -537,5 +580,7 @@ export function rarityLevelToTraitBoosters(rarityLevel: rarityLevel): number { return 5; case "godlike": return 6; + default: + return 0; } } diff --git a/scripts/upgrades/forge/upgrade-deployAndUpgradeForgeDiamond.ts b/scripts/upgrades/forge/upgrade-deployAndUpgradeForgeDiamond.ts index 8217e820c..85d6de892 100644 --- a/scripts/upgrades/forge/upgrade-deployAndUpgradeForgeDiamond.ts +++ b/scripts/upgrades/forge/upgrade-deployAndUpgradeForgeDiamond.ts @@ -9,9 +9,10 @@ import { ForgeDiamond__factory } from "../../../typechain/factories/ForgeDiamond import { gasPrice, maticDiamondUpgrader } from "../../helperFunctions"; //these already deployed facets(in the aavegotchi diamond) are added to the forgeDiamond directly -const aavegotchiCutFacet = "0x4f908Fa47F10bc2254dae7c74d8B797C1749A8a6"; -const aavegotchiLoupeFacet = "0x58f64b56B1e15D8C932c51287d814EDaa8d6feb9"; -const aavegotchiOwnerShipFacet = "0xAE7DF9f59FEc446903c64f21a76d039Bc81712ef"; +// default matic network values +let aavegotchiCutFacet = "0x4f908Fa47F10bc2254dae7c74d8B797C1749A8a6"; +let aavegotchiLoupeFacet = "0x58f64b56B1e15D8C932c51287d814EDaa8d6feb9"; +let aavegotchiOwnerShipFacet = "0xAE7DF9f59FEc446903c64f21a76d039Bc81712ef"; export async function deployAndUpgradeForgeDiamond() { console.log("Deploying forge diamond"); @@ -20,7 +21,16 @@ export async function deployAndUpgradeForgeDiamond() { "ForgeDiamond" )) as ForgeDiamond__factory; - if (network.name === "tenderly") { + const testing = ["hardhat", "localhost", "mumbai"].includes(network.name); + if (testing) { + aavegotchiCutFacet = "0x38d67a8cb93ed3795764ec2ecf8ea284da329936"; + aavegotchiLoupeFacet = "0x613d34492e7f105c74b7923648653a1e57e5a852"; + aavegotchiOwnerShipFacet = "0x1709d0d0e696d64bce8add21da8f61f7a641dfaa"; + } else if (network.name === "matic") { + aavegotchiCutFacet = "0x4f908Fa47F10bc2254dae7c74d8B797C1749A8a6"; + aavegotchiLoupeFacet = "0x58f64b56B1e15D8C932c51287d814EDaa8d6feb9"; + aavegotchiOwnerShipFacet = "0xAE7DF9f59FEc446903c64f21a76d039Bc81712ef"; + } else if (network.name === "tenderly") { await ethers.provider.send("tenderly_setBalance", [ [await (await ethers.getSigners())[0].getAddress()], ethers.utils.hexValue( diff --git a/scripts/upgrades/upgrade-deployWearableDiamond.ts b/scripts/upgrades/upgrade-deployWearableDiamond.ts index d45ac5b49..542af03ea 100644 --- a/scripts/upgrades/upgrade-deployWearableDiamond.ts +++ b/scripts/upgrades/upgrade-deployWearableDiamond.ts @@ -7,6 +7,7 @@ import { import { WearableDiamond__factory } from "../../typechain/factories/WearableDiamond__factory"; import { gasPrice } from "../helperFunctions"; +import { aavegotchiDiamondAddressMatic } from "../../helpers/constants"; // const diamondUpgrader = "0x35fe3df776474a7b24b3b1ec6e745a830fdad351"; //these already deployed facets(in the aavegotchi diamond) are added to the wearableDiamond directly @@ -14,7 +15,7 @@ const aavegotchiCutFacet = "0x4f908Fa47F10bc2254dae7c74d8B797C1749A8a6"; const aavegotchiLoupeFacet = "0x58f64b56B1e15D8C932c51287d814EDaa8d6feb9"; const aavegotchiOwnerShipFacet = "0xAE7DF9f59FEc446903c64f21a76d039Bc81712ef"; -async function deployAndUpgradeWearableDiamond() { +export async function deployAndUpgradeWearableDiamond(cutFacet: string, loupeFacet: string, ownerShipFacet: string, aavegotchiDiamond: string) { console.log("Deploying wearable diamond"); // deploy Wearable Diamond const Diamond = (await ethers.getContractFactory( @@ -25,9 +26,10 @@ async function deployAndUpgradeWearableDiamond() { const diamond = await Diamond.deploy( signerAddress, - aavegotchiCutFacet, - aavegotchiLoupeFacet, - aavegotchiOwnerShipFacet, + cutFacet, + loupeFacet, + ownerShipFacet, + aavegotchiDiamond, { gasPrice: gasPrice } ); await diamond.deployed(); @@ -78,10 +80,12 @@ async function deployAndUpgradeWearableDiamond() { }; await run("deployUpgrade", args); + + return diamond.address; } if (require.main === module) { - deployAndUpgradeWearableDiamond() + deployAndUpgradeWearableDiamond(aavegotchiCutFacet, aavegotchiLoupeFacet, aavegotchiOwnerShipFacet, aavegotchiDiamondAddressMatic) .then(() => process.exit(0)) // .then(() => console.log('upgrade completed') /* process.exit(0) */) .catch((error) => { diff --git a/scripts/wearableSets.ts b/scripts/wearableSets.ts index 6e79ee1b9..03de45f0b 100644 --- a/scripts/wearableSets.ts +++ b/scripts/wearableSets.ts @@ -1154,18 +1154,17 @@ function eightBitIntArrayToUint(array: number[] | string[]) { return BigNumber.from("0x" + uint.join("")); } -const wearableSets = []; +const _wearableSets = []; for (const wearableSet of wearableSetArrays) { if (!Array.isArray(wearableSet.allowedCollaterals)) { console.log(wearableSet); throw Error("Is not array"); } - wearableSets.push({ + _wearableSets.push({ name: wearableSet.name, wearableIds: wearableSet.wearableIds, traitsBonuses: wearableSet.traitsBonuses, allowedCollaterals: wearableSet.allowedCollaterals, }); } - -exports.wearableSets = wearableSets; +export const wearableSets = _wearableSets; diff --git a/svgs/allWearables.ts b/svgs/allWearables.ts new file mode 100644 index 000000000..bfde73fca --- /dev/null +++ b/svgs/allWearables.ts @@ -0,0 +1,33 @@ +import { SleeveObject, ItemTypeInputNew } from "../scripts/itemTypeHelpers"; +import { + bodyWearable, + BodyWearableOutput, + wearable, +} from "../scripts/svgHelperFunctions"; +import { itemTypes } from "../data/itemTypes/itemTypes"; +import { allSleeves } from "./wearables"; + +export function getWearables() { + const wearables: string[] = []; + const sleeves: SleeveObject[] = []; + + itemTypes.forEach((itemType: ItemTypeInputNew) => { + const wearableName = itemType.name.split(" ").join(""); + + if ( + itemType.slotPositions === "body" && + allSleeves.includes(itemType.svgId) + ) { + const output: BodyWearableOutput = bodyWearable( + `${itemType.svgId}_${wearableName}`, + "svgItems" + ); + wearables.push(output.wearable); + sleeves.push(output.sleeves); + } else { + wearables.push(wearable(`${itemType.svgId}_${wearableName}`, "svgItems")); + } + }); + + return { wearables: wearables, sleeves: sleeves }; +} diff --git a/svgs/sideViewDimensions.ts b/svgs/sideViewDimensions.ts index 6d722d0b0..289025818 100644 --- a/svgs/sideViewDimensions.ts +++ b/svgs/sideViewDimensions.ts @@ -3,7 +3,7 @@ import { SideDimensions, Dimensions } from "../scripts/itemTypeHelpers"; export const sideViewDimensions1: SideDimensions[] = [ { itemId: 0, - name: "The Void", + name: "Void", side: "none", dimensions: { x: 0, y: 0, width: 0, height: 0 }, }, diff --git a/svgs/svgItems/163_szn1rnd1top10rarity.svg b/svgs/svgItems/163_RarityFarmingSZN1Rnd1Top10Rarity.svg similarity index 100% rename from svgs/svgItems/163_szn1rnd1top10rarity.svg rename to svgs/svgItems/163_RarityFarmingSZN1Rnd1Top10Rarity.svg diff --git a/svgs/svgItems/164_szn1rnd1top10kinship.svg b/svgs/svgItems/164_RarityFarmingSZN1Rnd1Top10Kinship.svg similarity index 100% rename from svgs/svgItems/164_szn1rnd1top10kinship.svg rename to svgs/svgItems/164_RarityFarmingSZN1Rnd1Top10Kinship.svg diff --git a/svgs/svgItems/165_szn1rnd1top10xp.svg b/svgs/svgItems/165_RarityFarmingSZN1Rnd1Top10XP.svg similarity index 100% rename from svgs/svgItems/165_szn1rnd1top10xp.svg rename to svgs/svgItems/165_RarityFarmingSZN1Rnd1Top10XP.svg diff --git a/svgs/svgItems/166_szn1rnd1top100rarity.svg b/svgs/svgItems/166_RarityFarmingSZN1Rnd1Top100Rarity.svg similarity index 100% rename from svgs/svgItems/166_szn1rnd1top100rarity.svg rename to svgs/svgItems/166_RarityFarmingSZN1Rnd1Top100Rarity.svg diff --git a/svgs/svgItems/167_szn1rnd1top100kinship.svg b/svgs/svgItems/167_RarityFarmingSZN1Rnd1Top100Kinship.svg similarity index 100% rename from svgs/svgItems/167_szn1rnd1top100kinship.svg rename to svgs/svgItems/167_RarityFarmingSZN1Rnd1Top100Kinship.svg diff --git a/svgs/svgItems/168_szn1rnd1top100xp.svg b/svgs/svgItems/168_RarityFarmingSZN1Rnd1Top100XP.svg similarity index 100% rename from svgs/svgItems/168_szn1rnd1top100xp.svg rename to svgs/svgItems/168_RarityFarmingSZN1Rnd1Top100XP.svg diff --git a/svgs/svgItems/169_szn1rnd2top10rarity.svg b/svgs/svgItems/169_RarityFarmingSZN1Rnd2Top10Rarity.svg similarity index 100% rename from svgs/svgItems/169_szn1rnd2top10rarity.svg rename to svgs/svgItems/169_RarityFarmingSZN1Rnd2Top10Rarity.svg diff --git a/svgs/svgItems/170_szn1rnd2top10kinship.svg b/svgs/svgItems/170_RarityFarmingSZN1Rnd2Top10Kinship.svg similarity index 100% rename from svgs/svgItems/170_szn1rnd2top10kinship.svg rename to svgs/svgItems/170_RarityFarmingSZN1Rnd2Top10Kinship.svg diff --git a/svgs/svgItems/171_szn1rnd2top10xp.svg b/svgs/svgItems/171_RarityFarmingSZN1Rnd2Top10XP.svg similarity index 100% rename from svgs/svgItems/171_szn1rnd2top10xp.svg rename to svgs/svgItems/171_RarityFarmingSZN1Rnd2Top10XP.svg diff --git a/svgs/svgItems/172_szn1rnd2top100rarity.svg b/svgs/svgItems/172_RarityFarmingSZN1Rnd2Top100Rarity.svg similarity index 100% rename from svgs/svgItems/172_szn1rnd2top100rarity.svg rename to svgs/svgItems/172_RarityFarmingSZN1Rnd2Top100Rarity.svg diff --git a/svgs/svgItems/173_szn1rnd2top100kinship.svg b/svgs/svgItems/173_RarityFarmingSZN1Rnd2Top100Kinship.svg similarity index 100% rename from svgs/svgItems/173_szn1rnd2top100kinship.svg rename to svgs/svgItems/173_RarityFarmingSZN1Rnd2Top100Kinship.svg diff --git a/svgs/svgItems/174_szn1rnd2top100xp.svg b/svgs/svgItems/174_RarityFarmingSZN1Rnd2Top100XP.svg similarity index 100% rename from svgs/svgItems/174_szn1rnd2top100xp.svg rename to svgs/svgItems/174_RarityFarmingSZN1Rnd2Top100XP.svg diff --git a/svgs/svgItems/176_szn1rnd3top10rarity.svg b/svgs/svgItems/176_RarityFarmingSZN1Rnd3Top10Rarity.svg similarity index 100% rename from svgs/svgItems/176_szn1rnd3top10rarity.svg rename to svgs/svgItems/176_RarityFarmingSZN1Rnd3Top10Rarity.svg diff --git a/svgs/svgItems/177_szn1rnd3top10kinship.svg b/svgs/svgItems/177_RarityFarmingSZN1Rnd3Top10Kinship.svg similarity index 100% rename from svgs/svgItems/177_szn1rnd3top10kinship.svg rename to svgs/svgItems/177_RarityFarmingSZN1Rnd3Top10Kinship.svg diff --git a/svgs/svgItems/178_szn1rnd3top10xp.svg b/svgs/svgItems/178_RarityFarmingSZN1Rnd3Top10XP.svg similarity index 100% rename from svgs/svgItems/178_szn1rnd3top10xp.svg rename to svgs/svgItems/178_RarityFarmingSZN1Rnd3Top10XP.svg diff --git a/svgs/svgItems/179_szn1rnd3top100rarity.svg b/svgs/svgItems/179_RarityFarmingSZN1Rnd3Top100Rarity.svg similarity index 100% rename from svgs/svgItems/179_szn1rnd3top100rarity.svg rename to svgs/svgItems/179_RarityFarmingSZN1Rnd3Top100Rarity.svg diff --git a/svgs/svgItems/180_szn1rnd3top100kinship.svg b/svgs/svgItems/180_RarityFarmingSZN1Rnd3Top100Kinship.svg similarity index 100% rename from svgs/svgItems/180_szn1rnd3top100kinship.svg rename to svgs/svgItems/180_RarityFarmingSZN1Rnd3Top100Kinship.svg diff --git a/svgs/svgItems/181_szn1rnd3top100xp.svg b/svgs/svgItems/181_RarityFarmingSZN1Rnd3Top100XP.svg similarity index 100% rename from svgs/svgItems/181_szn1rnd3top100xp.svg rename to svgs/svgItems/181_RarityFarmingSZN1Rnd3Top100XP.svg diff --git a/svgs/svgItems/182_szn1rnd4top10rarity.svg b/svgs/svgItems/182_RarityFarmingSZN1Rnd4Top10Rarity.svg similarity index 100% rename from svgs/svgItems/182_szn1rnd4top10rarity.svg rename to svgs/svgItems/182_RarityFarmingSZN1Rnd4Top10Rarity.svg diff --git a/svgs/svgItems/183_szn1rnd4top10kinship.svg b/svgs/svgItems/183_RarityFarmingSZN1Rnd4Top10Kinship.svg similarity index 100% rename from svgs/svgItems/183_szn1rnd4top10kinship.svg rename to svgs/svgItems/183_RarityFarmingSZN1Rnd4Top10Kinship.svg diff --git a/svgs/svgItems/184_szn1rnd4top10xp.svg b/svgs/svgItems/184_RarityFarmingSZN1Rnd4Top10XP.svg similarity index 100% rename from svgs/svgItems/184_szn1rnd4top10xp.svg rename to svgs/svgItems/184_RarityFarmingSZN1Rnd4Top10XP.svg diff --git a/svgs/svgItems/185_szn1rnd4top100rarity.svg b/svgs/svgItems/185_RarityFarmingSZN1Rnd4Top100Rarity.svg similarity index 100% rename from svgs/svgItems/185_szn1rnd4top100rarity.svg rename to svgs/svgItems/185_RarityFarmingSZN1Rnd4Top100Rarity.svg diff --git a/svgs/svgItems/186_szn1rnd4top100kinship.svg b/svgs/svgItems/186_RarityFarmingSZN1Rnd4Top100Kinship.svg similarity index 100% rename from svgs/svgItems/186_szn1rnd4top100kinship.svg rename to svgs/svgItems/186_RarityFarmingSZN1Rnd4Top100Kinship.svg diff --git a/svgs/svgItems/187_szn1rnd4top100xp.svg b/svgs/svgItems/187_RarityFarmingSZN1Rnd4Top100XP.svg similarity index 100% rename from svgs/svgItems/187_szn1rnd4top100xp.svg rename to svgs/svgItems/187_RarityFarmingSZN1Rnd4Top100XP.svg diff --git a/svgs/svgItems/188_szn1finals1stPlaceRarity.svg b/svgs/svgItems/188_RarityFarmingSZN1finals1stPlaceRarity.svg similarity index 100% rename from svgs/svgItems/188_szn1finals1stPlaceRarity.svg rename to svgs/svgItems/188_RarityFarmingSZN1finals1stPlaceRarity.svg diff --git a/svgs/svgItems/189_szn1finals1stPlaceKinship.svg b/svgs/svgItems/189_RarityFarmingSZN1finals1stPlaceKinship.svg similarity index 100% rename from svgs/svgItems/189_szn1finals1stPlaceKinship.svg rename to svgs/svgItems/189_RarityFarmingSZN1finals1stPlaceKinship.svg diff --git a/svgs/svgItems/190_szn1finals1stPlaceXP.svg b/svgs/svgItems/190_RarityFarmingSZN1finals1stPlaceXP.svg similarity index 100% rename from svgs/svgItems/190_szn1finals1stPlaceXP.svg rename to svgs/svgItems/190_RarityFarmingSZN1finals1stPlaceXP.svg diff --git a/svgs/svgItems/191_szn1finals2ndPlaceRarity.svg b/svgs/svgItems/191_RarityFarmingSZN1finals2ndPlaceRarity.svg similarity index 100% rename from svgs/svgItems/191_szn1finals2ndPlaceRarity.svg rename to svgs/svgItems/191_RarityFarmingSZN1finals2ndPlaceRarity.svg diff --git a/svgs/svgItems/192_szn1finals2ndPlaceKinship.svg b/svgs/svgItems/192_RarityFarmingSZN1finals2ndPlaceKinship.svg similarity index 100% rename from svgs/svgItems/192_szn1finals2ndPlaceKinship.svg rename to svgs/svgItems/192_RarityFarmingSZN1finals2ndPlaceKinship.svg diff --git a/svgs/svgItems/193_szn1finals2ndPlaceXP.svg b/svgs/svgItems/193_RarityFarmingSZN1finals2ndPlaceXP.svg similarity index 100% rename from svgs/svgItems/193_szn1finals2ndPlaceXP.svg rename to svgs/svgItems/193_RarityFarmingSZN1finals2ndPlaceXP.svg diff --git a/svgs/svgItems/194_szn1finals3rdPlaceRarity.svg b/svgs/svgItems/194_RarityFarmingSZN1finals3rdPlaceRarity.svg similarity index 100% rename from svgs/svgItems/194_szn1finals3rdPlaceRarity.svg rename to svgs/svgItems/194_RarityFarmingSZN1finals3rdPlaceRarity.svg diff --git a/svgs/svgItems/195_szn1finals3rdPlaceKinship.svg b/svgs/svgItems/195_RarityFarmingSZN1finals3rdPlaceKinship.svg similarity index 100% rename from svgs/svgItems/195_szn1finals3rdPlaceKinship.svg rename to svgs/svgItems/195_RarityFarmingSZN1finals3rdPlaceKinship.svg diff --git a/svgs/svgItems/196_szn1finals3rdPlaceXP.svg b/svgs/svgItems/196_RarityFarmingSZN1finals3rdPlaceXP.svg similarity index 100% rename from svgs/svgItems/196_szn1finals3rdPlaceXP.svg rename to svgs/svgItems/196_RarityFarmingSZN1finals3rdPlaceXP.svg diff --git a/svgs/svgItems/197_szn1plaayer.svg b/svgs/svgItems/197_RarityFarmingSZN1plaayer.svg similarity index 100% rename from svgs/svgItems/197_szn1plaayer.svg rename to svgs/svgItems/197_RarityFarmingSZN1plaayer.svg diff --git a/svgs/svgItems/202_CyberpunkVR.svg b/svgs/svgItems/202_CyberpunkVR.svg new file mode 100644 index 000000000..5d0332c63 --- /dev/null +++ b/svgs/svgItems/202_CyberpunkVR.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/svgs/svgItems/212_1337LapTop.svg b/svgs/svgItems/212_1337LapTop.svg new file mode 100644 index 000000000..b5fbbcd79 --- /dev/null +++ b/svgs/svgItems/212_1337LapTop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/svgs/svgItems/212_1337LapTopBack.svg b/svgs/svgItems/212_1337LapTopBack.svg new file mode 100644 index 000000000..3668f0fab --- /dev/null +++ b/svgs/svgItems/212_1337LapTopBack.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/svgs/svgItems/212_1337LapTopLeft.svg b/svgs/svgItems/212_1337LapTopLeft.svg new file mode 100644 index 000000000..46b7b5ac5 --- /dev/null +++ b/svgs/svgItems/212_1337LapTopLeft.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/svgs/svgItems/212_1337LapTopRight.svg b/svgs/svgItems/212_1337LapTopRight.svg new file mode 100644 index 000000000..60069b285 --- /dev/null +++ b/svgs/svgItems/212_1337LapTopRight.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/svgs/svgItems/248_UpOnlyShirtLeft.svg b/svgs/svgItems/248_UpOnlyShirtLeft.svg new file mode 100644 index 000000000..a704db833 --- /dev/null +++ b/svgs/svgItems/248_UpOnlyShirtLeft.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/svgs/svgItems/248_UpOnlyShirtLeftUp.svg b/svgs/svgItems/248_UpOnlyShirtLeftUp.svg new file mode 100644 index 000000000..c9e5b7fce --- /dev/null +++ b/svgs/svgItems/248_UpOnlyShirtLeftUp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/svgs/svgItems/248_UpOnlyShirtRight.svg b/svgs/svgItems/248_UpOnlyShirtRight.svg new file mode 100644 index 000000000..c697baef8 --- /dev/null +++ b/svgs/svgItems/248_UpOnlyShirtRight.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/svgs/svgItems/248_UpOnlyShirtRightUp.svg b/svgs/svgItems/248_UpOnlyShirtRightUp.svg new file mode 100644 index 000000000..1c3eed923 --- /dev/null +++ b/svgs/svgItems/248_UpOnlyShirtRightUp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/svgs/svgItems/249_CoinGeckoEyes.svg b/svgs/svgItems/249_CoinGeckoEyes.svg new file mode 100644 index 000000000..7908e0725 --- /dev/null +++ b/svgs/svgItems/249_CoinGeckoEyes.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/svgs/svgItems/250_CoinGeckoTeeLeft.svg b/svgs/svgItems/250_CoinGeckoTeeLeft.svg new file mode 100644 index 000000000..ab7f19def --- /dev/null +++ b/svgs/svgItems/250_CoinGeckoTeeLeft.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/svgs/svgItems/250_CoinGeckoTeeLeftUp.svg b/svgs/svgItems/250_CoinGeckoTeeLeftUp.svg new file mode 100644 index 000000000..ac282cd87 --- /dev/null +++ b/svgs/svgItems/250_CoinGeckoTeeLeftUp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/svgs/svgItems/250_CoinGeckoTeeRight.svg b/svgs/svgItems/250_CoinGeckoTeeRight.svg new file mode 100644 index 000000000..ce2e118cd --- /dev/null +++ b/svgs/svgItems/250_CoinGeckoTeeRight.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/svgs/svgItems/250_CoinGeckoTeeRightUp.svg b/svgs/svgItems/250_CoinGeckoTeeRightUp.svg new file mode 100644 index 000000000..5afe3c4c3 --- /dev/null +++ b/svgs/svgItems/250_CoinGeckoTeeRightUp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/svgs/svgItems/253_AastronautSuitLeft.svg b/svgs/svgItems/253_AastronautSuitLeft.svg new file mode 100644 index 000000000..0927f2f16 --- /dev/null +++ b/svgs/svgItems/253_AastronautSuitLeft.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/svgs/svgItems/253_AastronautSuitLeftUp.svg b/svgs/svgItems/253_AastronautSuitLeftUp.svg new file mode 100644 index 000000000..2dce8a5d0 --- /dev/null +++ b/svgs/svgItems/253_AastronautSuitLeftUp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/svgs/svgItems/253_AastronautSuitRight.svg b/svgs/svgItems/253_AastronautSuitRight.svg new file mode 100644 index 000000000..6146884dd --- /dev/null +++ b/svgs/svgItems/253_AastronautSuitRight.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/svgs/svgItems/253_AastronautSuitRightUp.svg b/svgs/svgItems/253_AastronautSuitRightUp.svg new file mode 100644 index 000000000..66b888637 --- /dev/null +++ b/svgs/svgItems/253_AastronautSuitRightUp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/svgs/svgItems/256_LilBubbleSpaceSuitLeft.svg b/svgs/svgItems/256_LilBubbleSpaceSuitLeft.svg new file mode 100644 index 000000000..f6b9a1506 --- /dev/null +++ b/svgs/svgItems/256_LilBubbleSpaceSuitLeft.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/svgs/svgItems/256_LilBubbleSpaceSuitLeftUp.svg b/svgs/svgItems/256_LilBubbleSpaceSuitLeftUp.svg new file mode 100644 index 000000000..071bb7006 --- /dev/null +++ b/svgs/svgItems/256_LilBubbleSpaceSuitLeftUp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/svgs/svgItems/256_LilBubbleSpaceSuitRight.svg b/svgs/svgItems/256_LilBubbleSpaceSuitRight.svg new file mode 100644 index 000000000..df53ac2da --- /dev/null +++ b/svgs/svgItems/256_LilBubbleSpaceSuitRight.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/svgs/svgItems/256_LilBubbleSpaceSuitRightUp.svg b/svgs/svgItems/256_LilBubbleSpaceSuitRightUp.svg new file mode 100644 index 000000000..95f9c0cae --- /dev/null +++ b/svgs/svgItems/256_LilBubbleSpaceSuitRightUp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/svgs/svgItems/259_BushyEyebrows.svg b/svgs/svgItems/259_BushyEyebrows.svg new file mode 100644 index 000000000..b55ee05c3 --- /dev/null +++ b/svgs/svgItems/259_BushyEyebrows.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/svgs/svgItems/260_AncientBeard.svg b/svgs/svgItems/260_AncientBeard.svg new file mode 100644 index 000000000..266aedf6a --- /dev/null +++ b/svgs/svgItems/260_AncientBeard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/svgs/svgItems/262_RadarEyes.svg b/svgs/svgItems/262_RadarEyes.svg new file mode 100644 index 000000000..c93918174 --- /dev/null +++ b/svgs/svgItems/262_RadarEyes.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/svgs/svgItems/264_AastronautCrewMember.svg b/svgs/svgItems/264_AastronautCrewMember.svg new file mode 100644 index 000000000..f4fdb9b0d --- /dev/null +++ b/svgs/svgItems/264_AastronautCrewMember.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/svgs/baadges/Aavegotchi-RF-SZN2-Trophy-RARITY-1ST.svg b/svgs/svgItems/265_RarityFarmingSZN21stPlaceRarity.svg similarity index 100% rename from svgs/baadges/Aavegotchi-RF-SZN2-Trophy-RARITY-1ST.svg rename to svgs/svgItems/265_RarityFarmingSZN21stPlaceRarity.svg diff --git a/svgs/baadges/Aavegotchi-RF-SZN2-Trophy-KINSHIP-1ST.svg b/svgs/svgItems/266_RarityFarmingSZN21stPlaceKinship.svg similarity index 100% rename from svgs/baadges/Aavegotchi-RF-SZN2-Trophy-KINSHIP-1ST.svg rename to svgs/svgItems/266_RarityFarmingSZN21stPlaceKinship.svg diff --git a/svgs/baadges/Aavegotchi-RF-SZN2-Trophy-XP-1ST.svg b/svgs/svgItems/267_RarityFarmingSZN21stplaceXP.svg similarity index 100% rename from svgs/baadges/Aavegotchi-RF-SZN2-Trophy-XP-1ST.svg rename to svgs/svgItems/267_RarityFarmingSZN21stplaceXP.svg diff --git a/svgs/baadges/Aavegotchi-RF-SZN2-Trophy-RARITY-2ND.svg b/svgs/svgItems/268_RarityFarmingSZN2Rarity2ndPlace.svg similarity index 100% rename from svgs/baadges/Aavegotchi-RF-SZN2-Trophy-RARITY-2ND.svg rename to svgs/svgItems/268_RarityFarmingSZN2Rarity2ndPlace.svg diff --git a/svgs/baadges/Aavegotchi-RF-SZN2-Trophy-KINSHIP-2ND.svg b/svgs/svgItems/269_RarityFarmingSZN2Kinship2ndPlace.svg similarity index 100% rename from svgs/baadges/Aavegotchi-RF-SZN2-Trophy-KINSHIP-2ND.svg rename to svgs/svgItems/269_RarityFarmingSZN2Kinship2ndPlace.svg diff --git a/svgs/baadges/Aavegotchi-RF-SZN2-Trophy-XP-2ND.svg b/svgs/svgItems/270_RarityFarmingSZN2XP2ndPlace.svg similarity index 100% rename from svgs/baadges/Aavegotchi-RF-SZN2-Trophy-XP-2ND.svg rename to svgs/svgItems/270_RarityFarmingSZN2XP2ndPlace.svg diff --git a/svgs/baadges/Aavegotchi-RF-SZN2-Trophy-RARITY-3RD.svg b/svgs/svgItems/271_RarityFarmingSZN2Rarity3rdPlace.svg similarity index 100% rename from svgs/baadges/Aavegotchi-RF-SZN2-Trophy-RARITY-3RD.svg rename to svgs/svgItems/271_RarityFarmingSZN2Rarity3rdPlace.svg diff --git a/svgs/baadges/Aavegotchi-RF-SZN2-Trophy-KINSHIP-3RD.svg b/svgs/svgItems/272_RarityFarmingSZN2Kinship3rdPlace.svg similarity index 100% rename from svgs/baadges/Aavegotchi-RF-SZN2-Trophy-KINSHIP-3RD.svg rename to svgs/svgItems/272_RarityFarmingSZN2Kinship3rdPlace.svg diff --git a/svgs/baadges/Aavegotchi-RF-SZN2-Trophy-XP-3RD.svg b/svgs/svgItems/273_RarityFarmingSZN2XP3rdPlace.svg similarity index 100% rename from svgs/baadges/Aavegotchi-RF-SZN2-Trophy-XP-3RD.svg rename to svgs/svgItems/273_RarityFarmingSZN2XP3rdPlace.svg diff --git a/svgs/baadges/Aavegotchi-RF-SZN2-Baadges-PLAAYER-RAANKED.svg b/svgs/svgItems/274_RarityFarmingSZN2Raanked.svg similarity index 100% rename from svgs/baadges/Aavegotchi-RF-SZN2-Baadges-PLAAYER-RAANKED.svg rename to svgs/svgItems/274_RarityFarmingSZN2Raanked.svg diff --git a/svgs/baadges/Aavegotchi-RF-SZN2-Baadges-ROOKIE-OF-THE-YEAR.svg b/svgs/svgItems/275_RarityFarmingSZN2ROOKIEOFTHEYEAR.svg similarity index 100% rename from svgs/baadges/Aavegotchi-RF-SZN2-Baadges-ROOKIE-OF-THE-YEAR.svg rename to svgs/svgItems/275_RarityFarmingSZN2ROOKIEOFTHEYEAR.svg diff --git a/svgs/baadges/Aavegotchi-RF-SZN2-Trophy-KINSHIP-ROOKIE-1ST.svg b/svgs/svgItems/276_RarityFarmingSZN21stPlaceRookieKinship.svg similarity index 100% rename from svgs/baadges/Aavegotchi-RF-SZN2-Trophy-KINSHIP-ROOKIE-1ST.svg rename to svgs/svgItems/276_RarityFarmingSZN21stPlaceRookieKinship.svg diff --git a/svgs/baadges/Aavegotchi-RF-SZN2-Trophy-XP-ROOKIE-1ST.svg b/svgs/svgItems/277_RarityFarmingSZN21stPlaceRookieXP.svg similarity index 100% rename from svgs/baadges/Aavegotchi-RF-SZN2-Trophy-XP-ROOKIE-1ST.svg rename to svgs/svgItems/277_RarityFarmingSZN21stPlaceRookieXP.svg diff --git a/svgs/baadges/Aavegotchi-RF-SZN2-Trophy-KINSHIP-ROOKIE-2ND.svg b/svgs/svgItems/278_RarityFarmingSZN2KinshipROOKIE2ndPlace.svg similarity index 100% rename from svgs/baadges/Aavegotchi-RF-SZN2-Trophy-KINSHIP-ROOKIE-2ND.svg rename to svgs/svgItems/278_RarityFarmingSZN2KinshipROOKIE2ndPlace.svg diff --git a/svgs/baadges/Aavegotchi-RF-SZN2-Trophy-XP-ROOKIE-2ND.svg b/svgs/svgItems/279_RarityFarmingSZN2XPROOKIE2ndPlace.svg similarity index 100% rename from svgs/baadges/Aavegotchi-RF-SZN2-Trophy-XP-ROOKIE-2ND.svg rename to svgs/svgItems/279_RarityFarmingSZN2XPROOKIE2ndPlace.svg diff --git a/svgs/baadges/Aavegotchi-RF-SZN2-Trophy-KINSHIP-ROOKIE-3RD.svg b/svgs/svgItems/280_RarityFarmingSZN2KinshipROOKIE3rdPlace.svg similarity index 100% rename from svgs/baadges/Aavegotchi-RF-SZN2-Trophy-KINSHIP-ROOKIE-3RD.svg rename to svgs/svgItems/280_RarityFarmingSZN2KinshipROOKIE3rdPlace.svg diff --git a/svgs/baadges/Aavegotchi-RF-SZN2-Trophy-XP-ROOKIE-3RD.svg b/svgs/svgItems/281_RarityFarmingSZN2XPROOKIE3rdPlace.svg similarity index 100% rename from svgs/baadges/Aavegotchi-RF-SZN2-Trophy-XP-ROOKIE-3RD.svg rename to svgs/svgItems/281_RarityFarmingSZN2XPROOKIE3rdPlace.svg diff --git a/svgs/baadges/Aavegotchi-RF-SZN2-Baadges-RARITY-T10.svg b/svgs/svgItems/282_RarityFarmingSZN2RarityTop10.svg similarity index 100% rename from svgs/baadges/Aavegotchi-RF-SZN2-Baadges-RARITY-T10.svg rename to svgs/svgItems/282_RarityFarmingSZN2RarityTop10.svg diff --git a/svgs/baadges/Aavegotchi-RF-SZN2-Baadges-KINSHIP-T10.svg b/svgs/svgItems/283_RarityFarmingSZN2KinshipTop10.svg similarity index 100% rename from svgs/baadges/Aavegotchi-RF-SZN2-Baadges-KINSHIP-T10.svg rename to svgs/svgItems/283_RarityFarmingSZN2KinshipTop10.svg diff --git a/svgs/baadges/Aavegotchi-RF-SZN2-Baadges-XP-T10.svg b/svgs/svgItems/284_RarityFarmingSZN2XPTop10.svg similarity index 100% rename from svgs/baadges/Aavegotchi-RF-SZN2-Baadges-XP-T10.svg rename to svgs/svgItems/284_RarityFarmingSZN2XPTop10.svg diff --git a/svgs/baadges/Aavegotchi-RF-SZN2-Baadges-RARITY-T100.svg b/svgs/svgItems/285_RarityFarmingSZN2RarityTop100.svg similarity index 100% rename from svgs/baadges/Aavegotchi-RF-SZN2-Baadges-RARITY-T100.svg rename to svgs/svgItems/285_RarityFarmingSZN2RarityTop100.svg diff --git a/svgs/baadges/Aavegotchi-RF-SZN2-Baadges-KINSHIP-T100.svg b/svgs/svgItems/286_RarityFarmingSZN2KinshipTop100.svg similarity index 100% rename from svgs/baadges/Aavegotchi-RF-SZN2-Baadges-KINSHIP-T100.svg rename to svgs/svgItems/286_RarityFarmingSZN2KinshipTop100.svg diff --git a/svgs/baadges/Aavegotchi-RF-SZN2-Baadges-XP-T100.svg b/svgs/svgItems/287_RarityFarmingSZN2XPTop100.svg similarity index 100% rename from svgs/baadges/Aavegotchi-RF-SZN2-Baadges-XP-T100.svg rename to svgs/svgItems/287_RarityFarmingSZN2XPTop100.svg diff --git a/svgs/baadges/Aavegotchi-RF-SZN2-Baadges-XP-ROOKIE-T10.svg b/svgs/svgItems/288_RarityFarmingSZN2XPROOKIETop10.svg similarity index 100% rename from svgs/baadges/Aavegotchi-RF-SZN2-Baadges-XP-ROOKIE-T10.svg rename to svgs/svgItems/288_RarityFarmingSZN2XPROOKIETop10.svg diff --git a/svgs/baadges/Aavegotchi-RF-SZN2-Baadges-KINSHIP-ROOKIE-T10.svg b/svgs/svgItems/289_RarityFarmingSZN2KinshipROOKIETop10.svg similarity index 100% rename from svgs/baadges/Aavegotchi-RF-SZN2-Baadges-KINSHIP-ROOKIE-T10.svg rename to svgs/svgItems/289_RarityFarmingSZN2KinshipROOKIETop10.svg diff --git a/svgs/baadges/Aavegotchi-RF-SZN2-Baadges-XP-ROOKIE-T100.svg b/svgs/svgItems/290_RarityFarmingSZN2XPROOKIETop100.svg similarity index 100% rename from svgs/baadges/Aavegotchi-RF-SZN2-Baadges-XP-ROOKIE-T100.svg rename to svgs/svgItems/290_RarityFarmingSZN2XPROOKIETop100.svg diff --git a/svgs/baadges/Aavegotchi-RF-SZN2-Baadges-KINSHIP-ROOKIE-T100.svg b/svgs/svgItems/291_RarityFarmingSZN2KinshipROOKIETop100.svg similarity index 100% rename from svgs/baadges/Aavegotchi-RF-SZN2-Baadges-KINSHIP-ROOKIE-T100.svg rename to svgs/svgItems/291_RarityFarmingSZN2KinshipROOKIETop100.svg diff --git a/svgs/sZN3Baadges/Aavegotchi-RF-SZN3-Trophy-RARITY-CHAMP.svg b/svgs/svgItems/316_RarityFarmingSZN31stPlaceRarity.svg similarity index 100% rename from svgs/sZN3Baadges/Aavegotchi-RF-SZN3-Trophy-RARITY-CHAMP.svg rename to svgs/svgItems/316_RarityFarmingSZN31stPlaceRarity.svg diff --git a/svgs/sZN3Baadges/Aavegotchi-RF-SZN3-Trophy-KINSHIP-CHAMP.svg b/svgs/svgItems/317_RarityFarmingSZN31stPlaceKinship.svg similarity index 100% rename from svgs/sZN3Baadges/Aavegotchi-RF-SZN3-Trophy-KINSHIP-CHAMP.svg rename to svgs/svgItems/317_RarityFarmingSZN31stPlaceKinship.svg diff --git a/svgs/sZN3Baadges/Aavegotchi-RF-SZN3-Trophy-XP-CHAMP.svg b/svgs/svgItems/318_RarityFarmingSZN31stPlaceXP.svg similarity index 100% rename from svgs/sZN3Baadges/Aavegotchi-RF-SZN3-Trophy-XP-CHAMP.svg rename to svgs/svgItems/318_RarityFarmingSZN31stPlaceXP.svg diff --git a/svgs/sZN3Baadges/Aavegotchi-RF-SZN3-Trophy-RARITY-2ND.svg b/svgs/svgItems/319_RarityFarmingSZN3Rarity2ndPlace.svg similarity index 100% rename from svgs/sZN3Baadges/Aavegotchi-RF-SZN3-Trophy-RARITY-2ND.svg rename to svgs/svgItems/319_RarityFarmingSZN3Rarity2ndPlace.svg diff --git a/svgs/sZN3Baadges/Aavegotchi-RF-SZN3-Trophy-KINSHIP-2ND.svg b/svgs/svgItems/320_RarityFarmingSZN3Kinship2ndPlace.svg similarity index 100% rename from svgs/sZN3Baadges/Aavegotchi-RF-SZN3-Trophy-KINSHIP-2ND.svg rename to svgs/svgItems/320_RarityFarmingSZN3Kinship2ndPlace.svg diff --git a/svgs/sZN3Baadges/Aavegotchi-RF-SZN3-Trophy-XP-2ND.svg b/svgs/svgItems/321_RarityFarmingSZN3XP2ndPlace.svg similarity index 100% rename from svgs/sZN3Baadges/Aavegotchi-RF-SZN3-Trophy-XP-2ND.svg rename to svgs/svgItems/321_RarityFarmingSZN3XP2ndPlace.svg diff --git a/svgs/sZN3Baadges/Aavegotchi-RF-SZN3-Trophy-RARITY-3RD.svg b/svgs/svgItems/322_RarityFarmingSZN3Rarity3rdPlace.svg similarity index 100% rename from svgs/sZN3Baadges/Aavegotchi-RF-SZN3-Trophy-RARITY-3RD.svg rename to svgs/svgItems/322_RarityFarmingSZN3Rarity3rdPlace.svg diff --git a/svgs/sZN3Baadges/Aavegotchi-RF-SZN3-Trophy-KINSHIP-3RD.svg b/svgs/svgItems/323_RarityFarmingSZN3Kinship3rdPlace.svg similarity index 100% rename from svgs/sZN3Baadges/Aavegotchi-RF-SZN3-Trophy-KINSHIP-3RD.svg rename to svgs/svgItems/323_RarityFarmingSZN3Kinship3rdPlace.svg diff --git a/svgs/sZN3Baadges/Aavegotchi-RF-SZN3-Trophy-XP-3RD.svg b/svgs/svgItems/324_RarityFarmingSZN3XP3rdPlace.svg similarity index 100% rename from svgs/sZN3Baadges/Aavegotchi-RF-SZN3-Trophy-XP-3RD.svg rename to svgs/svgItems/324_RarityFarmingSZN3XP3rdPlace.svg diff --git a/svgs/sZN3Baadges/Aavegotchi-RF-SZN3-Baadges-PLAAYER-RAANKED.svg b/svgs/svgItems/325_RarityFarmingSZN3Raanked.svg similarity index 100% rename from svgs/sZN3Baadges/Aavegotchi-RF-SZN3-Baadges-PLAAYER-RAANKED.svg rename to svgs/svgItems/325_RarityFarmingSZN3Raanked.svg diff --git a/svgs/sZN3Baadges/Aavegotchi-RF-SZN3-Baadges-RARITY-T10.svg b/svgs/svgItems/326_RarityFarmingSZN3RarityTop10.svg similarity index 100% rename from svgs/sZN3Baadges/Aavegotchi-RF-SZN3-Baadges-RARITY-T10.svg rename to svgs/svgItems/326_RarityFarmingSZN3RarityTop10.svg diff --git a/svgs/sZN3Baadges/Aavegotchi-RF-SZN3-Baadges-KINSHIP-T10.svg b/svgs/svgItems/327_RarityFarmingSZN3KinshipTop10.svg similarity index 100% rename from svgs/sZN3Baadges/Aavegotchi-RF-SZN3-Baadges-KINSHIP-T10.svg rename to svgs/svgItems/327_RarityFarmingSZN3KinshipTop10.svg diff --git a/svgs/sZN3Baadges/Aavegotchi-RF-SZN3-Baadges-XP-T10.svg b/svgs/svgItems/328_RarityFarmingSZN3XPTop10.svg similarity index 100% rename from svgs/sZN3Baadges/Aavegotchi-RF-SZN3-Baadges-XP-T10.svg rename to svgs/svgItems/328_RarityFarmingSZN3XPTop10.svg diff --git a/svgs/sZN3Baadges/Aavegotchi-RF-SZN3-Baadges-RARITY-T100.svg b/svgs/svgItems/329_RarityFarmingSZN3RarityTop100.svg similarity index 100% rename from svgs/sZN3Baadges/Aavegotchi-RF-SZN3-Baadges-RARITY-T100.svg rename to svgs/svgItems/329_RarityFarmingSZN3RarityTop100.svg diff --git a/svgs/sZN3Baadges/Aavegotchi-RF-SZN3-Baadges-KINSHIP-T100.svg b/svgs/svgItems/330_RarityFarmingSZN3KinshipTop100.svg similarity index 100% rename from svgs/sZN3Baadges/Aavegotchi-RF-SZN3-Baadges-KINSHIP-T100.svg rename to svgs/svgItems/330_RarityFarmingSZN3KinshipTop100.svg diff --git a/svgs/sZN3Baadges/Aavegotchi-RF-SZN3-Baadges-XP-T100.svg b/svgs/svgItems/331_RarityFarmingSZN3XPTop100.svg similarity index 100% rename from svgs/sZN3Baadges/Aavegotchi-RF-SZN3-Baadges-XP-T100.svg rename to svgs/svgItems/331_RarityFarmingSZN3XPTop100.svg diff --git a/svgs/pumpkinBadge/GotchiSmaash2022-Baadge-Final-Pixelart.svg b/svgs/svgItems/332_GotchiSmaash2022HaalloweenParty.svg similarity index 100% rename from svgs/pumpkinBadge/GotchiSmaash2022-Baadge-Final-Pixelart.svg rename to svgs/svgItems/332_GotchiSmaash2022HaalloweenParty.svg diff --git a/svgs/baadges/Aavegotchi-TOOORKEY-CHAASE-Badge.svg b/svgs/svgItems/333_TOOORKEYCHAASE2022.svg similarity index 100% rename from svgs/baadges/Aavegotchi-TOOORKEY-CHAASE-Badge.svg rename to svgs/svgItems/333_TOOORKEYCHAASE2022.svg diff --git a/svgs/sZN4Baadges/Aavegotchi-RF-SZN4-TROPHY-CHAMP-RARITY.svg b/svgs/svgItems/334_RarityFarmingSZN41stPlaceRarity.svg similarity index 100% rename from svgs/sZN4Baadges/Aavegotchi-RF-SZN4-TROPHY-CHAMP-RARITY.svg rename to svgs/svgItems/334_RarityFarmingSZN41stPlaceRarity.svg diff --git a/svgs/sZN4Baadges/Aavegotchi-RF-SZN4-TROPHY-CHAMP-KINSHIP.svg b/svgs/svgItems/335_RarityFarmingSZN41stPlaceKinship.svg similarity index 100% rename from svgs/sZN4Baadges/Aavegotchi-RF-SZN4-TROPHY-CHAMP-KINSHIP.svg rename to svgs/svgItems/335_RarityFarmingSZN41stPlaceKinship.svg diff --git a/svgs/sZN4Baadges/Aavegotchi-RF-SZN4-TROPHY-CHAMP-XP.svg b/svgs/svgItems/336_RarityFarmingSZN41stPlaceXP.svg similarity index 100% rename from svgs/sZN4Baadges/Aavegotchi-RF-SZN4-TROPHY-CHAMP-XP.svg rename to svgs/svgItems/336_RarityFarmingSZN41stPlaceXP.svg diff --git a/svgs/sZN4Baadges/Aavegotchi-RF-SZN4-TROPHY-2ND-RARITY.svg b/svgs/svgItems/337_RarityFarmingSZN4Rarity2ndPlace.svg similarity index 100% rename from svgs/sZN4Baadges/Aavegotchi-RF-SZN4-TROPHY-2ND-RARITY.svg rename to svgs/svgItems/337_RarityFarmingSZN4Rarity2ndPlace.svg diff --git a/svgs/sZN4Baadges/Aavegotchi-RF-SZN4-TROPHY-2ND-KINSHIP.svg b/svgs/svgItems/338_RarityFarmingSZN4Kinship2ndPlace.svg similarity index 100% rename from svgs/sZN4Baadges/Aavegotchi-RF-SZN4-TROPHY-2ND-KINSHIP.svg rename to svgs/svgItems/338_RarityFarmingSZN4Kinship2ndPlace.svg diff --git a/svgs/sZN4Baadges/Aavegotchi-RF-SZN4-TROPHY-2ND-XP.svg b/svgs/svgItems/339_RarityFarmingSZN4XP2ndPlace.svg similarity index 100% rename from svgs/sZN4Baadges/Aavegotchi-RF-SZN4-TROPHY-2ND-XP.svg rename to svgs/svgItems/339_RarityFarmingSZN4XP2ndPlace.svg diff --git a/svgs/sZN4Baadges/Aavegotchi-RF-SZN4-TROPHY-3RD-RARITY.svg b/svgs/svgItems/340_RarityFarmingSZN4Rarity3rdPlace.svg similarity index 100% rename from svgs/sZN4Baadges/Aavegotchi-RF-SZN4-TROPHY-3RD-RARITY.svg rename to svgs/svgItems/340_RarityFarmingSZN4Rarity3rdPlace.svg diff --git a/svgs/sZN4Baadges/Aavegotchi-RF-SZN4-TROPHY-3RD-KINSHIP.svg b/svgs/svgItems/341_RarityFarmingSZN4Kinship3rdPlace.svg similarity index 100% rename from svgs/sZN4Baadges/Aavegotchi-RF-SZN4-TROPHY-3RD-KINSHIP.svg rename to svgs/svgItems/341_RarityFarmingSZN4Kinship3rdPlace.svg diff --git a/svgs/sZN4Baadges/Aavegotchi-RF-SZN4-TROPHY-3RD-XP.svg b/svgs/svgItems/342_RarityFarmingSZN4XP3rdPlace.svg similarity index 100% rename from svgs/sZN4Baadges/Aavegotchi-RF-SZN4-TROPHY-3RD-XP.svg rename to svgs/svgItems/342_RarityFarmingSZN4XP3rdPlace.svg diff --git a/svgs/sZN4Baadges/Aavegotchi-RF-SZN4-Baadge-RAANKED.svg b/svgs/svgItems/343_RarityFarmingSZN4Raanked.svg similarity index 100% rename from svgs/sZN4Baadges/Aavegotchi-RF-SZN4-Baadge-RAANKED.svg rename to svgs/svgItems/343_RarityFarmingSZN4Raanked.svg diff --git a/svgs/sZN4Baadges/Aavegotchi-RF-SZN4-Baadge-TOP10-RARITY.svg b/svgs/svgItems/344_RarityFarmingSZN4RarityTop10.svg similarity index 100% rename from svgs/sZN4Baadges/Aavegotchi-RF-SZN4-Baadge-TOP10-RARITY.svg rename to svgs/svgItems/344_RarityFarmingSZN4RarityTop10.svg diff --git a/svgs/sZN4Baadges/Aavegotchi-RF-SZN4-Baadge-TOP10-KINSHIP.svg b/svgs/svgItems/345_RarityFarmingSZN4KinshipTop10.svg similarity index 100% rename from svgs/sZN4Baadges/Aavegotchi-RF-SZN4-Baadge-TOP10-KINSHIP.svg rename to svgs/svgItems/345_RarityFarmingSZN4KinshipTop10.svg diff --git a/svgs/sZN4Baadges/Aavegotchi-RF-SZN4-Baadge-TOP10-XP.svg b/svgs/svgItems/346_RarityFarmingSZN4XPTop10.svg similarity index 100% rename from svgs/sZN4Baadges/Aavegotchi-RF-SZN4-Baadge-TOP10-XP.svg rename to svgs/svgItems/346_RarityFarmingSZN4XPTop10.svg diff --git a/svgs/sZN4Baadges/Aavegotchi-RF-SZN4-Baadge-TOP100-RARITY.svg b/svgs/svgItems/347_RarityFarmingSZN4RarityTop100.svg similarity index 100% rename from svgs/sZN4Baadges/Aavegotchi-RF-SZN4-Baadge-TOP100-RARITY.svg rename to svgs/svgItems/347_RarityFarmingSZN4RarityTop100.svg diff --git a/svgs/sZN4Baadges/Aavegotchi-RF-SZN4-Baadge-TOP100-KINSHIP.svg b/svgs/svgItems/348_RarityFarmingSZN4KinshipTop100.svg similarity index 100% rename from svgs/sZN4Baadges/Aavegotchi-RF-SZN4-Baadge-TOP100-KINSHIP.svg rename to svgs/svgItems/348_RarityFarmingSZN4KinshipTop100.svg diff --git a/svgs/sZN4Baadges/Aavegotchi-RF-SZN4-Baadge-TOP100-XP.svg b/svgs/svgItems/349_RarityFarmingSZN4XPTop100.svg similarity index 100% rename from svgs/sZN4Baadges/Aavegotchi-RF-SZN4-Baadge-TOP100-XP.svg rename to svgs/svgItems/349_RarityFarmingSZN4XPTop100.svg diff --git a/svgs/svgItems/raffle6/292_BrunettePonytail.svg b/svgs/svgItems/raffle6/292_BrunettePonytail.svg deleted file mode 100644 index 1a48de355..000000000 --- a/svgs/svgItems/raffle6/292_BrunettePonytail.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/292_BrunettePonytailBack.svg b/svgs/svgItems/raffle6/292_BrunettePonytailBack.svg deleted file mode 100644 index 69ddf5686..000000000 --- a/svgs/svgItems/raffle6/292_BrunettePonytailBack.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/292_BrunettePonytailLeft.svg b/svgs/svgItems/raffle6/292_BrunettePonytailLeft.svg deleted file mode 100644 index 28dcdb098..000000000 --- a/svgs/svgItems/raffle6/292_BrunettePonytailLeft.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/292_BrunettePonytailRight.svg b/svgs/svgItems/raffle6/292_BrunettePonytailRight.svg deleted file mode 100644 index 08cbe2a64..000000000 --- a/svgs/svgItems/raffle6/292_BrunettePonytailRight.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/293_LeatherTunic.svg b/svgs/svgItems/raffle6/293_LeatherTunic.svg deleted file mode 100644 index e0bbf577d..000000000 --- a/svgs/svgItems/raffle6/293_LeatherTunic.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/293_LeatherTunicBack.svg b/svgs/svgItems/raffle6/293_LeatherTunicBack.svg deleted file mode 100644 index 4e12e2953..000000000 --- a/svgs/svgItems/raffle6/293_LeatherTunicBack.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/293_LeatherTunicBackLeft.svg b/svgs/svgItems/raffle6/293_LeatherTunicBackLeft.svg deleted file mode 100644 index 6acad22cd..000000000 --- a/svgs/svgItems/raffle6/293_LeatherTunicBackLeft.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/293_LeatherTunicBackLeftUp.svg b/svgs/svgItems/raffle6/293_LeatherTunicBackLeftUp.svg deleted file mode 100644 index 8c6a90174..000000000 --- a/svgs/svgItems/raffle6/293_LeatherTunicBackLeftUp.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/293_LeatherTunicBackRight.svg b/svgs/svgItems/raffle6/293_LeatherTunicBackRight.svg deleted file mode 100644 index ae8003605..000000000 --- a/svgs/svgItems/raffle6/293_LeatherTunicBackRight.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/293_LeatherTunicBackRightUp.svg b/svgs/svgItems/raffle6/293_LeatherTunicBackRightUp.svg deleted file mode 100644 index 54b77b298..000000000 --- a/svgs/svgItems/raffle6/293_LeatherTunicBackRightUp.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/293_LeatherTunicLeft.svg b/svgs/svgItems/raffle6/293_LeatherTunicLeft.svg deleted file mode 100644 index ae8003605..000000000 --- a/svgs/svgItems/raffle6/293_LeatherTunicLeft.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/293_LeatherTunicLeftUp.svg b/svgs/svgItems/raffle6/293_LeatherTunicLeftUp.svg deleted file mode 100644 index 54b77b298..000000000 --- a/svgs/svgItems/raffle6/293_LeatherTunicLeftUp.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/293_LeatherTunicRight.svg b/svgs/svgItems/raffle6/293_LeatherTunicRight.svg deleted file mode 100644 index 6acad22cd..000000000 --- a/svgs/svgItems/raffle6/293_LeatherTunicRight.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/293_LeatherTunicRightUp.svg b/svgs/svgItems/raffle6/293_LeatherTunicRightUp.svg deleted file mode 100644 index 8c6a90174..000000000 --- a/svgs/svgItems/raffle6/293_LeatherTunicRightUp.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/293_LeatherTunicSideLeft.svg b/svgs/svgItems/raffle6/293_LeatherTunicSideLeft.svg deleted file mode 100644 index 5241cc7cb..000000000 --- a/svgs/svgItems/raffle6/293_LeatherTunicSideLeft.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/293_LeatherTunicSideLeftDown.svg b/svgs/svgItems/raffle6/293_LeatherTunicSideLeftDown.svg deleted file mode 100644 index c6e026236..000000000 --- a/svgs/svgItems/raffle6/293_LeatherTunicSideLeftDown.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/293_LeatherTunicSideLeftUp.svg b/svgs/svgItems/raffle6/293_LeatherTunicSideLeftUp.svg deleted file mode 100644 index 44b0c5bd3..000000000 --- a/svgs/svgItems/raffle6/293_LeatherTunicSideLeftUp.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/293_LeatherTunicSideRight.svg b/svgs/svgItems/raffle6/293_LeatherTunicSideRight.svg deleted file mode 100644 index 801529655..000000000 --- a/svgs/svgItems/raffle6/293_LeatherTunicSideRight.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/293_LeatherTunicSideRightDown.svg b/svgs/svgItems/raffle6/293_LeatherTunicSideRightDown.svg deleted file mode 100644 index 4002554fc..000000000 --- a/svgs/svgItems/raffle6/293_LeatherTunicSideRightDown.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/293_LeatherTunicSideRightUp.svg b/svgs/svgItems/raffle6/293_LeatherTunicSideRightUp.svg deleted file mode 100644 index eb19acdf3..000000000 --- a/svgs/svgItems/raffle6/293_LeatherTunicSideRightUp.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/294_BowandArrow.svg b/svgs/svgItems/raffle6/294_BowandArrow.svg deleted file mode 100644 index bae6caa31..000000000 --- a/svgs/svgItems/raffle6/294_BowandArrow.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/294_BowandArrowBack.svg b/svgs/svgItems/raffle6/294_BowandArrowBack.svg deleted file mode 100644 index bae6caa31..000000000 --- a/svgs/svgItems/raffle6/294_BowandArrowBack.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/294_BowandArrowLeft.svg b/svgs/svgItems/raffle6/294_BowandArrowLeft.svg deleted file mode 100644 index bae6caa31..000000000 --- a/svgs/svgItems/raffle6/294_BowandArrowLeft.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/294_BowandArrowRight.svg b/svgs/svgItems/raffle6/294_BowandArrowRight.svg deleted file mode 100644 index b0905cc05..000000000 --- a/svgs/svgItems/raffle6/294_BowandArrowRight.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/295_ForkedBeard.svg b/svgs/svgItems/raffle6/295_ForkedBeard.svg deleted file mode 100644 index a0c25f766..000000000 --- a/svgs/svgItems/raffle6/295_ForkedBeard.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/295_ForkedBeardLeft.svg b/svgs/svgItems/raffle6/295_ForkedBeardLeft.svg deleted file mode 100644 index 5067a2ee4..000000000 --- a/svgs/svgItems/raffle6/295_ForkedBeardLeft.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/295_ForkedBeardRight.svg b/svgs/svgItems/raffle6/295_ForkedBeardRight.svg deleted file mode 100644 index 81974a4fe..000000000 --- a/svgs/svgItems/raffle6/295_ForkedBeardRight.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/296_DoublesidedAxe.svg b/svgs/svgItems/raffle6/296_DoublesidedAxe.svg deleted file mode 100644 index 7d1b3d03c..000000000 --- a/svgs/svgItems/raffle6/296_DoublesidedAxe.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/296_DoublesidedAxeBack.svg b/svgs/svgItems/raffle6/296_DoublesidedAxeBack.svg deleted file mode 100644 index 7d1b3d03c..000000000 --- a/svgs/svgItems/raffle6/296_DoublesidedAxeBack.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/296_DoublesidedAxeLeft.svg b/svgs/svgItems/raffle6/296_DoublesidedAxeLeft.svg deleted file mode 100644 index 7d1b3d03c..000000000 --- a/svgs/svgItems/raffle6/296_DoublesidedAxeLeft.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/296_DoublesidedAxeRight.svg b/svgs/svgItems/raffle6/296_DoublesidedAxeRight.svg deleted file mode 100644 index 14f695aa3..000000000 --- a/svgs/svgItems/raffle6/296_DoublesidedAxeRight.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/297_AnimalSkins.svg b/svgs/svgItems/raffle6/297_AnimalSkins.svg deleted file mode 100644 index 72bee1546..000000000 --- a/svgs/svgItems/raffle6/297_AnimalSkins.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/297_AnimalSkinsBack.svg b/svgs/svgItems/raffle6/297_AnimalSkinsBack.svg deleted file mode 100644 index ff0cd5357..000000000 --- a/svgs/svgItems/raffle6/297_AnimalSkinsBack.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/297_AnimalSkinsLeft.svg b/svgs/svgItems/raffle6/297_AnimalSkinsLeft.svg deleted file mode 100644 index 921a2d372..000000000 --- a/svgs/svgItems/raffle6/297_AnimalSkinsLeft.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/297_AnimalSkinsLeftUp.svg b/svgs/svgItems/raffle6/297_AnimalSkinsLeftUp.svg deleted file mode 100644 index 921a2d372..000000000 --- a/svgs/svgItems/raffle6/297_AnimalSkinsLeftUp.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/297_AnimalSkinsRight.svg b/svgs/svgItems/raffle6/297_AnimalSkinsRight.svg deleted file mode 100644 index 921a2d372..000000000 --- a/svgs/svgItems/raffle6/297_AnimalSkinsRight.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/297_AnimalSkinsRightUp.svg b/svgs/svgItems/raffle6/297_AnimalSkinsRightUp.svg deleted file mode 100644 index 921a2d372..000000000 --- a/svgs/svgItems/raffle6/297_AnimalSkinsRightUp.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/297_AnimalSkinsSideLeft.svg b/svgs/svgItems/raffle6/297_AnimalSkinsSideLeft.svg deleted file mode 100644 index 7958dc536..000000000 --- a/svgs/svgItems/raffle6/297_AnimalSkinsSideLeft.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/297_AnimalSkinsSideLeftDown.svg b/svgs/svgItems/raffle6/297_AnimalSkinsSideLeftDown.svg deleted file mode 100644 index 459c5fdf4..000000000 --- a/svgs/svgItems/raffle6/297_AnimalSkinsSideLeftDown.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/297_AnimalSkinsSideLeftUp.svg b/svgs/svgItems/raffle6/297_AnimalSkinsSideLeftUp.svg deleted file mode 100644 index 77795443c..000000000 --- a/svgs/svgItems/raffle6/297_AnimalSkinsSideLeftUp.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/297_AnimalSkinsSideRight.svg b/svgs/svgItems/raffle6/297_AnimalSkinsSideRight.svg deleted file mode 100644 index ffd64fa87..000000000 --- a/svgs/svgItems/raffle6/297_AnimalSkinsSideRight.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/297_AnimalSkinsSideRightDown.svg b/svgs/svgItems/raffle6/297_AnimalSkinsSideRightDown.svg deleted file mode 100644 index c7a32f1fb..000000000 --- a/svgs/svgItems/raffle6/297_AnimalSkinsSideRightDown.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/297_AnimalSkinsSideRightUp.svg b/svgs/svgItems/raffle6/297_AnimalSkinsSideRightUp.svg deleted file mode 100644 index 160662cde..000000000 --- a/svgs/svgItems/raffle6/297_AnimalSkinsSideRightUp.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/298_HornedHelmet.svg b/svgs/svgItems/raffle6/298_HornedHelmet.svg deleted file mode 100644 index 2a76550e2..000000000 --- a/svgs/svgItems/raffle6/298_HornedHelmet.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/298_HornedHelmetBack.svg b/svgs/svgItems/raffle6/298_HornedHelmetBack.svg deleted file mode 100644 index 6edab3644..000000000 --- a/svgs/svgItems/raffle6/298_HornedHelmetBack.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/298_HornedHelmetLeft.svg b/svgs/svgItems/raffle6/298_HornedHelmetLeft.svg deleted file mode 100644 index 109b24bc1..000000000 --- a/svgs/svgItems/raffle6/298_HornedHelmetLeft.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/298_HornedHelmetRight.svg b/svgs/svgItems/raffle6/298_HornedHelmetRight.svg deleted file mode 100644 index e34a106e0..000000000 --- a/svgs/svgItems/raffle6/298_HornedHelmetRight.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/299_Longbow.svg b/svgs/svgItems/raffle6/299_Longbow.svg deleted file mode 100644 index 1b308fce1..000000000 --- a/svgs/svgItems/raffle6/299_Longbow.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/299_LongbowBack.svg b/svgs/svgItems/raffle6/299_LongbowBack.svg deleted file mode 100644 index 1b308fce1..000000000 --- a/svgs/svgItems/raffle6/299_LongbowBack.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/299_LongbowLeft.svg b/svgs/svgItems/raffle6/299_LongbowLeft.svg deleted file mode 100644 index 1b308fce1..000000000 --- a/svgs/svgItems/raffle6/299_LongbowLeft.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/299_LongbowRight.svg b/svgs/svgItems/raffle6/299_LongbowRight.svg deleted file mode 100644 index cc2322489..000000000 --- a/svgs/svgItems/raffle6/299_LongbowRight.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/300_FeatheredCap.svg b/svgs/svgItems/raffle6/300_FeatheredCap.svg deleted file mode 100644 index 2cb746abb..000000000 --- a/svgs/svgItems/raffle6/300_FeatheredCap.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/300_FeatheredCapBack.svg b/svgs/svgItems/raffle6/300_FeatheredCapBack.svg deleted file mode 100644 index ea8511873..000000000 --- a/svgs/svgItems/raffle6/300_FeatheredCapBack.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/300_FeatheredCapLeft.svg b/svgs/svgItems/raffle6/300_FeatheredCapLeft.svg deleted file mode 100644 index c624127dd..000000000 --- a/svgs/svgItems/raffle6/300_FeatheredCapLeft.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/300_FeatheredCapRight.svg b/svgs/svgItems/raffle6/300_FeatheredCapRight.svg deleted file mode 100644 index 2491b2a43..000000000 --- a/svgs/svgItems/raffle6/300_FeatheredCapRight.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/301_AlluringEyes.svg b/svgs/svgItems/raffle6/301_AlluringEyes.svg deleted file mode 100644 index c579d2c92..000000000 --- a/svgs/svgItems/raffle6/301_AlluringEyes.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/301_AlluringEyesBack.svg b/svgs/svgItems/raffle6/301_AlluringEyesBack.svg deleted file mode 100644 index 0c43bdcfd..000000000 --- a/svgs/svgItems/raffle6/301_AlluringEyesBack.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/301_AlluringEyesLeft.svg b/svgs/svgItems/raffle6/301_AlluringEyesLeft.svg deleted file mode 100644 index b2fe55d19..000000000 --- a/svgs/svgItems/raffle6/301_AlluringEyesLeft.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/301_AlluringEyesRight.svg b/svgs/svgItems/raffle6/301_AlluringEyesRight.svg deleted file mode 100644 index 123d5dc28..000000000 --- a/svgs/svgItems/raffle6/301_AlluringEyesRight.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/302_GeishaHeadpiece.svg b/svgs/svgItems/raffle6/302_GeishaHeadpiece.svg deleted file mode 100644 index 90e661973..000000000 --- a/svgs/svgItems/raffle6/302_GeishaHeadpiece.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/302_GeishaHeadpieceBack.svg b/svgs/svgItems/raffle6/302_GeishaHeadpieceBack.svg deleted file mode 100644 index 95cdd7039..000000000 --- a/svgs/svgItems/raffle6/302_GeishaHeadpieceBack.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/302_GeishaHeadpieceLeft.svg b/svgs/svgItems/raffle6/302_GeishaHeadpieceLeft.svg deleted file mode 100644 index aea733086..000000000 --- a/svgs/svgItems/raffle6/302_GeishaHeadpieceLeft.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/302_GeishaHeadpieceRight.svg b/svgs/svgItems/raffle6/302_GeishaHeadpieceRight.svg deleted file mode 100644 index 68ca3035b..000000000 --- a/svgs/svgItems/raffle6/302_GeishaHeadpieceRight.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/303_Kimono.svg b/svgs/svgItems/raffle6/303_Kimono.svg deleted file mode 100644 index 6044269b7..000000000 --- a/svgs/svgItems/raffle6/303_Kimono.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/303_KimonoBack.svg b/svgs/svgItems/raffle6/303_KimonoBack.svg deleted file mode 100644 index 9682ce9e4..000000000 --- a/svgs/svgItems/raffle6/303_KimonoBack.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/303_KimonoBackLeft.svg b/svgs/svgItems/raffle6/303_KimonoBackLeft.svg deleted file mode 100644 index 80dd88470..000000000 --- a/svgs/svgItems/raffle6/303_KimonoBackLeft.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/303_KimonoBackLeftUp.svg b/svgs/svgItems/raffle6/303_KimonoBackLeftUp.svg deleted file mode 100644 index 932de56a5..000000000 --- a/svgs/svgItems/raffle6/303_KimonoBackLeftUp.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/303_KimonoBackRight.svg b/svgs/svgItems/raffle6/303_KimonoBackRight.svg deleted file mode 100644 index b55a59bc6..000000000 --- a/svgs/svgItems/raffle6/303_KimonoBackRight.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/303_KimonoBackRightUp.svg b/svgs/svgItems/raffle6/303_KimonoBackRightUp.svg deleted file mode 100644 index f78b82583..000000000 --- a/svgs/svgItems/raffle6/303_KimonoBackRightUp.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/303_KimonoLeft.svg b/svgs/svgItems/raffle6/303_KimonoLeft.svg deleted file mode 100644 index b55a59bc6..000000000 --- a/svgs/svgItems/raffle6/303_KimonoLeft.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/303_KimonoLeftUp.svg b/svgs/svgItems/raffle6/303_KimonoLeftUp.svg deleted file mode 100644 index f78b82583..000000000 --- a/svgs/svgItems/raffle6/303_KimonoLeftUp.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/303_KimonoRight.svg b/svgs/svgItems/raffle6/303_KimonoRight.svg deleted file mode 100644 index 80dd88470..000000000 --- a/svgs/svgItems/raffle6/303_KimonoRight.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/303_KimonoRightUp.svg b/svgs/svgItems/raffle6/303_KimonoRightUp.svg deleted file mode 100644 index 932de56a5..000000000 --- a/svgs/svgItems/raffle6/303_KimonoRightUp.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/303_KimonoSideLeft.svg b/svgs/svgItems/raffle6/303_KimonoSideLeft.svg deleted file mode 100644 index 676c65a41..000000000 --- a/svgs/svgItems/raffle6/303_KimonoSideLeft.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/303_KimonoSideLeftDown.svg b/svgs/svgItems/raffle6/303_KimonoSideLeftDown.svg deleted file mode 100644 index b610eae81..000000000 --- a/svgs/svgItems/raffle6/303_KimonoSideLeftDown.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/303_KimonoSideLeftUp.svg b/svgs/svgItems/raffle6/303_KimonoSideLeftUp.svg deleted file mode 100644 index 04f189efb..000000000 --- a/svgs/svgItems/raffle6/303_KimonoSideLeftUp.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/303_KimonoSideRight.svg b/svgs/svgItems/raffle6/303_KimonoSideRight.svg deleted file mode 100644 index 24b5b85cd..000000000 --- a/svgs/svgItems/raffle6/303_KimonoSideRight.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/303_KimonoSideRightDown.svg b/svgs/svgItems/raffle6/303_KimonoSideRightDown.svg deleted file mode 100644 index c667b0ce5..000000000 --- a/svgs/svgItems/raffle6/303_KimonoSideRightDown.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/303_KimonoSideRightUp.svg b/svgs/svgItems/raffle6/303_KimonoSideRightUp.svg deleted file mode 100644 index 1b38f4652..000000000 --- a/svgs/svgItems/raffle6/303_KimonoSideRightUp.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/304_PaperFan.svg b/svgs/svgItems/raffle6/304_PaperFan.svg deleted file mode 100644 index c53aa44bb..000000000 --- a/svgs/svgItems/raffle6/304_PaperFan.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/304_PaperFanBack.svg b/svgs/svgItems/raffle6/304_PaperFanBack.svg deleted file mode 100644 index c53aa44bb..000000000 --- a/svgs/svgItems/raffle6/304_PaperFanBack.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/304_PaperFanLeft.svg b/svgs/svgItems/raffle6/304_PaperFanLeft.svg deleted file mode 100644 index c53aa44bb..000000000 --- a/svgs/svgItems/raffle6/304_PaperFanLeft.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/304_PaperFanRight.svg b/svgs/svgItems/raffle6/304_PaperFanRight.svg deleted file mode 100644 index c53aa44bb..000000000 --- a/svgs/svgItems/raffle6/304_PaperFanRight.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/305_SusButterfly.svg b/svgs/svgItems/raffle6/305_SusButterfly.svg deleted file mode 100644 index dbf4b5270..000000000 --- a/svgs/svgItems/raffle6/305_SusButterfly.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/305_SusButterflyBack.svg b/svgs/svgItems/raffle6/305_SusButterflyBack.svg deleted file mode 100644 index f01ef88d6..000000000 --- a/svgs/svgItems/raffle6/305_SusButterflyBack.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/305_SusButterflyLeft.svg b/svgs/svgItems/raffle6/305_SusButterflyLeft.svg deleted file mode 100644 index 752db8305..000000000 --- a/svgs/svgItems/raffle6/305_SusButterflyLeft.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/305_SusButterflyRight.svg b/svgs/svgItems/raffle6/305_SusButterflyRight.svg deleted file mode 100644 index 10832ea2f..000000000 --- a/svgs/svgItems/raffle6/305_SusButterflyRight.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/306_FlowerStuds.svg b/svgs/svgItems/raffle6/306_FlowerStuds.svg deleted file mode 100644 index 90dd9d593..000000000 --- a/svgs/svgItems/raffle6/306_FlowerStuds.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/306_FlowerStudsBack.svg b/svgs/svgItems/raffle6/306_FlowerStudsBack.svg deleted file mode 100644 index ecd30105e..000000000 --- a/svgs/svgItems/raffle6/306_FlowerStudsBack.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/306_FlowerStudsLeft.svg b/svgs/svgItems/raffle6/306_FlowerStudsLeft.svg deleted file mode 100644 index 8806a1d36..000000000 --- a/svgs/svgItems/raffle6/306_FlowerStudsLeft.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/306_FlowerStudsRight.svg b/svgs/svgItems/raffle6/306_FlowerStudsRight.svg deleted file mode 100644 index 8806a1d36..000000000 --- a/svgs/svgItems/raffle6/306_FlowerStudsRight.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/307_FairyWings.svg b/svgs/svgItems/raffle6/307_FairyWings.svg deleted file mode 100644 index 852844d4e..000000000 --- a/svgs/svgItems/raffle6/307_FairyWings.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/307_FairyWingsBack.svg b/svgs/svgItems/raffle6/307_FairyWingsBack.svg deleted file mode 100644 index 975a88a13..000000000 --- a/svgs/svgItems/raffle6/307_FairyWingsBack.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/307_FairyWingsLeft.svg b/svgs/svgItems/raffle6/307_FairyWingsLeft.svg deleted file mode 100644 index 921a2d372..000000000 --- a/svgs/svgItems/raffle6/307_FairyWingsLeft.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/307_FairyWingsLeftUp.svg b/svgs/svgItems/raffle6/307_FairyWingsLeftUp.svg deleted file mode 100644 index 921a2d372..000000000 --- a/svgs/svgItems/raffle6/307_FairyWingsLeftUp.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/307_FairyWingsRight.svg b/svgs/svgItems/raffle6/307_FairyWingsRight.svg deleted file mode 100644 index 921a2d372..000000000 --- a/svgs/svgItems/raffle6/307_FairyWingsRight.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/307_FairyWingsRightUp.svg b/svgs/svgItems/raffle6/307_FairyWingsRightUp.svg deleted file mode 100644 index 921a2d372..000000000 --- a/svgs/svgItems/raffle6/307_FairyWingsRightUp.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/307_FairyWingsSideLeft.svg b/svgs/svgItems/raffle6/307_FairyWingsSideLeft.svg deleted file mode 100644 index a460fc5dc..000000000 --- a/svgs/svgItems/raffle6/307_FairyWingsSideLeft.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/307_FairyWingsSideRight.svg b/svgs/svgItems/raffle6/307_FairyWingsSideRight.svg deleted file mode 100644 index 7d4ac4e1e..000000000 --- a/svgs/svgItems/raffle6/307_FairyWingsSideRight.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/308_RedHair.svg b/svgs/svgItems/raffle6/308_RedHair.svg deleted file mode 100644 index defcf807d..000000000 --- a/svgs/svgItems/raffle6/308_RedHair.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/308_RedHairBack.svg b/svgs/svgItems/raffle6/308_RedHairBack.svg deleted file mode 100644 index 6e76b2345..000000000 --- a/svgs/svgItems/raffle6/308_RedHairBack.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/308_RedHairLeft.svg b/svgs/svgItems/raffle6/308_RedHairLeft.svg deleted file mode 100644 index 236486cba..000000000 --- a/svgs/svgItems/raffle6/308_RedHairLeft.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/308_RedHairRight.svg b/svgs/svgItems/raffle6/308_RedHairRight.svg deleted file mode 100644 index d6f376258..000000000 --- a/svgs/svgItems/raffle6/308_RedHairRight.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/309_CitaadelHelm.svg b/svgs/svgItems/raffle6/309_CitaadelHelm.svg deleted file mode 100644 index 957770632..000000000 --- a/svgs/svgItems/raffle6/309_CitaadelHelm.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/309_CitaadelHelmBack.svg b/svgs/svgItems/raffle6/309_CitaadelHelmBack.svg deleted file mode 100644 index 50f17856d..000000000 --- a/svgs/svgItems/raffle6/309_CitaadelHelmBack.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/309_CitaadelHelmLeft.svg b/svgs/svgItems/raffle6/309_CitaadelHelmLeft.svg deleted file mode 100644 index 2eb316b15..000000000 --- a/svgs/svgItems/raffle6/309_CitaadelHelmLeft.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/309_CitaadelHelmRight.svg b/svgs/svgItems/raffle6/309_CitaadelHelmRight.svg deleted file mode 100644 index 89a3c7f8a..000000000 --- a/svgs/svgItems/raffle6/309_CitaadelHelmRight.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/310_PlateArmor.svg b/svgs/svgItems/raffle6/310_PlateArmor.svg deleted file mode 100644 index 944b15b82..000000000 --- a/svgs/svgItems/raffle6/310_PlateArmor.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/310_PlateArmorBack.svg b/svgs/svgItems/raffle6/310_PlateArmorBack.svg deleted file mode 100644 index a3d09384e..000000000 --- a/svgs/svgItems/raffle6/310_PlateArmorBack.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/310_PlateArmorBackLeft.svg b/svgs/svgItems/raffle6/310_PlateArmorBackLeft.svg deleted file mode 100644 index aa0dc4a8f..000000000 --- a/svgs/svgItems/raffle6/310_PlateArmorBackLeft.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/310_PlateArmorBackLeftUp.svg b/svgs/svgItems/raffle6/310_PlateArmorBackLeftUp.svg deleted file mode 100644 index 739ba67fd..000000000 --- a/svgs/svgItems/raffle6/310_PlateArmorBackLeftUp.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/310_PlateArmorBackRight.svg b/svgs/svgItems/raffle6/310_PlateArmorBackRight.svg deleted file mode 100644 index 29c8387f6..000000000 --- a/svgs/svgItems/raffle6/310_PlateArmorBackRight.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/310_PlateArmorBackRightUp.svg b/svgs/svgItems/raffle6/310_PlateArmorBackRightUp.svg deleted file mode 100644 index e5fde2002..000000000 --- a/svgs/svgItems/raffle6/310_PlateArmorBackRightUp.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/310_PlateArmorLeft.svg b/svgs/svgItems/raffle6/310_PlateArmorLeft.svg deleted file mode 100644 index 29c8387f6..000000000 --- a/svgs/svgItems/raffle6/310_PlateArmorLeft.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/310_PlateArmorLeftUp.svg b/svgs/svgItems/raffle6/310_PlateArmorLeftUp.svg deleted file mode 100644 index e5fde2002..000000000 --- a/svgs/svgItems/raffle6/310_PlateArmorLeftUp.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/310_PlateArmorRight.svg b/svgs/svgItems/raffle6/310_PlateArmorRight.svg deleted file mode 100644 index aa0dc4a8f..000000000 --- a/svgs/svgItems/raffle6/310_PlateArmorRight.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/310_PlateArmorRightUp.svg b/svgs/svgItems/raffle6/310_PlateArmorRightUp.svg deleted file mode 100644 index 739ba67fd..000000000 --- a/svgs/svgItems/raffle6/310_PlateArmorRightUp.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/310_PlateArmorSideLeft.svg b/svgs/svgItems/raffle6/310_PlateArmorSideLeft.svg deleted file mode 100644 index ffb5d8c8d..000000000 --- a/svgs/svgItems/raffle6/310_PlateArmorSideLeft.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/310_PlateArmorSideLeftDown.svg b/svgs/svgItems/raffle6/310_PlateArmorSideLeftDown.svg deleted file mode 100644 index b0c39dda2..000000000 --- a/svgs/svgItems/raffle6/310_PlateArmorSideLeftDown.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/310_PlateArmorSideLeftUp.svg b/svgs/svgItems/raffle6/310_PlateArmorSideLeftUp.svg deleted file mode 100644 index 480e87746..000000000 --- a/svgs/svgItems/raffle6/310_PlateArmorSideLeftUp.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/310_PlateArmorSideRight.svg b/svgs/svgItems/raffle6/310_PlateArmorSideRight.svg deleted file mode 100644 index 35391cb27..000000000 --- a/svgs/svgItems/raffle6/310_PlateArmorSideRight.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/310_PlateArmorSideRightDown.svg b/svgs/svgItems/raffle6/310_PlateArmorSideRightDown.svg deleted file mode 100644 index f3c608607..000000000 --- a/svgs/svgItems/raffle6/310_PlateArmorSideRightDown.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/310_PlateArmorSideRightUp.svg b/svgs/svgItems/raffle6/310_PlateArmorSideRightUp.svg deleted file mode 100644 index 6d06b41e9..000000000 --- a/svgs/svgItems/raffle6/310_PlateArmorSideRightUp.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/311_SpiritSword.svg b/svgs/svgItems/raffle6/311_SpiritSword.svg deleted file mode 100644 index 7fb5a2074..000000000 --- a/svgs/svgItems/raffle6/311_SpiritSword.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/311_SpiritSwordBack.svg b/svgs/svgItems/raffle6/311_SpiritSwordBack.svg deleted file mode 100644 index 7fb5a2074..000000000 --- a/svgs/svgItems/raffle6/311_SpiritSwordBack.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/311_SpiritSwordLeft.svg b/svgs/svgItems/raffle6/311_SpiritSwordLeft.svg deleted file mode 100644 index 7fb5a2074..000000000 --- a/svgs/svgItems/raffle6/311_SpiritSwordLeft.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/311_SpiritSwordRight.svg b/svgs/svgItems/raffle6/311_SpiritSwordRight.svg deleted file mode 100644 index 7fb5a2074..000000000 --- a/svgs/svgItems/raffle6/311_SpiritSwordRight.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/312_PlateShield.svg b/svgs/svgItems/raffle6/312_PlateShield.svg deleted file mode 100644 index 9375e2ebf..000000000 --- a/svgs/svgItems/raffle6/312_PlateShield.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/312_PlateShieldBack.svg b/svgs/svgItems/raffle6/312_PlateShieldBack.svg deleted file mode 100644 index 62427428b..000000000 --- a/svgs/svgItems/raffle6/312_PlateShieldBack.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/312_PlateShieldLeft.svg b/svgs/svgItems/raffle6/312_PlateShieldLeft.svg deleted file mode 100644 index 9375e2ebf..000000000 --- a/svgs/svgItems/raffle6/312_PlateShieldLeft.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/312_PlateShieldRight.svg b/svgs/svgItems/raffle6/312_PlateShieldRight.svg deleted file mode 100644 index 9375e2ebf..000000000 --- a/svgs/svgItems/raffle6/312_PlateShieldRight.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/313_KabutoHelmet.svg b/svgs/svgItems/raffle6/313_KabutoHelmet.svg deleted file mode 100644 index 5bdc9ce84..000000000 --- a/svgs/svgItems/raffle6/313_KabutoHelmet.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/313_KabutoHelmetBack.svg b/svgs/svgItems/raffle6/313_KabutoHelmetBack.svg deleted file mode 100644 index 2417f90e3..000000000 --- a/svgs/svgItems/raffle6/313_KabutoHelmetBack.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/313_KabutoHelmetLeft.svg b/svgs/svgItems/raffle6/313_KabutoHelmetLeft.svg deleted file mode 100644 index 0b8f99360..000000000 --- a/svgs/svgItems/raffle6/313_KabutoHelmetLeft.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/313_KabutoHelmetRight.svg b/svgs/svgItems/raffle6/313_KabutoHelmetRight.svg deleted file mode 100644 index da9ae90f2..000000000 --- a/svgs/svgItems/raffle6/313_KabutoHelmetRight.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/314_YoroiArmor.svg b/svgs/svgItems/raffle6/314_YoroiArmor.svg deleted file mode 100644 index 008cd33de..000000000 --- a/svgs/svgItems/raffle6/314_YoroiArmor.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/314_YoroiArmorBack.svg b/svgs/svgItems/raffle6/314_YoroiArmorBack.svg deleted file mode 100644 index c33ff7e9c..000000000 --- a/svgs/svgItems/raffle6/314_YoroiArmorBack.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/314_YoroiArmorBackLeft.svg b/svgs/svgItems/raffle6/314_YoroiArmorBackLeft.svg deleted file mode 100644 index 37252f0fa..000000000 --- a/svgs/svgItems/raffle6/314_YoroiArmorBackLeft.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/314_YoroiArmorBackLeftUp.svg b/svgs/svgItems/raffle6/314_YoroiArmorBackLeftUp.svg deleted file mode 100644 index 1ec183ce6..000000000 --- a/svgs/svgItems/raffle6/314_YoroiArmorBackLeftUp.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/314_YoroiArmorBackRight.svg b/svgs/svgItems/raffle6/314_YoroiArmorBackRight.svg deleted file mode 100644 index 42fda91c9..000000000 --- a/svgs/svgItems/raffle6/314_YoroiArmorBackRight.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/314_YoroiArmorBackRightUp.svg b/svgs/svgItems/raffle6/314_YoroiArmorBackRightUp.svg deleted file mode 100644 index c62fb0755..000000000 --- a/svgs/svgItems/raffle6/314_YoroiArmorBackRightUp.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/314_YoroiArmorLeft.svg b/svgs/svgItems/raffle6/314_YoroiArmorLeft.svg deleted file mode 100644 index 42fda91c9..000000000 --- a/svgs/svgItems/raffle6/314_YoroiArmorLeft.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/314_YoroiArmorLeftUp.svg b/svgs/svgItems/raffle6/314_YoroiArmorLeftUp.svg deleted file mode 100644 index c62fb0755..000000000 --- a/svgs/svgItems/raffle6/314_YoroiArmorLeftUp.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/314_YoroiArmorRight.svg b/svgs/svgItems/raffle6/314_YoroiArmorRight.svg deleted file mode 100644 index 37252f0fa..000000000 --- a/svgs/svgItems/raffle6/314_YoroiArmorRight.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/314_YoroiArmorRightUp.svg b/svgs/svgItems/raffle6/314_YoroiArmorRightUp.svg deleted file mode 100644 index 1ec183ce6..000000000 --- a/svgs/svgItems/raffle6/314_YoroiArmorRightUp.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/314_YoroiArmorSideLeft.svg b/svgs/svgItems/raffle6/314_YoroiArmorSideLeft.svg deleted file mode 100644 index f15817750..000000000 --- a/svgs/svgItems/raffle6/314_YoroiArmorSideLeft.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/314_YoroiArmorSideLeftDown.svg b/svgs/svgItems/raffle6/314_YoroiArmorSideLeftDown.svg deleted file mode 100644 index 617ea3254..000000000 --- a/svgs/svgItems/raffle6/314_YoroiArmorSideLeftDown.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/314_YoroiArmorSideLeftUp.svg b/svgs/svgItems/raffle6/314_YoroiArmorSideLeftUp.svg deleted file mode 100644 index 498298416..000000000 --- a/svgs/svgItems/raffle6/314_YoroiArmorSideLeftUp.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/314_YoroiArmorSideRight.svg b/svgs/svgItems/raffle6/314_YoroiArmorSideRight.svg deleted file mode 100644 index b53073281..000000000 --- a/svgs/svgItems/raffle6/314_YoroiArmorSideRight.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/314_YoroiArmorSideRightDown.svg b/svgs/svgItems/raffle6/314_YoroiArmorSideRightDown.svg deleted file mode 100644 index 19b17695c..000000000 --- a/svgs/svgItems/raffle6/314_YoroiArmorSideRightDown.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/314_YoroiArmorSideRightUp.svg b/svgs/svgItems/raffle6/314_YoroiArmorSideRightUp.svg deleted file mode 100644 index 8bf5ed4dd..000000000 --- a/svgs/svgItems/raffle6/314_YoroiArmorSideRightUp.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/315_HaanzoKatana.svg b/svgs/svgItems/raffle6/315_HaanzoKatana.svg deleted file mode 100644 index 99218d9e4..000000000 --- a/svgs/svgItems/raffle6/315_HaanzoKatana.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/315_HaanzoKatanaBack.svg b/svgs/svgItems/raffle6/315_HaanzoKatanaBack.svg deleted file mode 100644 index 75d2c0658..000000000 --- a/svgs/svgItems/raffle6/315_HaanzoKatanaBack.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/315_HaanzoKatanaLeft.svg b/svgs/svgItems/raffle6/315_HaanzoKatanaLeft.svg deleted file mode 100644 index 99218d9e4..000000000 --- a/svgs/svgItems/raffle6/315_HaanzoKatanaLeft.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/315_HaanzoKatanaRight.svg b/svgs/svgItems/raffle6/315_HaanzoKatanaRight.svg deleted file mode 100644 index 75d2c0658..000000000 --- a/svgs/svgItems/raffle6/315_HaanzoKatanaRight.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/svgItems/raffle6/EmptyFile.svg b/svgs/svgItems/raffle6/EmptyFile.svg deleted file mode 100644 index 921a2d372..000000000 --- a/svgs/svgItems/raffle6/EmptyFile.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svgs/wearables.ts b/svgs/wearables.ts index ac70263ec..1ecafe6bb 100644 --- a/svgs/wearables.ts +++ b/svgs/wearables.ts @@ -1,3 +1,5 @@ +import { BigNumberish } from "@ethersproject/bignumber"; + const fs = require("fs"); export const wearablesSvgs = [ @@ -387,7 +389,7 @@ export const sleeveSvgs = [ // "5_SnowCamoPantsRight", // body but no sleeves // '6_M67GrenadeRight', // '7_MarineCapRight', - // sleeves("8_MarineJacket"), // sleeves("8_MarineJacket"), + sleeves("8_MarineJacket"), // sleeves("8_MarineJacket"), // '9_WalkieTalkie', // '10_LinkWhiteHatRight', sleeves("11_MessDress"), // sleeves("11_MessDress"), @@ -404,7 +406,7 @@ export const sleeveSvgs = [ sleeves("22_CaptainAaveSuit"), // sleeves("22_CaptainAaveSuit"), // '23_CaptainAaveShieldRight', // '24_ThaaveHelmetRight', - // sleeves("25_ThaaveSuit"), + sleeves("25_ThaaveSuit"), // '26_ThaaveHammerRight', // '27_MarcHairRight', sleeves("28_MarcOutfit"), // sleeves("28_MarcOutfit"), @@ -504,7 +506,7 @@ export const sleeveSvgs = [ // '122_MilkshakeRight', // '123_AppleJuiceRight', // '124_BeerHelmetRight', - // sleeves("125_TrackSuit"), + sleeves("125_TrackSuit"), // '126_KinshipPotionRight', // '127_GreaterKinshipPotionRight', // '128_XPPotionRight', @@ -559,10 +561,10 @@ export const sleeveSvgs = [ sleeves("234_ShaamanPoncho"), sleeves("241_WGMIShirt"), sleeves("244_VNeckShirt"), - "248_UpOnlyShirt", - "250_CoinGeckoTee", - "253_AastronautSuit", - "256_LilBubbleSpaceSuit", + sleeves("248_UpOnlyShirt"), + sleeves("250_CoinGeckoTee"), + sleeves("253_AastronautSuit"), + sleeves("256_LilBubbleSpaceSuit"), sleeves("258_Hanfu"), sleeves("293_LeatherTunic"), sleeves("297_AnimalSkins"), @@ -572,15 +574,22 @@ export const sleeveSvgs = [ sleeves("314_YoroiArmor"), "sleeves gap", "sleeves gap", - sleeves("316_MarineJacket"), - sleeves("317_ThaaveSuit"), - sleeves("318_TrackSuit"), + // sleeves("316_MarineJacket"), + // sleeves("317_ThaaveSuit"), + // sleeves("318_TrackSuit"), // forge wearables sleeves("350_PixelcraftTee"), sleeves("362_FAKEShirt"), sleeves("366_HeavenlyRobes"), ]; +export const allSleeves: Array = [ + 8, 11, 15, 16, 19, 22, 25, 28, 31, 37, 43, 46, 50, 54, 56, 74, 85, 91, + 102, 105, 109, 112, 114, 115, 125, 135, 138, 150, 160, 162, + 203, 213, 220, 222, 231, 234, 241, 244, 248, 250, 253, 256, 258, 293, 297, + 303, 307, 310, 314, 350, 362, 366 +] + function stripSvg(svg: string) { // removes svg tag if (svg.includes("viewBox")) { diff --git a/tasks/deployUpgrade.ts b/tasks/deployUpgrade.ts index e736884f6..d3e1dc9c9 100644 --- a/tasks/deployUpgrade.ts +++ b/tasks/deployUpgrade.ts @@ -146,7 +146,7 @@ task( }); signer = await hre.ethers.getSigner(owner); - } else if (hre.network.name === "matic") { + } else if (hre.network.name === "matic" || hre.network.name === "mumbai") { if (useLedger) { signer = new LedgerSigner(hre.ethers.provider); } else signer = (await hre.ethers.getSigners())[0]; From faadfeb27ee77520e59261231b33f4c38940d958 Mon Sep 17 00:00:00 2001 From: orionstardust Date: Wed, 12 Apr 2023 14:30:40 -0500 Subject: [PATCH 02/24] Fix issues after sync --- scripts/deploy-mumbai.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/scripts/deploy-mumbai.ts b/scripts/deploy-mumbai.ts index 7d6653566..745667b78 100644 --- a/scripts/deploy-mumbai.ts +++ b/scripts/deploy-mumbai.ts @@ -112,6 +112,7 @@ async function main() { escrowFacet, gotchiLendingFacet, lendingGetterAndSetterFacet, + marketplaceGetterFacet, svgViewsFacet, wearableSetsFacet, whitelistFacet, @@ -133,6 +134,7 @@ async function main() { "EscrowFacet", "GotchiLendingFacet", "LendingGetterAndSetterFacet", + "MarketplaceGetterFacet", "SvgViewsFacet", "WearableSetsFacet", "WhitelistFacet", @@ -160,6 +162,7 @@ async function main() { ["EscrowFacet", escrowFacet], ["GotchiLendingFacet", gotchiLendingFacet], ["LendingGetterAndSetterFacet", lendingGetterAndSetterFacet], + ["MarketplaceGetterFacet", marketplaceGetterFacet], ["SvgViewsFacet", svgViewsFacet], ["WearableSetsFacet", wearableSetsFacet], ["WhitelistFacet", whitelistFacet], From 86d4e945fc3e3e71174c26d528060dbd6e93b54e Mon Sep 17 00:00:00 2001 From: orionstardust Date: Sun, 16 Apr 2023 21:57:56 -0500 Subject: [PATCH 03/24] Sync master and update --- scripts/deploy-mumbai.ts | 5 ++++- scripts/testCollateralTypes.js | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/scripts/deploy-mumbai.ts b/scripts/deploy-mumbai.ts index 745667b78..984a69693 100644 --- a/scripts/deploy-mumbai.ts +++ b/scripts/deploy-mumbai.ts @@ -117,6 +117,7 @@ async function main() { wearableSetsFacet, whitelistFacet, peripheryFacet, + merkleDropFacet, ] = await deployFacets( "contracts/Aavegotchi/facets/BridgeFacet.sol:BridgeFacet", "contracts/Aavegotchi/facets/AavegotchiFacet.sol:AavegotchiFacet", @@ -138,7 +139,8 @@ async function main() { "SvgViewsFacet", "WearableSetsFacet", "WhitelistFacet", - "PeripheryFacet" + "PeripheryFacet", + "MerkleDropFacet" ); // eslint-disable-next-line no-unused-vars @@ -167,6 +169,7 @@ async function main() { ["WearableSetsFacet", wearableSetsFacet], ["WhitelistFacet", whitelistFacet], ["PeripheryFacet", peripheryFacet], + ["MerkleDropFacet", merkleDropFacet], ], owner: ownerAddress, args: [ diff --git a/scripts/testCollateralTypes.js b/scripts/testCollateralTypes.js index b57ae5150..6803ff7c4 100644 --- a/scripts/testCollateralTypes.js +++ b/scripts/testCollateralTypes.js @@ -66,7 +66,7 @@ function getCollaterals (network, ghstAddress, testAddress) { if (collateralType.name === 'GHST') { item.collateralType = ghstAddress } - } else if (network === 'hardhat') { + } else if (network === 'hardhat' || network === 'localhost') { if (collateralType.name === 'GHST') item.collateralType = ghstAddress else if (collateralType.name === 'TEST') item.collateralType = testAddress } else if (network === 'mainnet') { From 56a1785c2b09643515dfea22c4d404bad7d24c64 Mon Sep 17 00:00:00 2001 From: orionstardust Date: Thu, 20 Apr 2023 23:07:23 -0500 Subject: [PATCH 04/24] Added missing functions to mumbai deploy script --- scripts/deploy-mumbai.ts | 82 ++++- scripts/mintPortals.ts | 24 ++ svgs/aavegotchi.js | 2 +- svgs/wearables-sides.ts | 658 +++++++++++++++++++-------------------- 4 files changed, 431 insertions(+), 335 deletions(-) create mode 100644 scripts/mintPortals.ts diff --git a/scripts/deploy-mumbai.ts b/scripts/deploy-mumbai.ts index 984a69693..8b7177c55 100644 --- a/scripts/deploy-mumbai.ts +++ b/scripts/deploy-mumbai.ts @@ -1,6 +1,6 @@ /* global ethers hre */ -import { run } from "hardhat"; +import { ethers, run } from "hardhat"; import { deployAndUpgradeWearableDiamond } from "./upgrades/upgrade-deployWearableDiamond"; import { getAllItemTypes, SleeveObject } from "./itemTypeHelpers"; import { itemTypes as allItemTypes } from "../data/itemTypes/itemTypes"; @@ -11,6 +11,19 @@ import { uploadSvgs } from "./svgHelperFunctions"; import { getWearables } from "../svgs/allWearables"; import { deployAndUpgradeForgeDiamond } from "./upgrades/forge/upgrade-deployAndUpgradeForgeDiamond"; import { setForgeProperties } from "./upgrades/forge/upgrade-forgeSetters"; +import { aavegotchiSvgs as aavegotchiSideSvgs } from "../svgs/aavegotchi-side-typeScript"; +import { + eyeShapesLeftSvgs, + eyeShapesRightSvgs, +} from "../svgs/eyeShapes-sidesOpt"; +import { + wearablesLeftSvgs, + wearablesRightSvgs, + wearablesBackSvgs, + wearablesLeftSleeveSvgs, + wearablesRightSleeveSvgs, + wearablesBackSleeveSvgs, +} from "../svgs/wearables-sides"; const diamond = require("../js/diamond-util/src/index.js"); @@ -312,21 +325,80 @@ async function main() { totalGasUsed = totalGasUsed.add(receipt.gasUsed); } - const { sleeves, wearables } = getWearables(); + console.log("Upload SVGs"); + + const { aavegotchiSvgs } = require("../svgs/aavegotchi.js"); + const { eyeShapeSvgs } = require("../svgs/eyeShapes.js"); + const collateralsSvgs = [ + '', + ]; + const collateralsLeftSvgs = [ + '', + ]; + const collateralsRightSvgs = [ + '', + ]; + + await uploadSvgs(svgFacet, aavegotchiSvgs, "aavegotchi", hre.ethers); + await uploadSvgs(svgFacet, collateralsSvgs, "collaterals", hre.ethers); + await uploadSvgs(svgFacet, eyeShapeSvgs, "eyeShapes", hre.ethers); + await uploadSvgs( + svgFacet, + aavegotchiSideSvgs.left, + "aavegotchi-left", + hre.ethers + ); + await uploadSvgs( + svgFacet, + aavegotchiSideSvgs.right, + "aavegotchi-right", + hre.ethers + ); + await uploadSvgs( + svgFacet, + aavegotchiSideSvgs.back, + "aavegotchi-back", + hre.ethers + ); + await uploadSvgs( + svgFacet, + collateralsLeftSvgs, + "collaterals-left", + hre.ethers + ); + await uploadSvgs( + svgFacet, + collateralsRightSvgs, + "collaterals-right", + hre.ethers + ); + await uploadSvgs(svgFacet, [""], "collaterals-back", hre.ethers); + await uploadSvgs(svgFacet, eyeShapesLeftSvgs, "eyeShapes-left", hre.ethers); + await uploadSvgs(svgFacet, eyeShapesRightSvgs, "eyeShapes-right", hre.ethers); + await uploadSvgs( + svgFacet, + Array(eyeShapeSvgs.length).fill(""), + "eyeShapes-back", + hre.ethers + ); + const { sleeves, wearables } = getWearables(); const svgsArray: string[] = wearables; const sleeveSvgsArray: SleeveObject[] = sleeves; - console.log("Upload SVGs"); await uploadSvgs(svgFacet, svgsArray, "wearables", hre.ethers); - - console.log("Uploading Sleeves"); await uploadSvgs( svgFacet, sleeveSvgsArray.map((value) => value.svg), "sleeves", hre.ethers ); + await uploadSvgs(svgFacet, wearablesLeftSvgs, "wearables-left", ethers); + await uploadSvgs(svgFacet, wearablesRightSvgs, "wearables-right", ethers); + await uploadSvgs(svgFacet, wearablesBackSvgs, "wearables-back", ethers); + await uploadSvgs(svgFacet, wearablesLeftSleeveSvgs, "sleeves-left", ethers); + await uploadSvgs(svgFacet, wearablesRightSleeveSvgs, "sleeves-right", ethers); + await uploadSvgs(svgFacet, wearablesBackSleeveSvgs, "sleeves-back", ethers); console.log("Upload Done"); interface SleeveInput { diff --git a/scripts/mintPortals.ts b/scripts/mintPortals.ts new file mode 100644 index 000000000..bb58bdfe8 --- /dev/null +++ b/scripts/mintPortals.ts @@ -0,0 +1,24 @@ +async function mintPortals() { + const diamondAddress = "0x83e73D9CF22dFc3A767EA1cE0611F7f50306622e"; + const toAddress = "0xb7601193f559de56D67FB8e6a2AF219b05BD36c7"; + let numberPerMint = 50; + + const accounts = await ethers.getSigners(); + const signer = accounts[0]; + + let shopFacet; + + shopFacet = await ethers.getContractAt("ShopFacet", diamondAddress, signer); + + let receipt = await shopFacet.mintPortals(toAddress, numberPerMint); + console.log("tx hash:", receipt.hash); +} + +mintPortals() + .then(() => process.exit(1)) + .catch((error) => { + console.error(error); + process.exit(1); + }); + +exports.deploy = mintPortals; diff --git a/svgs/aavegotchi.js b/svgs/aavegotchi.js index 443921a53..98ed52fec 100644 --- a/svgs/aavegotchi.js +++ b/svgs/aavegotchi.js @@ -1,5 +1,5 @@ const fs = require('fs') -const sealedClosedPortal = fs.readFileSync('./svgs/sealedClosedPortal.svg', 'utf8') +const sealedClosedPortal = fs.readFileSync('./svgs/h1-closed.svg', 'utf8') const openPortal = fs.readFileSync('./svgs/openPortal.svg', 'utf8') const body = '' diff --git a/svgs/wearables-sides.ts b/svgs/wearables-sides.ts index a1721827d..1af5828b6 100644 --- a/svgs/wearables-sides.ts +++ b/svgs/wearables-sides.ts @@ -56,7 +56,7 @@ export const wearablesRightSvgs = [ wearable("52_GalaxyBrainRight"), wearable("53_AllSeeingEyesRight"), bodyWearableRight("54_LlamacornShirt"), - "55_AagentHeadsetRight", + // "55_AagentHeadsetRight", bodyWearableRight("56_AagentShirt"), wearable("57_AagentShadesRight"), wearable("58_AagentPistolRight"), @@ -76,7 +76,7 @@ export const wearablesRightSvgs = [ wearable("72_JaayHairpieceRight"), wearable("73_JaayGlassesRight"), bodyWearableRight("74_JaayHaoSuit"), - "75_OKexSignRight", + // "75_OKexSignRight", wearable("76_BigGHSTTokenRight"), wearable("77_BitcoinBeanieRight"), wearable("78_SkaterJeansRight"), // Body but no sleeves @@ -87,7 +87,7 @@ export const wearablesRightSvgs = [ wearable("83_SushiKnifeRight"), wearable("84_GentlemanHatRight"), bodyWearableRight("85_GentlemanSuit"), - "86_GentlemanMonocleRight", + // "86_GentlemanMonocleRight", wearable("87_MinerHelmetRight"), wearable("88_MinerJeansRight"), // Body but no sleeves wearable("89_MinerPickaxeRight"), @@ -158,48 +158,48 @@ export const wearablesRightSvgs = [ wearable("154_LegendaryRoflRight"), wearable("155_MythicalRoflRight"), wearable("156_GodlikeRoflRight"), - "157_LilPumpGoateeLeft", + // "157_LilPumpGoateeLeft", wearable("158_LilPumpDrinkRight"), wearable("159_LilPumpShadesRight"), bodyWearableRight("160_LilPumpThreads"), wearable("161_LilPumpDreadsRight"), bodyWearableRight("162_MiamiShirt"), - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, + // 163, + // 164, + // 165, + // 166, + // 167, + // 168, + // 169, + // 170, + // 171, + // 172, + // 173, + // 174, + // 175, + // 176, + // 177, + // 178, + // 179, + // 180, + // 181, + // 182, + // 183, + // 184, + // 185, + // 186, + // 187, + // 188, + // 189, + // 190, + // 191, + // 192, + // 193, + // 194, + // 195, + // 196, + // 197, + // 198, wearable("199_SteampunkGlassesRight"), wearable("200_SteampunkRight"), wearable("201_SteampunkGloveRight"), @@ -234,11 +234,11 @@ export const wearablesRightSvgs = [ wearable("230_WraanglerJeansRight"), bodyWearableRight("231_ComfyPoncho"), wearable("232_PonchoHoodieRight"), - "233_UncommonCactiRight", + // "233_UncommonCactiRight", bodyWearableRight("234_ShaamanPoncho"), wearable("235_ShaamanHoodieRight"), - "236_BlueCactiRight", - "237_MythicalCactiRight", + // "236_BlueCactiRight", + // "237_MythicalCactiRight", wearable("238_GodlikeCactiRight"), wearable("239_WagieCapRight"), wearable("240_HeadphonesRight"), @@ -262,37 +262,37 @@ export const wearablesRightSvgs = [ bodyWearableRight("258_Hanfu"), wearable("259_BushyEyebrowsRight"), wearable("260_AncientBeardRight"), - 261, + // 261, wearable("262_RadarEyesRight"), wearable("263_SignalHeadsetRight"), - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, + // 264, + // 265, + // 266, + // 267, + // 268, + // 269, + // 270, + // 271, + // 272, + // 273, + // 274, + // 275, + // 276, + // 277, + // 278, + // 279, + // 280, + // 281, + // 282, + // 283, + // 284, + // 285, + // 286, + // 287, + // 288, + // 289, + // 290, + // 291, wearable("292_BrunettePonytailRight"), bodyWearableRight("293_LeatherTunic"), wearable("294_BowandArrowRight"), @@ -317,43 +317,43 @@ export const wearablesRightSvgs = [ wearable("313_KabutoHelmetRight"), bodyWearableRight("314_YoroiArmor"), wearable("315_HaanzoKatanaRight"), - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - // Haalloween Party Badge - 332, - // TOOORKEY CHAASE Badge - 333, - //szn 4 baadges - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, + // 316, + // 317, + // 318, + // 319, + // 320, + // 321, + // 322, + // 323, + // 324, + // 325, + // 326, + // 327, + // 328, + // 329, + // 330, + // 331, + // // Haalloween Party Badge + // 332, + // // TOOORKEY CHAASE Badge + // 333, + // //szn 4 baadges + // 334, + // 335, + // 336, + // 337, + // 338, + // 339, + // 340, + // 341, + // 342, + // 343, + // 344, + // 345, + // 346, + // 347, + // 348, + // 349, // forge wearables bodyWearableRight("350_PixelcraftTee"), wearable("351_3DGlassesRight"), @@ -361,7 +361,7 @@ export const wearablesRightSvgs = [ wearable("353_NimbusRight"), wearable("354_AlchemicaApronRight"), wearable("355_SafetyGlassesRight"), - "356_BandageRight", + // "356_BandageRight", wearable("357_NailGunRight"), wearable("358_FlamingApronRight"), wearable("359_ForgeGogglesRight"), @@ -392,7 +392,7 @@ export const wearablesBackSvgs = [ bodyWearable("11_MessDress"), // bodyWearable("11_MessDress"), wearable("12_LinkBubbly"), wearable("13_SergeyBeardBack"), - "14_SergeyEyesBack", // no eyes for back side + // "14_SergeyEyesBack", // no eyes for back side bodyWearable("15_RedPlaid"), // bodyWearable("15_RedPlaid"), bodyWearable("16_BluePlaid"), // bodyWearable("16_BluePlaid"), wearable("17_LinkCubeBack"), @@ -431,7 +431,7 @@ export const wearablesBackSvgs = [ bodyWearable("50_GldnXrossRobe"), wearable("51_MudgenDiamondBack"), wearable("52_GalaxyBrainBack"), - "53_AllSeeingEyesBack", + // "53_AllSeeingEyesBack", bodyWearable("54_LlamacornShirt"), wearable("55_AagentHeadsetBack"), bodyWearable("56_AagentShirt"), @@ -464,7 +464,7 @@ export const wearablesBackSvgs = [ wearable("83_SushiKnifeBack"), wearable("84_GentlemanHatBack"), bodyWearable("85_GentlemanSuit"), - "86_GentlemanMonocleBack", + // "86_GentlemanMonocleBack", wearable("87_MinerHelmetBack"), wearable("88_MinerJeansBack"), // Body but no sleeves wearable("89_MinerPickaxeBack"), @@ -524,7 +524,7 @@ export const wearablesBackSvgs = [ wearable("143_GoldNecklaceBack"), wearable("144_PrincessHairBack"), wearable("145_GodliLocksBack"), - "146_ImperialMoustacheBack", + // "146_ImperialMoustacheBack", wearable("147_TinyCrownBack"), wearable("148_RoyalScepterBack"), wearable("149_RoyalCrownBack"), @@ -535,48 +535,48 @@ export const wearablesBackSvgs = [ wearable("154_LegendaryRoflBack"), wearable("155_MythicalRoflBack"), wearable("156_GodlikeRoflBack"), - "157_LilPumpGoateeLeft", + // "157_LilPumpGoateeLeft", wearable("158_LilPumpDrinkBack"), wearable("159_LilPumpShadesBack"), bodyWearable("160_LilPumpThreads"), wearable("161_LilPumpDreadsBack"), bodyWearable("162_MiamiShirt"), - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, + // 163, + // 164, + // 165, + // 166, + // 167, + // 168, + // 169, + // 170, + // 171, + // 172, + // 173, + // 174, + // 175, + // 176, + // 177, + // 178, + // 179, + // 180, + // 181, + // 182, + // 183, + // 184, + // 185, + // 186, + // 187, + // 188, + // 189, + // 190, + // 191, + // 192, + // 193, + // 194, + // 195, + // 196, + // 197, + // 198, wearable("199_SteampunkGlassesBack"), wearable("200_SteampunkBack"), wearable("201_SteampunkGloveBack"), @@ -587,17 +587,17 @@ export const wearablesBackSvgs = [ wearable("206_BikerHelmetBack"), wearable("207_BikerJacketBack"), wearable("208_AviatorsBack"), - "209_HorsehoeMustacheBack", + // "209_HorsehoeMustacheBack", wearable("210_H1backgroundBack"), wearable("211_GuyFauwkesMaskBack"), wearable("212_1337LaptopBack"), bodyWearable("213_H4xx0rShirt"), - "214_MatrixEyesBack", + // "214_MatrixEyesBack", wearable("215_CyborgEyeBack"), wearable("216_RainbowVomitBack"), wearable("217_CyborgGunBack"), wearable("218_MohawkBack"), - "219_MuttonChopsBack", + // "219_MuttonChopsBack", bodyWearable("220_PunkShirt"), wearable("221_PirateHatBack"), bodyWearable("222_PirateCoat"), @@ -627,7 +627,7 @@ export const wearablesBackSvgs = [ wearable("246_APYShadesBack"), wearable("247_UpArrowBack"), bodyWearable("248_UpOnlyShirt"), - 249, + // 249, bodyWearable("250_CoinGeckoTee"), wearable("251_CoinGeckoCandiesBack"), wearable("252_AastronautHelmetBack"), @@ -637,39 +637,39 @@ export const wearablesBackSvgs = [ bodyWearable("256_LilBubbleSpaceSuit"), wearable("257_BitcoinGuitarBack"), bodyWearable("258_Hanfu"), - 258, - 259, + // 258, + // 259, wearable("261_AantenaBotBack"), - 262, + // 262, wearable("263_SignalHeadsetBack"), - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, + // 264, + // 265, + // 266, + // 267, + // 268, + // 269, + // 270, + // 271, + // 272, + // 273, + // 274, + // 275, + // 276, + // 277, + // 278, + // 279, + // 280, + // 281, + // 282, + // 283, + // 284, + // 285, + // 286, + // 287, + // 288, + // 289, + // 290, + // 291, wearable("292_BrunettePonytailBack"), bodyWearable("293_LeatherTunic"), wearable("294_BowandArrowBack"), @@ -694,43 +694,43 @@ export const wearablesBackSvgs = [ wearable("313_KabutoHelmetBack"), bodyWearable("314_YoroiArmor"), wearable("315_HaanzoKatanaBack"), - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - // Haalloween Party Badge - 332, - // TOOORKEY CHAASE Badge - 333, - //szn 4 baadges - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, + // 316, + // 317, + // 318, + // 319, + // 320, + // 321, + // 322, + // 323, + // 324, + // 325, + // 326, + // 327, + // 328, + // 329, + // 330, + // 331, + // // Haalloween Party Badge + // 332, + // // TOOORKEY CHAASE Badge + // 333, + // //szn 4 baadges + // 334, + // 335, + // 336, + // 337, + // 338, + // 339, + // 340, + // 341, + // 342, + // 343, + // 344, + // 345, + // 346, + // 347, + // 348, + // 349, // forge wearables bodyWearable("350_PixelcraftTee"), wearable("351_3DGlassesBack"), @@ -738,7 +738,7 @@ export const wearablesBackSvgs = [ wearable("353_NimbusBack"), wearable("354_AlchemicaApronBack"), wearable("355_SafetyGlassesBack"), - "356_BandageBack", + // "356_BandageBack", wearable("357_NailGunBack"), wearable("358_FlamingApronBack"), wearable("359_ForgeGogglesBack"), @@ -749,8 +749,8 @@ export const wearablesBackSvgs = [ wearable("364_PaintBrushBack"), wearable("365_PaintPaletteBack"), bodyWearable("366_HeavenlyRobes"), - "367_EyesofDevotionBack", - "368_BeardofDivinityBack", + // "367_EyesofDevotionBack", + // "368_BeardofDivinityBack", wearable("369_StaffofCreationBack"), ]; @@ -784,7 +784,7 @@ export const wearablesLeftSvgs = [ wearable("26_ThaaveHammerLeft"), wearable("27_MarcHairLeft"), bodyWearableLeft("28_MarcOutfit"), // bodyWearableLeft("28_MarcOutfit"), - "29_REKTSignRight", + // "29_REKTSignRight", wearable("30_JordanHairLeft"), bodyWearableLeft("31_JordanSuit"), // bodyWearableLeft("31_JordanSuit"), wearable("32_AaveFlagLeft"), @@ -912,48 +912,48 @@ export const wearablesLeftSvgs = [ wearable("154_LegendaryRoflLeft"), wearable("155_MythicalRoflLeft"), wearable("156_GodlikeRoflLeft"), - "157_LilPumpGoateeLeft", + // "157_LilPumpGoateeLeft", wearable("158_LilPumpDrinkLeft"), wearable("159_LilPumpShadesLeft"), bodyWearableLeft("160_LilPumpThreads"), wearable("161_LilPumpDreadsLeft"), bodyWearableLeft("162_MiamiShirt"), - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, + // 163, + // 164, + // 165, + // 166, + // 167, + // 168, + // 169, + // 170, + // 171, + // 172, + // 173, + // 174, + // 175, + // 176, + // 177, + // 178, + // 179, + // 180, + // 181, + // 182, + // 183, + // 184, + // 185, + // 186, + // 187, + // 188, + // 189, + // 190, + // 191, + // 192, + // 193, + // 194, + // 195, + // 196, + // 197, + // 198, wearable("199_SteampunkGlassesLeft"), wearable("200_SteampunkLeft"), wearable("201_SteampunkGloveLeft"), @@ -1019,34 +1019,34 @@ export const wearablesLeftSvgs = [ wearable("261_AantenaBotLeft"), wearable("262_RadarEyesLeft"), wearable("263_SignalHeadsetLeft"), - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, + // 264, + // 265, + // 266, + // 267, + // 268, + // 269, + // 270, + // 271, + // 272, + // 273, + // 274, + // 275, + // 276, + // 277, + // 278, + // 279, + // 280, + // 281, + // 282, + // 283, + // 284, + // 285, + // 286, + // 287, + // 288, + // 289, + // 290, + // 291, wearable("292_BrunettePonytailLeft"), bodyWearableLeft("293_LeatherTunic"), wearable("294_BowandArrowLeft"), @@ -1071,43 +1071,43 @@ export const wearablesLeftSvgs = [ wearable("313_KabutoHelmetLeft"), bodyWearableLeft("314_YoroiArmor"), wearable("315_HaanzoKatanaLeft"), - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - // Haalloween Party Badge - 332, - // TOOORKEY CHAASE Badge - 333, - //szn 4 baadges - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, + // 316, + // 317, + // 318, + // 319, + // 320, + // 321, + // 322, + // 323, + // 324, + // 325, + // 326, + // 327, + // 328, + // 329, + // 330, + // 331, + // // Haalloween Party Badge + // 332, + // // TOOORKEY CHAASE Badge + // 333, + // //szn 4 baadges + // 334, + // 335, + // 336, + // 337, + // 338, + // 339, + // 340, + // 341, + // 342, + // 343, + // 344, + // 345, + // 346, + // 347, + // 348, + // 349, // forge wearables bodyWearableLeft("350_PixelcraftTee"), wearable("351_3DGlassesLeft"), From 1be11c1d070bd9720d02eb5fddb51b56fbc66c86 Mon Sep 17 00:00:00 2001 From: Timidan Date: Thu, 11 May 2023 09:36:27 +0100 Subject: [PATCH 05/24] add channellingAllowed to lendings --- .../Aavegotchi/facets/AavegotchiGameFacet.sol | 33 +- .../Aavegotchi/facets/GotchiLendingFacet.sol | 13 +- .../facets/LendingGetterAndSetterFacet.sol | 28 +- .../Aavegotchi/libraries/LibAavegotchi.sol | 36 +- .../Aavegotchi/libraries/LibAppStorage.sol | 2 + .../Aavegotchi/libraries/LibGotchiLending.sol | 341 ++++++++++-------- scripts/helperFunctions.ts | 7 + scripts/upgrades/upgrade-kinshipBurning.ts | 69 ++++ test/testNewLendingEvents.ts | 303 ++++++++++++++++ 9 files changed, 645 insertions(+), 187 deletions(-) create mode 100644 scripts/upgrades/upgrade-kinshipBurning.ts create mode 100644 test/testNewLendingEvents.ts diff --git a/contracts/Aavegotchi/facets/AavegotchiGameFacet.sol b/contracts/Aavegotchi/facets/AavegotchiGameFacet.sol index e0541304a..460c873d6 100644 --- a/contracts/Aavegotchi/facets/AavegotchiGameFacet.sol +++ b/contracts/Aavegotchi/facets/AavegotchiGameFacet.sol @@ -13,6 +13,8 @@ import {CollateralEscrow} from "../CollateralEscrow.sol"; import {LibMeta} from "../../shared/libraries/LibMeta.sol"; import {LibERC721Marketplace} from "../libraries/LibERC721Marketplace.sol"; +import {LibGotchiLending} from "../libraries/LibGotchiLending.sol"; + contract AavegotchiGameFacet is Modifiers { /// @dev This emits when the approved address for an NFT is changed or /// reaffirmed. The zero address indicates there is no approved address. @@ -301,11 +303,6 @@ contract AavegotchiGameFacet is Modifiers { s.realmAddress = _realm; } - function realmInteract(uint256 _tokenId) external { - require(msg.sender == s.realmAddress, "AavegotchiGamefacet: Not RealmAddress"); - LibAavegotchi.interact(_tokenId); - } - ///@notice Allow the owner of an NFT to spend skill points for it(basically to boost the numeric traits of that NFT) ///@dev only valid for claimed aavegotchis ///@param _tokenId The identifier of the NFT to spend the skill points on @@ -328,4 +325,30 @@ contract AavegotchiGameFacet is Modifiers { function isAavegotchiLocked(uint256 _tokenId) external view returns (bool isLocked) { isLocked = s.aavegotchis[_tokenId].locked; } + + ///@notice Allow the current owner/borrower of an NFT to reduce kinship while channelling alchemica + ///@dev will revert if the gotchi kinship is too low to channel or if the lending listing does not enable channeling + ///@param _gotchiId Id of the Gotchi used to channel + function reduceKinshipViaChanneling(uint32 _gotchiId) external { + //only realmDiamond can reduce kinship + require(msg.sender == s.realmAddress, "GotchiLending: Only Realm can reduce kinship via channeling"); + //no need to do checks on _gotchiId since realmDiamond handles that + //first check if aavegotchi is lent + if (LibGotchiLending.isAavegotchiLent(_gotchiId)) { + //check if channeling is allowed for the listing + uint32 listingId = s.aavegotchiToListingId[_gotchiId]; + if (LibGotchiLending.getChannelingStatus(listingId) > 0) { + //more checks can be introduced here as different permissions are added + LibAavegotchi._reduceAavegotchiKinship(_gotchiId, 2); + } else { + revert("Channeling not enabled by listing owner"); + } + } + //if aavegotchi is not lent + else { + LibAavegotchi._reduceAavegotchiKinship(_gotchiId, 2); + } + + LibAavegotchi.interact(_gotchiId); + } } diff --git a/contracts/Aavegotchi/facets/GotchiLendingFacet.sol b/contracts/Aavegotchi/facets/GotchiLendingFacet.sol index 26a8a6dad..3c3298221 100644 --- a/contracts/Aavegotchi/facets/GotchiLendingFacet.sol +++ b/contracts/Aavegotchi/facets/GotchiLendingFacet.sol @@ -26,6 +26,7 @@ contract GotchiLendingFacet is Modifiers { address thirdParty; uint32 whitelistId; address[] revenueTokens; + uint256 channellingStatus; } ///@notice Allow an aavegotchi lender (msg sender) or their lending operator to add request for lending @@ -45,7 +46,8 @@ contract GotchiLendingFacet is Modifiers { originalOwner: p.originalOwner, thirdParty: p.thirdParty, whitelistId: p.whitelistId, - revenueTokens: p.revenueTokens + revenueTokens: p.revenueTokens, + channellingStatus: p.channellingStatus }); LibGotchiLending._addGotchiLending(addLendingStruct); } @@ -140,7 +142,8 @@ contract GotchiLendingFacet is Modifiers { address _originalOwner, address _thirdParty, uint32 _whitelistId, - address[] calldata _revenueTokens + address[] calldata _revenueTokens, + uint256 _channellingStatus ) external { uint8[3] memory revenueSplit = _revenueSplit; address[] memory revenueTokens = _revenueTokens; @@ -152,7 +155,8 @@ contract GotchiLendingFacet is Modifiers { originalOwner: _originalOwner, thirdParty: _thirdParty, whitelistId: _whitelistId, - revenueTokens: revenueTokens + revenueTokens: revenueTokens, + channellingStatus: _channellingStatus }); addGotchiListing(listing); } @@ -176,7 +180,8 @@ contract GotchiLendingFacet is Modifiers { originalOwner: lending.originalOwner, thirdParty: lending.thirdParty, whitelistId: lending.whitelistId, - revenueTokens: lending.revenueTokens + revenueTokens: lending.revenueTokens, + channellingStatus: lending.channellingStatus }) ); } diff --git a/contracts/Aavegotchi/facets/LendingGetterAndSetterFacet.sol b/contracts/Aavegotchi/facets/LendingGetterAndSetterFacet.sol index 529661e73..7b0db32b9 100644 --- a/contracts/Aavegotchi/facets/LendingGetterAndSetterFacet.sol +++ b/contracts/Aavegotchi/facets/LendingGetterAndSetterFacet.sol @@ -67,6 +67,10 @@ contract LendingGetterAndSetterFacet is Modifiers { } } + function setLendingChannelingStatus(uint32 _listingId, uint256 _newChannelStatus) external { + LibGotchiLending.changeChannelingStatus(_listingId, _newChannelStatus); + } + /*///////////////////////////////////////////////////////////////////////////////// /// GETTERS /// /////////////////////////////////////////////////////////////////////////////////*/ @@ -86,11 +90,7 @@ contract LendingGetterAndSetterFacet is Modifiers { } } - function isLendingOperator( - address _lender, - address _lendingOperator, - uint32 _tokenId - ) external view returns (bool) { + function isLendingOperator(address _lender, address _lendingOperator, uint32 _tokenId) external view returns (bool) { return s.lendingOperators[_lender][_lendingOperator][_tokenId]; } @@ -107,11 +107,9 @@ contract LendingGetterAndSetterFacet is Modifiers { ///@param _listingId The identifier of the lending to query ///@return listing_ A struct containing certain details about the lending like timeCreated etc ///@return aavegotchiInfo_ A struct containing details about the aavegotchi - function getGotchiLendingListingInfo(uint32 _listingId) - external - view - returns (GotchiLending memory listing_, AavegotchiInfo memory aavegotchiInfo_) - { + function getGotchiLendingListingInfo( + uint32 _listingId + ) external view returns (GotchiLending memory listing_, AavegotchiInfo memory aavegotchiInfo_) { listing_ = LibGotchiLending.getListing(_listingId); aavegotchiInfo_ = LibAavegotchi.getAavegotchi(listing_.erc721TokenId); } @@ -141,11 +139,7 @@ contract LendingGetterAndSetterFacet is Modifiers { ///@param _status Status of the listings to query, "listed" or "agreed" ///@param _length How many aavegotchi listings to return ///@return listings_ An array of lending - function getOwnerGotchiLendings( - address _lender, - bytes32 _status, - uint256 _length - ) external view returns (GotchiLending[] memory listings_) { + function getOwnerGotchiLendings(address _lender, bytes32 _status, uint256 _length) external view returns (GotchiLending[] memory listings_) { uint32 listingId = s.aavegotchiLenderLendingHead[_lender][_status]; listings_ = new GotchiLending[](_length); uint256 listIndex; @@ -214,4 +208,8 @@ contract LendingGetterAndSetterFacet is Modifiers { function isAavegotchiListed(uint32 _erc721TokenId) external view returns (bool) { return LibGotchiLending.isAavegotchiListed(_erc721TokenId); } + + function getListingChannelingStatus(uint32 _listingId) external view returns (uint256) { + return LibGotchiLending.getChannelingStatus(_listingId); + } } diff --git a/contracts/Aavegotchi/libraries/LibAavegotchi.sol b/contracts/Aavegotchi/libraries/LibAavegotchi.sol index e009a3643..fa11346c7 100644 --- a/contracts/Aavegotchi/libraries/LibAavegotchi.sol +++ b/contracts/Aavegotchi/libraries/LibAavegotchi.sol @@ -121,17 +121,15 @@ library LibAavegotchi { uint256 multiplier = rarityMultiplier(singlePortalAavegotchiTraits_.numericTraits); //First we get the base price of our collateral in terms of DAI - uint256 collateralDAIPrice = ((10**IERC20(collateralType).decimals()) / conversionRate); + uint256 collateralDAIPrice = ((10 ** IERC20(collateralType).decimals()) / conversionRate); //Then multiply by the rarity multiplier singlePortalAavegotchiTraits_.minimumStake = collateralDAIPrice * multiplier; } - function portalAavegotchiTraits(uint256 _tokenId) - internal - view - returns (PortalAavegotchiTraitsIO[PORTAL_AAVEGOTCHIS_NUM] memory portalAavegotchiTraits_) - { + function portalAavegotchiTraits( + uint256 _tokenId + ) internal view returns (PortalAavegotchiTraitsIO[PORTAL_AAVEGOTCHIS_NUM] memory portalAavegotchiTraits_) { AppStorage storage s = LibAppStorage.diamondStorage(); require(s.aavegotchis[_tokenId].status == LibAavegotchi.STATUS_OPEN_PORTAL, "AavegotchiFacet: Portal not open"); @@ -177,11 +175,9 @@ library LibAavegotchi { } //Only valid for claimed Aavegotchis - function modifiedTraitsAndRarityScore(uint256 _tokenId) - internal - view - returns (int16[NUMERIC_TRAITS_NUM] memory numericTraits_, uint256 rarityScore_) - { + function modifiedTraitsAndRarityScore( + uint256 _tokenId + ) internal view returns (int16[NUMERIC_TRAITS_NUM] memory numericTraits_, uint256 rarityScore_) { AppStorage storage s = LibAppStorage.diamondStorage(); require(s.aavegotchis[_tokenId].status == STATUS_AAVEGOTCHI, "AavegotchiFacet: Must be claimed"); Aavegotchi storage aavegotchi = s.aavegotchis[_tokenId]; @@ -236,7 +232,7 @@ library LibAavegotchi { function xpUntilNextLevel(uint256 _experience) internal pure returns (uint256 requiredXp_) { uint256 currentLevel = aavegotchiLevel(_experience); - requiredXp_ = ((currentLevel**2) * 50) - _experience; + requiredXp_ = ((currentLevel ** 2) * 50) - _experience; } function aavegotchiLevel(uint256 _experience) internal pure returns (uint256 level_) { @@ -345,11 +341,7 @@ library LibAavegotchi { // function removeTokenFromUser(address _from, uint256 _tokenId) internal {} - function transfer( - address _from, - address _to, - uint256 _tokenId - ) internal { + function transfer(address _from, address _to, uint256 _tokenId) internal { AppStorage storage s = LibAppStorage.diamondStorage(); // remove @@ -372,4 +364,14 @@ library LibAavegotchi { s.ownerTokenIds[_to].push(uint32(_tokenId)); emit LibERC721.Transfer(_from, _to, _tokenId); } + + function _reduceAavegotchiKinship(uint256 _tokenId, uint256 _amount) internal { + AppStorage storage s = LibAppStorage.diamondStorage(); + uint256 currentKinship = s.aavegotchis[_tokenId].interactionCount; + if (_amount > currentKinship) { + revert("Kinship too low to channel"); + } else { + s.aavegotchis[_tokenId].interactionCount -= _amount; + } + } } diff --git a/contracts/Aavegotchi/libraries/LibAppStorage.sol b/contracts/Aavegotchi/libraries/LibAppStorage.sol index 4252c6f6a..2203f17c4 100644 --- a/contracts/Aavegotchi/libraries/LibAppStorage.sol +++ b/contracts/Aavegotchi/libraries/LibAppStorage.sol @@ -181,6 +181,8 @@ struct GotchiLending { uint32 period; //in seconds // storage slot 5 address[] revenueTokens; + //storage slot 6 + uint256 channellingStatus; } struct LendingListItem { diff --git a/contracts/Aavegotchi/libraries/LibGotchiLending.sol b/contracts/Aavegotchi/libraries/LibGotchiLending.sol index 16e5d4cd7..083bf87db 100644 --- a/contracts/Aavegotchi/libraries/LibGotchiLending.sol +++ b/contracts/Aavegotchi/libraries/LibGotchiLending.sol @@ -11,6 +11,89 @@ import {LibWhitelist} from "./LibWhitelist.sol"; import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol"; import {IRealmDiamond} from "../../shared/interfaces/IRealmDiamond.sol"; +import {LibMeta} from "../../shared/libraries/LibMeta.sol"; + +library LibEventStructContainers { + struct GotchiLendingAdd { + uint32 listingId; + address lender; + uint32 tokenId; + uint96 initialCost; + uint32 period; + uint8[3] revenueSplit; + address originalOwner; + address thirdParty; + uint32 whitelistId; + address[] revenueTokens; + uint256 timeCreated; + uint256 channellingStatus; + } + + struct GotchiLendingExecution { + uint32 listingId; + address lender; + address borrower; + uint32 tokenId; + uint96 initialCost; + uint32 period; + uint8[3] revenueSplit; + address originalOwner; + address thirdParty; + uint32 whitelistId; + address[] revenueTokens; + uint256 timeAgreed; + uint256 channellingStatus; + } + + struct GotchiLendingCancellation { + uint32 listingId; + address lender; + uint32 tokenId; + uint96 initialCost; + uint32 period; + uint8[3] revenueSplit; + address originalOwner; + address thirdParty; + uint32 whitelistId; + address[] revenueTokens; + uint256 timeCancelled; + uint256 channellingStatus; + } + + struct GotchiLendingClaim { + uint32 listingId; + address lender; + address borrower; + uint32 tokenId; + uint96 initialCost; + uint32 period; + uint8[3] revenueSplit; + address originalOwner; + address thirdParty; + uint32 whitelistId; + address[] revenueTokens; + uint256[] amounts; + uint256 timeClaimed; + uint256 channellingStatus; + } + + struct GotchiLendingEnd { + uint32 listingId; + address lender; + address borrower; + uint32 tokenId; + uint96 initialCost; + uint32 period; + uint8[3] revenueSplit; + address originalOwner; + address thirdParty; + uint32 whitelistId; + address[] revenueTokens; + uint256 timeEnded; + uint256 channellingStatus; + } +} + library LibGotchiLending { using EnumerableSet for EnumerableSet.UintSet; @@ -19,75 +102,14 @@ library LibGotchiLending { event GotchiLendingCancel(uint32 indexed listingId, uint256 time); event GotchiLendingClaim(uint32 indexed listingId, address[] tokenAddresses, uint256[] amounts); event GotchiLendingEnd(uint32 indexed listingId); - event GotchiLendingAdded( - uint32 indexed listingId, - address indexed lender, - uint32 indexed tokenId, - uint96 initialCost, - uint32 period, - uint8[3] revenueSplit, - address originalOwner, - address thirdParty, - uint32 whitelistId, - address[] revenueTokens, - uint256 timeCreated - ); - event GotchiLendingExecuted( - uint32 indexed listingId, - address indexed lender, - address indexed borrower, - uint32 tokenId, - uint96 initialCost, - uint32 period, - uint8[3] revenueSplit, - address originalOwner, - address thirdParty, - uint32 whitelistId, - address[] revenueTokens, - uint256 timeAgreed - ); - event GotchiLendingCanceled( - uint32 indexed listingId, - address indexed lender, - uint32 indexed tokenId, - uint96 initialCost, - uint32 period, - uint8[3] revenueSplit, - address originalOwner, - address thirdParty, - uint32 whitelistId, - address[] revenueTokens, - uint256 timeCanceled - ); - event GotchiLendingClaimed( - uint32 indexed listingId, - address indexed lender, - address indexed borrower, - uint32 tokenId, - uint96 initialCost, - uint32 period, - uint8[3] revenueSplit, - address originalOwner, - address thirdParty, - uint32 whitelistId, - address[] revenueTokens, - uint256[] amounts, - uint256 timeClaimed - ); - event GotchiLendingEnded( - uint32 indexed listingId, - address indexed lender, - address indexed borrower, - uint32 tokenId, - uint96 initialCost, - uint32 period, - uint8[3] revenueSplit, - address originalOwner, - address thirdParty, - uint32 whitelistId, - address[] revenueTokens, - uint256 timeEnded - ); + + event GotchiLendingAdded(LibEventStructContainers.GotchiLendingAdd); + event GotchiLendingExecuted(LibEventStructContainers.GotchiLendingExecution); + event GotchiLendingCancelled(LibEventStructContainers.GotchiLendingCancellation); + event GotchiLendingClaimed(LibEventStructContainers.GotchiLendingClaim); + event GotchiLendingEnded(LibEventStructContainers.GotchiLendingEnd); + + event LendingChannelingStatusChanged(uint32 listingId, uint256 channellingStatus); function getListing(uint32 _listingId) internal view returns (GotchiLending memory listing_) { AppStorage storage s = LibAppStorage.diamondStorage(); @@ -116,6 +138,7 @@ library LibGotchiLending { address thirdParty; uint32 whitelistId; address[] revenueTokens; + uint256 channellingStatus; } function _addGotchiLending(LibAddGotchiLending memory _listing) internal { @@ -152,24 +175,30 @@ library LibGotchiLending { timeAgreed: 0, lastClaimed: 0, canceled: false, - completed: false + completed: false, + channellingStatus: _listing.channellingStatus }); + addLendingListItem(_listing.lender, listingId, "listed"); s.aavegotchis[_listing.tokenId].locked = true; emit GotchiLendingAdd(listingId); + emit LendingChannelingStatusChanged(listingId, _listing.channellingStatus); emit GotchiLendingAdded( - listingId, - _listing.lender, - _listing.tokenId, - _listing.initialCost, - _listing.period, - _listing.revenueSplit, - _listing.originalOwner, - _listing.thirdParty, - _listing.whitelistId, - _listing.revenueTokens, - block.timestamp + LibEventStructContainers.GotchiLendingAdd( + listingId, + _listing.lender, + _listing.tokenId, + _listing.initialCost, + _listing.period, + _listing.revenueSplit, + _listing.originalOwner, + _listing.thirdParty, + _listing.whitelistId, + _listing.revenueTokens, + block.timestamp, + _listing.channellingStatus + ) ); } @@ -183,6 +212,7 @@ library LibGotchiLending { ) internal { AppStorage storage s = LibAppStorage.diamondStorage(); GotchiLending storage lending = s.gotchiLendings[_listingId]; + verifyAgreeGotchiLendingParams(_borrower, _listingId, _erc721TokenId, _initialCost, _period, _revenueSplit); // gas savings address lender = lending.lender; @@ -191,7 +221,8 @@ library LibGotchiLending { LibERC20.transferFrom(s.ghstContract, _borrower, lender, _initialCost); } lending.borrower = _borrower; - lending.timeAgreed = uint40(block.timestamp); + uint40 currentTime = uint40(block.timestamp); + lending.timeAgreed = currentTime; removeLendingListItem(lender, _listingId, "listed"); addLendingListItem(lender, _listingId, "agreed"); @@ -221,18 +252,21 @@ library LibGotchiLending { emit GotchiLendingExecute(_listingId); emit GotchiLendingExecuted( - _listingId, - lending.lender, - _borrower, - _erc721TokenId, - lending.initialCost, - lending.period, - lending.revenueSplit, - lending.originalOwner, - lending.thirdParty, - lending.whitelistId, - lending.revenueTokens, - block.timestamp + LibEventStructContainers.GotchiLendingExecution( + _listingId, + lending.lender, + _borrower, + _erc721TokenId, + lending.initialCost, + lending.period, + lending.revenueSplit, + lending.originalOwner, + lending.thirdParty, + lending.whitelistId, + lending.revenueTokens, + currentTime, + lending.channellingStatus + ) ); } @@ -253,18 +287,21 @@ library LibGotchiLending { s.aavegotchiToListingId[lending.erc721TokenId] = 0; emit GotchiLendingCancel(_listingId, block.timestamp); - emit GotchiLendingCanceled( - _listingId, - lending.lender, - lending.erc721TokenId, - lending.initialCost, - lending.period, - lending.revenueSplit, - lending.originalOwner, - lending.thirdParty, - lending.whitelistId, - lending.revenueTokens, - block.timestamp + emit GotchiLendingCancelled( + LibEventStructContainers.GotchiLendingCancellation( + _listingId, + lending.lender, + lending.erc721TokenId, + lending.initialCost, + lending.period, + lending.revenueSplit, + lending.originalOwner, + lending.thirdParty, + lending.whitelistId, + lending.revenueTokens, + block.timestamp, + lending.channellingStatus + ) ); } @@ -319,19 +356,22 @@ library LibGotchiLending { emit GotchiLendingClaim(listingId, lending.revenueTokens, amounts); emit GotchiLendingClaimed( - listingId, - lending.lender, - lending.borrower, - lending.erc721TokenId, - lending.initialCost, - lending.period, - lending.revenueSplit, - lending.originalOwner, - lending.thirdParty, - lending.whitelistId, - lending.revenueTokens, - amounts, - block.timestamp + LibEventStructContainers.GotchiLendingClaim( + listingId, + lending.lender, + lending.borrower, + lending.erc721TokenId, + lending.initialCost, + lending.period, + lending.revenueSplit, + lending.originalOwner, + lending.thirdParty, + lending.whitelistId, + lending.revenueTokens, + amounts, + block.timestamp, + lending.channellingStatus + ) ); } @@ -360,18 +400,21 @@ library LibGotchiLending { } emit GotchiLendingEnd(listingId); emit GotchiLendingEnded( - listingId, - lending.lender, - lending.borrower, - lending.erc721TokenId, - lending.initialCost, - lending.period, - lending.revenueSplit, - lending.originalOwner, - lending.thirdParty, - lending.whitelistId, - lending.revenueTokens, - block.timestamp + LibEventStructContainers.GotchiLendingEnd( + listingId, + lending.lender, + lending.borrower, + lending.erc721TokenId, + lending.initialCost, + lending.period, + lending.revenueSplit, + lending.originalOwner, + lending.thirdParty, + lending.whitelistId, + lending.revenueTokens, + block.timestamp, + lending.channellingStatus + ) ); } @@ -473,11 +516,7 @@ library LibGotchiLending { return _period > 0 && _period <= 2_592_000; //No reason to have a period longer than 30 days } - function checkRevenueParams( - uint8[3] memory _revenueSplit, - address[] memory _revenueTokens, - address _thirdParty - ) internal view returns (bool) { + function checkRevenueParams(uint8[3] memory _revenueSplit, address[] memory _revenueTokens, address _thirdParty) internal view returns (bool) { AppStorage storage s = LibAppStorage.diamondStorage(); require(_revenueSplit[0] + _revenueSplit[1] + _revenueSplit[2] == 100, "LibGotchiLending: Sum of revenue splits not 100"); for (uint256 i = 0; i < _revenueTokens.length; ) { @@ -494,11 +533,7 @@ library LibGotchiLending { return true; } - function addLendingListItem( - address _lender, - uint32 _listingId, - bytes32 _status - ) internal { + function addLendingListItem(address _lender, uint32 _listingId, bytes32 _status) internal { AppStorage storage s = LibAppStorage.diamondStorage(); uint32 headListingId = s.aavegotchiLenderLendingHead[_lender][_status]; @@ -522,11 +557,7 @@ library LibGotchiLending { lendingItem.listingId = _listingId; } - function removeLendingListItem( - address _lender, - uint32 _listingId, - bytes32 _status - ) internal { + function removeLendingListItem(address _lender, uint32 _listingId, bytes32 _status) internal { AppStorage storage s = LibAppStorage.diamondStorage(); LendingListItem storage lendingItem = s.gotchiLendingListItem[_status][_listingId]; @@ -570,4 +601,22 @@ library LibGotchiLending { lendingItem.parentListingId = 0; lendingItem.childListingId = 0; } + + function changeChannelingStatus(uint32 _listingId, uint256 _newChannelStatus) internal { + AppStorage storage s = LibAppStorage.diamondStorage(); + GotchiLending storage lending = s.gotchiLendings[_listingId]; + //make sure listing exists + require(lending.timeCreated != 0, "GotchiLending: Listing not found"); + address sender = LibMeta.msgSender(); + address lender = lending.lender; + require(lender == sender, "GotchiLending: Only lender can toggle channeling status"); + require(lending.timeAgreed == 0, "LibGotchiLending: Listing already agreed"); + s.gotchiLendings[_listingId].channellingStatus = _newChannelStatus; + emit LendingChannelingStatusChanged(_listingId, _newChannelStatus); + } + + function getChannelingStatus(uint32 _listingId) internal view returns (uint256) { + AppStorage storage s = LibAppStorage.diamondStorage(); + return s.gotchiLendings[_listingId].channellingStatus; + } } diff --git a/scripts/helperFunctions.ts b/scripts/helperFunctions.ts index 95059dafd..68b6c667c 100644 --- a/scripts/helperFunctions.ts +++ b/scripts/helperFunctions.ts @@ -25,6 +25,13 @@ export async function impersonate( method: "hardhat_impersonateAccount", params: [address], }); + + //give some ether + await ethers.provider.send("hardhat_setBalance", [ + address, + "0x100000000000000000000", + ]); + let signer = await ethers.getSigner(address); contract = contract.connect(signer); return contract; diff --git a/scripts/upgrades/upgrade-kinshipBurning.ts b/scripts/upgrades/upgrade-kinshipBurning.ts new file mode 100644 index 000000000..81f9a3684 --- /dev/null +++ b/scripts/upgrades/upgrade-kinshipBurning.ts @@ -0,0 +1,69 @@ +import { ethers, run } from "hardhat"; +import { + convertFacetAndSelectorsToString, + DeployUpgradeTaskArgs, + FacetsAndAddSelectors, +} from "../../tasks/deployUpgrade"; +import { aavegotchiDiamondAddressMatic } from "../../helpers/constants"; + +export async function upgrade() { + const diamondUpgrader = "0x35fe3df776474a7b24b3b1ec6e745a830fdad351"; + + const addGotchiListing = + "(uint32 tokenId,uint96 initialCost,uint32 period,uint8[3] revenueSplit,address originalOwner,address thirdParty,uint32 whitelistId,address[] revenueTokens, uint256 channellingStatus)"; + const addGotchiListingOld = + "(uint32 tokenId,uint96 initialCost,uint32 period,uint8[3] revenueSplit,address originalOwner,address thirdParty,uint32 whitelistId,address[] revenueTokens)"; + const facets: FacetsAndAddSelectors[] = [ + { + facetName: "GotchiLendingFacet", + addSelectors: [ + `function addGotchiListing(${addGotchiListing} memory p) external`, + `function addGotchiLending(uint32 _erc721TokenId,uint96 _initialCost,uint32 _period,uint8[3] calldata _revenueSplit,address _originalOwner,address _thirdParty,uint32 _whitelistId,address[] calldata _revenueTokens, uint256 channellingStatus) external`, + `function batchAddGotchiListing(${addGotchiListing}[] memory listings) external`, + ], + removeSelectors: [ + `function addGotchiListing(${addGotchiListingOld} memory p) external`, + `function addGotchiLending(uint32 _erc721TokenId,uint96 _initialCost,uint32 _period,uint8[3] calldata _revenueSplit,address _originalOwner,address _thirdParty,uint32 _whitelistId,address[] calldata _revenueTokens) external`, + `function batchAddGotchiListing(${addGotchiListingOld}[] memory listings) external`, + ], + }, + { + facetName: "AavegotchiGameFacet", + addSelectors: [ + "function reduceKinshipViaChanneling(uint32 _gotchiId) external", + ], + removeSelectors: ["function realmInteract(uint256 _tokenId) external "], + }, + { + facetName: "LendingGetterAndSetterFacet", + addSelectors: [ + ` function getListingChannelingStatus(uint32 _listingId) external view returns (uint256)`, + `function setLendingChannelingStatus(uint32 _listingId, uint256 _newChannelStatus) external`, + ], + removeSelectors: [], + }, + ]; + + const joined = convertFacetAndSelectorsToString(facets); + const args: DeployUpgradeTaskArgs = { + diamondUpgrader: diamondUpgrader, + diamondAddress: aavegotchiDiamondAddressMatic, + facetsAndAddSelectors: joined, + useLedger: false, + useMultisig: false, + initAddress: ethers.constants.AddressZero, + initCalldata: "0x", + }; + + await run("deployUpgrade", args); +} + +if (require.main === module) { + upgrade() + .then(() => process.exit(0)) + // .then(() => console.log('upgrade completed') /* process.exit(0) */) + .catch((error) => { + console.error(error); + process.exit(1); + }); +} diff --git a/test/testNewLendingEvents.ts b/test/testNewLendingEvents.ts new file mode 100644 index 000000000..9c2332a80 --- /dev/null +++ b/test/testNewLendingEvents.ts @@ -0,0 +1,303 @@ +/* global describe it before ethers network */ +/* eslint prefer-const: "off" */ + +//@ts-ignore +import { ethers, network } from "hardhat"; + +import { impersonate } from "../scripts/helperFunctions"; +import { GotchiLendingFacet, LendingGetterAndSetterFacet } from "../typechain"; +import { expect } from "chai"; +import { upgrade } from "../scripts/upgrades/upgrade-kinshipBurning"; + +import { BigNumber, ContractReceipt } from "ethers"; + +const gCancel = [ + `event GotchiLendingCancelled((uint32 listingId,address lender,uint32 tokenId,uint96 initialCost,uint32 period,uint8[3] revenueSplit,address originalOwner,address thirdParty,uint32 whitelistId,address[] revenueTokens,uint256 timeCancelled,uint256 channellingStatus))`, +]; +const gAdd = [ + `event GotchiLendingAdded((uint32 listingId,address lender,uint32 tokenId,uint96 initialCost,uint32 period,uint8[3] revenueSplit,address originalOwner,address thirdParty,uint32 whitelistId,address[] revenueTokens,uint256 timeCreated,uint256 channellingStatus))`, +]; +const gExecute = [ + `event GotchiLendingExecuted((uint32 listingId,address lender,address borrower,uint32 tokenId,uint96 initialCost,uint32 period,uint8[3] revenueSplit,address originalOwner,address thirdParty,uint32 whitelistId,address[] revenueTokens,uint256 timeAgreed,uint256 channellingStatus))`, +]; + +const gClaim = [ + `event GotchiLendingClaimed((uint32 listingId,address lender,address borrower,uint32 tokenId,uint96 initialCost,uint32 period,uint8[3] revenueSplit,address originalOwner,address thirdParty,uint32 whitelistId,address[] revenueTokens,uint256[] amounts,uint256 timeClaimed,uint256 channellingStatus))`, +]; + +const gEnd = [ + `event GotchiLendingEnded((uint32 listingId,address lender,address borrower,uint32 tokenId,uint96 initialCost,uint32 period,uint8[3] revenueSplit,address originalOwner,address thirdParty,uint32 whitelistId,address[] revenueTokens,uint256 timeEnded,uint256 channellingStatus))`, +]; + +const user: string = "0x4083FE56Ed8e2784CD720ec6851a01E7e931076b"; +interface IGotchiLending { + listingId: string; + lender: string; + tokenId: BigNumber; + initialCost: BigNumber; + period: number; + revenueSplit: [BigNumber, BigNumber, BigNumber]; + originalOwner: string; + thirdParty: string; + whitelistId: BigNumber; + revenueTokens: string[]; + timeCancelled?: BigNumber; + timeEnded?: BigNumber; + timeClaimed?: BigNumber; + timeAgreed?: BigNumber; + timeCreated?: BigNumber; + borrower?: string; + channellingStatus: BigNumber; +} + +let gotchiLendingFacet: GotchiLendingFacet; +let getAndSetFacet: LendingGetterAndSetterFacet; +describe("Testing Correct events for lending actions", async function () { + this.timeout(3000000); + const diamondAddress = "0x86935F11C86623deC8a25696E1C19a8659CbF95d"; + + let newListingId: string; + let owner: string; + + let cancellationDetails: { + tokenId: any; + initialCost: any; + period: any; + revenueSplit: any; + originalOwner: any; + thirdParty: any; + whitelistId: any; + revenueTokens: any; + channellingStatus: any; + listingId?: string; + lender?: string; + timeCancelled?: number; + }; + + // this.timeout(300000) + before(async function () { + await upgrade(); + + gotchiLendingFacet = (await ethers.getContractAt( + "GotchiLendingFacet", + diamondAddress + )) as GotchiLendingFacet; + + getAndSetFacet = (await ethers.getContractAt( + "LendingGetterAndSetterFacet", + diamondAddress + )) as LendingGetterAndSetterFacet; + + // aavegotchiFacet = (await ethers.getContractAt( + // "contracts/Aavegotchi/facets/AavegotchiFacet.sol:AavegotchiFacet", + // diamondAddress + // )) as AavegotchiFacet; + }); + + it("Test event for lending cancellation ", async function () { + const listingId = "1730619"; + + const info = await getAndSetFacet.getLendingListingInfo(listingId); + + gotchiLendingFacet = await impersonate( + info.lender, + gotchiLendingFacet, + ethers, + network + ); + + //make sure the listingCancelled event is emitted + + const GotchiLendingCancellation = { + listingId: listingId, + lender: info.lender, + tokenId: info.erc721TokenId, + initialCost: info.initialCost, + period: info.period, + revenueSplit: info.revenueSplit, + originalOwner: info.originalOwner, + thirdParty: info.thirdParty, + whitelistId: info.whitelistId, + revenueTokens: info.revenueTokens, + timeCancelled: getCurrentTimestamp(), + channellingStatus: 0, + }; + + //cache details for later + cancellationDetails = GotchiLendingCancellation; + + const tx = await gotchiLendingFacet.cancelGotchiLending(listingId); + const tx2 = await tx.wait(); + + owner = info.lender; + + modularAssert("cancel", tx2, GotchiLendingCancellation); + }); + + it("Test event for lending creation ", async function () { + //make sure the listingCancelled event is emitted + //create similar listing + const tx = await gotchiLendingFacet.addGotchiLending( + cancellationDetails.tokenId, + cancellationDetails.initialCost, + cancellationDetails.period, + cancellationDetails.revenueSplit, + cancellationDetails.originalOwner, + cancellationDetails.thirdParty, + cancellationDetails.whitelistId, + cancellationDetails.revenueTokens, + 0 + ); + + const tx2 = await tx.wait(); + + newListingId = await modularAssert("add", tx2, cancellationDetails); + }); + + it("Test for channeling permission changes", async function () { + getAndSetFacet = await impersonate(owner, getAndSetFacet, ethers, network); + + const tx = await getAndSetFacet.setLendingChannelingStatus(newListingId, 1); + + const tx2 = await tx.wait(); + + const newChannelingStatus = await getAndSetFacet.getListingChannelingStatus( + newListingId + ); + + expect(newChannelingStatus).to.equal(1); + }); + + it("Test event for lending execution ", async function () { + gotchiLendingFacet = await impersonate( + user, + gotchiLendingFacet, + ethers, + network + ); + const tx = await gotchiLendingFacet.agreeGotchiLending( + newListingId, + cancellationDetails.tokenId, + cancellationDetails.initialCost, + cancellationDetails.period, + cancellationDetails.revenueSplit + ); + const tx2 = await tx.wait(); + + cancellationDetails.listingId = newListingId; + newListingId = await modularAssert("execute", tx2, cancellationDetails); + }); + + it("Cannot change channeling status while listing has been executed", async function () { + getAndSetFacet = await impersonate(owner, getAndSetFacet, ethers, network); + + await expect( + getAndSetFacet.setLendingChannelingStatus(newListingId, 1) + ).to.be.revertedWith("LibGotchiLending: Listing already agreed"); + }); + + it("Test event for lending claim ", async function () { + const tx = await gotchiLendingFacet.claimGotchiLending( + cancellationDetails.tokenId + ); + const tx2 = await tx.wait(); + + modularAssert("claim", tx2, cancellationDetails); + }); + + it("Test event for lending end", async function () { + //warp time by 2 days + await network.provider.send("evm_increaseTime", [172800]); + await network.provider.send("evm_mine"); + + const tx = await gotchiLendingFacet.claimAndEndGotchiLending( + cancellationDetails.tokenId + ); + const tx2 = await tx.wait(); + + modularAssert("end", tx2, cancellationDetails); + }); +}); + +async function modularAssert( + action: "add" | "execute" | "cancel" | "claim" | "end", + dataIn: ContractReceipt, + info: any +) { + //get the last event + + const data = dataIn.events![dataIn.events!.length - 1]; + + const ev = { + topics: data.topics, + data: data.data, + }; + let pItems: IGotchiLending[] = []; + if (action === "add") { + pItems = parse(ev, gAdd) as IGotchiLending[]; + expect(pItems[0].timeCreated).within( + info.timeCancelled - 100, + info.timeCancelled + 100 + ); + } + if (action === "execute") { + pItems = parse(ev, gExecute) as IGotchiLending[]; + expect(pItems[0].timeAgreed).within( + info.timeCancelled - 100, + info.timeCancelled + 100 + ); + } + if (action === "cancel") { + pItems = parse(ev, gCancel) as IGotchiLending[]; + expect(pItems[0].timeCancelled).within( + info.timeCancelled - 100, + info.timeCancelled + 100 + ); + } + if (action === "claim") { + pItems = parse(ev, gClaim) as IGotchiLending[]; + expect(pItems[0].timeClaimed).within( + info.timeCancelled - 100, + info.timeCancelled + 100 + ); + } + if (action === "end") { + pItems = parse(ev, gEnd) as IGotchiLending[]; + } + + if (action !== "add") { + expect(pItems[0].listingId.toString()).to.eql(info.listingId.toString()); + } + + expect(pItems[0].lender).to.equal(info.lender); + expect(pItems[0].tokenId).to.equal(info.tokenId); + expect(pItems[0].initialCost).to.equal(info.initialCost); + expect(pItems[0].period).to.equal(info.period); + expect(pItems[0].revenueSplit.length).to.equal(info.revenueSplit.length); + expect(pItems[0].originalOwner).to.equal(info.originalOwner); + expect(pItems[0].thirdParty).to.equal(info.thirdParty); + expect(pItems[0].whitelistId).to.equal(info.whitelistId); + expect(pItems[0].revenueTokens.length).to.equal(info.revenueTokens.length); + + const currentChannelingStatus = + await getAndSetFacet.getListingChannelingStatus(pItems[0].listingId); + expect(pItems[0].channellingStatus).to.equal(currentChannelingStatus); + + return pItems[0].listingId; +} + +//get current timestamp in seconds +function getCurrentTimestamp(): number { + return Math.floor(Date.now() / 1000); +} + +interface LogEvent { + topics: string[]; + data: string; +} + +function parse(e: LogEvent, abi: string[]) { + let iface = new ethers.utils.Interface(abi); + + return iface.parseLog(e).args; +} From 90011cd410034f3cf827581509632a07a8c962a5 Mon Sep 17 00:00:00 2001 From: Timidan Date: Fri, 12 May 2023 17:33:33 +0100 Subject: [PATCH 06/24] update abi --- diamondABI/diamond.json | 9185 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 9184 insertions(+), 1 deletion(-) diff --git a/diamondABI/diamond.json b/diamondABI/diamond.json index c71d96942..9512fc230 100644 --- a/diamondABI/diamond.json +++ b/diamondABI/diamond.json @@ -1 +1,9184 @@ -[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_operator","type":"address"},{"indexed":false,"internalType":"bool","name":"_approved","type":"bool"}],"name":"PetOperatorApprovalForAll","type":"event"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"aavegotchiClaimTime","outputs":[{"internalType":"uint256","name":"claimTime_","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"allAavegotchisOfOwner","outputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"randomNumber","type":"uint256"},{"internalType":"uint256","name":"status","type":"uint256"},{"internalType":"int16[6]","name":"numericTraits","type":"int16[6]"},{"internalType":"int16[6]","name":"modifiedNumericTraits","type":"int16[6]"},{"internalType":"uint16[16]","name":"equippedWearables","type":"uint16[16]"},{"internalType":"address","name":"collateral","type":"address"},{"internalType":"address","name":"escrow","type":"address"},{"internalType":"uint256","name":"stakedAmount","type":"uint256"},{"internalType":"uint256","name":"minimumStake","type":"uint256"},{"internalType":"uint256","name":"kinship","type":"uint256"},{"internalType":"uint256","name":"lastInteracted","type":"uint256"},{"internalType":"uint256","name":"experience","type":"uint256"},{"internalType":"uint256","name":"toNextLevel","type":"uint256"},{"internalType":"uint256","name":"usedSkillPoints","type":"uint256"},{"internalType":"uint256","name":"level","type":"uint256"},{"internalType":"uint256","name":"hauntId","type":"uint256"},{"internalType":"uint256","name":"baseRarityScore","type":"uint256"},{"internalType":"uint256","name":"modifiedRarityScore","type":"uint256"},{"internalType":"bool","name":"locked","type":"bool"},{"components":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"itemId","type":"uint256"},{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"int8[6]","name":"traitModifiers","type":"int8[6]"},{"internalType":"bool[16]","name":"slotPositions","type":"bool[16]"},{"internalType":"uint8[]","name":"allowedCollaterals","type":"uint8[]"},{"components":[{"internalType":"uint8","name":"x","type":"uint8"},{"internalType":"uint8","name":"y","type":"uint8"},{"internalType":"uint8","name":"width","type":"uint8"},{"internalType":"uint8","name":"height","type":"uint8"}],"internalType":"struct Dimensions","name":"dimensions","type":"tuple"},{"internalType":"uint256","name":"ghstPrice","type":"uint256"},{"internalType":"uint256","name":"maxQuantity","type":"uint256"},{"internalType":"uint256","name":"totalQuantity","type":"uint256"},{"internalType":"uint32","name":"svgId","type":"uint32"},{"internalType":"uint8","name":"rarityScoreModifier","type":"uint8"},{"internalType":"bool","name":"canPurchaseWithGhst","type":"bool"},{"internalType":"uint16","name":"minLevel","type":"uint16"},{"internalType":"bool","name":"canBeTransferred","type":"bool"},{"internalType":"uint8","name":"category","type":"uint8"},{"internalType":"int16","name":"kinshipBonus","type":"int16"},{"internalType":"uint32","name":"experienceBonus","type":"uint32"}],"internalType":"struct ItemType","name":"itemType","type":"tuple"}],"internalType":"struct ItemTypeIO[]","name":"items","type":"tuple[]"}],"internalType":"struct AavegotchiInfo[]","name":"aavegotchiInfos_","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_approved","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance_","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"}],"name":"batchOwnerOf","outputs":[{"internalType":"address[]","name":"owners_","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getAavegotchi","outputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"randomNumber","type":"uint256"},{"internalType":"uint256","name":"status","type":"uint256"},{"internalType":"int16[6]","name":"numericTraits","type":"int16[6]"},{"internalType":"int16[6]","name":"modifiedNumericTraits","type":"int16[6]"},{"internalType":"uint16[16]","name":"equippedWearables","type":"uint16[16]"},{"internalType":"address","name":"collateral","type":"address"},{"internalType":"address","name":"escrow","type":"address"},{"internalType":"uint256","name":"stakedAmount","type":"uint256"},{"internalType":"uint256","name":"minimumStake","type":"uint256"},{"internalType":"uint256","name":"kinship","type":"uint256"},{"internalType":"uint256","name":"lastInteracted","type":"uint256"},{"internalType":"uint256","name":"experience","type":"uint256"},{"internalType":"uint256","name":"toNextLevel","type":"uint256"},{"internalType":"uint256","name":"usedSkillPoints","type":"uint256"},{"internalType":"uint256","name":"level","type":"uint256"},{"internalType":"uint256","name":"hauntId","type":"uint256"},{"internalType":"uint256","name":"baseRarityScore","type":"uint256"},{"internalType":"uint256","name":"modifiedRarityScore","type":"uint256"},{"internalType":"bool","name":"locked","type":"bool"},{"components":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"itemId","type":"uint256"},{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"int8[6]","name":"traitModifiers","type":"int8[6]"},{"internalType":"bool[16]","name":"slotPositions","type":"bool[16]"},{"internalType":"uint8[]","name":"allowedCollaterals","type":"uint8[]"},{"components":[{"internalType":"uint8","name":"x","type":"uint8"},{"internalType":"uint8","name":"y","type":"uint8"},{"internalType":"uint8","name":"width","type":"uint8"},{"internalType":"uint8","name":"height","type":"uint8"}],"internalType":"struct Dimensions","name":"dimensions","type":"tuple"},{"internalType":"uint256","name":"ghstPrice","type":"uint256"},{"internalType":"uint256","name":"maxQuantity","type":"uint256"},{"internalType":"uint256","name":"totalQuantity","type":"uint256"},{"internalType":"uint32","name":"svgId","type":"uint32"},{"internalType":"uint8","name":"rarityScoreModifier","type":"uint8"},{"internalType":"bool","name":"canPurchaseWithGhst","type":"bool"},{"internalType":"uint16","name":"minLevel","type":"uint16"},{"internalType":"bool","name":"canBeTransferred","type":"bool"},{"internalType":"uint8","name":"category","type":"uint8"},{"internalType":"int16","name":"kinshipBonus","type":"int16"},{"internalType":"uint32","name":"experienceBonus","type":"uint32"}],"internalType":"struct ItemType","name":"itemType","type":"tuple"}],"internalType":"struct ItemTypeIO[]","name":"items","type":"tuple[]"}],"internalType":"struct AavegotchiInfo","name":"aavegotchiInfo_","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"approved_","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"approved_","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_operator","type":"address"}],"name":"isPetOperatorForAll","outputs":[{"internalType":"bool","name":"approved_","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner_","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"name":"setPetOperatorForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"tokenId_","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"tokenIdsOfOwner","outputs":[{"internalType":"uint32[]","name":"tokenIds_","type":"uint32[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"tokenId_","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"totalSupply_","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"ClaimAavegotchi","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_time","type":"uint256"}],"name":"LockAavegotchi","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"},{"indexed":false,"internalType":"string","name":"_oldName","type":"string"},{"indexed":false,"internalType":"string","name":"_newName","type":"string"}],"name":"SetAavegotchiName","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_batchId","type":"uint256"},{"indexed":false,"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"SetBatchId","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"},{"indexed":false,"internalType":"int16[4]","name":"_values","type":"int16[4]"}],"name":"SpendSkillpoints","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_time","type":"uint256"}],"name":"UnLockAavegotchi","type":"event"},{"inputs":[{"internalType":"uint256","name":"_experience","type":"uint256"}],"name":"aavegotchiLevel","outputs":[{"internalType":"uint256","name":"level_","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"_name","type":"string"}],"name":"aavegotchiNameAvailable","outputs":[{"internalType":"bool","name":"available_","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"availableSkillPoints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int16[6]","name":"_numericTraits","type":"int16[6]"}],"name":"baseRarityScore","outputs":[{"internalType":"uint256","name":"rarityScore_","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_option","type":"uint256"},{"internalType":"uint256","name":"_stakeAmount","type":"uint256"}],"name":"claimAavegotchi","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currentHaunt","outputs":[{"internalType":"uint256","name":"hauntId_","type":"uint256"},{"components":[{"internalType":"uint256","name":"hauntMaxSize","type":"uint256"},{"internalType":"uint256","name":"portalPrice","type":"uint256"},{"internalType":"bytes3","name":"bodyColor","type":"bytes3"},{"internalType":"uint24","name":"totalCount","type":"uint24"}],"internalType":"struct Haunt","name":"haunt_","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getNumericTraits","outputs":[{"internalType":"int16[6]","name":"numericTraits_","type":"int16[6]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ghstAddress","outputs":[{"internalType":"address","name":"contract_","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"}],"name":"interact","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"isAavegotchiLocked","outputs":[{"internalType":"bool","name":"isLocked","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"kinship","outputs":[{"internalType":"uint256","name":"score_","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"modifiedTraitsAndRarityScore","outputs":[{"internalType":"int16[6]","name":"numericTraits_","type":"int16[6]"},{"internalType":"uint256","name":"rarityScore_","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"portalAavegotchiTraits","outputs":[{"components":[{"internalType":"uint256","name":"randomNumber","type":"uint256"},{"internalType":"int16[6]","name":"numericTraits","type":"int16[6]"},{"internalType":"address","name":"collateralType","type":"address"},{"internalType":"uint256","name":"minimumStake","type":"uint256"}],"internalType":"struct PortalAavegotchiTraitsIO[10]","name":"portalAavegotchiTraits_","type":"tuple[10]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int16[6]","name":"_numericTraits","type":"int16[6]"}],"name":"rarityMultiplier","outputs":[{"internalType":"uint256","name":"multiplier_","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"realmInteract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revenueShares","outputs":[{"components":[{"internalType":"address","name":"burnAddress","type":"address"},{"internalType":"address","name":"daoAddress","type":"address"},{"internalType":"address","name":"rarityFarming","type":"address"},{"internalType":"address","name":"pixelCraft","type":"address"}],"internalType":"struct AavegotchiGameFacet.RevenueSharesIO","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"string","name":"_name","type":"string"}],"name":"setAavegotchiName","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_realm","type":"address"}],"name":"setRealmAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"int16[4]","name":"_values","type":"int16[4]"}],"name":"spendSkillPoints","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"uint256","name":"_count","type":"uint256"},{"internalType":"uint256","name":"_skip","type":"uint256"},{"internalType":"bool","name":"all","type":"bool"}],"name":"tokenIdsWithKinship","outputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"kinship","type":"uint256"},{"internalType":"uint256","name":"lastInteracted","type":"uint256"}],"internalType":"struct AavegotchiGameFacet.TokenIdsWithKinship[]","name":"tokenIdsWithKinship_","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_experience","type":"uint256"}],"name":"xpUntilNextLevel","outputs":[{"internalType":"uint256","name":"requiredXp_","type":"uint256"}],"stateMutability":"pure","type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"AddedAavegotchiBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"AddedItemsBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"WithdrawnBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"WithdrawnItems","type":"event"},{"inputs":[],"name":"childChainManager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"bytes","name":"_depositData","type":"bytes"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newChildChainManager","type":"address"}],"name":"setChildChainManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"}],"name":"withdrawAavegotchiBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_ids","type":"uint256[]"},{"internalType":"uint256[]","name":"_values","type":"uint256[]"}],"name":"withdrawItemsBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_reduceAmount","type":"uint256"}],"name":"DecreaseStake","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_fromTokenId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"_toTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"experience","type":"uint256"}],"name":"ExperienceTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_stakeAmount","type":"uint256"}],"name":"IncreaseStake","type":"event"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"collateralBalance","outputs":[{"internalType":"address","name":"collateralType_","type":"address"},{"internalType":"address","name":"escrow_","type":"address"},{"internalType":"uint256","name":"balance_","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_hauntId","type":"uint256"},{"internalType":"uint256","name":"_collateralId","type":"uint256"}],"name":"collateralInfo","outputs":[{"components":[{"internalType":"address","name":"collateralType","type":"address"},{"components":[{"internalType":"int16[6]","name":"modifiers","type":"int16[6]"},{"internalType":"bytes3","name":"primaryColor","type":"bytes3"},{"internalType":"bytes3","name":"secondaryColor","type":"bytes3"},{"internalType":"bytes3","name":"cheekColor","type":"bytes3"},{"internalType":"uint8","name":"svgId","type":"uint8"},{"internalType":"uint8","name":"eyeShapeSvgId","type":"uint8"},{"internalType":"uint16","name":"conversionRate","type":"uint16"},{"internalType":"bool","name":"delisted","type":"bool"}],"internalType":"struct AavegotchiCollateralTypeInfo","name":"collateralTypeInfo","type":"tuple"}],"internalType":"struct AavegotchiCollateralTypeIO","name":"collateralInfo_","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_hauntId","type":"uint256"}],"name":"collaterals","outputs":[{"internalType":"address[]","name":"collateralTypes_","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_toId","type":"uint256"}],"name":"decreaseAndDestroy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_reduceAmount","type":"uint256"}],"name":"decreaseStake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAllCollateralTypes","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_hauntId","type":"uint256"}],"name":"getCollateralInfo","outputs":[{"components":[{"internalType":"address","name":"collateralType","type":"address"},{"components":[{"internalType":"int16[6]","name":"modifiers","type":"int16[6]"},{"internalType":"bytes3","name":"primaryColor","type":"bytes3"},{"internalType":"bytes3","name":"secondaryColor","type":"bytes3"},{"internalType":"bytes3","name":"cheekColor","type":"bytes3"},{"internalType":"uint8","name":"svgId","type":"uint8"},{"internalType":"uint8","name":"eyeShapeSvgId","type":"uint8"},{"internalType":"uint16","name":"conversionRate","type":"uint16"},{"internalType":"bool","name":"delisted","type":"bool"}],"internalType":"struct AavegotchiCollateralTypeInfo","name":"collateralTypeInfo","type":"tuple"}],"internalType":"struct AavegotchiCollateralTypeIO[]","name":"collateralInfo_","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_stakeAmount","type":"uint256"}],"name":"increaseStake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_collateralToken","type":"address"},{"internalType":"uint8","name":"_svgId","type":"uint8"}],"name":"setCollateralEyeShapeSvgId","outputs":[],"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"components":[{"internalType":"address","name":"collateralType","type":"address"},{"components":[{"internalType":"int16[6]","name":"modifiers","type":"int16[6]"},{"internalType":"bytes3","name":"primaryColor","type":"bytes3"},{"internalType":"bytes3","name":"secondaryColor","type":"bytes3"},{"internalType":"bytes3","name":"cheekColor","type":"bytes3"},{"internalType":"uint8","name":"svgId","type":"uint8"},{"internalType":"uint8","name":"eyeShapeSvgId","type":"uint8"},{"internalType":"uint16","name":"conversionRate","type":"uint16"},{"internalType":"bool","name":"delisted","type":"bool"}],"internalType":"struct AavegotchiCollateralTypeInfo","name":"collateralTypeInfo","type":"tuple"}],"indexed":false,"internalType":"struct AavegotchiCollateralTypeIO","name":"_collateralType","type":"tuple"}],"name":"AddCollateralType","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"int8[6]","name":"traitModifiers","type":"int8[6]"},{"internalType":"bool[16]","name":"slotPositions","type":"bool[16]"},{"internalType":"uint8[]","name":"allowedCollaterals","type":"uint8[]"},{"components":[{"internalType":"uint8","name":"x","type":"uint8"},{"internalType":"uint8","name":"y","type":"uint8"},{"internalType":"uint8","name":"width","type":"uint8"},{"internalType":"uint8","name":"height","type":"uint8"}],"internalType":"struct Dimensions","name":"dimensions","type":"tuple"},{"internalType":"uint256","name":"ghstPrice","type":"uint256"},{"internalType":"uint256","name":"maxQuantity","type":"uint256"},{"internalType":"uint256","name":"totalQuantity","type":"uint256"},{"internalType":"uint32","name":"svgId","type":"uint32"},{"internalType":"uint8","name":"rarityScoreModifier","type":"uint8"},{"internalType":"bool","name":"canPurchaseWithGhst","type":"bool"},{"internalType":"uint16","name":"minLevel","type":"uint16"},{"internalType":"bool","name":"canBeTransferred","type":"bool"},{"internalType":"uint8","name":"category","type":"uint8"},{"internalType":"int16","name":"kinshipBonus","type":"int16"},{"internalType":"uint32","name":"experienceBonus","type":"uint32"}],"indexed":false,"internalType":"struct ItemType","name":"_itemType","type":"tuple"}],"name":"AddItemType","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint8[]","name":"allowedCollaterals","type":"uint8[]"},{"internalType":"uint16[]","name":"wearableIds","type":"uint16[]"},{"internalType":"int8[5]","name":"traitsBonuses","type":"int8[5]"}],"indexed":false,"internalType":"struct WearableSet","name":"_wearableSet","type":"tuple"}],"name":"AddWearableSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_hauntId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_hauntMaxSize","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_portalPrice","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"_bodyColor","type":"bytes32"}],"name":"CreateHaunt","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousDao","type":"address"},{"indexed":true,"internalType":"address","name":"newDao","type":"address"}],"name":"DaoTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousDaoTreasury","type":"address"},{"indexed":true,"internalType":"address","name":"newDaoTreasury","type":"address"}],"name":"DaoTreasuryTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousForge","type":"address"},{"indexed":true,"internalType":"address","name":"newForge","type":"address"}],"name":"ForgeTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"gameManager_","type":"address"},{"indexed":true,"internalType":"uint256","name":"limit_","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"refreshTime_","type":"uint256"}],"name":"GameManagerAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"gameManager_","type":"address"}],"name":"GameManagerRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"_xpValues","type":"uint256[]"}],"name":"GrantExperience","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newItemManager_","type":"address"}],"name":"ItemManagerAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"itemManager_","type":"address"}],"name":"ItemManagerRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_wearableId","type":"uint256"},{"indexed":false,"internalType":"int8[6]","name":"_traitModifiers","type":"int8[6]"},{"indexed":false,"internalType":"uint8","name":"_rarityScoreModifier","type":"uint8"}],"name":"ItemModifiersSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256[]","name":"_itemIds","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"_maxQuanities","type":"uint256[]"}],"name":"ItemTypeMaxQuantity","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"_xpValues","type":"uint256[]"}],"name":"RemoveExperience","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"int16[6]","name":"_oldModifiers","type":"int16[6]"},{"indexed":false,"internalType":"int16[6]","name":"_newModifiers","type":"int16[6]"}],"name":"UpdateCollateralModifiers","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_itemId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_priceInWei","type":"uint256"}],"name":"UpdateItemPrice","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_itemId","type":"uint256"},{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"int8[6]","name":"traitModifiers","type":"int8[6]"},{"internalType":"bool[16]","name":"slotPositions","type":"bool[16]"},{"internalType":"uint8[]","name":"allowedCollaterals","type":"uint8[]"},{"components":[{"internalType":"uint8","name":"x","type":"uint8"},{"internalType":"uint8","name":"y","type":"uint8"},{"internalType":"uint8","name":"width","type":"uint8"},{"internalType":"uint8","name":"height","type":"uint8"}],"internalType":"struct Dimensions","name":"dimensions","type":"tuple"},{"internalType":"uint256","name":"ghstPrice","type":"uint256"},{"internalType":"uint256","name":"maxQuantity","type":"uint256"},{"internalType":"uint256","name":"totalQuantity","type":"uint256"},{"internalType":"uint32","name":"svgId","type":"uint32"},{"internalType":"uint8","name":"rarityScoreModifier","type":"uint8"},{"internalType":"bool","name":"canPurchaseWithGhst","type":"bool"},{"internalType":"uint16","name":"minLevel","type":"uint16"},{"internalType":"bool","name":"canBeTransferred","type":"bool"},{"internalType":"uint8","name":"category","type":"uint8"},{"internalType":"int16","name":"kinshipBonus","type":"int16"},{"internalType":"uint32","name":"experienceBonus","type":"uint32"}],"indexed":false,"internalType":"struct ItemType","name":"_itemType","type":"tuple"}],"name":"UpdateItemType","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_setId","type":"uint256"},{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint8[]","name":"allowedCollaterals","type":"uint8[]"},{"internalType":"uint16[]","name":"wearableIds","type":"uint16[]"},{"internalType":"int8[5]","name":"traitsBonuses","type":"int8[5]"}],"indexed":false,"internalType":"struct WearableSet","name":"_wearableSet","type":"tuple"}],"name":"UpdateWearableSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_wearableId","type":"uint256"},{"indexed":false,"internalType":"bool[16]","name":"_slotPositions","type":"bool[16]"}],"name":"WearableSlotPositionsSet","type":"event"},{"inputs":[{"internalType":"uint256","name":"_hauntId","type":"uint256"},{"components":[{"internalType":"address","name":"collateralType","type":"address"},{"components":[{"internalType":"int16[6]","name":"modifiers","type":"int16[6]"},{"internalType":"bytes3","name":"primaryColor","type":"bytes3"},{"internalType":"bytes3","name":"secondaryColor","type":"bytes3"},{"internalType":"bytes3","name":"cheekColor","type":"bytes3"},{"internalType":"uint8","name":"svgId","type":"uint8"},{"internalType":"uint8","name":"eyeShapeSvgId","type":"uint8"},{"internalType":"uint16","name":"conversionRate","type":"uint16"},{"internalType":"bool","name":"delisted","type":"bool"}],"internalType":"struct AavegotchiCollateralTypeInfo","name":"collateralTypeInfo","type":"tuple"}],"internalType":"struct AavegotchiCollateralTypeIO[]","name":"_collateralTypes","type":"tuple[]"}],"name":"addCollateralTypes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_newGameManagers","type":"address[]"},{"internalType":"uint256[]","name":"_limits","type":"uint256[]"}],"name":"addGameManagers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_newItemManagers","type":"address[]"}],"name":"addItemManagers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"int8[6]","name":"traitModifiers","type":"int8[6]"},{"internalType":"bool[16]","name":"slotPositions","type":"bool[16]"},{"internalType":"uint8[]","name":"allowedCollaterals","type":"uint8[]"},{"components":[{"internalType":"uint8","name":"x","type":"uint8"},{"internalType":"uint8","name":"y","type":"uint8"},{"internalType":"uint8","name":"width","type":"uint8"},{"internalType":"uint8","name":"height","type":"uint8"}],"internalType":"struct Dimensions","name":"dimensions","type":"tuple"},{"internalType":"uint256","name":"ghstPrice","type":"uint256"},{"internalType":"uint256","name":"maxQuantity","type":"uint256"},{"internalType":"uint256","name":"totalQuantity","type":"uint256"},{"internalType":"uint32","name":"svgId","type":"uint32"},{"internalType":"uint8","name":"rarityScoreModifier","type":"uint8"},{"internalType":"bool","name":"canPurchaseWithGhst","type":"bool"},{"internalType":"uint16","name":"minLevel","type":"uint16"},{"internalType":"bool","name":"canBeTransferred","type":"bool"},{"internalType":"uint8","name":"category","type":"uint8"},{"internalType":"int16","name":"kinshipBonus","type":"int16"},{"internalType":"uint32","name":"experienceBonus","type":"uint32"}],"internalType":"struct ItemType[]","name":"_itemTypes","type":"tuple[]"}],"name":"addItemTypes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"int8[6]","name":"traitModifiers","type":"int8[6]"},{"internalType":"bool[16]","name":"slotPositions","type":"bool[16]"},{"internalType":"uint8[]","name":"allowedCollaterals","type":"uint8[]"},{"components":[{"internalType":"uint8","name":"x","type":"uint8"},{"internalType":"uint8","name":"y","type":"uint8"},{"internalType":"uint8","name":"width","type":"uint8"},{"internalType":"uint8","name":"height","type":"uint8"}],"internalType":"struct Dimensions","name":"dimensions","type":"tuple"},{"internalType":"uint256","name":"ghstPrice","type":"uint256"},{"internalType":"uint256","name":"maxQuantity","type":"uint256"},{"internalType":"uint256","name":"totalQuantity","type":"uint256"},{"internalType":"uint32","name":"svgId","type":"uint32"},{"internalType":"uint8","name":"rarityScoreModifier","type":"uint8"},{"internalType":"bool","name":"canPurchaseWithGhst","type":"bool"},{"internalType":"uint16","name":"minLevel","type":"uint16"},{"internalType":"bool","name":"canBeTransferred","type":"bool"},{"internalType":"uint8","name":"category","type":"uint8"},{"internalType":"int16","name":"kinshipBonus","type":"int16"},{"internalType":"uint32","name":"experienceBonus","type":"uint32"}],"internalType":"struct ItemType[]","name":"_itemTypes","type":"tuple[]"},{"internalType":"string","name":"_svg","type":"string"},{"components":[{"internalType":"bytes32","name":"svgType","type":"bytes32"},{"internalType":"uint256[]","name":"sizes","type":"uint256[]"}],"internalType":"struct LibSvg.SvgTypeAndSizes[]","name":"_typesAndSizes","type":"tuple[]"}],"name":"addItemTypesAndSvgs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint8[]","name":"allowedCollaterals","type":"uint8[]"},{"internalType":"uint16[]","name":"wearableIds","type":"uint16[]"},{"internalType":"int8[5]","name":"traitsBonuses","type":"int8[5]"}],"internalType":"struct WearableSet[]","name":"_wearableSets","type":"tuple[]"}],"name":"addWearableSets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_itemIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_newPrices","type":"uint256[]"}],"name":"batchUpdateItemsPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint24","name":"_hauntMaxSize","type":"uint24"},{"internalType":"uint96","name":"_portalPrice","type":"uint96"},{"internalType":"bytes3","name":"_bodyColor","type":"bytes3"}],"name":"createHaunt","outputs":[{"internalType":"uint256","name":"hauntId_","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint24","name":"_hauntMaxSize","type":"uint24"},{"internalType":"uint96","name":"_portalPrice","type":"uint96"},{"internalType":"bytes3","name":"_bodyColor","type":"bytes3"},{"components":[{"internalType":"address","name":"collateralType","type":"address"},{"components":[{"internalType":"int16[6]","name":"modifiers","type":"int16[6]"},{"internalType":"bytes3","name":"primaryColor","type":"bytes3"},{"internalType":"bytes3","name":"secondaryColor","type":"bytes3"},{"internalType":"bytes3","name":"cheekColor","type":"bytes3"},{"internalType":"uint8","name":"svgId","type":"uint8"},{"internalType":"uint8","name":"eyeShapeSvgId","type":"uint8"},{"internalType":"uint16","name":"conversionRate","type":"uint16"},{"internalType":"bool","name":"delisted","type":"bool"}],"internalType":"struct AavegotchiCollateralTypeInfo","name":"collateralTypeInfo","type":"tuple"}],"internalType":"struct AavegotchiCollateralTypeIO[]","name":"_collateralTypes","type":"tuple[]"},{"internalType":"string","name":"_collateralSvg","type":"string"},{"components":[{"internalType":"bytes32","name":"svgType","type":"bytes32"},{"internalType":"uint256[]","name":"sizes","type":"uint256[]"}],"internalType":"struct LibSvg.SvgTypeAndSizes[]","name":"_collateralTypesAndSizes","type":"tuple[]"},{"internalType":"string","name":"_eyeShapeSvg","type":"string"},{"components":[{"internalType":"bytes32","name":"svgType","type":"bytes32"},{"internalType":"uint256[]","name":"sizes","type":"uint256[]"}],"internalType":"struct LibSvg.SvgTypeAndSizes[]","name":"_eyeShapeTypesAndSizes","type":"tuple[]"}],"internalType":"struct DAOFacet.CreateHauntPayload","name":"_payload","type":"tuple"}],"name":"createHauntWithPayload","outputs":[{"internalType":"uint256","name":"hauntId_","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_manager","type":"address"}],"name":"gameManagerBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_manager","type":"address"}],"name":"gameManagerRefreshTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_xpValues","type":"uint256[]"}],"name":"grantExperience","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_manager","type":"address"}],"name":"isGameManager","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256[]","name":"_itemIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_quantities","type":"uint256[]"}],"name":"mintItems","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_xpValues","type":"uint256[]"}],"name":"removeExperience","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_gameManagers","type":"address[]"}],"name":"removeGameManagers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_itemManagers","type":"address[]"}],"name":"removeItemManagers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newDao","type":"address"},{"internalType":"address","name":"_newDaoTreasury","type":"address"}],"name":"setDao","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newForge","type":"address"}],"name":"setForge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_wearableId","type":"uint256"},{"internalType":"int8[6]","name":"_traitModifiers","type":"int8[6]"},{"internalType":"uint8","name":"_rarityScoreModifier","type":"uint8"}],"name":"setItemTraitModifiersAndRarityModifier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_wearableId","type":"uint256"},{"internalType":"bool[16]","name":"_slotPositions","type":"bool[16]"}],"name":"setWearableSlotPositions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_collateralType","type":"address"},{"internalType":"int16[6]","name":"_modifiers","type":"int16[6]"}],"name":"updateCollateralModifiers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_itemIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_maxQuantities","type":"uint256[]"}],"name":"updateItemTypeMaxQuantity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_indices","type":"uint256[]"},{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"int8[6]","name":"traitModifiers","type":"int8[6]"},{"internalType":"bool[16]","name":"slotPositions","type":"bool[16]"},{"internalType":"uint8[]","name":"allowedCollaterals","type":"uint8[]"},{"components":[{"internalType":"uint8","name":"x","type":"uint8"},{"internalType":"uint8","name":"y","type":"uint8"},{"internalType":"uint8","name":"width","type":"uint8"},{"internalType":"uint8","name":"height","type":"uint8"}],"internalType":"struct Dimensions","name":"dimensions","type":"tuple"},{"internalType":"uint256","name":"ghstPrice","type":"uint256"},{"internalType":"uint256","name":"maxQuantity","type":"uint256"},{"internalType":"uint256","name":"totalQuantity","type":"uint256"},{"internalType":"uint32","name":"svgId","type":"uint32"},{"internalType":"uint8","name":"rarityScoreModifier","type":"uint8"},{"internalType":"bool","name":"canPurchaseWithGhst","type":"bool"},{"internalType":"uint16","name":"minLevel","type":"uint16"},{"internalType":"bool","name":"canBeTransferred","type":"bool"},{"internalType":"uint8","name":"category","type":"uint8"},{"internalType":"int16","name":"kinshipBonus","type":"int16"},{"internalType":"uint32","name":"experienceBonus","type":"uint32"}],"internalType":"struct ItemType[]","name":"_itemTypes","type":"tuple[]"}],"name":"updateItemTypes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_setIds","type":"uint256[]"},{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint8[]","name":"allowedCollaterals","type":"uint8[]"},{"internalType":"uint16[]","name":"wearableIds","type":"uint16[]"},{"internalType":"int8[5]","name":"traitsBonuses","type":"int8[5]"}],"internalType":"struct WearableSet[]","name":"_wearableSets","type":"tuple[]"}],"name":"updateWearableSets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"listingFeeInWei","type":"uint256"}],"name":"ChangedListingFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"listingId","type":"uint256"},{"indexed":true,"internalType":"address","name":"seller","type":"address"},{"indexed":false,"internalType":"address","name":"buyer","type":"address"},{"indexed":false,"internalType":"address","name":"erc1155TokenAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"erc1155TypeId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"category","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_quantity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"priceInWei","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"ERC1155ExecutedListing","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"listingId","type":"uint256"},{"indexed":true,"internalType":"address","name":"buyer","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"}],"name":"ERC1155ExecutedToRecipient","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"listingId","type":"uint256"},{"indexed":true,"internalType":"address","name":"seller","type":"address"},{"indexed":false,"internalType":"address","name":"erc1155TokenAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"erc1155TypeId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"category","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"quantity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"priceInWei","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"ERC1155ListingAdd","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"listingId","type":"uint256"}],"name":"ERC1155ListingCancelled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"listingId","type":"uint256"},{"indexed":false,"internalType":"uint16[2]","name":"principalSplit","type":"uint16[2]"},{"indexed":false,"internalType":"address","name":"affiliate","type":"address"}],"name":"ERC1155ListingSplit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"listingId","type":"uint256"},{"indexed":false,"internalType":"uint32","name":"whitelistId","type":"uint32"}],"name":"ERC1155ListingWhitelistSet","type":"event"},{"inputs":[{"components":[{"internalType":"uint256","name":"listingId","type":"uint256"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"itemId","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"uint256","name":"priceInWei","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"internalType":"struct ERC1155MarketplaceFacet.ExecuteERC1155ListingParams[]","name":"listings","type":"tuple[]"}],"name":"batchExecuteERC1155Listing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_listingIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_quantities","type":"uint256[]"},{"internalType":"uint256[]","name":"_priceInWeis","type":"uint256[]"}],"name":"batchUpdateERC1155ListingPriceAndQuantity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_listingId","type":"uint256"}],"name":"cancelERC1155Listing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_listingIds","type":"uint256[]"}],"name":"cancelERC1155Listings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_listingId","type":"uint256"},{"internalType":"uint256","name":"_quantity","type":"uint256"},{"internalType":"uint256","name":"_priceInWei","type":"uint256"}],"name":"executeERC1155Listing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_listingId","type":"uint256"},{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_itemId","type":"uint256"},{"internalType":"uint256","name":"_quantity","type":"uint256"},{"internalType":"uint256","name":"_priceInWei","type":"uint256"},{"internalType":"address","name":"_recipient","type":"address"}],"name":"executeERC1155ListingToRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_erc1155TokenAddress","type":"address"},{"internalType":"uint256","name":"_erc1155TypeId","type":"uint256"}],"name":"getERC1155Category","outputs":[{"internalType":"uint256","name":"category_","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"erc1155TokenAddress","type":"address"},{"internalType":"uint256","name":"erc1155TypeId","type":"uint256"},{"internalType":"uint256","name":"category","type":"uint256"}],"internalType":"struct ERC1155MarketplaceFacet.Category[]","name":"_categories","type":"tuple[]"}],"name":"setERC1155Categories","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_erc1155TokenAddress","type":"address"},{"internalType":"uint256","name":"_erc1155TypeId","type":"uint256"},{"internalType":"uint256","name":"_quantity","type":"uint256"},{"internalType":"uint256","name":"_priceInWei","type":"uint256"}],"name":"setERC1155Listing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_erc1155TokenAddress","type":"address"},{"internalType":"uint256","name":"_erc1155TypeId","type":"uint256"},{"internalType":"uint256","name":"_quantity","type":"uint256"},{"internalType":"uint256","name":"_priceInWei","type":"uint256"},{"internalType":"uint16[2]","name":"_principalSplit","type":"uint16[2]"},{"internalType":"address","name":"_affiliate","type":"address"}],"name":"setERC1155ListingWithSplit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_erc1155TokenAddress","type":"address"},{"internalType":"uint256","name":"_erc1155TypeId","type":"uint256"},{"internalType":"uint256","name":"_quantity","type":"uint256"},{"internalType":"uint256","name":"_priceInWei","type":"uint256"},{"internalType":"uint16[2]","name":"_principalSplit","type":"uint16[2]"},{"internalType":"address","name":"_affiliate","type":"address"},{"internalType":"uint32","name":"_whitelistId","type":"uint32"}],"name":"setERC1155ListingWithWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_listingFeeInWei","type":"uint256"}],"name":"setListingFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_erc1155TokenAddress","type":"address"},{"internalType":"uint256[]","name":"_erc1155TypeIds","type":"uint256[]"},{"internalType":"address","name":"_owner","type":"address"}],"name":"updateBatchERC1155Listing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_erc1155TokenAddress","type":"address"},{"internalType":"uint256","name":"_erc1155TypeId","type":"uint256"},{"internalType":"address","name":"_owner","type":"address"}],"name":"updateERC1155Listing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_listingId","type":"uint256"},{"internalType":"uint256","name":"_quantity","type":"uint256"},{"internalType":"uint256","name":"_priceInWei","type":"uint256"}],"name":"updateERC1155ListingPriceAndQuantity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"listingId","type":"uint256"},{"indexed":true,"internalType":"address","name":"seller","type":"address"},{"indexed":false,"internalType":"address","name":"buyer","type":"address"},{"indexed":false,"internalType":"address","name":"erc721TokenAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"erc721TokenId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"category","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"priceInWei","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"ERC721ExecutedListing","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"listingId","type":"uint256"},{"indexed":true,"internalType":"address","name":"buyer","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"}],"name":"ERC721ExecutedToRecipient","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"listingId","type":"uint256"},{"indexed":true,"internalType":"address","name":"seller","type":"address"},{"indexed":false,"internalType":"address","name":"erc721TokenAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"erc721TokenId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"category","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"ERC721ListingAdd","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"listingId","type":"uint256"},{"indexed":false,"internalType":"uint16[2]","name":"principalSplit","type":"uint16[2]"},{"indexed":false,"internalType":"address","name":"affiliate","type":"address"}],"name":"ERC721ListingSplit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"listingId","type":"uint256"},{"indexed":false,"internalType":"uint32","name":"whitelistId","type":"uint32"}],"name":"ERC721ListingWhitelistSet","type":"event"},{"inputs":[{"internalType":"address","name":"_erc721TokenAddress","type":"address"},{"internalType":"uint256","name":"_erc721TokenId","type":"uint256"},{"internalType":"uint256","name":"_priceInWei","type":"uint256"}],"name":"addERC721Listing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_erc721TokenAddress","type":"address"},{"internalType":"uint256","name":"_erc721TokenId","type":"uint256"},{"internalType":"uint256","name":"_priceInWei","type":"uint256"},{"internalType":"uint16[2]","name":"_principalSplit","type":"uint16[2]"},{"internalType":"address","name":"_affiliate","type":"address"}],"name":"addERC721ListingWithSplit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_erc721TokenAddress","type":"address"},{"internalType":"uint256","name":"_erc721TokenId","type":"uint256"},{"internalType":"uint256","name":"_priceInWei","type":"uint256"},{"internalType":"uint16[2]","name":"_principalSplit","type":"uint16[2]"},{"internalType":"address","name":"_affiliate","type":"address"},{"internalType":"uint32","name":"_whitelistId","type":"uint32"}],"name":"addERC721ListingWithWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"listingId","type":"uint256"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"priceInWei","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"internalType":"struct ERC721MarketplaceFacet.ExecuteERC721ListingParams[]","name":"listings","type":"tuple[]"}],"name":"batchExecuteERC721Listing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_listingIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_priceInWeis","type":"uint256[]"}],"name":"batchUpdateERC721ListingPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_listingId","type":"uint256"}],"name":"cancelERC721Listing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_erc721TokenAddress","type":"address"},{"internalType":"uint256","name":"_erc721TokenId","type":"uint256"}],"name":"cancelERC721ListingByToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_listingIds","type":"uint256[]"}],"name":"cancelERC721Listings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_listingId","type":"uint256"},{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_priceInWei","type":"uint256"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_recipient","type":"address"}],"name":"executeERC721ListingToRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_erc721TokenAddress","type":"address"},{"internalType":"uint256","name":"_erc721TokenId","type":"uint256"}],"name":"getERC721Category","outputs":[{"internalType":"uint256","name":"category_","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"erc721TokenAddress","type":"address"},{"internalType":"uint256","name":"category","type":"uint256"}],"internalType":"struct ERC721MarketplaceFacet.Category[]","name":"_categories","type":"tuple[]"}],"name":"setERC721Categories","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_erc721TokenAddress","type":"address"},{"internalType":"uint256","name":"_erc721TokenId","type":"uint256"},{"internalType":"address","name":"_owner","type":"address"}],"name":"updateERC721Listing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_listingId","type":"uint256"},{"internalType":"uint256","name":"_priceInWei","type":"uint256"}],"name":"updateERC721ListingPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"_erc20Contract","type":"address"},{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":false,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_depositAmount","type":"uint256"}],"name":"Erc20Deposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"_erc20Contract","type":"address"},{"indexed":false,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_transferAmount","type":"uint256"}],"name":"TransferEscrow","type":"event"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"internalType":"address[]","name":"_erc20Contracts","type":"address[]"},{"internalType":"uint256[]","name":"_values","type":"uint256[]"}],"name":"batchDepositERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_values","type":"uint256[]"}],"name":"batchDepositGHST","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_erc20Contract","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"depositERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_erc20Contract","type":"address"}],"name":"escrowBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"gotchiEscrow","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_erc20Contract","type":"address"},{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_transferAmount","type":"uint256"}],"name":"transferEscrow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_erc721TokenId","type":"uint32"},{"internalType":"uint96","name":"_initialCost","type":"uint96"},{"internalType":"uint32","name":"_period","type":"uint32"},{"internalType":"uint8[3]","name":"_revenueSplit","type":"uint8[3]"},{"internalType":"address","name":"_originalOwner","type":"address"},{"internalType":"address","name":"_thirdParty","type":"address"},{"internalType":"uint32","name":"_whitelistId","type":"uint32"},{"internalType":"address[]","name":"_revenueTokens","type":"address[]"}],"name":"addGotchiLending","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"tokenId","type":"uint32"},{"internalType":"uint96","name":"initialCost","type":"uint96"},{"internalType":"uint32","name":"period","type":"uint32"},{"internalType":"uint8[3]","name":"revenueSplit","type":"uint8[3]"},{"internalType":"address","name":"originalOwner","type":"address"},{"internalType":"address","name":"thirdParty","type":"address"},{"internalType":"uint32","name":"whitelistId","type":"uint32"},{"internalType":"address[]","name":"revenueTokens","type":"address[]"}],"internalType":"struct GotchiLendingFacet.AddGotchiListing","name":"p","type":"tuple"}],"name":"addGotchiListing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_listingId","type":"uint32"},{"internalType":"uint32","name":"_erc721TokenId","type":"uint32"},{"internalType":"uint96","name":"_initialCost","type":"uint96"},{"internalType":"uint32","name":"_period","type":"uint32"},{"internalType":"uint8[3]","name":"_revenueSplit","type":"uint8[3]"}],"name":"agreeGotchiLending","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"tokenId","type":"uint32"},{"internalType":"uint96","name":"initialCost","type":"uint96"},{"internalType":"uint32","name":"period","type":"uint32"},{"internalType":"uint8[3]","name":"revenueSplit","type":"uint8[3]"},{"internalType":"address","name":"originalOwner","type":"address"},{"internalType":"address","name":"thirdParty","type":"address"},{"internalType":"uint32","name":"whitelistId","type":"uint32"},{"internalType":"address[]","name":"revenueTokens","type":"address[]"}],"internalType":"struct GotchiLendingFacet.AddGotchiListing[]","name":"listings","type":"tuple[]"}],"name":"batchAddGotchiListing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32[]","name":"_listingIds","type":"uint32[]"}],"name":"batchCancelGotchiLending","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32[]","name":"_erc721TokenIds","type":"uint32[]"}],"name":"batchCancelGotchiLendingByToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32[]","name":"_tokenIds","type":"uint32[]"}],"name":"batchClaimAndEndAndRelistGotchiLending","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32[]","name":"_tokenIds","type":"uint32[]"}],"name":"batchClaimAndEndGotchiLending","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32[]","name":"_tokenIds","type":"uint32[]"}],"name":"batchClaimGotchiLending","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"tokenId","type":"uint32"},{"internalType":"uint32","name":"extension","type":"uint32"}],"internalType":"struct GotchiLendingFacet.BatchRenew[]","name":"_batchRenewParams","type":"tuple[]"}],"name":"batchExtendGotchiLending","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_listingId","type":"uint32"}],"name":"cancelGotchiLending","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_erc721TokenId","type":"uint32"}],"name":"cancelGotchiLendingByToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_tokenId","type":"uint32"}],"name":"claimAndEndAndRelistGotchiLending","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_tokenId","type":"uint32"}],"name":"claimAndEndGotchiLending","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_tokenId","type":"uint32"}],"name":"claimGotchiLending","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_tokenId","type":"uint32"},{"internalType":"uint32","name":"extension","type":"uint32"}],"name":"extendGotchiLending","outputs":[],"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"},{"indexed":false,"internalType":"uint16[16]","name":"_oldWearables","type":"uint16[16]"},{"indexed":false,"internalType":"uint16[16]","name":"_newWearables","type":"uint16[16]"}],"name":"EquipWearables","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_toContract","type":"address"},{"indexed":true,"internalType":"uint256","name":"_toTokenId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"_tokenTypeId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"TransferToParent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256[]","name":"_itemIds","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"_quantities","type":"uint256[]"}],"name":"UseConsumables","type":"event"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"bal_","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_owners","type":"address[]"},{"internalType":"uint256[]","name":"_ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"bals","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenContract","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"balanceOfToken","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint16[16]","name":"_wearablesToEquip","type":"uint16[16]"}],"name":"equipWearables","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"equippedWearables","outputs":[{"internalType":"uint16[16]","name":"wearableIds_","type":"uint16[16]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_itemId","type":"uint256"}],"name":"getItemType","outputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"int8[6]","name":"traitModifiers","type":"int8[6]"},{"internalType":"bool[16]","name":"slotPositions","type":"bool[16]"},{"internalType":"uint8[]","name":"allowedCollaterals","type":"uint8[]"},{"components":[{"internalType":"uint8","name":"x","type":"uint8"},{"internalType":"uint8","name":"y","type":"uint8"},{"internalType":"uint8","name":"width","type":"uint8"},{"internalType":"uint8","name":"height","type":"uint8"}],"internalType":"struct Dimensions","name":"dimensions","type":"tuple"},{"internalType":"uint256","name":"ghstPrice","type":"uint256"},{"internalType":"uint256","name":"maxQuantity","type":"uint256"},{"internalType":"uint256","name":"totalQuantity","type":"uint256"},{"internalType":"uint32","name":"svgId","type":"uint32"},{"internalType":"uint8","name":"rarityScoreModifier","type":"uint8"},{"internalType":"bool","name":"canPurchaseWithGhst","type":"bool"},{"internalType":"uint16","name":"minLevel","type":"uint16"},{"internalType":"bool","name":"canBeTransferred","type":"bool"},{"internalType":"uint8","name":"category","type":"uint8"},{"internalType":"int16","name":"kinshipBonus","type":"int16"},{"internalType":"uint32","name":"experienceBonus","type":"uint32"}],"internalType":"struct ItemType","name":"itemType_","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_itemIds","type":"uint256[]"}],"name":"getItemTypes","outputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"int8[6]","name":"traitModifiers","type":"int8[6]"},{"internalType":"bool[16]","name":"slotPositions","type":"bool[16]"},{"internalType":"uint8[]","name":"allowedCollaterals","type":"uint8[]"},{"components":[{"internalType":"uint8","name":"x","type":"uint8"},{"internalType":"uint8","name":"y","type":"uint8"},{"internalType":"uint8","name":"width","type":"uint8"},{"internalType":"uint8","name":"height","type":"uint8"}],"internalType":"struct Dimensions","name":"dimensions","type":"tuple"},{"internalType":"uint256","name":"ghstPrice","type":"uint256"},{"internalType":"uint256","name":"maxQuantity","type":"uint256"},{"internalType":"uint256","name":"totalQuantity","type":"uint256"},{"internalType":"uint32","name":"svgId","type":"uint32"},{"internalType":"uint8","name":"rarityScoreModifier","type":"uint8"},{"internalType":"bool","name":"canPurchaseWithGhst","type":"bool"},{"internalType":"uint16","name":"minLevel","type":"uint16"},{"internalType":"bool","name":"canBeTransferred","type":"bool"},{"internalType":"uint8","name":"category","type":"uint8"},{"internalType":"int16","name":"kinshipBonus","type":"int16"},{"internalType":"uint32","name":"experienceBonus","type":"uint32"}],"internalType":"struct ItemType[]","name":"itemTypes_","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"itemBalances","outputs":[{"components":[{"internalType":"uint256","name":"itemId","type":"uint256"},{"internalType":"uint256","name":"balance","type":"uint256"}],"internalType":"struct ItemsFacet.ItemIdIO[]","name":"bals_","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenContract","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"itemBalancesOfToken","outputs":[{"components":[{"internalType":"uint256","name":"itemId","type":"uint256"},{"internalType":"uint256","name":"balance","type":"uint256"}],"internalType":"struct ItemsFacet.ItemIdIO[]","name":"bals_","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenContract","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"itemBalancesOfTokenWithTypes","outputs":[{"components":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"itemId","type":"uint256"},{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"int8[6]","name":"traitModifiers","type":"int8[6]"},{"internalType":"bool[16]","name":"slotPositions","type":"bool[16]"},{"internalType":"uint8[]","name":"allowedCollaterals","type":"uint8[]"},{"components":[{"internalType":"uint8","name":"x","type":"uint8"},{"internalType":"uint8","name":"y","type":"uint8"},{"internalType":"uint8","name":"width","type":"uint8"},{"internalType":"uint8","name":"height","type":"uint8"}],"internalType":"struct Dimensions","name":"dimensions","type":"tuple"},{"internalType":"uint256","name":"ghstPrice","type":"uint256"},{"internalType":"uint256","name":"maxQuantity","type":"uint256"},{"internalType":"uint256","name":"totalQuantity","type":"uint256"},{"internalType":"uint32","name":"svgId","type":"uint32"},{"internalType":"uint8","name":"rarityScoreModifier","type":"uint8"},{"internalType":"bool","name":"canPurchaseWithGhst","type":"bool"},{"internalType":"uint16","name":"minLevel","type":"uint16"},{"internalType":"bool","name":"canBeTransferred","type":"bool"},{"internalType":"uint8","name":"category","type":"uint8"},{"internalType":"int16","name":"kinshipBonus","type":"int16"},{"internalType":"uint32","name":"experienceBonus","type":"uint32"}],"internalType":"struct ItemType","name":"itemType","type":"tuple"}],"internalType":"struct ItemTypeIO[]","name":"itemBalancesOfTokenWithTypes_","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"itemBalancesWithTypes","outputs":[{"components":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"itemId","type":"uint256"},{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"int8[6]","name":"traitModifiers","type":"int8[6]"},{"internalType":"bool[16]","name":"slotPositions","type":"bool[16]"},{"internalType":"uint8[]","name":"allowedCollaterals","type":"uint8[]"},{"components":[{"internalType":"uint8","name":"x","type":"uint8"},{"internalType":"uint8","name":"y","type":"uint8"},{"internalType":"uint8","name":"width","type":"uint8"},{"internalType":"uint8","name":"height","type":"uint8"}],"internalType":"struct Dimensions","name":"dimensions","type":"tuple"},{"internalType":"uint256","name":"ghstPrice","type":"uint256"},{"internalType":"uint256","name":"maxQuantity","type":"uint256"},{"internalType":"uint256","name":"totalQuantity","type":"uint256"},{"internalType":"uint32","name":"svgId","type":"uint32"},{"internalType":"uint8","name":"rarityScoreModifier","type":"uint8"},{"internalType":"bool","name":"canPurchaseWithGhst","type":"bool"},{"internalType":"uint16","name":"minLevel","type":"uint16"},{"internalType":"bool","name":"canBeTransferred","type":"bool"},{"internalType":"uint8","name":"category","type":"uint8"},{"internalType":"int16","name":"kinshipBonus","type":"int16"},{"internalType":"uint32","name":"experienceBonus","type":"uint32"}],"internalType":"struct ItemType","name":"itemType","type":"tuple"}],"internalType":"struct ItemTypeIO[]","name":"output_","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_value","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256[]","name":"_itemIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_quantities","type":"uint256[]"}],"name":"useConsumables","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_toContract","type":"address"},{"internalType":"uint256[]","name":"_toTokenIds","type":"uint256[]"},{"internalType":"uint256[][]","name":"_ids","type":"uint256[][]"},{"internalType":"uint256[][]","name":"_values","type":"uint256[][]"}],"name":"batchBatchTransferToParent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_fromContract","type":"address"},{"internalType":"uint256","name":"_fromTokenId","type":"uint256"},{"internalType":"address","name":"_toContract","type":"address"},{"internalType":"uint256","name":"_toTokenId","type":"uint256"},{"internalType":"uint256[]","name":"_ids","type":"uint256[]"},{"internalType":"uint256[]","name":"_values","type":"uint256[]"}],"name":"batchTransferAsChild","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_fromContract","type":"address"},{"internalType":"uint256","name":"_fromTokenId","type":"uint256"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256[]","name":"_ids","type":"uint256[]"},{"internalType":"uint256[]","name":"_values","type":"uint256[]"}],"name":"batchTransferFromParent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_toContract","type":"address"},{"internalType":"uint256","name":"_toTokenId","type":"uint256"},{"internalType":"uint256[]","name":"_ids","type":"uint256[]"},{"internalType":"uint256[]","name":"_values","type":"uint256[]"}],"name":"batchTransferToParent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256[]","name":"_itemIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_values","type":"uint256[]"}],"name":"extractItemsFromDiamond","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256[]","name":"_itemIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_values","type":"uint256[]"}],"name":"extractItemsFromSacrificedGotchi","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256[]","name":"_ids","type":"uint256[]"},{"internalType":"uint256[]","name":"_values","type":"uint256[]"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_fromContract","type":"address"},{"internalType":"uint256","name":"_fromTokenId","type":"uint256"},{"internalType":"address","name":"_toContract","type":"address"},{"internalType":"uint256","name":"_toTokenId","type":"uint256"},{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferAsChild","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_fromContract","type":"address"},{"internalType":"uint256","name":"_fromTokenId","type":"uint256"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFromParent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_toContract","type":"address"},{"internalType":"uint256","name":"_toTokenId","type":"uint256"},{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferToParent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"lender","type":"address"},{"indexed":true,"internalType":"address","name":"lendingOperator","type":"address"},{"indexed":true,"internalType":"uint32","name":"tokenId","type":"uint32"},{"indexed":false,"internalType":"bool","name":"isLendingOperator","type":"bool"}],"name":"LendingOperatorSet","type":"event"},{"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}],"name":"allowRevenueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_lender","type":"address"}],"name":"balanceOfLentGotchis","outputs":[{"internalType":"uint256","name":"balance_","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_lendingOperator","type":"address"},{"components":[{"internalType":"uint32","name":"_tokenId","type":"uint32"},{"internalType":"bool","name":"_isLendingOperator","type":"bool"}],"internalType":"struct LendingGetterAndSetterFacet.LendingOperatorInputs[]","name":"_inputs","type":"tuple[]"}],"name":"batchSetLendingOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}],"name":"disallowRevenueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_erc721TokenId","type":"uint32"}],"name":"getGotchiLendingFromToken","outputs":[{"components":[{"internalType":"address","name":"lender","type":"address"},{"internalType":"uint96","name":"initialCost","type":"uint96"},{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint32","name":"listingId","type":"uint32"},{"internalType":"uint32","name":"erc721TokenId","type":"uint32"},{"internalType":"uint32","name":"whitelistId","type":"uint32"},{"internalType":"address","name":"originalOwner","type":"address"},{"internalType":"uint40","name":"timeCreated","type":"uint40"},{"internalType":"uint40","name":"timeAgreed","type":"uint40"},{"internalType":"bool","name":"canceled","type":"bool"},{"internalType":"bool","name":"completed","type":"bool"},{"internalType":"address","name":"thirdParty","type":"address"},{"internalType":"uint8[3]","name":"revenueSplit","type":"uint8[3]"},{"internalType":"uint40","name":"lastClaimed","type":"uint40"},{"internalType":"uint32","name":"period","type":"uint32"},{"internalType":"address[]","name":"revenueTokens","type":"address[]"}],"internalType":"struct GotchiLending","name":"listing_","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_erc721TokenId","type":"uint32"}],"name":"getGotchiLendingIdByToken","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_listingId","type":"uint32"}],"name":"getGotchiLendingListingInfo","outputs":[{"components":[{"internalType":"address","name":"lender","type":"address"},{"internalType":"uint96","name":"initialCost","type":"uint96"},{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint32","name":"listingId","type":"uint32"},{"internalType":"uint32","name":"erc721TokenId","type":"uint32"},{"internalType":"uint32","name":"whitelistId","type":"uint32"},{"internalType":"address","name":"originalOwner","type":"address"},{"internalType":"uint40","name":"timeCreated","type":"uint40"},{"internalType":"uint40","name":"timeAgreed","type":"uint40"},{"internalType":"bool","name":"canceled","type":"bool"},{"internalType":"bool","name":"completed","type":"bool"},{"internalType":"address","name":"thirdParty","type":"address"},{"internalType":"uint8[3]","name":"revenueSplit","type":"uint8[3]"},{"internalType":"uint40","name":"lastClaimed","type":"uint40"},{"internalType":"uint32","name":"period","type":"uint32"},{"internalType":"address[]","name":"revenueTokens","type":"address[]"}],"internalType":"struct GotchiLending","name":"listing_","type":"tuple"},{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"randomNumber","type":"uint256"},{"internalType":"uint256","name":"status","type":"uint256"},{"internalType":"int16[6]","name":"numericTraits","type":"int16[6]"},{"internalType":"int16[6]","name":"modifiedNumericTraits","type":"int16[6]"},{"internalType":"uint16[16]","name":"equippedWearables","type":"uint16[16]"},{"internalType":"address","name":"collateral","type":"address"},{"internalType":"address","name":"escrow","type":"address"},{"internalType":"uint256","name":"stakedAmount","type":"uint256"},{"internalType":"uint256","name":"minimumStake","type":"uint256"},{"internalType":"uint256","name":"kinship","type":"uint256"},{"internalType":"uint256","name":"lastInteracted","type":"uint256"},{"internalType":"uint256","name":"experience","type":"uint256"},{"internalType":"uint256","name":"toNextLevel","type":"uint256"},{"internalType":"uint256","name":"usedSkillPoints","type":"uint256"},{"internalType":"uint256","name":"level","type":"uint256"},{"internalType":"uint256","name":"hauntId","type":"uint256"},{"internalType":"uint256","name":"baseRarityScore","type":"uint256"},{"internalType":"uint256","name":"modifiedRarityScore","type":"uint256"},{"internalType":"bool","name":"locked","type":"bool"},{"components":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"itemId","type":"uint256"},{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"int8[6]","name":"traitModifiers","type":"int8[6]"},{"internalType":"bool[16]","name":"slotPositions","type":"bool[16]"},{"internalType":"uint8[]","name":"allowedCollaterals","type":"uint8[]"},{"components":[{"internalType":"uint8","name":"x","type":"uint8"},{"internalType":"uint8","name":"y","type":"uint8"},{"internalType":"uint8","name":"width","type":"uint8"},{"internalType":"uint8","name":"height","type":"uint8"}],"internalType":"struct Dimensions","name":"dimensions","type":"tuple"},{"internalType":"uint256","name":"ghstPrice","type":"uint256"},{"internalType":"uint256","name":"maxQuantity","type":"uint256"},{"internalType":"uint256","name":"totalQuantity","type":"uint256"},{"internalType":"uint32","name":"svgId","type":"uint32"},{"internalType":"uint8","name":"rarityScoreModifier","type":"uint8"},{"internalType":"bool","name":"canPurchaseWithGhst","type":"bool"},{"internalType":"uint16","name":"minLevel","type":"uint16"},{"internalType":"bool","name":"canBeTransferred","type":"bool"},{"internalType":"uint8","name":"category","type":"uint8"},{"internalType":"int16","name":"kinshipBonus","type":"int16"},{"internalType":"uint32","name":"experienceBonus","type":"uint32"}],"internalType":"struct ItemType","name":"itemType","type":"tuple"}],"internalType":"struct ItemTypeIO[]","name":"items","type":"tuple[]"}],"internalType":"struct AavegotchiInfo","name":"aavegotchiInfo_","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_status","type":"bytes32"},{"internalType":"uint256","name":"_length","type":"uint256"}],"name":"getGotchiLendings","outputs":[{"components":[{"internalType":"address","name":"lender","type":"address"},{"internalType":"uint96","name":"initialCost","type":"uint96"},{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint32","name":"listingId","type":"uint32"},{"internalType":"uint32","name":"erc721TokenId","type":"uint32"},{"internalType":"uint32","name":"whitelistId","type":"uint32"},{"internalType":"address","name":"originalOwner","type":"address"},{"internalType":"uint40","name":"timeCreated","type":"uint40"},{"internalType":"uint40","name":"timeAgreed","type":"uint40"},{"internalType":"bool","name":"canceled","type":"bool"},{"internalType":"bool","name":"completed","type":"bool"},{"internalType":"address","name":"thirdParty","type":"address"},{"internalType":"uint8[3]","name":"revenueSplit","type":"uint8[3]"},{"internalType":"uint40","name":"lastClaimed","type":"uint40"},{"internalType":"uint32","name":"period","type":"uint32"},{"internalType":"address[]","name":"revenueTokens","type":"address[]"}],"internalType":"struct GotchiLending[]","name":"listings_","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGotchiLendingsLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_listingId","type":"uint32"}],"name":"getLendingListingInfo","outputs":[{"components":[{"internalType":"address","name":"lender","type":"address"},{"internalType":"uint96","name":"initialCost","type":"uint96"},{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint32","name":"listingId","type":"uint32"},{"internalType":"uint32","name":"erc721TokenId","type":"uint32"},{"internalType":"uint32","name":"whitelistId","type":"uint32"},{"internalType":"address","name":"originalOwner","type":"address"},{"internalType":"uint40","name":"timeCreated","type":"uint40"},{"internalType":"uint40","name":"timeAgreed","type":"uint40"},{"internalType":"bool","name":"canceled","type":"bool"},{"internalType":"bool","name":"completed","type":"bool"},{"internalType":"address","name":"thirdParty","type":"address"},{"internalType":"uint8[3]","name":"revenueSplit","type":"uint8[3]"},{"internalType":"uint40","name":"lastClaimed","type":"uint40"},{"internalType":"uint32","name":"period","type":"uint32"},{"internalType":"address[]","name":"revenueTokens","type":"address[]"}],"internalType":"struct GotchiLending","name":"listing_","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_lender","type":"address"}],"name":"getLentTokenIdsOfLender","outputs":[{"internalType":"uint32[]","name":"tokenIds_","type":"uint32[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_lender","type":"address"},{"internalType":"bytes32","name":"_status","type":"bytes32"},{"internalType":"uint256","name":"_length","type":"uint256"}],"name":"getOwnerGotchiLendings","outputs":[{"components":[{"internalType":"address","name":"lender","type":"address"},{"internalType":"uint96","name":"initialCost","type":"uint96"},{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint32","name":"listingId","type":"uint32"},{"internalType":"uint32","name":"erc721TokenId","type":"uint32"},{"internalType":"uint32","name":"whitelistId","type":"uint32"},{"internalType":"address","name":"originalOwner","type":"address"},{"internalType":"uint40","name":"timeCreated","type":"uint40"},{"internalType":"uint40","name":"timeAgreed","type":"uint40"},{"internalType":"bool","name":"canceled","type":"bool"},{"internalType":"bool","name":"completed","type":"bool"},{"internalType":"address","name":"thirdParty","type":"address"},{"internalType":"uint8[3]","name":"revenueSplit","type":"uint8[3]"},{"internalType":"uint40","name":"lastClaimed","type":"uint40"},{"internalType":"uint32","name":"period","type":"uint32"},{"internalType":"address[]","name":"revenueTokens","type":"address[]"}],"internalType":"struct GotchiLending[]","name":"listings_","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_lender","type":"address"},{"internalType":"bytes32","name":"_status","type":"bytes32"}],"name":"getOwnerGotchiLendingsLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_tokenId","type":"uint32"},{"internalType":"address[]","name":"_revenueTokens","type":"address[]"}],"name":"getTokenBalancesInEscrow","outputs":[{"internalType":"uint256[]","name":"revenueBalances","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_erc721TokenId","type":"uint32"}],"name":"isAavegotchiLent","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_erc721TokenId","type":"uint32"}],"name":"isAavegotchiListed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_lender","type":"address"},{"internalType":"address","name":"_lendingOperator","type":"address"},{"internalType":"uint32","name":"_tokenId","type":"uint32"}],"name":"isLendingOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"revenueTokenAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_lendingOperator","type":"address"},{"internalType":"uint32","name":"_tokenId","type":"uint32"},{"internalType":"bool","name":"_isLendingOperator","type":"bool"}],"name":"setLendingOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_listingId","type":"uint256"}],"name":"getAavegotchiListing","outputs":[{"components":[{"internalType":"uint256","name":"listingId","type":"uint256"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"erc721TokenAddress","type":"address"},{"internalType":"uint256","name":"erc721TokenId","type":"uint256"},{"internalType":"uint256","name":"category","type":"uint256"},{"internalType":"uint256","name":"priceInWei","type":"uint256"},{"internalType":"uint256","name":"timeCreated","type":"uint256"},{"internalType":"uint256","name":"timePurchased","type":"uint256"},{"internalType":"bool","name":"cancelled","type":"bool"},{"internalType":"uint16[2]","name":"principalSplit","type":"uint16[2]"},{"internalType":"address","name":"affiliate","type":"address"},{"internalType":"uint32","name":"whitelistId","type":"uint32"}],"internalType":"struct ERC721Listing","name":"listing_","type":"tuple"},{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"randomNumber","type":"uint256"},{"internalType":"uint256","name":"status","type":"uint256"},{"internalType":"int16[6]","name":"numericTraits","type":"int16[6]"},{"internalType":"int16[6]","name":"modifiedNumericTraits","type":"int16[6]"},{"internalType":"uint16[16]","name":"equippedWearables","type":"uint16[16]"},{"internalType":"address","name":"collateral","type":"address"},{"internalType":"address","name":"escrow","type":"address"},{"internalType":"uint256","name":"stakedAmount","type":"uint256"},{"internalType":"uint256","name":"minimumStake","type":"uint256"},{"internalType":"uint256","name":"kinship","type":"uint256"},{"internalType":"uint256","name":"lastInteracted","type":"uint256"},{"internalType":"uint256","name":"experience","type":"uint256"},{"internalType":"uint256","name":"toNextLevel","type":"uint256"},{"internalType":"uint256","name":"usedSkillPoints","type":"uint256"},{"internalType":"uint256","name":"level","type":"uint256"},{"internalType":"uint256","name":"hauntId","type":"uint256"},{"internalType":"uint256","name":"baseRarityScore","type":"uint256"},{"internalType":"uint256","name":"modifiedRarityScore","type":"uint256"},{"internalType":"bool","name":"locked","type":"bool"},{"components":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"itemId","type":"uint256"},{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"int8[6]","name":"traitModifiers","type":"int8[6]"},{"internalType":"bool[16]","name":"slotPositions","type":"bool[16]"},{"internalType":"uint8[]","name":"allowedCollaterals","type":"uint8[]"},{"components":[{"internalType":"uint8","name":"x","type":"uint8"},{"internalType":"uint8","name":"y","type":"uint8"},{"internalType":"uint8","name":"width","type":"uint8"},{"internalType":"uint8","name":"height","type":"uint8"}],"internalType":"struct Dimensions","name":"dimensions","type":"tuple"},{"internalType":"uint256","name":"ghstPrice","type":"uint256"},{"internalType":"uint256","name":"maxQuantity","type":"uint256"},{"internalType":"uint256","name":"totalQuantity","type":"uint256"},{"internalType":"uint32","name":"svgId","type":"uint32"},{"internalType":"uint8","name":"rarityScoreModifier","type":"uint8"},{"internalType":"bool","name":"canPurchaseWithGhst","type":"bool"},{"internalType":"uint16","name":"minLevel","type":"uint16"},{"internalType":"bool","name":"canBeTransferred","type":"bool"},{"internalType":"uint8","name":"category","type":"uint8"},{"internalType":"int16","name":"kinshipBonus","type":"int16"},{"internalType":"uint32","name":"experienceBonus","type":"uint32"}],"internalType":"struct ItemType","name":"itemType","type":"tuple"}],"internalType":"struct ItemTypeIO[]","name":"items","type":"tuple[]"}],"internalType":"struct AavegotchiInfo","name":"aavegotchiInfo_","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_category","type":"uint256"},{"internalType":"string","name":"_sort","type":"string"},{"internalType":"uint256","name":"_length","type":"uint256"}],"name":"getAavegotchiListings","outputs":[{"components":[{"components":[{"internalType":"uint256","name":"listingId","type":"uint256"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"erc721TokenAddress","type":"address"},{"internalType":"uint256","name":"erc721TokenId","type":"uint256"},{"internalType":"uint256","name":"category","type":"uint256"},{"internalType":"uint256","name":"priceInWei","type":"uint256"},{"internalType":"uint256","name":"timeCreated","type":"uint256"},{"internalType":"uint256","name":"timePurchased","type":"uint256"},{"internalType":"bool","name":"cancelled","type":"bool"},{"internalType":"uint16[2]","name":"principalSplit","type":"uint16[2]"},{"internalType":"address","name":"affiliate","type":"address"},{"internalType":"uint32","name":"whitelistId","type":"uint32"}],"internalType":"struct ERC721Listing","name":"listing_","type":"tuple"},{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"randomNumber","type":"uint256"},{"internalType":"uint256","name":"status","type":"uint256"},{"internalType":"int16[6]","name":"numericTraits","type":"int16[6]"},{"internalType":"int16[6]","name":"modifiedNumericTraits","type":"int16[6]"},{"internalType":"uint16[16]","name":"equippedWearables","type":"uint16[16]"},{"internalType":"address","name":"collateral","type":"address"},{"internalType":"address","name":"escrow","type":"address"},{"internalType":"uint256","name":"stakedAmount","type":"uint256"},{"internalType":"uint256","name":"minimumStake","type":"uint256"},{"internalType":"uint256","name":"kinship","type":"uint256"},{"internalType":"uint256","name":"lastInteracted","type":"uint256"},{"internalType":"uint256","name":"experience","type":"uint256"},{"internalType":"uint256","name":"toNextLevel","type":"uint256"},{"internalType":"uint256","name":"usedSkillPoints","type":"uint256"},{"internalType":"uint256","name":"level","type":"uint256"},{"internalType":"uint256","name":"hauntId","type":"uint256"},{"internalType":"uint256","name":"baseRarityScore","type":"uint256"},{"internalType":"uint256","name":"modifiedRarityScore","type":"uint256"},{"internalType":"bool","name":"locked","type":"bool"},{"components":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"itemId","type":"uint256"},{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"int8[6]","name":"traitModifiers","type":"int8[6]"},{"internalType":"bool[16]","name":"slotPositions","type":"bool[16]"},{"internalType":"uint8[]","name":"allowedCollaterals","type":"uint8[]"},{"components":[{"internalType":"uint8","name":"x","type":"uint8"},{"internalType":"uint8","name":"y","type":"uint8"},{"internalType":"uint8","name":"width","type":"uint8"},{"internalType":"uint8","name":"height","type":"uint8"}],"internalType":"struct Dimensions","name":"dimensions","type":"tuple"},{"internalType":"uint256","name":"ghstPrice","type":"uint256"},{"internalType":"uint256","name":"maxQuantity","type":"uint256"},{"internalType":"uint256","name":"totalQuantity","type":"uint256"},{"internalType":"uint32","name":"svgId","type":"uint32"},{"internalType":"uint8","name":"rarityScoreModifier","type":"uint8"},{"internalType":"bool","name":"canPurchaseWithGhst","type":"bool"},{"internalType":"uint16","name":"minLevel","type":"uint16"},{"internalType":"bool","name":"canBeTransferred","type":"bool"},{"internalType":"uint8","name":"category","type":"uint8"},{"internalType":"int16","name":"kinshipBonus","type":"int16"},{"internalType":"uint32","name":"experienceBonus","type":"uint32"}],"internalType":"struct ItemType","name":"itemType","type":"tuple"}],"internalType":"struct ItemTypeIO[]","name":"items","type":"tuple[]"}],"internalType":"struct AavegotchiInfo","name":"aavegotchiInfo_","type":"tuple"}],"internalType":"struct MarketplaceGetterFacet.AavegotchiListing[]","name":"listings_","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_listingId","type":"uint256"}],"name":"getERC1155Listing","outputs":[{"components":[{"internalType":"uint256","name":"listingId","type":"uint256"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"erc1155TokenAddress","type":"address"},{"internalType":"uint256","name":"erc1155TypeId","type":"uint256"},{"internalType":"uint256","name":"category","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"uint256","name":"priceInWei","type":"uint256"},{"internalType":"uint256","name":"timeCreated","type":"uint256"},{"internalType":"uint256","name":"timeLastPurchased","type":"uint256"},{"internalType":"uint256","name":"sourceListingId","type":"uint256"},{"internalType":"bool","name":"sold","type":"bool"},{"internalType":"bool","name":"cancelled","type":"bool"},{"internalType":"uint16[2]","name":"principalSplit","type":"uint16[2]"},{"internalType":"address","name":"affiliate","type":"address"},{"internalType":"uint32","name":"whitelistId","type":"uint32"}],"internalType":"struct ERC1155Listing","name":"listing_","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_erc1155TokenAddress","type":"address"},{"internalType":"uint256","name":"_erc1155TypeId","type":"uint256"},{"internalType":"address","name":"_owner","type":"address"}],"name":"getERC1155ListingFromToken","outputs":[{"components":[{"internalType":"uint256","name":"listingId","type":"uint256"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"erc1155TokenAddress","type":"address"},{"internalType":"uint256","name":"erc1155TypeId","type":"uint256"},{"internalType":"uint256","name":"category","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"uint256","name":"priceInWei","type":"uint256"},{"internalType":"uint256","name":"timeCreated","type":"uint256"},{"internalType":"uint256","name":"timeLastPurchased","type":"uint256"},{"internalType":"uint256","name":"sourceListingId","type":"uint256"},{"internalType":"bool","name":"sold","type":"bool"},{"internalType":"bool","name":"cancelled","type":"bool"},{"internalType":"uint16[2]","name":"principalSplit","type":"uint16[2]"},{"internalType":"address","name":"affiliate","type":"address"},{"internalType":"uint32","name":"whitelistId","type":"uint32"}],"internalType":"struct ERC1155Listing","name":"listing_","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_category","type":"uint256"},{"internalType":"string","name":"_sort","type":"string"},{"internalType":"uint256","name":"_length","type":"uint256"}],"name":"getERC1155Listings","outputs":[{"components":[{"internalType":"uint256","name":"listingId","type":"uint256"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"erc1155TokenAddress","type":"address"},{"internalType":"uint256","name":"erc1155TypeId","type":"uint256"},{"internalType":"uint256","name":"category","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"uint256","name":"priceInWei","type":"uint256"},{"internalType":"uint256","name":"timeCreated","type":"uint256"},{"internalType":"uint256","name":"timeLastPurchased","type":"uint256"},{"internalType":"uint256","name":"sourceListingId","type":"uint256"},{"internalType":"bool","name":"sold","type":"bool"},{"internalType":"bool","name":"cancelled","type":"bool"},{"internalType":"uint16[2]","name":"principalSplit","type":"uint16[2]"},{"internalType":"address","name":"affiliate","type":"address"},{"internalType":"uint32","name":"whitelistId","type":"uint32"}],"internalType":"struct ERC1155Listing[]","name":"listings_","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_listingId","type":"uint256"}],"name":"getERC721Listing","outputs":[{"components":[{"internalType":"uint256","name":"listingId","type":"uint256"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"erc721TokenAddress","type":"address"},{"internalType":"uint256","name":"erc721TokenId","type":"uint256"},{"internalType":"uint256","name":"category","type":"uint256"},{"internalType":"uint256","name":"priceInWei","type":"uint256"},{"internalType":"uint256","name":"timeCreated","type":"uint256"},{"internalType":"uint256","name":"timePurchased","type":"uint256"},{"internalType":"bool","name":"cancelled","type":"bool"},{"internalType":"uint16[2]","name":"principalSplit","type":"uint16[2]"},{"internalType":"address","name":"affiliate","type":"address"},{"internalType":"uint32","name":"whitelistId","type":"uint32"}],"internalType":"struct ERC721Listing","name":"listing_","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_erc721TokenAddress","type":"address"},{"internalType":"uint256","name":"_erc721TokenId","type":"uint256"},{"internalType":"address","name":"_owner","type":"address"}],"name":"getERC721ListingFromToken","outputs":[{"components":[{"internalType":"uint256","name":"listingId","type":"uint256"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"erc721TokenAddress","type":"address"},{"internalType":"uint256","name":"erc721TokenId","type":"uint256"},{"internalType":"uint256","name":"category","type":"uint256"},{"internalType":"uint256","name":"priceInWei","type":"uint256"},{"internalType":"uint256","name":"timeCreated","type":"uint256"},{"internalType":"uint256","name":"timePurchased","type":"uint256"},{"internalType":"bool","name":"cancelled","type":"bool"},{"internalType":"uint16[2]","name":"principalSplit","type":"uint16[2]"},{"internalType":"address","name":"affiliate","type":"address"},{"internalType":"uint32","name":"whitelistId","type":"uint32"}],"internalType":"struct ERC721Listing","name":"listing_","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_category","type":"uint256"},{"internalType":"string","name":"_sort","type":"string"},{"internalType":"uint256","name":"_length","type":"uint256"}],"name":"getERC721Listings","outputs":[{"components":[{"internalType":"uint256","name":"listingId","type":"uint256"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"erc721TokenAddress","type":"address"},{"internalType":"uint256","name":"erc721TokenId","type":"uint256"},{"internalType":"uint256","name":"category","type":"uint256"},{"internalType":"uint256","name":"priceInWei","type":"uint256"},{"internalType":"uint256","name":"timeCreated","type":"uint256"},{"internalType":"uint256","name":"timePurchased","type":"uint256"},{"internalType":"bool","name":"cancelled","type":"bool"},{"internalType":"uint16[2]","name":"principalSplit","type":"uint16[2]"},{"internalType":"address","name":"affiliate","type":"address"},{"internalType":"uint32","name":"whitelistId","type":"uint32"}],"internalType":"struct ERC721Listing[]","name":"listings_","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getListingFeeInWei","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"uint256","name":"_category","type":"uint256"},{"internalType":"string","name":"_sort","type":"string"},{"internalType":"uint256","name":"_length","type":"uint256"}],"name":"getOwnerAavegotchiListings","outputs":[{"components":[{"components":[{"internalType":"uint256","name":"listingId","type":"uint256"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"erc721TokenAddress","type":"address"},{"internalType":"uint256","name":"erc721TokenId","type":"uint256"},{"internalType":"uint256","name":"category","type":"uint256"},{"internalType":"uint256","name":"priceInWei","type":"uint256"},{"internalType":"uint256","name":"timeCreated","type":"uint256"},{"internalType":"uint256","name":"timePurchased","type":"uint256"},{"internalType":"bool","name":"cancelled","type":"bool"},{"internalType":"uint16[2]","name":"principalSplit","type":"uint16[2]"},{"internalType":"address","name":"affiliate","type":"address"},{"internalType":"uint32","name":"whitelistId","type":"uint32"}],"internalType":"struct ERC721Listing","name":"listing_","type":"tuple"},{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"randomNumber","type":"uint256"},{"internalType":"uint256","name":"status","type":"uint256"},{"internalType":"int16[6]","name":"numericTraits","type":"int16[6]"},{"internalType":"int16[6]","name":"modifiedNumericTraits","type":"int16[6]"},{"internalType":"uint16[16]","name":"equippedWearables","type":"uint16[16]"},{"internalType":"address","name":"collateral","type":"address"},{"internalType":"address","name":"escrow","type":"address"},{"internalType":"uint256","name":"stakedAmount","type":"uint256"},{"internalType":"uint256","name":"minimumStake","type":"uint256"},{"internalType":"uint256","name":"kinship","type":"uint256"},{"internalType":"uint256","name":"lastInteracted","type":"uint256"},{"internalType":"uint256","name":"experience","type":"uint256"},{"internalType":"uint256","name":"toNextLevel","type":"uint256"},{"internalType":"uint256","name":"usedSkillPoints","type":"uint256"},{"internalType":"uint256","name":"level","type":"uint256"},{"internalType":"uint256","name":"hauntId","type":"uint256"},{"internalType":"uint256","name":"baseRarityScore","type":"uint256"},{"internalType":"uint256","name":"modifiedRarityScore","type":"uint256"},{"internalType":"bool","name":"locked","type":"bool"},{"components":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"itemId","type":"uint256"},{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"int8[6]","name":"traitModifiers","type":"int8[6]"},{"internalType":"bool[16]","name":"slotPositions","type":"bool[16]"},{"internalType":"uint8[]","name":"allowedCollaterals","type":"uint8[]"},{"components":[{"internalType":"uint8","name":"x","type":"uint8"},{"internalType":"uint8","name":"y","type":"uint8"},{"internalType":"uint8","name":"width","type":"uint8"},{"internalType":"uint8","name":"height","type":"uint8"}],"internalType":"struct Dimensions","name":"dimensions","type":"tuple"},{"internalType":"uint256","name":"ghstPrice","type":"uint256"},{"internalType":"uint256","name":"maxQuantity","type":"uint256"},{"internalType":"uint256","name":"totalQuantity","type":"uint256"},{"internalType":"uint32","name":"svgId","type":"uint32"},{"internalType":"uint8","name":"rarityScoreModifier","type":"uint8"},{"internalType":"bool","name":"canPurchaseWithGhst","type":"bool"},{"internalType":"uint16","name":"minLevel","type":"uint16"},{"internalType":"bool","name":"canBeTransferred","type":"bool"},{"internalType":"uint8","name":"category","type":"uint8"},{"internalType":"int16","name":"kinshipBonus","type":"int16"},{"internalType":"uint32","name":"experienceBonus","type":"uint32"}],"internalType":"struct ItemType","name":"itemType","type":"tuple"}],"internalType":"struct ItemTypeIO[]","name":"items","type":"tuple[]"}],"internalType":"struct AavegotchiInfo","name":"aavegotchiInfo_","type":"tuple"}],"internalType":"struct MarketplaceGetterFacet.AavegotchiListing[]","name":"listings_","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"uint256","name":"_category","type":"uint256"},{"internalType":"string","name":"_sort","type":"string"},{"internalType":"uint256","name":"_length","type":"uint256"}],"name":"getOwnerERC1155Listings","outputs":[{"components":[{"internalType":"uint256","name":"listingId","type":"uint256"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"erc1155TokenAddress","type":"address"},{"internalType":"uint256","name":"erc1155TypeId","type":"uint256"},{"internalType":"uint256","name":"category","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"uint256","name":"priceInWei","type":"uint256"},{"internalType":"uint256","name":"timeCreated","type":"uint256"},{"internalType":"uint256","name":"timeLastPurchased","type":"uint256"},{"internalType":"uint256","name":"sourceListingId","type":"uint256"},{"internalType":"bool","name":"sold","type":"bool"},{"internalType":"bool","name":"cancelled","type":"bool"},{"internalType":"uint16[2]","name":"principalSplit","type":"uint16[2]"},{"internalType":"address","name":"affiliate","type":"address"},{"internalType":"uint32","name":"whitelistId","type":"uint32"}],"internalType":"struct ERC1155Listing[]","name":"listings_","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"uint256","name":"_category","type":"uint256"},{"internalType":"string","name":"_sort","type":"string"},{"internalType":"uint256","name":"_length","type":"uint256"}],"name":"getOwnerERC721Listings","outputs":[{"components":[{"internalType":"uint256","name":"listingId","type":"uint256"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"erc721TokenAddress","type":"address"},{"internalType":"uint256","name":"erc721TokenId","type":"uint256"},{"internalType":"uint256","name":"category","type":"uint256"},{"internalType":"uint256","name":"priceInWei","type":"uint256"},{"internalType":"uint256","name":"timeCreated","type":"uint256"},{"internalType":"uint256","name":"timePurchased","type":"uint256"},{"internalType":"bool","name":"cancelled","type":"bool"},{"internalType":"uint16[2]","name":"principalSplit","type":"uint16[2]"},{"internalType":"address","name":"affiliate","type":"address"},{"internalType":"uint32","name":"whitelistId","type":"uint32"}],"internalType":"struct ERC721Listing[]","name":"listings_","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"_propIds","type":"bytes32[]"},{"internalType":"address[]","name":"_claimers","type":"address[]"},{"internalType":"uint256[][]","name":"_gotchiIds","type":"uint256[][]"},{"internalType":"bytes32[][]","name":"_proofs","type":"bytes32[][]"},{"internalType":"uint256[][]","name":"_onlyGotchis","type":"uint256[][]"}],"name":"batchDropClaimXPDrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_propId","type":"bytes32"},{"internalType":"address[]","name":"_claimers","type":"address[]"},{"internalType":"uint256[][]","name":"_gotchiIds","type":"uint256[][]"},{"internalType":"bytes32[][]","name":"_proofs","type":"bytes32[][]"},{"internalType":"uint256[][]","name":"_onlyGotchis","type":"uint256[][]"}],"name":"batchGotchiClaimXPDrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_propId","type":"bytes32"},{"internalType":"address","name":"_claimer","type":"address"},{"internalType":"uint256[]","name":"_gotchiId","type":"uint256[]"},{"internalType":"bytes32[]","name":"_proof","type":"bytes32[]"},{"internalType":"uint256[]","name":"_onlyGotchis","type":"uint256[]"}],"name":"claimXPDrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_propId","type":"bytes32"},{"internalType":"bytes32","name":"_merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"_xpAmount","type":"uint256"}],"name":"createXPDrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_propId","type":"bytes32"},{"internalType":"uint256","name":"_gotchId","type":"uint256"}],"name":"isClaimed","outputs":[{"internalType":"uint256","name":"claimed_","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_propId","type":"bytes32"}],"name":"viewXPDrop","outputs":[{"components":[{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"uint256","name":"xpAmount","type":"uint256"}],"internalType":"struct XPMerkleDrops","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"userAddress","type":"address"},{"indexed":false,"internalType":"address payable","name":"relayerAddress","type":"address"},{"indexed":false,"internalType":"bytes","name":"functionSignature","type":"bytes"}],"name":"MetaTransactionExecuted","type":"event"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"bytes","name":"functionSignature","type":"bytes"},{"internalType":"bytes32","name":"sigR","type":"bytes32"},{"internalType":"bytes32","name":"sigS","type":"bytes32"},{"internalType":"uint8","name":"sigV","type":"uint8"}],"name":"executeMetaTransaction","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getNonce","outputs":[{"internalType":"uint256","name":"nonce_","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256[]","name":"_ids","type":"uint256[]"},{"internalType":"uint256[]","name":"_values","type":"uint256[]"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"peripherySafeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"peripherySafeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"},{"internalType":"address","name":"_onBehalfOf","type":"address"}],"name":"peripherySetApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_value","type":"string"}],"name":"peripherySetBaseURI","outputs":[{"internalType":"uint256","name":"_itemsLength","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeInterface","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_periphery","type":"address"}],"name":"setPeriphery","outputs":[],"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_numAavegotchisToPurchase","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_totalPrice","type":"uint256"}],"name":"BuyPortals","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_numAavegotchisToPurchase","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_hauntId","type":"uint256"}],"name":"MintPortals","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_buyer","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"_itemIds","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"_quantities","type":"uint256[]"},{"indexed":false,"internalType":"uint256","name":"_totalPrice","type":"uint256"}],"name":"PurchaseItemsWithGhst","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_buyer","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"_itemIds","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"_quantities","type":"uint256[]"}],"name":"PurchaseItemsWithVouchers","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_buyer","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"_itemIds","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"_quantities","type":"uint256[]"},{"indexed":false,"internalType":"uint256","name":"_totalPrice","type":"uint256"}],"name":"PurchaseTransferItemsWithGhst","type":"event"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_ghst","type":"uint256"}],"name":"buyPortals","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mintPortals","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256[]","name":"_itemIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_quantities","type":"uint256[]"}],"name":"purchaseItemsWithGhst","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256[]","name":"_itemIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_quantities","type":"uint256[]"}],"name":"purchaseTransferItemsWithGhst","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_svgType","type":"bytes32"},{"internalType":"uint256","name":"_numLayers","type":"uint256"}],"name":"deleteLastSvgLayers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getAavegotchiSvg","outputs":[{"internalType":"string","name":"ag_","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_itemId","type":"uint256"}],"name":"getItemSvg","outputs":[{"internalType":"string","name":"ag_","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNextSleeveId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_svgType","type":"bytes32"},{"internalType":"uint256","name":"_itemId","type":"uint256"}],"name":"getSvg","outputs":[{"internalType":"string","name":"svg_","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_svgType","type":"bytes32"},{"internalType":"uint256[]","name":"_itemIds","type":"uint256[]"}],"name":"getSvgs","outputs":[{"internalType":"string[]","name":"svgs_","type":"string[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"portalAavegotchisSvg","outputs":[{"internalType":"string[10]","name":"svg_","type":"string[10]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_hauntId","type":"uint256"},{"internalType":"address","name":"_collateralType","type":"address"},{"internalType":"int16[6]","name":"_numericTraits","type":"int16[6]"},{"internalType":"uint16[16]","name":"equippedWearables","type":"uint16[16]"}],"name":"previewAavegotchi","outputs":[{"internalType":"string","name":"ag_","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_itemIds","type":"uint256[]"},{"components":[{"internalType":"uint8","name":"x","type":"uint8"},{"internalType":"uint8","name":"y","type":"uint8"},{"internalType":"uint8","name":"width","type":"uint8"},{"internalType":"uint8","name":"height","type":"uint8"}],"internalType":"struct Dimensions[]","name":"_dimensions","type":"tuple[]"}],"name":"setItemsDimensions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"sleeveId","type":"uint256"},{"internalType":"uint256","name":"wearableId","type":"uint256"}],"internalType":"struct SvgFacet.Sleeve[]","name":"_sleeves","type":"tuple[]"}],"name":"setSleeves","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_svg","type":"string"},{"components":[{"internalType":"bytes32","name":"svgType","type":"bytes32"},{"internalType":"uint256[]","name":"sizes","type":"uint256[]"}],"internalType":"struct LibSvg.SvgTypeAndSizes[]","name":"_typesAndSizes","type":"tuple[]"}],"name":"storeSvg","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_svg","type":"string"},{"components":[{"internalType":"bytes32","name":"svgType","type":"bytes32"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"sizes","type":"uint256[]"}],"internalType":"struct LibSvg.SvgTypeAndIdsAndSizes[]","name":"_typesAndIdsAndSizes","type":"tuple[]"}],"name":"updateSvg","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getAavegotchiSideSvgs","outputs":[{"internalType":"string[]","name":"ag_","type":"string[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_itemId","type":"uint256"}],"name":"getItemSvgs","outputs":[{"internalType":"string[]","name":"svg_","type":"string[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_itemIds","type":"uint256[]"}],"name":"getItemsSvgs","outputs":[{"internalType":"string[][]","name":"svgs_","type":"string[][]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_hauntId","type":"uint256"},{"internalType":"address","name":"_collateralType","type":"address"},{"internalType":"int16[6]","name":"_numericTraits","type":"int16[6]"},{"internalType":"uint16[16]","name":"equippedWearables","type":"uint16[16]"}],"name":"previewSideAavegotchi","outputs":[{"internalType":"string[]","name":"ag_","type":"string[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"itemId","type":"uint256"},{"internalType":"string","name":"side","type":"string"},{"components":[{"internalType":"uint8","name":"x","type":"uint8"},{"internalType":"uint8","name":"y","type":"uint8"},{"internalType":"uint8","name":"width","type":"uint8"},{"internalType":"uint8","name":"height","type":"uint8"}],"internalType":"struct Dimensions","name":"dimensions","type":"tuple"}],"internalType":"struct SvgViewsFacet.SideViewDimensionsArgs[]","name":"_sideViewDimensions","type":"tuple[]"}],"name":"setSideViewDimensions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"itemId","type":"uint256"},{"internalType":"uint256","name":"slotPosition","type":"uint256"},{"internalType":"bytes32","name":"side","type":"bytes32"},{"internalType":"bool","name":"exceptionBool","type":"bool"}],"internalType":"struct SvgViewsFacet.SideViewExceptions[]","name":"_sideViewExceptions","type":"tuple[]"}],"name":"setSideViewExceptions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"}],"name":"OpenPortals","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"PortalOpened","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"randomNumber","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_vrfTimeSet","type":"uint256"}],"name":"VrfRandomNumber","type":"event"},{"inputs":[{"internalType":"uint256","name":"_newFee","type":"uint256"},{"internalType":"bytes32","name":"_keyHash","type":"bytes32"},{"internalType":"address","name":"_vrfCoordinator","type":"address"},{"internalType":"address","name":"_link","type":"address"}],"name":"changeVrf","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"keyHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"link","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"linkBalance","outputs":[{"internalType":"uint256","name":"linkBalance_","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"}],"name":"openPortals","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_requestId","type":"bytes32"},{"internalType":"uint256","name":"_randomNumber","type":"uint256"}],"name":"rawFulfillRandomness","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"removeLinkTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vrfCoordinator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"_ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"_values","type":"uint256[]"}],"name":"MigrateVouchers","type":"event"},{"inputs":[{"components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"internalType":"struct VoucherMigrationFacet.VouchersOwner[]","name":"_vouchersOwners","type":"tuple[]"}],"name":"migrateVouchers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_wearableIds","type":"uint256[]"}],"name":"findWearableSets","outputs":[{"internalType":"uint256[]","name":"wearableSetIds_","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"getWearableSet","outputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint8[]","name":"allowedCollaterals","type":"uint8[]"},{"internalType":"uint16[]","name":"wearableIds","type":"uint16[]"},{"internalType":"int8[5]","name":"traitsBonuses","type":"int8[5]"}],"internalType":"struct WearableSet","name":"wearableSet_","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWearableSets","outputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint8[]","name":"allowedCollaterals","type":"uint8[]"},{"internalType":"uint16[]","name":"wearableIds","type":"uint16[]"},{"internalType":"int8[5]","name":"traitsBonuses","type":"int8[5]"}],"internalType":"struct WearableSet[]","name":"wearableSets_","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalWearableSets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint32","name":"whitelistId","type":"uint32"}],"name":"WhitelistCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint32","name":"whitelistId","type":"uint32"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"WhitelistOwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint32","name":"whitelistId","type":"uint32"}],"name":"WhitelistUpdated","type":"event"},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"address[]","name":"_whitelistAddresses","type":"address[]"}],"name":"createWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_whitelistId","type":"uint32"}],"name":"getBorrowLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_whitelistId","type":"uint32"}],"name":"getWhitelist","outputs":[{"components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"string","name":"name","type":"string"},{"internalType":"address[]","name":"addresses","type":"address[]"}],"internalType":"struct Whitelist","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_whitelistId","type":"uint32"},{"internalType":"uint256","name":"_actionRight","type":"uint256"}],"name":"getWhitelistAccessRight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWhitelistsLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_whitelistId","type":"uint32"},{"internalType":"address","name":"_whitelistAddress","type":"address"}],"name":"isWhitelisted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_whitelistId","type":"uint32"},{"internalType":"address[]","name":"_whitelistAddresses","type":"address[]"}],"name":"removeAddressesFromWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_whitelistId","type":"uint32"},{"internalType":"uint256","name":"_borrowlimit","type":"uint256"}],"name":"setBorrowLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_whitelistId","type":"uint32"},{"internalType":"uint256","name":"_actionRight","type":"uint256"},{"internalType":"uint256","name":"_accessRight","type":"uint256"}],"name":"setWhitelistAccessRight","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_whitelistId","type":"uint32"},{"internalType":"address","name":"_whitelistOwner","type":"address"}],"name":"transferOwnershipOfWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_whitelistId","type":"uint32"},{"internalType":"address[]","name":"_whitelistAddresses","type":"address[]"}],"name":"updateWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"whitelistId","type":"uint32"}],"name":"whitelistExists","outputs":[{"internalType":"bool","name":"exists","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_whitelistId","type":"uint32"}],"name":"whitelistOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"kinship","type":"uint256"}],"name":"AavegotchiInteract","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"listingId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"category","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"ERC1155ListingCancelled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"listingId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"category","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"ERC1155ListingRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"listingId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"quantity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"priceInWei","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"UpdateERC1155Listing","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"listingId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"category","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"ERC721ListingCancelled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"listingId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"priceInWei","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"ERC721ListingPriceUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"listingId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"category","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"ERC721ListingRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint32","name":"listingId","type":"uint32"}],"name":"GotchiLendingAdd","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint32","name":"listingId","type":"uint32"},{"indexed":true,"internalType":"address","name":"lender","type":"address"},{"indexed":true,"internalType":"uint32","name":"tokenId","type":"uint32"},{"indexed":false,"internalType":"uint96","name":"initialCost","type":"uint96"},{"indexed":false,"internalType":"uint32","name":"period","type":"uint32"},{"indexed":false,"internalType":"uint8[3]","name":"revenueSplit","type":"uint8[3]"},{"indexed":false,"internalType":"address","name":"originalOwner","type":"address"},{"indexed":false,"internalType":"address","name":"thirdParty","type":"address"},{"indexed":false,"internalType":"uint32","name":"whitelistId","type":"uint32"},{"indexed":false,"internalType":"address[]","name":"revenueTokens","type":"address[]"},{"indexed":false,"internalType":"uint256","name":"timeCreated","type":"uint256"}],"name":"GotchiLendingAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint32","name":"listingId","type":"uint32"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"GotchiLendingCancel","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint32","name":"listingId","type":"uint32"},{"indexed":true,"internalType":"address","name":"lender","type":"address"},{"indexed":true,"internalType":"uint32","name":"tokenId","type":"uint32"},{"indexed":false,"internalType":"uint96","name":"initialCost","type":"uint96"},{"indexed":false,"internalType":"uint32","name":"period","type":"uint32"},{"indexed":false,"internalType":"uint8[3]","name":"revenueSplit","type":"uint8[3]"},{"indexed":false,"internalType":"address","name":"originalOwner","type":"address"},{"indexed":false,"internalType":"address","name":"thirdParty","type":"address"},{"indexed":false,"internalType":"uint32","name":"whitelistId","type":"uint32"},{"indexed":false,"internalType":"address[]","name":"revenueTokens","type":"address[]"},{"indexed":false,"internalType":"uint256","name":"timeCanceled","type":"uint256"}],"name":"GotchiLendingCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint32","name":"listingId","type":"uint32"},{"indexed":false,"internalType":"address[]","name":"tokenAddresses","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"GotchiLendingClaim","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint32","name":"listingId","type":"uint32"},{"indexed":true,"internalType":"address","name":"lender","type":"address"},{"indexed":true,"internalType":"address","name":"borrower","type":"address"},{"indexed":false,"internalType":"uint32","name":"tokenId","type":"uint32"},{"indexed":false,"internalType":"uint96","name":"initialCost","type":"uint96"},{"indexed":false,"internalType":"uint32","name":"period","type":"uint32"},{"indexed":false,"internalType":"uint8[3]","name":"revenueSplit","type":"uint8[3]"},{"indexed":false,"internalType":"address","name":"originalOwner","type":"address"},{"indexed":false,"internalType":"address","name":"thirdParty","type":"address"},{"indexed":false,"internalType":"uint32","name":"whitelistId","type":"uint32"},{"indexed":false,"internalType":"address[]","name":"revenueTokens","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"indexed":false,"internalType":"uint256","name":"timeClaimed","type":"uint256"}],"name":"GotchiLendingClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint32","name":"listingId","type":"uint32"}],"name":"GotchiLendingEnd","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint32","name":"listingId","type":"uint32"},{"indexed":true,"internalType":"address","name":"lender","type":"address"},{"indexed":true,"internalType":"address","name":"borrower","type":"address"},{"indexed":false,"internalType":"uint32","name":"tokenId","type":"uint32"},{"indexed":false,"internalType":"uint96","name":"initialCost","type":"uint96"},{"indexed":false,"internalType":"uint32","name":"period","type":"uint32"},{"indexed":false,"internalType":"uint8[3]","name":"revenueSplit","type":"uint8[3]"},{"indexed":false,"internalType":"address","name":"originalOwner","type":"address"},{"indexed":false,"internalType":"address","name":"thirdParty","type":"address"},{"indexed":false,"internalType":"uint32","name":"whitelistId","type":"uint32"},{"indexed":false,"internalType":"address[]","name":"revenueTokens","type":"address[]"},{"indexed":false,"internalType":"uint256","name":"timeEnded","type":"uint256"}],"name":"GotchiLendingEnded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint32","name":"listingId","type":"uint32"}],"name":"GotchiLendingExecute","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint32","name":"listingId","type":"uint32"},{"indexed":true,"internalType":"address","name":"lender","type":"address"},{"indexed":true,"internalType":"address","name":"borrower","type":"address"},{"indexed":false,"internalType":"uint32","name":"tokenId","type":"uint32"},{"indexed":false,"internalType":"uint96","name":"initialCost","type":"uint96"},{"indexed":false,"internalType":"uint32","name":"period","type":"uint32"},{"indexed":false,"internalType":"uint8[3]","name":"revenueSplit","type":"uint8[3]"},{"indexed":false,"internalType":"address","name":"originalOwner","type":"address"},{"indexed":false,"internalType":"address","name":"thirdParty","type":"address"},{"indexed":false,"internalType":"uint32","name":"whitelistId","type":"uint32"},{"indexed":false,"internalType":"address[]","name":"revenueTokens","type":"address[]"},{"indexed":false,"internalType":"uint256","name":"timeAgreed","type":"uint256"}],"name":"GotchiLendingExecuted","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"bytes32","name":"svgType","type":"bytes32"},{"internalType":"uint256[]","name":"sizes","type":"uint256[]"}],"indexed":false,"internalType":"struct LibSvg.SvgTypeAndSizes[]","name":"_typesAndSizes","type":"tuple[]"}],"name":"StoreSvg","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"bytes32","name":"svgType","type":"bytes32"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"sizes","type":"uint256[]"}],"indexed":false,"internalType":"struct LibSvg.SvgTypeAndIdsAndSizes[]","name":"_typesAndIdsAndSizes","type":"tuple[]"}],"name":"UpdateSvg","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint32","name":"whitelistId","type":"uint32"},{"indexed":true,"internalType":"uint256","name":"actionRight","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"accessRight","type":"uint256"}],"name":"WhitelistAccessRightSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"_xpValues","type":"uint256[]"}],"name":"GrantExperience","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"_propId","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"_gotchiId","type":"uint256"}],"name":"XPClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"_propId","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"_merkleRoot","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"_xpAmount","type":"uint256"}],"name":"XPDropCreated","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"enum IDiamondCut.FacetCutAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"indexed":false,"internalType":"struct IDiamondCut.FacetCut[]","name":"_diamondCut","type":"tuple[]"},{"indexed":false,"internalType":"address","name":"_init","type":"address"},{"indexed":false,"internalType":"bytes","name":"_calldata","type":"bytes"}],"name":"DiamondCut","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_operator","type":"address"},{"indexed":false,"internalType":"bool","name":"_approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_operator","type":"address"},{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"_ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"_values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_fromContract","type":"address"},{"indexed":true,"internalType":"uint256","name":"_fromTokenId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"_tokenTypeId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"TransferFromParent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_operator","type":"address"},{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_toContract","type":"address"},{"indexed":true,"internalType":"uint256","name":"_toTokenId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"_tokenTypeId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"TransferToParent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"_value","type":"string"},{"indexed":true,"internalType":"uint256","name":"_id","type":"uint256"}],"name":"URI","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_operator","type":"address"},{"indexed":false,"internalType":"bool","name":"_approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Transfer","type":"event"}] \ No newline at end of file +[ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "_operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "_approved", + "type": "bool" + } + ], + "name": "PetOperatorApprovalForAll", + "type": "event" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } + ], + "name": "aavegotchiClaimTime", + "outputs": [ + { "internalType": "uint256", "name": "claimTime_", "type": "uint256" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_owner", "type": "address" } + ], + "name": "allAavegotchisOfOwner", + "outputs": [ + { + "components": [ + { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, + { "internalType": "string", "name": "name", "type": "string" }, + { "internalType": "address", "name": "owner", "type": "address" }, + { + "internalType": "uint256", + "name": "randomNumber", + "type": "uint256" + }, + { "internalType": "uint256", "name": "status", "type": "uint256" }, + { + "internalType": "int16[6]", + "name": "numericTraits", + "type": "int16[6]" + }, + { + "internalType": "int16[6]", + "name": "modifiedNumericTraits", + "type": "int16[6]" + }, + { + "internalType": "uint16[16]", + "name": "equippedWearables", + "type": "uint16[16]" + }, + { + "internalType": "address", + "name": "collateral", + "type": "address" + }, + { "internalType": "address", "name": "escrow", "type": "address" }, + { + "internalType": "uint256", + "name": "stakedAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minimumStake", + "type": "uint256" + }, + { "internalType": "uint256", "name": "kinship", "type": "uint256" }, + { + "internalType": "uint256", + "name": "lastInteracted", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "experience", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "toNextLevel", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "usedSkillPoints", + "type": "uint256" + }, + { "internalType": "uint256", "name": "level", "type": "uint256" }, + { "internalType": "uint256", "name": "hauntId", "type": "uint256" }, + { + "internalType": "uint256", + "name": "baseRarityScore", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "modifiedRarityScore", + "type": "uint256" + }, + { "internalType": "bool", "name": "locked", "type": "bool" }, + { + "components": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "itemId", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "description", + "type": "string" + }, + { + "internalType": "string", + "name": "author", + "type": "string" + }, + { + "internalType": "int8[6]", + "name": "traitModifiers", + "type": "int8[6]" + }, + { + "internalType": "bool[16]", + "name": "slotPositions", + "type": "bool[16]" + }, + { + "internalType": "uint8[]", + "name": "allowedCollaterals", + "type": "uint8[]" + }, + { + "components": [ + { "internalType": "uint8", "name": "x", "type": "uint8" }, + { "internalType": "uint8", "name": "y", "type": "uint8" }, + { + "internalType": "uint8", + "name": "width", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "height", + "type": "uint8" + } + ], + "internalType": "struct Dimensions", + "name": "dimensions", + "type": "tuple" + }, + { + "internalType": "uint256", + "name": "ghstPrice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxQuantity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalQuantity", + "type": "uint256" + }, + { + "internalType": "uint32", + "name": "svgId", + "type": "uint32" + }, + { + "internalType": "uint8", + "name": "rarityScoreModifier", + "type": "uint8" + }, + { + "internalType": "bool", + "name": "canPurchaseWithGhst", + "type": "bool" + }, + { + "internalType": "uint16", + "name": "minLevel", + "type": "uint16" + }, + { + "internalType": "bool", + "name": "canBeTransferred", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "category", + "type": "uint8" + }, + { + "internalType": "int16", + "name": "kinshipBonus", + "type": "int16" + }, + { + "internalType": "uint32", + "name": "experienceBonus", + "type": "uint32" + } + ], + "internalType": "struct ItemType", + "name": "itemType", + "type": "tuple" + } + ], + "internalType": "struct ItemTypeIO[]", + "name": "items", + "type": "tuple[]" + } + ], + "internalType": "struct AavegotchiInfo[]", + "name": "aavegotchiInfos_", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_approved", "type": "address" }, + { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_owner", "type": "address" } + ], + "name": "balanceOf", + "outputs": [ + { "internalType": "uint256", "name": "balance_", "type": "uint256" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256[]", "name": "_tokenIds", "type": "uint256[]" } + ], + "name": "batchOwnerOf", + "outputs": [ + { "internalType": "address[]", "name": "owners_", "type": "address[]" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } + ], + "name": "getAavegotchi", + "outputs": [ + { + "components": [ + { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, + { "internalType": "string", "name": "name", "type": "string" }, + { "internalType": "address", "name": "owner", "type": "address" }, + { + "internalType": "uint256", + "name": "randomNumber", + "type": "uint256" + }, + { "internalType": "uint256", "name": "status", "type": "uint256" }, + { + "internalType": "int16[6]", + "name": "numericTraits", + "type": "int16[6]" + }, + { + "internalType": "int16[6]", + "name": "modifiedNumericTraits", + "type": "int16[6]" + }, + { + "internalType": "uint16[16]", + "name": "equippedWearables", + "type": "uint16[16]" + }, + { + "internalType": "address", + "name": "collateral", + "type": "address" + }, + { "internalType": "address", "name": "escrow", "type": "address" }, + { + "internalType": "uint256", + "name": "stakedAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minimumStake", + "type": "uint256" + }, + { "internalType": "uint256", "name": "kinship", "type": "uint256" }, + { + "internalType": "uint256", + "name": "lastInteracted", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "experience", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "toNextLevel", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "usedSkillPoints", + "type": "uint256" + }, + { "internalType": "uint256", "name": "level", "type": "uint256" }, + { "internalType": "uint256", "name": "hauntId", "type": "uint256" }, + { + "internalType": "uint256", + "name": "baseRarityScore", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "modifiedRarityScore", + "type": "uint256" + }, + { "internalType": "bool", "name": "locked", "type": "bool" }, + { + "components": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "itemId", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "description", + "type": "string" + }, + { + "internalType": "string", + "name": "author", + "type": "string" + }, + { + "internalType": "int8[6]", + "name": "traitModifiers", + "type": "int8[6]" + }, + { + "internalType": "bool[16]", + "name": "slotPositions", + "type": "bool[16]" + }, + { + "internalType": "uint8[]", + "name": "allowedCollaterals", + "type": "uint8[]" + }, + { + "components": [ + { "internalType": "uint8", "name": "x", "type": "uint8" }, + { "internalType": "uint8", "name": "y", "type": "uint8" }, + { + "internalType": "uint8", + "name": "width", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "height", + "type": "uint8" + } + ], + "internalType": "struct Dimensions", + "name": "dimensions", + "type": "tuple" + }, + { + "internalType": "uint256", + "name": "ghstPrice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxQuantity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalQuantity", + "type": "uint256" + }, + { + "internalType": "uint32", + "name": "svgId", + "type": "uint32" + }, + { + "internalType": "uint8", + "name": "rarityScoreModifier", + "type": "uint8" + }, + { + "internalType": "bool", + "name": "canPurchaseWithGhst", + "type": "bool" + }, + { + "internalType": "uint16", + "name": "minLevel", + "type": "uint16" + }, + { + "internalType": "bool", + "name": "canBeTransferred", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "category", + "type": "uint8" + }, + { + "internalType": "int16", + "name": "kinshipBonus", + "type": "int16" + }, + { + "internalType": "uint32", + "name": "experienceBonus", + "type": "uint32" + } + ], + "internalType": "struct ItemType", + "name": "itemType", + "type": "tuple" + } + ], + "internalType": "struct ItemTypeIO[]", + "name": "items", + "type": "tuple[]" + } + ], + "internalType": "struct AavegotchiInfo", + "name": "aavegotchiInfo_", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } + ], + "name": "getApproved", + "outputs": [ + { "internalType": "address", "name": "approved_", "type": "address" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_owner", "type": "address" }, + { "internalType": "address", "name": "_operator", "type": "address" } + ], + "name": "isApprovedForAll", + "outputs": [ + { "internalType": "bool", "name": "approved_", "type": "bool" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_owner", "type": "address" }, + { "internalType": "address", "name": "_operator", "type": "address" } + ], + "name": "isPetOperatorForAll", + "outputs": [ + { "internalType": "bool", "name": "approved_", "type": "bool" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } + ], + "name": "ownerOf", + "outputs": [ + { "internalType": "address", "name": "owner_", "type": "address" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_from", "type": "address" }, + { "internalType": "address", "name": "_to", "type": "address" }, + { "internalType": "uint256[]", "name": "_tokenIds", "type": "uint256[]" }, + { "internalType": "bytes", "name": "_data", "type": "bytes" } + ], + "name": "safeBatchTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_from", "type": "address" }, + { "internalType": "address", "name": "_to", "type": "address" }, + { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_from", "type": "address" }, + { "internalType": "address", "name": "_to", "type": "address" }, + { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, + { "internalType": "bytes", "name": "_data", "type": "bytes" } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_operator", "type": "address" }, + { "internalType": "bool", "name": "_approved", "type": "bool" } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_operator", "type": "address" }, + { "internalType": "bool", "name": "_approved", "type": "bool" } + ], + "name": "setPetOperatorForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_index", "type": "uint256" } + ], + "name": "tokenByIndex", + "outputs": [ + { "internalType": "uint256", "name": "tokenId_", "type": "uint256" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_owner", "type": "address" } + ], + "name": "tokenIdsOfOwner", + "outputs": [ + { "internalType": "uint32[]", "name": "tokenIds_", "type": "uint32[]" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_owner", "type": "address" }, + { "internalType": "uint256", "name": "_index", "type": "uint256" } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [ + { "internalType": "uint256", "name": "tokenId_", "type": "uint256" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } + ], + "name": "tokenURI", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { "internalType": "uint256", "name": "totalSupply_", "type": "uint256" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_from", "type": "address" }, + { "internalType": "address", "name": "_to", "type": "address" }, + { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + } + ], + "name": "ClaimAavegotchi", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_time", + "type": "uint256" + } + ], + "name": "LockAavegotchi", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "string", + "name": "_oldName", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "_newName", + "type": "string" + } + ], + "name": "SetAavegotchiName", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "_batchId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "tokenIds", + "type": "uint256[]" + } + ], + "name": "SetBatchId", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "int16[4]", + "name": "_values", + "type": "int16[4]" + } + ], + "name": "SpendSkillpoints", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_time", + "type": "uint256" + } + ], + "name": "UnLockAavegotchi", + "type": "event" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_experience", "type": "uint256" } + ], + "name": "aavegotchiLevel", + "outputs": [ + { "internalType": "uint256", "name": "level_", "type": "uint256" } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [{ "internalType": "string", "name": "_name", "type": "string" }], + "name": "aavegotchiNameAvailable", + "outputs": [ + { "internalType": "bool", "name": "available_", "type": "bool" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } + ], + "name": "availableSkillPoints", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "int16[6]", + "name": "_numericTraits", + "type": "int16[6]" + } + ], + "name": "baseRarityScore", + "outputs": [ + { "internalType": "uint256", "name": "rarityScore_", "type": "uint256" } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, + { "internalType": "uint256", "name": "_option", "type": "uint256" }, + { "internalType": "uint256", "name": "_stakeAmount", "type": "uint256" } + ], + "name": "claimAavegotchi", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "currentHaunt", + "outputs": [ + { "internalType": "uint256", "name": "hauntId_", "type": "uint256" }, + { + "components": [ + { + "internalType": "uint256", + "name": "hauntMaxSize", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "portalPrice", + "type": "uint256" + }, + { "internalType": "bytes3", "name": "bodyColor", "type": "bytes3" }, + { "internalType": "uint24", "name": "totalCount", "type": "uint24" } + ], + "internalType": "struct Haunt", + "name": "haunt_", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } + ], + "name": "getNumericTraits", + "outputs": [ + { + "internalType": "int16[6]", + "name": "numericTraits_", + "type": "int16[6]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "ghstAddress", + "outputs": [ + { "internalType": "address", "name": "contract_", "type": "address" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256[]", "name": "_tokenIds", "type": "uint256[]" } + ], + "name": "interact", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } + ], + "name": "isAavegotchiLocked", + "outputs": [{ "internalType": "bool", "name": "isLocked", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } + ], + "name": "kinship", + "outputs": [ + { "internalType": "uint256", "name": "score_", "type": "uint256" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } + ], + "name": "modifiedTraitsAndRarityScore", + "outputs": [ + { + "internalType": "int16[6]", + "name": "numericTraits_", + "type": "int16[6]" + }, + { "internalType": "uint256", "name": "rarityScore_", "type": "uint256" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } + ], + "name": "portalAavegotchiTraits", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "randomNumber", + "type": "uint256" + }, + { + "internalType": "int16[6]", + "name": "numericTraits", + "type": "int16[6]" + }, + { + "internalType": "address", + "name": "collateralType", + "type": "address" + }, + { + "internalType": "uint256", + "name": "minimumStake", + "type": "uint256" + } + ], + "internalType": "struct PortalAavegotchiTraitsIO[10]", + "name": "portalAavegotchiTraits_", + "type": "tuple[10]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "int16[6]", + "name": "_numericTraits", + "type": "int16[6]" + } + ], + "name": "rarityMultiplier", + "outputs": [ + { "internalType": "uint256", "name": "multiplier_", "type": "uint256" } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint32", "name": "_gotchiId", "type": "uint32" } + ], + "name": "reduceKinshipViaChanneling", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "revenueShares", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "burnAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "daoAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "rarityFarming", + "type": "address" + }, + { "internalType": "address", "name": "pixelCraft", "type": "address" } + ], + "internalType": "struct AavegotchiGameFacet.RevenueSharesIO", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, + { "internalType": "string", "name": "_name", "type": "string" } + ], + "name": "setAavegotchiName", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_realm", "type": "address" } + ], + "name": "setRealmAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, + { "internalType": "int16[4]", "name": "_values", "type": "int16[4]" } + ], + "name": "spendSkillPoints", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_owner", "type": "address" }, + { "internalType": "uint256", "name": "_count", "type": "uint256" }, + { "internalType": "uint256", "name": "_skip", "type": "uint256" }, + { "internalType": "bool", "name": "all", "type": "bool" } + ], + "name": "tokenIdsWithKinship", + "outputs": [ + { + "components": [ + { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, + { "internalType": "uint256", "name": "kinship", "type": "uint256" }, + { + "internalType": "uint256", + "name": "lastInteracted", + "type": "uint256" + } + ], + "internalType": "struct AavegotchiGameFacet.TokenIdsWithKinship[]", + "name": "tokenIdsWithKinship_", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_experience", "type": "uint256" } + ], + "name": "xpUntilNextLevel", + "outputs": [ + { "internalType": "uint256", "name": "requiredXp_", "type": "uint256" } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "tokenIds", + "type": "uint256[]" + } + ], + "name": "AddedAavegotchiBatch", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + } + ], + "name": "AddedItemsBatch", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "tokenIds", + "type": "uint256[]" + } + ], + "name": "WithdrawnBatch", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + } + ], + "name": "WithdrawnItems", + "type": "event" + }, + { + "inputs": [], + "name": "childChainManager", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_user", "type": "address" }, + { "internalType": "bytes", "name": "_depositData", "type": "bytes" } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_newChildChainManager", + "type": "address" + } + ], + "name": "setChildChainManager", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256[]", "name": "_tokenIds", "type": "uint256[]" } + ], + "name": "withdrawAavegotchiBatch", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256[]", "name": "_ids", "type": "uint256[]" }, + { "internalType": "uint256[]", "name": "_values", "type": "uint256[]" } + ], + "name": "withdrawItemsBatch", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_reduceAmount", + "type": "uint256" + } + ], + "name": "DecreaseStake", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "_fromTokenId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "_toTokenId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "experience", + "type": "uint256" + } + ], + "name": "ExperienceTransfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_stakeAmount", + "type": "uint256" + } + ], + "name": "IncreaseStake", + "type": "event" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } + ], + "name": "collateralBalance", + "outputs": [ + { + "internalType": "address", + "name": "collateralType_", + "type": "address" + }, + { "internalType": "address", "name": "escrow_", "type": "address" }, + { "internalType": "uint256", "name": "balance_", "type": "uint256" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_hauntId", "type": "uint256" }, + { "internalType": "uint256", "name": "_collateralId", "type": "uint256" } + ], + "name": "collateralInfo", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "collateralType", + "type": "address" + }, + { + "components": [ + { + "internalType": "int16[6]", + "name": "modifiers", + "type": "int16[6]" + }, + { + "internalType": "bytes3", + "name": "primaryColor", + "type": "bytes3" + }, + { + "internalType": "bytes3", + "name": "secondaryColor", + "type": "bytes3" + }, + { + "internalType": "bytes3", + "name": "cheekColor", + "type": "bytes3" + }, + { "internalType": "uint8", "name": "svgId", "type": "uint8" }, + { + "internalType": "uint8", + "name": "eyeShapeSvgId", + "type": "uint8" + }, + { + "internalType": "uint16", + "name": "conversionRate", + "type": "uint16" + }, + { "internalType": "bool", "name": "delisted", "type": "bool" } + ], + "internalType": "struct AavegotchiCollateralTypeInfo", + "name": "collateralTypeInfo", + "type": "tuple" + } + ], + "internalType": "struct AavegotchiCollateralTypeIO", + "name": "collateralInfo_", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_hauntId", "type": "uint256" } + ], + "name": "collaterals", + "outputs": [ + { + "internalType": "address[]", + "name": "collateralTypes_", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, + { "internalType": "uint256", "name": "_toId", "type": "uint256" } + ], + "name": "decreaseAndDestroy", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, + { "internalType": "uint256", "name": "_reduceAmount", "type": "uint256" } + ], + "name": "decreaseStake", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getAllCollateralTypes", + "outputs": [ + { "internalType": "address[]", "name": "", "type": "address[]" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_hauntId", "type": "uint256" } + ], + "name": "getCollateralInfo", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "collateralType", + "type": "address" + }, + { + "components": [ + { + "internalType": "int16[6]", + "name": "modifiers", + "type": "int16[6]" + }, + { + "internalType": "bytes3", + "name": "primaryColor", + "type": "bytes3" + }, + { + "internalType": "bytes3", + "name": "secondaryColor", + "type": "bytes3" + }, + { + "internalType": "bytes3", + "name": "cheekColor", + "type": "bytes3" + }, + { "internalType": "uint8", "name": "svgId", "type": "uint8" }, + { + "internalType": "uint8", + "name": "eyeShapeSvgId", + "type": "uint8" + }, + { + "internalType": "uint16", + "name": "conversionRate", + "type": "uint16" + }, + { "internalType": "bool", "name": "delisted", "type": "bool" } + ], + "internalType": "struct AavegotchiCollateralTypeInfo", + "name": "collateralTypeInfo", + "type": "tuple" + } + ], + "internalType": "struct AavegotchiCollateralTypeIO[]", + "name": "collateralInfo_", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, + { "internalType": "uint256", "name": "_stakeAmount", "type": "uint256" } + ], + "name": "increaseStake", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_collateralToken", + "type": "address" + }, + { "internalType": "uint8", "name": "_svgId", "type": "uint8" } + ], + "name": "setCollateralEyeShapeSvgId", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "collateralType", + "type": "address" + }, + { + "components": [ + { + "internalType": "int16[6]", + "name": "modifiers", + "type": "int16[6]" + }, + { + "internalType": "bytes3", + "name": "primaryColor", + "type": "bytes3" + }, + { + "internalType": "bytes3", + "name": "secondaryColor", + "type": "bytes3" + }, + { + "internalType": "bytes3", + "name": "cheekColor", + "type": "bytes3" + }, + { "internalType": "uint8", "name": "svgId", "type": "uint8" }, + { + "internalType": "uint8", + "name": "eyeShapeSvgId", + "type": "uint8" + }, + { + "internalType": "uint16", + "name": "conversionRate", + "type": "uint16" + }, + { "internalType": "bool", "name": "delisted", "type": "bool" } + ], + "internalType": "struct AavegotchiCollateralTypeInfo", + "name": "collateralTypeInfo", + "type": "tuple" + } + ], + "indexed": false, + "internalType": "struct AavegotchiCollateralTypeIO", + "name": "_collateralType", + "type": "tuple" + } + ], + "name": "AddCollateralType", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "components": [ + { "internalType": "string", "name": "name", "type": "string" }, + { "internalType": "string", "name": "description", "type": "string" }, + { "internalType": "string", "name": "author", "type": "string" }, + { + "internalType": "int8[6]", + "name": "traitModifiers", + "type": "int8[6]" + }, + { + "internalType": "bool[16]", + "name": "slotPositions", + "type": "bool[16]" + }, + { + "internalType": "uint8[]", + "name": "allowedCollaterals", + "type": "uint8[]" + }, + { + "components": [ + { "internalType": "uint8", "name": "x", "type": "uint8" }, + { "internalType": "uint8", "name": "y", "type": "uint8" }, + { "internalType": "uint8", "name": "width", "type": "uint8" }, + { "internalType": "uint8", "name": "height", "type": "uint8" } + ], + "internalType": "struct Dimensions", + "name": "dimensions", + "type": "tuple" + }, + { "internalType": "uint256", "name": "ghstPrice", "type": "uint256" }, + { + "internalType": "uint256", + "name": "maxQuantity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalQuantity", + "type": "uint256" + }, + { "internalType": "uint32", "name": "svgId", "type": "uint32" }, + { + "internalType": "uint8", + "name": "rarityScoreModifier", + "type": "uint8" + }, + { + "internalType": "bool", + "name": "canPurchaseWithGhst", + "type": "bool" + }, + { "internalType": "uint16", "name": "minLevel", "type": "uint16" }, + { + "internalType": "bool", + "name": "canBeTransferred", + "type": "bool" + }, + { "internalType": "uint8", "name": "category", "type": "uint8" }, + { "internalType": "int16", "name": "kinshipBonus", "type": "int16" }, + { + "internalType": "uint32", + "name": "experienceBonus", + "type": "uint32" + } + ], + "indexed": false, + "internalType": "struct ItemType", + "name": "_itemType", + "type": "tuple" + } + ], + "name": "AddItemType", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "components": [ + { "internalType": "string", "name": "name", "type": "string" }, + { + "internalType": "uint8[]", + "name": "allowedCollaterals", + "type": "uint8[]" + }, + { + "internalType": "uint16[]", + "name": "wearableIds", + "type": "uint16[]" + }, + { + "internalType": "int8[5]", + "name": "traitsBonuses", + "type": "int8[5]" + } + ], + "indexed": false, + "internalType": "struct WearableSet", + "name": "_wearableSet", + "type": "tuple" + } + ], + "name": "AddWearableSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "_hauntId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_hauntMaxSize", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_portalPrice", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "_bodyColor", + "type": "bytes32" + } + ], + "name": "CreateHaunt", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousDao", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newDao", + "type": "address" + } + ], + "name": "DaoTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousDaoTreasury", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newDaoTreasury", + "type": "address" + } + ], + "name": "DaoTreasuryTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousForge", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newForge", + "type": "address" + } + ], + "name": "ForgeTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "gameManager_", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "limit_", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "refreshTime_", + "type": "uint256" + } + ], + "name": "GameManagerAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "gameManager_", + "type": "address" + } + ], + "name": "GameManagerRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256[]", + "name": "_tokenIds", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "_xpValues", + "type": "uint256[]" + } + ], + "name": "GrantExperience", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "newItemManager_", + "type": "address" + } + ], + "name": "ItemManagerAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "itemManager_", + "type": "address" + } + ], + "name": "ItemManagerRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "_wearableId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "int8[6]", + "name": "_traitModifiers", + "type": "int8[6]" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "_rarityScoreModifier", + "type": "uint8" + } + ], + "name": "ItemModifiersSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256[]", + "name": "_itemIds", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "_maxQuanities", + "type": "uint256[]" + } + ], + "name": "ItemTypeMaxQuantity", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256[]", + "name": "_tokenIds", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "_xpValues", + "type": "uint256[]" + } + ], + "name": "RemoveExperience", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "int16[6]", + "name": "_oldModifiers", + "type": "int16[6]" + }, + { + "indexed": false, + "internalType": "int16[6]", + "name": "_newModifiers", + "type": "int16[6]" + } + ], + "name": "UpdateCollateralModifiers", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "_itemId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_priceInWei", + "type": "uint256" + } + ], + "name": "UpdateItemPrice", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "_itemId", + "type": "uint256" + }, + { + "components": [ + { "internalType": "string", "name": "name", "type": "string" }, + { "internalType": "string", "name": "description", "type": "string" }, + { "internalType": "string", "name": "author", "type": "string" }, + { + "internalType": "int8[6]", + "name": "traitModifiers", + "type": "int8[6]" + }, + { + "internalType": "bool[16]", + "name": "slotPositions", + "type": "bool[16]" + }, + { + "internalType": "uint8[]", + "name": "allowedCollaterals", + "type": "uint8[]" + }, + { + "components": [ + { "internalType": "uint8", "name": "x", "type": "uint8" }, + { "internalType": "uint8", "name": "y", "type": "uint8" }, + { "internalType": "uint8", "name": "width", "type": "uint8" }, + { "internalType": "uint8", "name": "height", "type": "uint8" } + ], + "internalType": "struct Dimensions", + "name": "dimensions", + "type": "tuple" + }, + { "internalType": "uint256", "name": "ghstPrice", "type": "uint256" }, + { + "internalType": "uint256", + "name": "maxQuantity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalQuantity", + "type": "uint256" + }, + { "internalType": "uint32", "name": "svgId", "type": "uint32" }, + { + "internalType": "uint8", + "name": "rarityScoreModifier", + "type": "uint8" + }, + { + "internalType": "bool", + "name": "canPurchaseWithGhst", + "type": "bool" + }, + { "internalType": "uint16", "name": "minLevel", "type": "uint16" }, + { + "internalType": "bool", + "name": "canBeTransferred", + "type": "bool" + }, + { "internalType": "uint8", "name": "category", "type": "uint8" }, + { "internalType": "int16", "name": "kinshipBonus", "type": "int16" }, + { + "internalType": "uint32", + "name": "experienceBonus", + "type": "uint32" + } + ], + "indexed": false, + "internalType": "struct ItemType", + "name": "_itemType", + "type": "tuple" + } + ], + "name": "UpdateItemType", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "_setId", + "type": "uint256" + }, + { + "components": [ + { "internalType": "string", "name": "name", "type": "string" }, + { + "internalType": "uint8[]", + "name": "allowedCollaterals", + "type": "uint8[]" + }, + { + "internalType": "uint16[]", + "name": "wearableIds", + "type": "uint16[]" + }, + { + "internalType": "int8[5]", + "name": "traitsBonuses", + "type": "int8[5]" + } + ], + "indexed": false, + "internalType": "struct WearableSet", + "name": "_wearableSet", + "type": "tuple" + } + ], + "name": "UpdateWearableSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "_wearableId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bool[16]", + "name": "_slotPositions", + "type": "bool[16]" + } + ], + "name": "WearableSlotPositionsSet", + "type": "event" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_hauntId", "type": "uint256" }, + { + "components": [ + { + "internalType": "address", + "name": "collateralType", + "type": "address" + }, + { + "components": [ + { + "internalType": "int16[6]", + "name": "modifiers", + "type": "int16[6]" + }, + { + "internalType": "bytes3", + "name": "primaryColor", + "type": "bytes3" + }, + { + "internalType": "bytes3", + "name": "secondaryColor", + "type": "bytes3" + }, + { + "internalType": "bytes3", + "name": "cheekColor", + "type": "bytes3" + }, + { "internalType": "uint8", "name": "svgId", "type": "uint8" }, + { + "internalType": "uint8", + "name": "eyeShapeSvgId", + "type": "uint8" + }, + { + "internalType": "uint16", + "name": "conversionRate", + "type": "uint16" + }, + { "internalType": "bool", "name": "delisted", "type": "bool" } + ], + "internalType": "struct AavegotchiCollateralTypeInfo", + "name": "collateralTypeInfo", + "type": "tuple" + } + ], + "internalType": "struct AavegotchiCollateralTypeIO[]", + "name": "_collateralTypes", + "type": "tuple[]" + } + ], + "name": "addCollateralTypes", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "_newGameManagers", + "type": "address[]" + }, + { "internalType": "uint256[]", "name": "_limits", "type": "uint256[]" } + ], + "name": "addGameManagers", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "_newItemManagers", + "type": "address[]" + } + ], + "name": "addItemManagers", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { "internalType": "string", "name": "name", "type": "string" }, + { "internalType": "string", "name": "description", "type": "string" }, + { "internalType": "string", "name": "author", "type": "string" }, + { + "internalType": "int8[6]", + "name": "traitModifiers", + "type": "int8[6]" + }, + { + "internalType": "bool[16]", + "name": "slotPositions", + "type": "bool[16]" + }, + { + "internalType": "uint8[]", + "name": "allowedCollaterals", + "type": "uint8[]" + }, + { + "components": [ + { "internalType": "uint8", "name": "x", "type": "uint8" }, + { "internalType": "uint8", "name": "y", "type": "uint8" }, + { "internalType": "uint8", "name": "width", "type": "uint8" }, + { "internalType": "uint8", "name": "height", "type": "uint8" } + ], + "internalType": "struct Dimensions", + "name": "dimensions", + "type": "tuple" + }, + { "internalType": "uint256", "name": "ghstPrice", "type": "uint256" }, + { + "internalType": "uint256", + "name": "maxQuantity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalQuantity", + "type": "uint256" + }, + { "internalType": "uint32", "name": "svgId", "type": "uint32" }, + { + "internalType": "uint8", + "name": "rarityScoreModifier", + "type": "uint8" + }, + { + "internalType": "bool", + "name": "canPurchaseWithGhst", + "type": "bool" + }, + { "internalType": "uint16", "name": "minLevel", "type": "uint16" }, + { + "internalType": "bool", + "name": "canBeTransferred", + "type": "bool" + }, + { "internalType": "uint8", "name": "category", "type": "uint8" }, + { "internalType": "int16", "name": "kinshipBonus", "type": "int16" }, + { + "internalType": "uint32", + "name": "experienceBonus", + "type": "uint32" + } + ], + "internalType": "struct ItemType[]", + "name": "_itemTypes", + "type": "tuple[]" + } + ], + "name": "addItemTypes", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { "internalType": "string", "name": "name", "type": "string" }, + { "internalType": "string", "name": "description", "type": "string" }, + { "internalType": "string", "name": "author", "type": "string" }, + { + "internalType": "int8[6]", + "name": "traitModifiers", + "type": "int8[6]" + }, + { + "internalType": "bool[16]", + "name": "slotPositions", + "type": "bool[16]" + }, + { + "internalType": "uint8[]", + "name": "allowedCollaterals", + "type": "uint8[]" + }, + { + "components": [ + { "internalType": "uint8", "name": "x", "type": "uint8" }, + { "internalType": "uint8", "name": "y", "type": "uint8" }, + { "internalType": "uint8", "name": "width", "type": "uint8" }, + { "internalType": "uint8", "name": "height", "type": "uint8" } + ], + "internalType": "struct Dimensions", + "name": "dimensions", + "type": "tuple" + }, + { "internalType": "uint256", "name": "ghstPrice", "type": "uint256" }, + { + "internalType": "uint256", + "name": "maxQuantity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalQuantity", + "type": "uint256" + }, + { "internalType": "uint32", "name": "svgId", "type": "uint32" }, + { + "internalType": "uint8", + "name": "rarityScoreModifier", + "type": "uint8" + }, + { + "internalType": "bool", + "name": "canPurchaseWithGhst", + "type": "bool" + }, + { "internalType": "uint16", "name": "minLevel", "type": "uint16" }, + { + "internalType": "bool", + "name": "canBeTransferred", + "type": "bool" + }, + { "internalType": "uint8", "name": "category", "type": "uint8" }, + { "internalType": "int16", "name": "kinshipBonus", "type": "int16" }, + { + "internalType": "uint32", + "name": "experienceBonus", + "type": "uint32" + } + ], + "internalType": "struct ItemType[]", + "name": "_itemTypes", + "type": "tuple[]" + }, + { "internalType": "string", "name": "_svg", "type": "string" }, + { + "components": [ + { "internalType": "bytes32", "name": "svgType", "type": "bytes32" }, + { "internalType": "uint256[]", "name": "sizes", "type": "uint256[]" } + ], + "internalType": "struct LibSvg.SvgTypeAndSizes[]", + "name": "_typesAndSizes", + "type": "tuple[]" + } + ], + "name": "addItemTypesAndSvgs", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { "internalType": "string", "name": "name", "type": "string" }, + { + "internalType": "uint8[]", + "name": "allowedCollaterals", + "type": "uint8[]" + }, + { + "internalType": "uint16[]", + "name": "wearableIds", + "type": "uint16[]" + }, + { + "internalType": "int8[5]", + "name": "traitsBonuses", + "type": "int8[5]" + } + ], + "internalType": "struct WearableSet[]", + "name": "_wearableSets", + "type": "tuple[]" + } + ], + "name": "addWearableSets", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256[]", "name": "_itemIds", "type": "uint256[]" }, + { "internalType": "uint256[]", "name": "_newPrices", "type": "uint256[]" } + ], + "name": "batchUpdateItemsPrice", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint24", "name": "_hauntMaxSize", "type": "uint24" }, + { "internalType": "uint96", "name": "_portalPrice", "type": "uint96" }, + { "internalType": "bytes3", "name": "_bodyColor", "type": "bytes3" } + ], + "name": "createHaunt", + "outputs": [ + { "internalType": "uint256", "name": "hauntId_", "type": "uint256" } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint24", + "name": "_hauntMaxSize", + "type": "uint24" + }, + { + "internalType": "uint96", + "name": "_portalPrice", + "type": "uint96" + }, + { "internalType": "bytes3", "name": "_bodyColor", "type": "bytes3" }, + { + "components": [ + { + "internalType": "address", + "name": "collateralType", + "type": "address" + }, + { + "components": [ + { + "internalType": "int16[6]", + "name": "modifiers", + "type": "int16[6]" + }, + { + "internalType": "bytes3", + "name": "primaryColor", + "type": "bytes3" + }, + { + "internalType": "bytes3", + "name": "secondaryColor", + "type": "bytes3" + }, + { + "internalType": "bytes3", + "name": "cheekColor", + "type": "bytes3" + }, + { "internalType": "uint8", "name": "svgId", "type": "uint8" }, + { + "internalType": "uint8", + "name": "eyeShapeSvgId", + "type": "uint8" + }, + { + "internalType": "uint16", + "name": "conversionRate", + "type": "uint16" + }, + { "internalType": "bool", "name": "delisted", "type": "bool" } + ], + "internalType": "struct AavegotchiCollateralTypeInfo", + "name": "collateralTypeInfo", + "type": "tuple" + } + ], + "internalType": "struct AavegotchiCollateralTypeIO[]", + "name": "_collateralTypes", + "type": "tuple[]" + }, + { + "internalType": "string", + "name": "_collateralSvg", + "type": "string" + }, + { + "components": [ + { + "internalType": "bytes32", + "name": "svgType", + "type": "bytes32" + }, + { + "internalType": "uint256[]", + "name": "sizes", + "type": "uint256[]" + } + ], + "internalType": "struct LibSvg.SvgTypeAndSizes[]", + "name": "_collateralTypesAndSizes", + "type": "tuple[]" + }, + { + "internalType": "string", + "name": "_eyeShapeSvg", + "type": "string" + }, + { + "components": [ + { + "internalType": "bytes32", + "name": "svgType", + "type": "bytes32" + }, + { + "internalType": "uint256[]", + "name": "sizes", + "type": "uint256[]" + } + ], + "internalType": "struct LibSvg.SvgTypeAndSizes[]", + "name": "_eyeShapeTypesAndSizes", + "type": "tuple[]" + } + ], + "internalType": "struct DAOFacet.CreateHauntPayload", + "name": "_payload", + "type": "tuple" + } + ], + "name": "createHauntWithPayload", + "outputs": [ + { "internalType": "uint256", "name": "hauntId_", "type": "uint256" } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_manager", "type": "address" } + ], + "name": "gameManagerBalance", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_manager", "type": "address" } + ], + "name": "gameManagerRefreshTime", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256[]", "name": "_tokenIds", "type": "uint256[]" }, + { "internalType": "uint256[]", "name": "_xpValues", "type": "uint256[]" } + ], + "name": "grantExperience", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_manager", "type": "address" } + ], + "name": "isGameManager", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_to", "type": "address" }, + { "internalType": "uint256[]", "name": "_itemIds", "type": "uint256[]" }, + { + "internalType": "uint256[]", + "name": "_quantities", + "type": "uint256[]" + } + ], + "name": "mintItems", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256[]", "name": "_tokenIds", "type": "uint256[]" }, + { "internalType": "uint256[]", "name": "_xpValues", "type": "uint256[]" } + ], + "name": "removeExperience", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "_gameManagers", + "type": "address[]" + } + ], + "name": "removeGameManagers", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "_itemManagers", + "type": "address[]" + } + ], + "name": "removeItemManagers", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_newDao", "type": "address" }, + { + "internalType": "address", + "name": "_newDaoTreasury", + "type": "address" + } + ], + "name": "setDao", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_newForge", "type": "address" } + ], + "name": "setForge", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_wearableId", "type": "uint256" }, + { + "internalType": "int8[6]", + "name": "_traitModifiers", + "type": "int8[6]" + }, + { + "internalType": "uint8", + "name": "_rarityScoreModifier", + "type": "uint8" + } + ], + "name": "setItemTraitModifiersAndRarityModifier", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_wearableId", "type": "uint256" }, + { + "internalType": "bool[16]", + "name": "_slotPositions", + "type": "bool[16]" + } + ], + "name": "setWearableSlotPositions", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_collateralType", + "type": "address" + }, + { "internalType": "int16[6]", "name": "_modifiers", "type": "int16[6]" } + ], + "name": "updateCollateralModifiers", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256[]", "name": "_itemIds", "type": "uint256[]" }, + { + "internalType": "uint256[]", + "name": "_maxQuantities", + "type": "uint256[]" + } + ], + "name": "updateItemTypeMaxQuantity", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256[]", "name": "_indices", "type": "uint256[]" }, + { + "components": [ + { "internalType": "string", "name": "name", "type": "string" }, + { "internalType": "string", "name": "description", "type": "string" }, + { "internalType": "string", "name": "author", "type": "string" }, + { + "internalType": "int8[6]", + "name": "traitModifiers", + "type": "int8[6]" + }, + { + "internalType": "bool[16]", + "name": "slotPositions", + "type": "bool[16]" + }, + { + "internalType": "uint8[]", + "name": "allowedCollaterals", + "type": "uint8[]" + }, + { + "components": [ + { "internalType": "uint8", "name": "x", "type": "uint8" }, + { "internalType": "uint8", "name": "y", "type": "uint8" }, + { "internalType": "uint8", "name": "width", "type": "uint8" }, + { "internalType": "uint8", "name": "height", "type": "uint8" } + ], + "internalType": "struct Dimensions", + "name": "dimensions", + "type": "tuple" + }, + { "internalType": "uint256", "name": "ghstPrice", "type": "uint256" }, + { + "internalType": "uint256", + "name": "maxQuantity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalQuantity", + "type": "uint256" + }, + { "internalType": "uint32", "name": "svgId", "type": "uint32" }, + { + "internalType": "uint8", + "name": "rarityScoreModifier", + "type": "uint8" + }, + { + "internalType": "bool", + "name": "canPurchaseWithGhst", + "type": "bool" + }, + { "internalType": "uint16", "name": "minLevel", "type": "uint16" }, + { + "internalType": "bool", + "name": "canBeTransferred", + "type": "bool" + }, + { "internalType": "uint8", "name": "category", "type": "uint8" }, + { "internalType": "int16", "name": "kinshipBonus", "type": "int16" }, + { + "internalType": "uint32", + "name": "experienceBonus", + "type": "uint32" + } + ], + "internalType": "struct ItemType[]", + "name": "_itemTypes", + "type": "tuple[]" + } + ], + "name": "updateItemTypes", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256[]", "name": "_setIds", "type": "uint256[]" }, + { + "components": [ + { "internalType": "string", "name": "name", "type": "string" }, + { + "internalType": "uint8[]", + "name": "allowedCollaterals", + "type": "uint8[]" + }, + { + "internalType": "uint16[]", + "name": "wearableIds", + "type": "uint16[]" + }, + { + "internalType": "int8[5]", + "name": "traitsBonuses", + "type": "int8[5]" + } + ], + "internalType": "struct WearableSet[]", + "name": "_wearableSets", + "type": "tuple[]" + } + ], + "name": "updateWearableSets", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "listingFeeInWei", + "type": "uint256" + } + ], + "name": "ChangedListingFee", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "listingId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "seller", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "buyer", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "erc1155TokenAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "erc1155TypeId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "category", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_quantity", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "priceInWei", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "time", + "type": "uint256" + } + ], + "name": "ERC1155ExecutedListing", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "listingId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "buyer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "recipient", + "type": "address" + } + ], + "name": "ERC1155ExecutedToRecipient", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "listingId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "seller", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "erc1155TokenAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "erc1155TypeId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "category", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "quantity", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "priceInWei", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "time", + "type": "uint256" + } + ], + "name": "ERC1155ListingAdd", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "listingId", + "type": "uint256" + } + ], + "name": "ERC1155ListingCancelled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "listingId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint16[2]", + "name": "principalSplit", + "type": "uint16[2]" + }, + { + "indexed": false, + "internalType": "address", + "name": "affiliate", + "type": "address" + } + ], + "name": "ERC1155ListingSplit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "listingId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint32", + "name": "whitelistId", + "type": "uint32" + } + ], + "name": "ERC1155ListingWhitelistSet", + "type": "event" + }, + { + "inputs": [ + { + "components": [ + { "internalType": "uint256", "name": "listingId", "type": "uint256" }, + { + "internalType": "address", + "name": "contractAddress", + "type": "address" + }, + { "internalType": "uint256", "name": "itemId", "type": "uint256" }, + { "internalType": "uint256", "name": "quantity", "type": "uint256" }, + { + "internalType": "uint256", + "name": "priceInWei", + "type": "uint256" + }, + { "internalType": "address", "name": "recipient", "type": "address" } + ], + "internalType": "struct ERC1155MarketplaceFacet.ExecuteERC1155ListingParams[]", + "name": "listings", + "type": "tuple[]" + } + ], + "name": "batchExecuteERC1155Listing", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "_listingIds", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "_quantities", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "_priceInWeis", + "type": "uint256[]" + } + ], + "name": "batchUpdateERC1155ListingPriceAndQuantity", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_listingId", "type": "uint256" } + ], + "name": "cancelERC1155Listing", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "_listingIds", + "type": "uint256[]" + } + ], + "name": "cancelERC1155Listings", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_listingId", "type": "uint256" }, + { "internalType": "uint256", "name": "_quantity", "type": "uint256" }, + { "internalType": "uint256", "name": "_priceInWei", "type": "uint256" } + ], + "name": "executeERC1155Listing", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_listingId", "type": "uint256" }, + { + "internalType": "address", + "name": "_contractAddress", + "type": "address" + }, + { "internalType": "uint256", "name": "_itemId", "type": "uint256" }, + { "internalType": "uint256", "name": "_quantity", "type": "uint256" }, + { "internalType": "uint256", "name": "_priceInWei", "type": "uint256" }, + { "internalType": "address", "name": "_recipient", "type": "address" } + ], + "name": "executeERC1155ListingToRecipient", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_erc1155TokenAddress", + "type": "address" + }, + { "internalType": "uint256", "name": "_erc1155TypeId", "type": "uint256" } + ], + "name": "getERC1155Category", + "outputs": [ + { "internalType": "uint256", "name": "category_", "type": "uint256" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "erc1155TokenAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "erc1155TypeId", + "type": "uint256" + }, + { "internalType": "uint256", "name": "category", "type": "uint256" } + ], + "internalType": "struct ERC1155MarketplaceFacet.Category[]", + "name": "_categories", + "type": "tuple[]" + } + ], + "name": "setERC1155Categories", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_erc1155TokenAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_erc1155TypeId", + "type": "uint256" + }, + { "internalType": "uint256", "name": "_quantity", "type": "uint256" }, + { "internalType": "uint256", "name": "_priceInWei", "type": "uint256" } + ], + "name": "setERC1155Listing", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_erc1155TokenAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_erc1155TypeId", + "type": "uint256" + }, + { "internalType": "uint256", "name": "_quantity", "type": "uint256" }, + { "internalType": "uint256", "name": "_priceInWei", "type": "uint256" }, + { + "internalType": "uint16[2]", + "name": "_principalSplit", + "type": "uint16[2]" + }, + { "internalType": "address", "name": "_affiliate", "type": "address" } + ], + "name": "setERC1155ListingWithSplit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_erc1155TokenAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_erc1155TypeId", + "type": "uint256" + }, + { "internalType": "uint256", "name": "_quantity", "type": "uint256" }, + { "internalType": "uint256", "name": "_priceInWei", "type": "uint256" }, + { + "internalType": "uint16[2]", + "name": "_principalSplit", + "type": "uint16[2]" + }, + { "internalType": "address", "name": "_affiliate", "type": "address" }, + { "internalType": "uint32", "name": "_whitelistId", "type": "uint32" } + ], + "name": "setERC1155ListingWithWhitelist", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_listingFeeInWei", + "type": "uint256" + } + ], + "name": "setListingFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_erc1155TokenAddress", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "_erc1155TypeIds", + "type": "uint256[]" + }, + { "internalType": "address", "name": "_owner", "type": "address" } + ], + "name": "updateBatchERC1155Listing", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_erc1155TokenAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_erc1155TypeId", + "type": "uint256" + }, + { "internalType": "address", "name": "_owner", "type": "address" } + ], + "name": "updateERC1155Listing", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_listingId", "type": "uint256" }, + { "internalType": "uint256", "name": "_quantity", "type": "uint256" }, + { "internalType": "uint256", "name": "_priceInWei", "type": "uint256" } + ], + "name": "updateERC1155ListingPriceAndQuantity", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "listingId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "seller", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "buyer", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "erc721TokenAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "erc721TokenId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "category", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "priceInWei", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "time", + "type": "uint256" + } + ], + "name": "ERC721ExecutedListing", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "listingId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "buyer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "recipient", + "type": "address" + } + ], + "name": "ERC721ExecutedToRecipient", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "listingId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "seller", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "erc721TokenAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "erc721TokenId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "category", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "time", + "type": "uint256" + } + ], + "name": "ERC721ListingAdd", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "listingId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint16[2]", + "name": "principalSplit", + "type": "uint16[2]" + }, + { + "indexed": false, + "internalType": "address", + "name": "affiliate", + "type": "address" + } + ], + "name": "ERC721ListingSplit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "listingId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint32", + "name": "whitelistId", + "type": "uint32" + } + ], + "name": "ERC721ListingWhitelistSet", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_erc721TokenAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_erc721TokenId", + "type": "uint256" + }, + { "internalType": "uint256", "name": "_priceInWei", "type": "uint256" } + ], + "name": "addERC721Listing", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_erc721TokenAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_erc721TokenId", + "type": "uint256" + }, + { "internalType": "uint256", "name": "_priceInWei", "type": "uint256" }, + { + "internalType": "uint16[2]", + "name": "_principalSplit", + "type": "uint16[2]" + }, + { "internalType": "address", "name": "_affiliate", "type": "address" } + ], + "name": "addERC721ListingWithSplit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_erc721TokenAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_erc721TokenId", + "type": "uint256" + }, + { "internalType": "uint256", "name": "_priceInWei", "type": "uint256" }, + { + "internalType": "uint16[2]", + "name": "_principalSplit", + "type": "uint16[2]" + }, + { "internalType": "address", "name": "_affiliate", "type": "address" }, + { "internalType": "uint32", "name": "_whitelistId", "type": "uint32" } + ], + "name": "addERC721ListingWithWhitelist", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { "internalType": "uint256", "name": "listingId", "type": "uint256" }, + { + "internalType": "address", + "name": "contractAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "priceInWei", + "type": "uint256" + }, + { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, + { "internalType": "address", "name": "recipient", "type": "address" } + ], + "internalType": "struct ERC721MarketplaceFacet.ExecuteERC721ListingParams[]", + "name": "listings", + "type": "tuple[]" + } + ], + "name": "batchExecuteERC721Listing", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "_listingIds", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "_priceInWeis", + "type": "uint256[]" + } + ], + "name": "batchUpdateERC721ListingPrice", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_listingId", "type": "uint256" } + ], + "name": "cancelERC721Listing", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_erc721TokenAddress", + "type": "address" + }, + { "internalType": "uint256", "name": "_erc721TokenId", "type": "uint256" } + ], + "name": "cancelERC721ListingByToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "_listingIds", + "type": "uint256[]" + } + ], + "name": "cancelERC721Listings", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_listingId", "type": "uint256" }, + { + "internalType": "address", + "name": "_contractAddress", + "type": "address" + }, + { "internalType": "uint256", "name": "_priceInWei", "type": "uint256" }, + { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, + { "internalType": "address", "name": "_recipient", "type": "address" } + ], + "name": "executeERC721ListingToRecipient", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_erc721TokenAddress", + "type": "address" + }, + { "internalType": "uint256", "name": "_erc721TokenId", "type": "uint256" } + ], + "name": "getERC721Category", + "outputs": [ + { "internalType": "uint256", "name": "category_", "type": "uint256" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "erc721TokenAddress", + "type": "address" + }, + { "internalType": "uint256", "name": "category", "type": "uint256" } + ], + "internalType": "struct ERC721MarketplaceFacet.Category[]", + "name": "_categories", + "type": "tuple[]" + } + ], + "name": "setERC721Categories", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_erc721TokenAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_erc721TokenId", + "type": "uint256" + }, + { "internalType": "address", "name": "_owner", "type": "address" } + ], + "name": "updateERC721Listing", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_listingId", "type": "uint256" }, + { "internalType": "uint256", "name": "_priceInWei", "type": "uint256" } + ], + "name": "updateERC721ListingPrice", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "_erc20Contract", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_depositAmount", + "type": "uint256" + } + ], + "name": "Erc20Deposited", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "_erc20Contract", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_transferAmount", + "type": "uint256" + } + ], + "name": "TransferEscrow", + "type": "event" + }, + { + "inputs": [ + { "internalType": "uint256[]", "name": "_tokenIds", "type": "uint256[]" }, + { + "internalType": "address[]", + "name": "_erc20Contracts", + "type": "address[]" + }, + { "internalType": "uint256[]", "name": "_values", "type": "uint256[]" } + ], + "name": "batchDepositERC20", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256[]", "name": "_tokenIds", "type": "uint256[]" }, + { "internalType": "uint256[]", "name": "_values", "type": "uint256[]" } + ], + "name": "batchDepositGHST", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, + { + "internalType": "address", + "name": "_erc20Contract", + "type": "address" + }, + { "internalType": "uint256", "name": "_value", "type": "uint256" } + ], + "name": "depositERC20", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, + { "internalType": "address", "name": "_erc20Contract", "type": "address" } + ], + "name": "escrowBalance", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } + ], + "name": "gotchiEscrow", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, + { + "internalType": "address", + "name": "_erc20Contract", + "type": "address" + }, + { "internalType": "address", "name": "_recipient", "type": "address" }, + { + "internalType": "uint256", + "name": "_transferAmount", + "type": "uint256" + } + ], + "name": "transferEscrow", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint32", "name": "_erc721TokenId", "type": "uint32" }, + { "internalType": "uint96", "name": "_initialCost", "type": "uint96" }, + { "internalType": "uint32", "name": "_period", "type": "uint32" }, + { + "internalType": "uint8[3]", + "name": "_revenueSplit", + "type": "uint8[3]" + }, + { + "internalType": "address", + "name": "_originalOwner", + "type": "address" + }, + { "internalType": "address", "name": "_thirdParty", "type": "address" }, + { "internalType": "uint32", "name": "_whitelistId", "type": "uint32" }, + { + "internalType": "address[]", + "name": "_revenueTokens", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "_channellingStatus", + "type": "uint256" + } + ], + "name": "addGotchiLending", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { "internalType": "uint32", "name": "tokenId", "type": "uint32" }, + { "internalType": "uint96", "name": "initialCost", "type": "uint96" }, + { "internalType": "uint32", "name": "period", "type": "uint32" }, + { + "internalType": "uint8[3]", + "name": "revenueSplit", + "type": "uint8[3]" + }, + { + "internalType": "address", + "name": "originalOwner", + "type": "address" + }, + { + "internalType": "address", + "name": "thirdParty", + "type": "address" + }, + { "internalType": "uint32", "name": "whitelistId", "type": "uint32" }, + { + "internalType": "address[]", + "name": "revenueTokens", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "channellingStatus", + "type": "uint256" + } + ], + "internalType": "struct GotchiLendingFacet.AddGotchiListing", + "name": "p", + "type": "tuple" + } + ], + "name": "addGotchiListing", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint32", "name": "_listingId", "type": "uint32" }, + { "internalType": "uint32", "name": "_erc721TokenId", "type": "uint32" }, + { "internalType": "uint96", "name": "_initialCost", "type": "uint96" }, + { "internalType": "uint32", "name": "_period", "type": "uint32" }, + { + "internalType": "uint8[3]", + "name": "_revenueSplit", + "type": "uint8[3]" + } + ], + "name": "agreeGotchiLending", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { "internalType": "uint32", "name": "tokenId", "type": "uint32" }, + { "internalType": "uint96", "name": "initialCost", "type": "uint96" }, + { "internalType": "uint32", "name": "period", "type": "uint32" }, + { + "internalType": "uint8[3]", + "name": "revenueSplit", + "type": "uint8[3]" + }, + { + "internalType": "address", + "name": "originalOwner", + "type": "address" + }, + { + "internalType": "address", + "name": "thirdParty", + "type": "address" + }, + { "internalType": "uint32", "name": "whitelistId", "type": "uint32" }, + { + "internalType": "address[]", + "name": "revenueTokens", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "channellingStatus", + "type": "uint256" + } + ], + "internalType": "struct GotchiLendingFacet.AddGotchiListing[]", + "name": "listings", + "type": "tuple[]" + } + ], + "name": "batchAddGotchiListing", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint32[]", "name": "_listingIds", "type": "uint32[]" } + ], + "name": "batchCancelGotchiLending", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32[]", + "name": "_erc721TokenIds", + "type": "uint32[]" + } + ], + "name": "batchCancelGotchiLendingByToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint32[]", "name": "_tokenIds", "type": "uint32[]" } + ], + "name": "batchClaimAndEndAndRelistGotchiLending", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint32[]", "name": "_tokenIds", "type": "uint32[]" } + ], + "name": "batchClaimAndEndGotchiLending", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint32[]", "name": "_tokenIds", "type": "uint32[]" } + ], + "name": "batchClaimGotchiLending", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { "internalType": "uint32", "name": "tokenId", "type": "uint32" }, + { "internalType": "uint32", "name": "extension", "type": "uint32" } + ], + "internalType": "struct GotchiLendingFacet.BatchRenew[]", + "name": "_batchRenewParams", + "type": "tuple[]" + } + ], + "name": "batchExtendGotchiLending", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint32", "name": "_listingId", "type": "uint32" } + ], + "name": "cancelGotchiLending", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint32", "name": "_erc721TokenId", "type": "uint32" } + ], + "name": "cancelGotchiLendingByToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint32", "name": "_tokenId", "type": "uint32" } + ], + "name": "claimAndEndAndRelistGotchiLending", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint32", "name": "_tokenId", "type": "uint32" } + ], + "name": "claimAndEndGotchiLending", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint32", "name": "_tokenId", "type": "uint32" } + ], + "name": "claimGotchiLending", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint32", "name": "_tokenId", "type": "uint32" }, + { "internalType": "uint32", "name": "extension", "type": "uint32" } + ], + "name": "extendGotchiLending", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint16[16]", + "name": "_oldWearables", + "type": "uint16[16]" + }, + { + "indexed": false, + "internalType": "uint16[16]", + "name": "_newWearables", + "type": "uint16[16]" + } + ], + "name": "EquipWearables", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_toContract", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "_toTokenId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "_tokenTypeId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_value", + "type": "uint256" + } + ], + "name": "TransferToParent", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "_itemIds", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "_quantities", + "type": "uint256[]" + } + ], + "name": "UseConsumables", + "type": "event" + }, + { + "inputs": [ + { "internalType": "address", "name": "_owner", "type": "address" }, + { "internalType": "uint256", "name": "_id", "type": "uint256" } + ], + "name": "balanceOf", + "outputs": [ + { "internalType": "uint256", "name": "bal_", "type": "uint256" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address[]", "name": "_owners", "type": "address[]" }, + { "internalType": "uint256[]", "name": "_ids", "type": "uint256[]" } + ], + "name": "balanceOfBatch", + "outputs": [ + { "internalType": "uint256[]", "name": "bals", "type": "uint256[]" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_tokenContract", + "type": "address" + }, + { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, + { "internalType": "uint256", "name": "_id", "type": "uint256" } + ], + "name": "balanceOfToken", + "outputs": [ + { "internalType": "uint256", "name": "value", "type": "uint256" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, + { + "internalType": "uint16[16]", + "name": "_wearablesToEquip", + "type": "uint16[16]" + } + ], + "name": "equipWearables", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } + ], + "name": "equippedWearables", + "outputs": [ + { + "internalType": "uint16[16]", + "name": "wearableIds_", + "type": "uint16[16]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_itemId", "type": "uint256" } + ], + "name": "getItemType", + "outputs": [ + { + "components": [ + { "internalType": "string", "name": "name", "type": "string" }, + { "internalType": "string", "name": "description", "type": "string" }, + { "internalType": "string", "name": "author", "type": "string" }, + { + "internalType": "int8[6]", + "name": "traitModifiers", + "type": "int8[6]" + }, + { + "internalType": "bool[16]", + "name": "slotPositions", + "type": "bool[16]" + }, + { + "internalType": "uint8[]", + "name": "allowedCollaterals", + "type": "uint8[]" + }, + { + "components": [ + { "internalType": "uint8", "name": "x", "type": "uint8" }, + { "internalType": "uint8", "name": "y", "type": "uint8" }, + { "internalType": "uint8", "name": "width", "type": "uint8" }, + { "internalType": "uint8", "name": "height", "type": "uint8" } + ], + "internalType": "struct Dimensions", + "name": "dimensions", + "type": "tuple" + }, + { "internalType": "uint256", "name": "ghstPrice", "type": "uint256" }, + { + "internalType": "uint256", + "name": "maxQuantity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalQuantity", + "type": "uint256" + }, + { "internalType": "uint32", "name": "svgId", "type": "uint32" }, + { + "internalType": "uint8", + "name": "rarityScoreModifier", + "type": "uint8" + }, + { + "internalType": "bool", + "name": "canPurchaseWithGhst", + "type": "bool" + }, + { "internalType": "uint16", "name": "minLevel", "type": "uint16" }, + { + "internalType": "bool", + "name": "canBeTransferred", + "type": "bool" + }, + { "internalType": "uint8", "name": "category", "type": "uint8" }, + { "internalType": "int16", "name": "kinshipBonus", "type": "int16" }, + { + "internalType": "uint32", + "name": "experienceBonus", + "type": "uint32" + } + ], + "internalType": "struct ItemType", + "name": "itemType_", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256[]", "name": "_itemIds", "type": "uint256[]" } + ], + "name": "getItemTypes", + "outputs": [ + { + "components": [ + { "internalType": "string", "name": "name", "type": "string" }, + { "internalType": "string", "name": "description", "type": "string" }, + { "internalType": "string", "name": "author", "type": "string" }, + { + "internalType": "int8[6]", + "name": "traitModifiers", + "type": "int8[6]" + }, + { + "internalType": "bool[16]", + "name": "slotPositions", + "type": "bool[16]" + }, + { + "internalType": "uint8[]", + "name": "allowedCollaterals", + "type": "uint8[]" + }, + { + "components": [ + { "internalType": "uint8", "name": "x", "type": "uint8" }, + { "internalType": "uint8", "name": "y", "type": "uint8" }, + { "internalType": "uint8", "name": "width", "type": "uint8" }, + { "internalType": "uint8", "name": "height", "type": "uint8" } + ], + "internalType": "struct Dimensions", + "name": "dimensions", + "type": "tuple" + }, + { "internalType": "uint256", "name": "ghstPrice", "type": "uint256" }, + { + "internalType": "uint256", + "name": "maxQuantity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalQuantity", + "type": "uint256" + }, + { "internalType": "uint32", "name": "svgId", "type": "uint32" }, + { + "internalType": "uint8", + "name": "rarityScoreModifier", + "type": "uint8" + }, + { + "internalType": "bool", + "name": "canPurchaseWithGhst", + "type": "bool" + }, + { "internalType": "uint16", "name": "minLevel", "type": "uint16" }, + { + "internalType": "bool", + "name": "canBeTransferred", + "type": "bool" + }, + { "internalType": "uint8", "name": "category", "type": "uint8" }, + { "internalType": "int16", "name": "kinshipBonus", "type": "int16" }, + { + "internalType": "uint32", + "name": "experienceBonus", + "type": "uint32" + } + ], + "internalType": "struct ItemType[]", + "name": "itemTypes_", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_account", "type": "address" } + ], + "name": "itemBalances", + "outputs": [ + { + "components": [ + { "internalType": "uint256", "name": "itemId", "type": "uint256" }, + { "internalType": "uint256", "name": "balance", "type": "uint256" } + ], + "internalType": "struct ItemsFacet.ItemIdIO[]", + "name": "bals_", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_tokenContract", + "type": "address" + }, + { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } + ], + "name": "itemBalancesOfToken", + "outputs": [ + { + "components": [ + { "internalType": "uint256", "name": "itemId", "type": "uint256" }, + { "internalType": "uint256", "name": "balance", "type": "uint256" } + ], + "internalType": "struct ItemsFacet.ItemIdIO[]", + "name": "bals_", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_tokenContract", + "type": "address" + }, + { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } + ], + "name": "itemBalancesOfTokenWithTypes", + "outputs": [ + { + "components": [ + { "internalType": "uint256", "name": "balance", "type": "uint256" }, + { "internalType": "uint256", "name": "itemId", "type": "uint256" }, + { + "components": [ + { "internalType": "string", "name": "name", "type": "string" }, + { + "internalType": "string", + "name": "description", + "type": "string" + }, + { "internalType": "string", "name": "author", "type": "string" }, + { + "internalType": "int8[6]", + "name": "traitModifiers", + "type": "int8[6]" + }, + { + "internalType": "bool[16]", + "name": "slotPositions", + "type": "bool[16]" + }, + { + "internalType": "uint8[]", + "name": "allowedCollaterals", + "type": "uint8[]" + }, + { + "components": [ + { "internalType": "uint8", "name": "x", "type": "uint8" }, + { "internalType": "uint8", "name": "y", "type": "uint8" }, + { "internalType": "uint8", "name": "width", "type": "uint8" }, + { "internalType": "uint8", "name": "height", "type": "uint8" } + ], + "internalType": "struct Dimensions", + "name": "dimensions", + "type": "tuple" + }, + { + "internalType": "uint256", + "name": "ghstPrice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxQuantity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalQuantity", + "type": "uint256" + }, + { "internalType": "uint32", "name": "svgId", "type": "uint32" }, + { + "internalType": "uint8", + "name": "rarityScoreModifier", + "type": "uint8" + }, + { + "internalType": "bool", + "name": "canPurchaseWithGhst", + "type": "bool" + }, + { + "internalType": "uint16", + "name": "minLevel", + "type": "uint16" + }, + { + "internalType": "bool", + "name": "canBeTransferred", + "type": "bool" + }, + { "internalType": "uint8", "name": "category", "type": "uint8" }, + { + "internalType": "int16", + "name": "kinshipBonus", + "type": "int16" + }, + { + "internalType": "uint32", + "name": "experienceBonus", + "type": "uint32" + } + ], + "internalType": "struct ItemType", + "name": "itemType", + "type": "tuple" + } + ], + "internalType": "struct ItemTypeIO[]", + "name": "itemBalancesOfTokenWithTypes_", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_owner", "type": "address" } + ], + "name": "itemBalancesWithTypes", + "outputs": [ + { + "components": [ + { "internalType": "uint256", "name": "balance", "type": "uint256" }, + { "internalType": "uint256", "name": "itemId", "type": "uint256" }, + { + "components": [ + { "internalType": "string", "name": "name", "type": "string" }, + { + "internalType": "string", + "name": "description", + "type": "string" + }, + { "internalType": "string", "name": "author", "type": "string" }, + { + "internalType": "int8[6]", + "name": "traitModifiers", + "type": "int8[6]" + }, + { + "internalType": "bool[16]", + "name": "slotPositions", + "type": "bool[16]" + }, + { + "internalType": "uint8[]", + "name": "allowedCollaterals", + "type": "uint8[]" + }, + { + "components": [ + { "internalType": "uint8", "name": "x", "type": "uint8" }, + { "internalType": "uint8", "name": "y", "type": "uint8" }, + { "internalType": "uint8", "name": "width", "type": "uint8" }, + { "internalType": "uint8", "name": "height", "type": "uint8" } + ], + "internalType": "struct Dimensions", + "name": "dimensions", + "type": "tuple" + }, + { + "internalType": "uint256", + "name": "ghstPrice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxQuantity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalQuantity", + "type": "uint256" + }, + { "internalType": "uint32", "name": "svgId", "type": "uint32" }, + { + "internalType": "uint8", + "name": "rarityScoreModifier", + "type": "uint8" + }, + { + "internalType": "bool", + "name": "canPurchaseWithGhst", + "type": "bool" + }, + { + "internalType": "uint16", + "name": "minLevel", + "type": "uint16" + }, + { + "internalType": "bool", + "name": "canBeTransferred", + "type": "bool" + }, + { "internalType": "uint8", "name": "category", "type": "uint8" }, + { + "internalType": "int16", + "name": "kinshipBonus", + "type": "int16" + }, + { + "internalType": "uint32", + "name": "experienceBonus", + "type": "uint32" + } + ], + "internalType": "struct ItemType", + "name": "itemType", + "type": "tuple" + } + ], + "internalType": "struct ItemTypeIO[]", + "name": "output_", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "string", "name": "_value", "type": "string" } + ], + "name": "setBaseURI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "_id", "type": "uint256" }], + "name": "uri", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, + { "internalType": "uint256[]", "name": "_itemIds", "type": "uint256[]" }, + { + "internalType": "uint256[]", + "name": "_quantities", + "type": "uint256[]" + } + ], + "name": "useConsumables", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_from", "type": "address" }, + { "internalType": "address", "name": "_toContract", "type": "address" }, + { + "internalType": "uint256[]", + "name": "_toTokenIds", + "type": "uint256[]" + }, + { "internalType": "uint256[][]", "name": "_ids", "type": "uint256[][]" }, + { + "internalType": "uint256[][]", + "name": "_values", + "type": "uint256[][]" + } + ], + "name": "batchBatchTransferToParent", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_fromContract", "type": "address" }, + { "internalType": "uint256", "name": "_fromTokenId", "type": "uint256" }, + { "internalType": "address", "name": "_toContract", "type": "address" }, + { "internalType": "uint256", "name": "_toTokenId", "type": "uint256" }, + { "internalType": "uint256[]", "name": "_ids", "type": "uint256[]" }, + { "internalType": "uint256[]", "name": "_values", "type": "uint256[]" } + ], + "name": "batchTransferAsChild", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_fromContract", "type": "address" }, + { "internalType": "uint256", "name": "_fromTokenId", "type": "uint256" }, + { "internalType": "address", "name": "_to", "type": "address" }, + { "internalType": "uint256[]", "name": "_ids", "type": "uint256[]" }, + { "internalType": "uint256[]", "name": "_values", "type": "uint256[]" } + ], + "name": "batchTransferFromParent", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_from", "type": "address" }, + { "internalType": "address", "name": "_toContract", "type": "address" }, + { "internalType": "uint256", "name": "_toTokenId", "type": "uint256" }, + { "internalType": "uint256[]", "name": "_ids", "type": "uint256[]" }, + { "internalType": "uint256[]", "name": "_values", "type": "uint256[]" } + ], + "name": "batchTransferToParent", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_to", "type": "address" }, + { "internalType": "uint256[]", "name": "_itemIds", "type": "uint256[]" }, + { "internalType": "uint256[]", "name": "_values", "type": "uint256[]" } + ], + "name": "extractItemsFromDiamond", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_to", "type": "address" }, + { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, + { "internalType": "uint256[]", "name": "_itemIds", "type": "uint256[]" }, + { "internalType": "uint256[]", "name": "_values", "type": "uint256[]" } + ], + "name": "extractItemsFromSacrificedGotchi", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "", "type": "address" }, + { "internalType": "address", "name": "", "type": "address" }, + { "internalType": "uint256[]", "name": "", "type": "uint256[]" }, + { "internalType": "uint256[]", "name": "", "type": "uint256[]" }, + { "internalType": "bytes", "name": "", "type": "bytes" } + ], + "name": "onERC1155BatchReceived", + "outputs": [{ "internalType": "bytes4", "name": "", "type": "bytes4" }], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "", "type": "address" }, + { "internalType": "address", "name": "", "type": "address" }, + { "internalType": "uint256", "name": "", "type": "uint256" }, + { "internalType": "uint256", "name": "", "type": "uint256" }, + { "internalType": "bytes", "name": "", "type": "bytes" } + ], + "name": "onERC1155Received", + "outputs": [{ "internalType": "bytes4", "name": "", "type": "bytes4" }], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_from", "type": "address" }, + { "internalType": "address", "name": "_to", "type": "address" }, + { "internalType": "uint256[]", "name": "_ids", "type": "uint256[]" }, + { "internalType": "uint256[]", "name": "_values", "type": "uint256[]" }, + { "internalType": "bytes", "name": "_data", "type": "bytes" } + ], + "name": "safeBatchTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_from", "type": "address" }, + { "internalType": "address", "name": "_to", "type": "address" }, + { "internalType": "uint256", "name": "_id", "type": "uint256" }, + { "internalType": "uint256", "name": "_value", "type": "uint256" }, + { "internalType": "bytes", "name": "_data", "type": "bytes" } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_fromContract", "type": "address" }, + { "internalType": "uint256", "name": "_fromTokenId", "type": "uint256" }, + { "internalType": "address", "name": "_toContract", "type": "address" }, + { "internalType": "uint256", "name": "_toTokenId", "type": "uint256" }, + { "internalType": "uint256", "name": "_id", "type": "uint256" }, + { "internalType": "uint256", "name": "_value", "type": "uint256" } + ], + "name": "transferAsChild", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_fromContract", "type": "address" }, + { "internalType": "uint256", "name": "_fromTokenId", "type": "uint256" }, + { "internalType": "address", "name": "_to", "type": "address" }, + { "internalType": "uint256", "name": "_id", "type": "uint256" }, + { "internalType": "uint256", "name": "_value", "type": "uint256" } + ], + "name": "transferFromParent", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_from", "type": "address" }, + { "internalType": "address", "name": "_toContract", "type": "address" }, + { "internalType": "uint256", "name": "_toTokenId", "type": "uint256" }, + { "internalType": "uint256", "name": "_id", "type": "uint256" }, + { "internalType": "uint256", "name": "_value", "type": "uint256" } + ], + "name": "transferToParent", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "lender", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "lendingOperator", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint32", + "name": "tokenId", + "type": "uint32" + }, + { + "indexed": false, + "internalType": "bool", + "name": "isLendingOperator", + "type": "bool" + } + ], + "name": "LendingOperatorSet", + "type": "event" + }, + { + "inputs": [ + { "internalType": "address[]", "name": "tokens", "type": "address[]" } + ], + "name": "allowRevenueTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_lender", "type": "address" } + ], + "name": "balanceOfLentGotchis", + "outputs": [ + { "internalType": "uint256", "name": "balance_", "type": "uint256" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_lendingOperator", + "type": "address" + }, + { + "components": [ + { "internalType": "uint32", "name": "_tokenId", "type": "uint32" }, + { + "internalType": "bool", + "name": "_isLendingOperator", + "type": "bool" + } + ], + "internalType": "struct LendingGetterAndSetterFacet.LendingOperatorInputs[]", + "name": "_inputs", + "type": "tuple[]" + } + ], + "name": "batchSetLendingOperator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address[]", "name": "tokens", "type": "address[]" } + ], + "name": "disallowRevenueTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint32", "name": "_erc721TokenId", "type": "uint32" } + ], + "name": "getGotchiLendingFromToken", + "outputs": [ + { + "components": [ + { "internalType": "address", "name": "lender", "type": "address" }, + { "internalType": "uint96", "name": "initialCost", "type": "uint96" }, + { "internalType": "address", "name": "borrower", "type": "address" }, + { "internalType": "uint32", "name": "listingId", "type": "uint32" }, + { + "internalType": "uint32", + "name": "erc721TokenId", + "type": "uint32" + }, + { "internalType": "uint32", "name": "whitelistId", "type": "uint32" }, + { + "internalType": "address", + "name": "originalOwner", + "type": "address" + }, + { "internalType": "uint40", "name": "timeCreated", "type": "uint40" }, + { "internalType": "uint40", "name": "timeAgreed", "type": "uint40" }, + { "internalType": "bool", "name": "canceled", "type": "bool" }, + { "internalType": "bool", "name": "completed", "type": "bool" }, + { + "internalType": "address", + "name": "thirdParty", + "type": "address" + }, + { + "internalType": "uint8[3]", + "name": "revenueSplit", + "type": "uint8[3]" + }, + { "internalType": "uint40", "name": "lastClaimed", "type": "uint40" }, + { "internalType": "uint32", "name": "period", "type": "uint32" }, + { + "internalType": "address[]", + "name": "revenueTokens", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "channellingStatus", + "type": "uint256" + } + ], + "internalType": "struct GotchiLending", + "name": "listing_", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint32", "name": "_erc721TokenId", "type": "uint32" } + ], + "name": "getGotchiLendingIdByToken", + "outputs": [{ "internalType": "uint32", "name": "", "type": "uint32" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint32", "name": "_listingId", "type": "uint32" } + ], + "name": "getGotchiLendingListingInfo", + "outputs": [ + { + "components": [ + { "internalType": "address", "name": "lender", "type": "address" }, + { "internalType": "uint96", "name": "initialCost", "type": "uint96" }, + { "internalType": "address", "name": "borrower", "type": "address" }, + { "internalType": "uint32", "name": "listingId", "type": "uint32" }, + { + "internalType": "uint32", + "name": "erc721TokenId", + "type": "uint32" + }, + { "internalType": "uint32", "name": "whitelistId", "type": "uint32" }, + { + "internalType": "address", + "name": "originalOwner", + "type": "address" + }, + { "internalType": "uint40", "name": "timeCreated", "type": "uint40" }, + { "internalType": "uint40", "name": "timeAgreed", "type": "uint40" }, + { "internalType": "bool", "name": "canceled", "type": "bool" }, + { "internalType": "bool", "name": "completed", "type": "bool" }, + { + "internalType": "address", + "name": "thirdParty", + "type": "address" + }, + { + "internalType": "uint8[3]", + "name": "revenueSplit", + "type": "uint8[3]" + }, + { "internalType": "uint40", "name": "lastClaimed", "type": "uint40" }, + { "internalType": "uint32", "name": "period", "type": "uint32" }, + { + "internalType": "address[]", + "name": "revenueTokens", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "channellingStatus", + "type": "uint256" + } + ], + "internalType": "struct GotchiLending", + "name": "listing_", + "type": "tuple" + }, + { + "components": [ + { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, + { "internalType": "string", "name": "name", "type": "string" }, + { "internalType": "address", "name": "owner", "type": "address" }, + { + "internalType": "uint256", + "name": "randomNumber", + "type": "uint256" + }, + { "internalType": "uint256", "name": "status", "type": "uint256" }, + { + "internalType": "int16[6]", + "name": "numericTraits", + "type": "int16[6]" + }, + { + "internalType": "int16[6]", + "name": "modifiedNumericTraits", + "type": "int16[6]" + }, + { + "internalType": "uint16[16]", + "name": "equippedWearables", + "type": "uint16[16]" + }, + { + "internalType": "address", + "name": "collateral", + "type": "address" + }, + { "internalType": "address", "name": "escrow", "type": "address" }, + { + "internalType": "uint256", + "name": "stakedAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minimumStake", + "type": "uint256" + }, + { "internalType": "uint256", "name": "kinship", "type": "uint256" }, + { + "internalType": "uint256", + "name": "lastInteracted", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "experience", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "toNextLevel", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "usedSkillPoints", + "type": "uint256" + }, + { "internalType": "uint256", "name": "level", "type": "uint256" }, + { "internalType": "uint256", "name": "hauntId", "type": "uint256" }, + { + "internalType": "uint256", + "name": "baseRarityScore", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "modifiedRarityScore", + "type": "uint256" + }, + { "internalType": "bool", "name": "locked", "type": "bool" }, + { + "components": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "itemId", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "description", + "type": "string" + }, + { + "internalType": "string", + "name": "author", + "type": "string" + }, + { + "internalType": "int8[6]", + "name": "traitModifiers", + "type": "int8[6]" + }, + { + "internalType": "bool[16]", + "name": "slotPositions", + "type": "bool[16]" + }, + { + "internalType": "uint8[]", + "name": "allowedCollaterals", + "type": "uint8[]" + }, + { + "components": [ + { "internalType": "uint8", "name": "x", "type": "uint8" }, + { "internalType": "uint8", "name": "y", "type": "uint8" }, + { + "internalType": "uint8", + "name": "width", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "height", + "type": "uint8" + } + ], + "internalType": "struct Dimensions", + "name": "dimensions", + "type": "tuple" + }, + { + "internalType": "uint256", + "name": "ghstPrice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxQuantity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalQuantity", + "type": "uint256" + }, + { + "internalType": "uint32", + "name": "svgId", + "type": "uint32" + }, + { + "internalType": "uint8", + "name": "rarityScoreModifier", + "type": "uint8" + }, + { + "internalType": "bool", + "name": "canPurchaseWithGhst", + "type": "bool" + }, + { + "internalType": "uint16", + "name": "minLevel", + "type": "uint16" + }, + { + "internalType": "bool", + "name": "canBeTransferred", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "category", + "type": "uint8" + }, + { + "internalType": "int16", + "name": "kinshipBonus", + "type": "int16" + }, + { + "internalType": "uint32", + "name": "experienceBonus", + "type": "uint32" + } + ], + "internalType": "struct ItemType", + "name": "itemType", + "type": "tuple" + } + ], + "internalType": "struct ItemTypeIO[]", + "name": "items", + "type": "tuple[]" + } + ], + "internalType": "struct AavegotchiInfo", + "name": "aavegotchiInfo_", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "_status", "type": "bytes32" }, + { "internalType": "uint256", "name": "_length", "type": "uint256" } + ], + "name": "getGotchiLendings", + "outputs": [ + { + "components": [ + { "internalType": "address", "name": "lender", "type": "address" }, + { "internalType": "uint96", "name": "initialCost", "type": "uint96" }, + { "internalType": "address", "name": "borrower", "type": "address" }, + { "internalType": "uint32", "name": "listingId", "type": "uint32" }, + { + "internalType": "uint32", + "name": "erc721TokenId", + "type": "uint32" + }, + { "internalType": "uint32", "name": "whitelistId", "type": "uint32" }, + { + "internalType": "address", + "name": "originalOwner", + "type": "address" + }, + { "internalType": "uint40", "name": "timeCreated", "type": "uint40" }, + { "internalType": "uint40", "name": "timeAgreed", "type": "uint40" }, + { "internalType": "bool", "name": "canceled", "type": "bool" }, + { "internalType": "bool", "name": "completed", "type": "bool" }, + { + "internalType": "address", + "name": "thirdParty", + "type": "address" + }, + { + "internalType": "uint8[3]", + "name": "revenueSplit", + "type": "uint8[3]" + }, + { "internalType": "uint40", "name": "lastClaimed", "type": "uint40" }, + { "internalType": "uint32", "name": "period", "type": "uint32" }, + { + "internalType": "address[]", + "name": "revenueTokens", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "channellingStatus", + "type": "uint256" + } + ], + "internalType": "struct GotchiLending[]", + "name": "listings_", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getGotchiLendingsLength", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint32", "name": "_listingId", "type": "uint32" } + ], + "name": "getLendingListingInfo", + "outputs": [ + { + "components": [ + { "internalType": "address", "name": "lender", "type": "address" }, + { "internalType": "uint96", "name": "initialCost", "type": "uint96" }, + { "internalType": "address", "name": "borrower", "type": "address" }, + { "internalType": "uint32", "name": "listingId", "type": "uint32" }, + { + "internalType": "uint32", + "name": "erc721TokenId", + "type": "uint32" + }, + { "internalType": "uint32", "name": "whitelistId", "type": "uint32" }, + { + "internalType": "address", + "name": "originalOwner", + "type": "address" + }, + { "internalType": "uint40", "name": "timeCreated", "type": "uint40" }, + { "internalType": "uint40", "name": "timeAgreed", "type": "uint40" }, + { "internalType": "bool", "name": "canceled", "type": "bool" }, + { "internalType": "bool", "name": "completed", "type": "bool" }, + { + "internalType": "address", + "name": "thirdParty", + "type": "address" + }, + { + "internalType": "uint8[3]", + "name": "revenueSplit", + "type": "uint8[3]" + }, + { "internalType": "uint40", "name": "lastClaimed", "type": "uint40" }, + { "internalType": "uint32", "name": "period", "type": "uint32" }, + { + "internalType": "address[]", + "name": "revenueTokens", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "channellingStatus", + "type": "uint256" + } + ], + "internalType": "struct GotchiLending", + "name": "listing_", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_lender", "type": "address" } + ], + "name": "getLentTokenIdsOfLender", + "outputs": [ + { "internalType": "uint32[]", "name": "tokenIds_", "type": "uint32[]" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint32", "name": "_listingId", "type": "uint32" } + ], + "name": "getListingChannelingStatus", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_lender", "type": "address" }, + { "internalType": "bytes32", "name": "_status", "type": "bytes32" }, + { "internalType": "uint256", "name": "_length", "type": "uint256" } + ], + "name": "getOwnerGotchiLendings", + "outputs": [ + { + "components": [ + { "internalType": "address", "name": "lender", "type": "address" }, + { "internalType": "uint96", "name": "initialCost", "type": "uint96" }, + { "internalType": "address", "name": "borrower", "type": "address" }, + { "internalType": "uint32", "name": "listingId", "type": "uint32" }, + { + "internalType": "uint32", + "name": "erc721TokenId", + "type": "uint32" + }, + { "internalType": "uint32", "name": "whitelistId", "type": "uint32" }, + { + "internalType": "address", + "name": "originalOwner", + "type": "address" + }, + { "internalType": "uint40", "name": "timeCreated", "type": "uint40" }, + { "internalType": "uint40", "name": "timeAgreed", "type": "uint40" }, + { "internalType": "bool", "name": "canceled", "type": "bool" }, + { "internalType": "bool", "name": "completed", "type": "bool" }, + { + "internalType": "address", + "name": "thirdParty", + "type": "address" + }, + { + "internalType": "uint8[3]", + "name": "revenueSplit", + "type": "uint8[3]" + }, + { "internalType": "uint40", "name": "lastClaimed", "type": "uint40" }, + { "internalType": "uint32", "name": "period", "type": "uint32" }, + { + "internalType": "address[]", + "name": "revenueTokens", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "channellingStatus", + "type": "uint256" + } + ], + "internalType": "struct GotchiLending[]", + "name": "listings_", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_lender", "type": "address" }, + { "internalType": "bytes32", "name": "_status", "type": "bytes32" } + ], + "name": "getOwnerGotchiLendingsLength", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint32", "name": "_tokenId", "type": "uint32" }, + { + "internalType": "address[]", + "name": "_revenueTokens", + "type": "address[]" + } + ], + "name": "getTokenBalancesInEscrow", + "outputs": [ + { + "internalType": "uint256[]", + "name": "revenueBalances", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint32", "name": "_erc721TokenId", "type": "uint32" } + ], + "name": "isAavegotchiLent", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint32", "name": "_erc721TokenId", "type": "uint32" } + ], + "name": "isAavegotchiListed", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_lender", "type": "address" }, + { + "internalType": "address", + "name": "_lendingOperator", + "type": "address" + }, + { "internalType": "uint32", "name": "_tokenId", "type": "uint32" } + ], + "name": "isLendingOperator", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "token", "type": "address" } + ], + "name": "revenueTokenAllowed", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint32", "name": "_listingId", "type": "uint32" }, + { + "internalType": "uint256", + "name": "_newChannelStatus", + "type": "uint256" + } + ], + "name": "setLendingChannelingStatus", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_lendingOperator", + "type": "address" + }, + { "internalType": "uint32", "name": "_tokenId", "type": "uint32" }, + { "internalType": "bool", "name": "_isLendingOperator", "type": "bool" } + ], + "name": "setLendingOperator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_listingId", "type": "uint256" } + ], + "name": "getAavegotchiListing", + "outputs": [ + { + "components": [ + { "internalType": "uint256", "name": "listingId", "type": "uint256" }, + { "internalType": "address", "name": "seller", "type": "address" }, + { + "internalType": "address", + "name": "erc721TokenAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "erc721TokenId", + "type": "uint256" + }, + { "internalType": "uint256", "name": "category", "type": "uint256" }, + { + "internalType": "uint256", + "name": "priceInWei", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "timeCreated", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "timePurchased", + "type": "uint256" + }, + { "internalType": "bool", "name": "cancelled", "type": "bool" }, + { + "internalType": "uint16[2]", + "name": "principalSplit", + "type": "uint16[2]" + }, + { "internalType": "address", "name": "affiliate", "type": "address" }, + { "internalType": "uint32", "name": "whitelistId", "type": "uint32" } + ], + "internalType": "struct ERC721Listing", + "name": "listing_", + "type": "tuple" + }, + { + "components": [ + { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, + { "internalType": "string", "name": "name", "type": "string" }, + { "internalType": "address", "name": "owner", "type": "address" }, + { + "internalType": "uint256", + "name": "randomNumber", + "type": "uint256" + }, + { "internalType": "uint256", "name": "status", "type": "uint256" }, + { + "internalType": "int16[6]", + "name": "numericTraits", + "type": "int16[6]" + }, + { + "internalType": "int16[6]", + "name": "modifiedNumericTraits", + "type": "int16[6]" + }, + { + "internalType": "uint16[16]", + "name": "equippedWearables", + "type": "uint16[16]" + }, + { + "internalType": "address", + "name": "collateral", + "type": "address" + }, + { "internalType": "address", "name": "escrow", "type": "address" }, + { + "internalType": "uint256", + "name": "stakedAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minimumStake", + "type": "uint256" + }, + { "internalType": "uint256", "name": "kinship", "type": "uint256" }, + { + "internalType": "uint256", + "name": "lastInteracted", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "experience", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "toNextLevel", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "usedSkillPoints", + "type": "uint256" + }, + { "internalType": "uint256", "name": "level", "type": "uint256" }, + { "internalType": "uint256", "name": "hauntId", "type": "uint256" }, + { + "internalType": "uint256", + "name": "baseRarityScore", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "modifiedRarityScore", + "type": "uint256" + }, + { "internalType": "bool", "name": "locked", "type": "bool" }, + { + "components": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "itemId", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "description", + "type": "string" + }, + { + "internalType": "string", + "name": "author", + "type": "string" + }, + { + "internalType": "int8[6]", + "name": "traitModifiers", + "type": "int8[6]" + }, + { + "internalType": "bool[16]", + "name": "slotPositions", + "type": "bool[16]" + }, + { + "internalType": "uint8[]", + "name": "allowedCollaterals", + "type": "uint8[]" + }, + { + "components": [ + { "internalType": "uint8", "name": "x", "type": "uint8" }, + { "internalType": "uint8", "name": "y", "type": "uint8" }, + { + "internalType": "uint8", + "name": "width", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "height", + "type": "uint8" + } + ], + "internalType": "struct Dimensions", + "name": "dimensions", + "type": "tuple" + }, + { + "internalType": "uint256", + "name": "ghstPrice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxQuantity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalQuantity", + "type": "uint256" + }, + { + "internalType": "uint32", + "name": "svgId", + "type": "uint32" + }, + { + "internalType": "uint8", + "name": "rarityScoreModifier", + "type": "uint8" + }, + { + "internalType": "bool", + "name": "canPurchaseWithGhst", + "type": "bool" + }, + { + "internalType": "uint16", + "name": "minLevel", + "type": "uint16" + }, + { + "internalType": "bool", + "name": "canBeTransferred", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "category", + "type": "uint8" + }, + { + "internalType": "int16", + "name": "kinshipBonus", + "type": "int16" + }, + { + "internalType": "uint32", + "name": "experienceBonus", + "type": "uint32" + } + ], + "internalType": "struct ItemType", + "name": "itemType", + "type": "tuple" + } + ], + "internalType": "struct ItemTypeIO[]", + "name": "items", + "type": "tuple[]" + } + ], + "internalType": "struct AavegotchiInfo", + "name": "aavegotchiInfo_", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_category", "type": "uint256" }, + { "internalType": "string", "name": "_sort", "type": "string" }, + { "internalType": "uint256", "name": "_length", "type": "uint256" } + ], + "name": "getAavegotchiListings", + "outputs": [ + { + "components": [ + { + "components": [ + { + "internalType": "uint256", + "name": "listingId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "seller", + "type": "address" + }, + { + "internalType": "address", + "name": "erc721TokenAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "erc721TokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "category", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "priceInWei", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "timeCreated", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "timePurchased", + "type": "uint256" + }, + { "internalType": "bool", "name": "cancelled", "type": "bool" }, + { + "internalType": "uint16[2]", + "name": "principalSplit", + "type": "uint16[2]" + }, + { + "internalType": "address", + "name": "affiliate", + "type": "address" + }, + { + "internalType": "uint32", + "name": "whitelistId", + "type": "uint32" + } + ], + "internalType": "struct ERC721Listing", + "name": "listing_", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { "internalType": "string", "name": "name", "type": "string" }, + { "internalType": "address", "name": "owner", "type": "address" }, + { + "internalType": "uint256", + "name": "randomNumber", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "status", + "type": "uint256" + }, + { + "internalType": "int16[6]", + "name": "numericTraits", + "type": "int16[6]" + }, + { + "internalType": "int16[6]", + "name": "modifiedNumericTraits", + "type": "int16[6]" + }, + { + "internalType": "uint16[16]", + "name": "equippedWearables", + "type": "uint16[16]" + }, + { + "internalType": "address", + "name": "collateral", + "type": "address" + }, + { + "internalType": "address", + "name": "escrow", + "type": "address" + }, + { + "internalType": "uint256", + "name": "stakedAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minimumStake", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "kinship", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastInteracted", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "experience", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "toNextLevel", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "usedSkillPoints", + "type": "uint256" + }, + { "internalType": "uint256", "name": "level", "type": "uint256" }, + { + "internalType": "uint256", + "name": "hauntId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "baseRarityScore", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "modifiedRarityScore", + "type": "uint256" + }, + { "internalType": "bool", "name": "locked", "type": "bool" }, + { + "components": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "itemId", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "description", + "type": "string" + }, + { + "internalType": "string", + "name": "author", + "type": "string" + }, + { + "internalType": "int8[6]", + "name": "traitModifiers", + "type": "int8[6]" + }, + { + "internalType": "bool[16]", + "name": "slotPositions", + "type": "bool[16]" + }, + { + "internalType": "uint8[]", + "name": "allowedCollaterals", + "type": "uint8[]" + }, + { + "components": [ + { + "internalType": "uint8", + "name": "x", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "y", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "width", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "height", + "type": "uint8" + } + ], + "internalType": "struct Dimensions", + "name": "dimensions", + "type": "tuple" + }, + { + "internalType": "uint256", + "name": "ghstPrice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxQuantity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalQuantity", + "type": "uint256" + }, + { + "internalType": "uint32", + "name": "svgId", + "type": "uint32" + }, + { + "internalType": "uint8", + "name": "rarityScoreModifier", + "type": "uint8" + }, + { + "internalType": "bool", + "name": "canPurchaseWithGhst", + "type": "bool" + }, + { + "internalType": "uint16", + "name": "minLevel", + "type": "uint16" + }, + { + "internalType": "bool", + "name": "canBeTransferred", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "category", + "type": "uint8" + }, + { + "internalType": "int16", + "name": "kinshipBonus", + "type": "int16" + }, + { + "internalType": "uint32", + "name": "experienceBonus", + "type": "uint32" + } + ], + "internalType": "struct ItemType", + "name": "itemType", + "type": "tuple" + } + ], + "internalType": "struct ItemTypeIO[]", + "name": "items", + "type": "tuple[]" + } + ], + "internalType": "struct AavegotchiInfo", + "name": "aavegotchiInfo_", + "type": "tuple" + } + ], + "internalType": "struct MarketplaceGetterFacet.AavegotchiListing[]", + "name": "listings_", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_listingId", "type": "uint256" } + ], + "name": "getERC1155Listing", + "outputs": [ + { + "components": [ + { "internalType": "uint256", "name": "listingId", "type": "uint256" }, + { "internalType": "address", "name": "seller", "type": "address" }, + { + "internalType": "address", + "name": "erc1155TokenAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "erc1155TypeId", + "type": "uint256" + }, + { "internalType": "uint256", "name": "category", "type": "uint256" }, + { "internalType": "uint256", "name": "quantity", "type": "uint256" }, + { + "internalType": "uint256", + "name": "priceInWei", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "timeCreated", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "timeLastPurchased", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "sourceListingId", + "type": "uint256" + }, + { "internalType": "bool", "name": "sold", "type": "bool" }, + { "internalType": "bool", "name": "cancelled", "type": "bool" }, + { + "internalType": "uint16[2]", + "name": "principalSplit", + "type": "uint16[2]" + }, + { "internalType": "address", "name": "affiliate", "type": "address" }, + { "internalType": "uint32", "name": "whitelistId", "type": "uint32" } + ], + "internalType": "struct ERC1155Listing", + "name": "listing_", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_erc1155TokenAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_erc1155TypeId", + "type": "uint256" + }, + { "internalType": "address", "name": "_owner", "type": "address" } + ], + "name": "getERC1155ListingFromToken", + "outputs": [ + { + "components": [ + { "internalType": "uint256", "name": "listingId", "type": "uint256" }, + { "internalType": "address", "name": "seller", "type": "address" }, + { + "internalType": "address", + "name": "erc1155TokenAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "erc1155TypeId", + "type": "uint256" + }, + { "internalType": "uint256", "name": "category", "type": "uint256" }, + { "internalType": "uint256", "name": "quantity", "type": "uint256" }, + { + "internalType": "uint256", + "name": "priceInWei", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "timeCreated", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "timeLastPurchased", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "sourceListingId", + "type": "uint256" + }, + { "internalType": "bool", "name": "sold", "type": "bool" }, + { "internalType": "bool", "name": "cancelled", "type": "bool" }, + { + "internalType": "uint16[2]", + "name": "principalSplit", + "type": "uint16[2]" + }, + { "internalType": "address", "name": "affiliate", "type": "address" }, + { "internalType": "uint32", "name": "whitelistId", "type": "uint32" } + ], + "internalType": "struct ERC1155Listing", + "name": "listing_", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_category", "type": "uint256" }, + { "internalType": "string", "name": "_sort", "type": "string" }, + { "internalType": "uint256", "name": "_length", "type": "uint256" } + ], + "name": "getERC1155Listings", + "outputs": [ + { + "components": [ + { "internalType": "uint256", "name": "listingId", "type": "uint256" }, + { "internalType": "address", "name": "seller", "type": "address" }, + { + "internalType": "address", + "name": "erc1155TokenAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "erc1155TypeId", + "type": "uint256" + }, + { "internalType": "uint256", "name": "category", "type": "uint256" }, + { "internalType": "uint256", "name": "quantity", "type": "uint256" }, + { + "internalType": "uint256", + "name": "priceInWei", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "timeCreated", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "timeLastPurchased", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "sourceListingId", + "type": "uint256" + }, + { "internalType": "bool", "name": "sold", "type": "bool" }, + { "internalType": "bool", "name": "cancelled", "type": "bool" }, + { + "internalType": "uint16[2]", + "name": "principalSplit", + "type": "uint16[2]" + }, + { "internalType": "address", "name": "affiliate", "type": "address" }, + { "internalType": "uint32", "name": "whitelistId", "type": "uint32" } + ], + "internalType": "struct ERC1155Listing[]", + "name": "listings_", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_listingId", "type": "uint256" } + ], + "name": "getERC721Listing", + "outputs": [ + { + "components": [ + { "internalType": "uint256", "name": "listingId", "type": "uint256" }, + { "internalType": "address", "name": "seller", "type": "address" }, + { + "internalType": "address", + "name": "erc721TokenAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "erc721TokenId", + "type": "uint256" + }, + { "internalType": "uint256", "name": "category", "type": "uint256" }, + { + "internalType": "uint256", + "name": "priceInWei", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "timeCreated", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "timePurchased", + "type": "uint256" + }, + { "internalType": "bool", "name": "cancelled", "type": "bool" }, + { + "internalType": "uint16[2]", + "name": "principalSplit", + "type": "uint16[2]" + }, + { "internalType": "address", "name": "affiliate", "type": "address" }, + { "internalType": "uint32", "name": "whitelistId", "type": "uint32" } + ], + "internalType": "struct ERC721Listing", + "name": "listing_", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_erc721TokenAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_erc721TokenId", + "type": "uint256" + }, + { "internalType": "address", "name": "_owner", "type": "address" } + ], + "name": "getERC721ListingFromToken", + "outputs": [ + { + "components": [ + { "internalType": "uint256", "name": "listingId", "type": "uint256" }, + { "internalType": "address", "name": "seller", "type": "address" }, + { + "internalType": "address", + "name": "erc721TokenAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "erc721TokenId", + "type": "uint256" + }, + { "internalType": "uint256", "name": "category", "type": "uint256" }, + { + "internalType": "uint256", + "name": "priceInWei", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "timeCreated", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "timePurchased", + "type": "uint256" + }, + { "internalType": "bool", "name": "cancelled", "type": "bool" }, + { + "internalType": "uint16[2]", + "name": "principalSplit", + "type": "uint16[2]" + }, + { "internalType": "address", "name": "affiliate", "type": "address" }, + { "internalType": "uint32", "name": "whitelistId", "type": "uint32" } + ], + "internalType": "struct ERC721Listing", + "name": "listing_", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_category", "type": "uint256" }, + { "internalType": "string", "name": "_sort", "type": "string" }, + { "internalType": "uint256", "name": "_length", "type": "uint256" } + ], + "name": "getERC721Listings", + "outputs": [ + { + "components": [ + { "internalType": "uint256", "name": "listingId", "type": "uint256" }, + { "internalType": "address", "name": "seller", "type": "address" }, + { + "internalType": "address", + "name": "erc721TokenAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "erc721TokenId", + "type": "uint256" + }, + { "internalType": "uint256", "name": "category", "type": "uint256" }, + { + "internalType": "uint256", + "name": "priceInWei", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "timeCreated", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "timePurchased", + "type": "uint256" + }, + { "internalType": "bool", "name": "cancelled", "type": "bool" }, + { + "internalType": "uint16[2]", + "name": "principalSplit", + "type": "uint16[2]" + }, + { "internalType": "address", "name": "affiliate", "type": "address" }, + { "internalType": "uint32", "name": "whitelistId", "type": "uint32" } + ], + "internalType": "struct ERC721Listing[]", + "name": "listings_", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getListingFeeInWei", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_owner", "type": "address" }, + { "internalType": "uint256", "name": "_category", "type": "uint256" }, + { "internalType": "string", "name": "_sort", "type": "string" }, + { "internalType": "uint256", "name": "_length", "type": "uint256" } + ], + "name": "getOwnerAavegotchiListings", + "outputs": [ + { + "components": [ + { + "components": [ + { + "internalType": "uint256", + "name": "listingId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "seller", + "type": "address" + }, + { + "internalType": "address", + "name": "erc721TokenAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "erc721TokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "category", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "priceInWei", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "timeCreated", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "timePurchased", + "type": "uint256" + }, + { "internalType": "bool", "name": "cancelled", "type": "bool" }, + { + "internalType": "uint16[2]", + "name": "principalSplit", + "type": "uint16[2]" + }, + { + "internalType": "address", + "name": "affiliate", + "type": "address" + }, + { + "internalType": "uint32", + "name": "whitelistId", + "type": "uint32" + } + ], + "internalType": "struct ERC721Listing", + "name": "listing_", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { "internalType": "string", "name": "name", "type": "string" }, + { "internalType": "address", "name": "owner", "type": "address" }, + { + "internalType": "uint256", + "name": "randomNumber", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "status", + "type": "uint256" + }, + { + "internalType": "int16[6]", + "name": "numericTraits", + "type": "int16[6]" + }, + { + "internalType": "int16[6]", + "name": "modifiedNumericTraits", + "type": "int16[6]" + }, + { + "internalType": "uint16[16]", + "name": "equippedWearables", + "type": "uint16[16]" + }, + { + "internalType": "address", + "name": "collateral", + "type": "address" + }, + { + "internalType": "address", + "name": "escrow", + "type": "address" + }, + { + "internalType": "uint256", + "name": "stakedAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minimumStake", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "kinship", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastInteracted", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "experience", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "toNextLevel", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "usedSkillPoints", + "type": "uint256" + }, + { "internalType": "uint256", "name": "level", "type": "uint256" }, + { + "internalType": "uint256", + "name": "hauntId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "baseRarityScore", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "modifiedRarityScore", + "type": "uint256" + }, + { "internalType": "bool", "name": "locked", "type": "bool" }, + { + "components": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "itemId", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "description", + "type": "string" + }, + { + "internalType": "string", + "name": "author", + "type": "string" + }, + { + "internalType": "int8[6]", + "name": "traitModifiers", + "type": "int8[6]" + }, + { + "internalType": "bool[16]", + "name": "slotPositions", + "type": "bool[16]" + }, + { + "internalType": "uint8[]", + "name": "allowedCollaterals", + "type": "uint8[]" + }, + { + "components": [ + { + "internalType": "uint8", + "name": "x", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "y", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "width", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "height", + "type": "uint8" + } + ], + "internalType": "struct Dimensions", + "name": "dimensions", + "type": "tuple" + }, + { + "internalType": "uint256", + "name": "ghstPrice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxQuantity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalQuantity", + "type": "uint256" + }, + { + "internalType": "uint32", + "name": "svgId", + "type": "uint32" + }, + { + "internalType": "uint8", + "name": "rarityScoreModifier", + "type": "uint8" + }, + { + "internalType": "bool", + "name": "canPurchaseWithGhst", + "type": "bool" + }, + { + "internalType": "uint16", + "name": "minLevel", + "type": "uint16" + }, + { + "internalType": "bool", + "name": "canBeTransferred", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "category", + "type": "uint8" + }, + { + "internalType": "int16", + "name": "kinshipBonus", + "type": "int16" + }, + { + "internalType": "uint32", + "name": "experienceBonus", + "type": "uint32" + } + ], + "internalType": "struct ItemType", + "name": "itemType", + "type": "tuple" + } + ], + "internalType": "struct ItemTypeIO[]", + "name": "items", + "type": "tuple[]" + } + ], + "internalType": "struct AavegotchiInfo", + "name": "aavegotchiInfo_", + "type": "tuple" + } + ], + "internalType": "struct MarketplaceGetterFacet.AavegotchiListing[]", + "name": "listings_", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_owner", "type": "address" }, + { "internalType": "uint256", "name": "_category", "type": "uint256" }, + { "internalType": "string", "name": "_sort", "type": "string" }, + { "internalType": "uint256", "name": "_length", "type": "uint256" } + ], + "name": "getOwnerERC1155Listings", + "outputs": [ + { + "components": [ + { "internalType": "uint256", "name": "listingId", "type": "uint256" }, + { "internalType": "address", "name": "seller", "type": "address" }, + { + "internalType": "address", + "name": "erc1155TokenAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "erc1155TypeId", + "type": "uint256" + }, + { "internalType": "uint256", "name": "category", "type": "uint256" }, + { "internalType": "uint256", "name": "quantity", "type": "uint256" }, + { + "internalType": "uint256", + "name": "priceInWei", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "timeCreated", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "timeLastPurchased", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "sourceListingId", + "type": "uint256" + }, + { "internalType": "bool", "name": "sold", "type": "bool" }, + { "internalType": "bool", "name": "cancelled", "type": "bool" }, + { + "internalType": "uint16[2]", + "name": "principalSplit", + "type": "uint16[2]" + }, + { "internalType": "address", "name": "affiliate", "type": "address" }, + { "internalType": "uint32", "name": "whitelistId", "type": "uint32" } + ], + "internalType": "struct ERC1155Listing[]", + "name": "listings_", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_owner", "type": "address" }, + { "internalType": "uint256", "name": "_category", "type": "uint256" }, + { "internalType": "string", "name": "_sort", "type": "string" }, + { "internalType": "uint256", "name": "_length", "type": "uint256" } + ], + "name": "getOwnerERC721Listings", + "outputs": [ + { + "components": [ + { "internalType": "uint256", "name": "listingId", "type": "uint256" }, + { "internalType": "address", "name": "seller", "type": "address" }, + { + "internalType": "address", + "name": "erc721TokenAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "erc721TokenId", + "type": "uint256" + }, + { "internalType": "uint256", "name": "category", "type": "uint256" }, + { + "internalType": "uint256", + "name": "priceInWei", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "timeCreated", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "timePurchased", + "type": "uint256" + }, + { "internalType": "bool", "name": "cancelled", "type": "bool" }, + { + "internalType": "uint16[2]", + "name": "principalSplit", + "type": "uint16[2]" + }, + { "internalType": "address", "name": "affiliate", "type": "address" }, + { "internalType": "uint32", "name": "whitelistId", "type": "uint32" } + ], + "internalType": "struct ERC721Listing[]", + "name": "listings_", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "bytes32[]", "name": "_propIds", "type": "bytes32[]" }, + { "internalType": "address[]", "name": "_claimers", "type": "address[]" }, + { + "internalType": "uint256[][]", + "name": "_gotchiIds", + "type": "uint256[][]" + }, + { + "internalType": "bytes32[][]", + "name": "_proofs", + "type": "bytes32[][]" + }, + { + "internalType": "uint256[][]", + "name": "_onlyGotchis", + "type": "uint256[][]" + } + ], + "name": "batchDropClaimXPDrop", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "_propId", "type": "bytes32" }, + { "internalType": "address[]", "name": "_claimers", "type": "address[]" }, + { + "internalType": "uint256[][]", + "name": "_gotchiIds", + "type": "uint256[][]" + }, + { + "internalType": "bytes32[][]", + "name": "_proofs", + "type": "bytes32[][]" + }, + { + "internalType": "uint256[][]", + "name": "_onlyGotchis", + "type": "uint256[][]" + } + ], + "name": "batchGotchiClaimXPDrop", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "_propId", "type": "bytes32" }, + { "internalType": "address", "name": "_claimer", "type": "address" }, + { "internalType": "uint256[]", "name": "_gotchiId", "type": "uint256[]" }, + { "internalType": "bytes32[]", "name": "_proof", "type": "bytes32[]" }, + { + "internalType": "uint256[]", + "name": "_onlyGotchis", + "type": "uint256[]" + } + ], + "name": "claimXPDrop", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "_propId", "type": "bytes32" }, + { "internalType": "bytes32", "name": "_merkleRoot", "type": "bytes32" }, + { "internalType": "uint256", "name": "_xpAmount", "type": "uint256" } + ], + "name": "createXPDrop", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "_propId", "type": "bytes32" }, + { "internalType": "uint256", "name": "_gotchId", "type": "uint256" } + ], + "name": "isClaimed", + "outputs": [ + { "internalType": "uint256", "name": "claimed_", "type": "uint256" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "_propId", "type": "bytes32" } + ], + "name": "viewXPDrop", + "outputs": [ + { + "components": [ + { "internalType": "bytes32", "name": "root", "type": "bytes32" }, + { "internalType": "uint256", "name": "xpAmount", "type": "uint256" } + ], + "internalType": "struct XPMerkleDrops", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "userAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "address payable", + "name": "relayerAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "functionSignature", + "type": "bytes" + } + ], + "name": "MetaTransactionExecuted", + "type": "event" + }, + { + "inputs": [ + { "internalType": "address", "name": "userAddress", "type": "address" }, + { "internalType": "bytes", "name": "functionSignature", "type": "bytes" }, + { "internalType": "bytes32", "name": "sigR", "type": "bytes32" }, + { "internalType": "bytes32", "name": "sigS", "type": "bytes32" }, + { "internalType": "uint8", "name": "sigV", "type": "uint8" } + ], + "name": "executeMetaTransaction", + "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "user", "type": "address" } + ], + "name": "getNonce", + "outputs": [ + { "internalType": "uint256", "name": "nonce_", "type": "uint256" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_operator", "type": "address" }, + { "internalType": "address", "name": "_from", "type": "address" }, + { "internalType": "address", "name": "_to", "type": "address" }, + { "internalType": "uint256[]", "name": "_ids", "type": "uint256[]" }, + { "internalType": "uint256[]", "name": "_values", "type": "uint256[]" }, + { "internalType": "bytes", "name": "_data", "type": "bytes" } + ], + "name": "peripherySafeBatchTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_operator", "type": "address" }, + { "internalType": "address", "name": "_from", "type": "address" }, + { "internalType": "address", "name": "_to", "type": "address" }, + { "internalType": "uint256", "name": "_id", "type": "uint256" }, + { "internalType": "uint256", "name": "_value", "type": "uint256" }, + { "internalType": "bytes", "name": "_data", "type": "bytes" } + ], + "name": "peripherySafeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_operator", "type": "address" }, + { "internalType": "bool", "name": "_approved", "type": "bool" }, + { "internalType": "address", "name": "_onBehalfOf", "type": "address" } + ], + "name": "peripherySetApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "string", "name": "_value", "type": "string" } + ], + "name": "peripherySetBaseURI", + "outputs": [ + { "internalType": "uint256", "name": "_itemsLength", "type": "uint256" } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "removeInterface", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_periphery", "type": "address" } + ], + "name": "setPeriphery", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_numAavegotchisToPurchase", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_totalPrice", + "type": "uint256" + } + ], + "name": "BuyPortals", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_numAavegotchisToPurchase", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_hauntId", + "type": "uint256" + } + ], + "name": "MintPortals", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_buyer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "_itemIds", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "_quantities", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_totalPrice", + "type": "uint256" + } + ], + "name": "PurchaseItemsWithGhst", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_buyer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "_itemIds", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "_quantities", + "type": "uint256[]" + } + ], + "name": "PurchaseItemsWithVouchers", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_buyer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "_itemIds", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "_quantities", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_totalPrice", + "type": "uint256" + } + ], + "name": "PurchaseTransferItemsWithGhst", + "type": "event" + }, + { + "inputs": [ + { "internalType": "address", "name": "_to", "type": "address" }, + { "internalType": "uint256", "name": "_ghst", "type": "uint256" } + ], + "name": "buyPortals", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_to", "type": "address" }, + { "internalType": "uint256", "name": "_amount", "type": "uint256" } + ], + "name": "mintPortals", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_to", "type": "address" }, + { "internalType": "uint256[]", "name": "_itemIds", "type": "uint256[]" }, + { + "internalType": "uint256[]", + "name": "_quantities", + "type": "uint256[]" + } + ], + "name": "purchaseItemsWithGhst", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_to", "type": "address" }, + { "internalType": "uint256[]", "name": "_itemIds", "type": "uint256[]" }, + { + "internalType": "uint256[]", + "name": "_quantities", + "type": "uint256[]" + } + ], + "name": "purchaseTransferItemsWithGhst", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "_svgType", "type": "bytes32" }, + { "internalType": "uint256", "name": "_numLayers", "type": "uint256" } + ], + "name": "deleteLastSvgLayers", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } + ], + "name": "getAavegotchiSvg", + "outputs": [{ "internalType": "string", "name": "ag_", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_itemId", "type": "uint256" } + ], + "name": "getItemSvg", + "outputs": [{ "internalType": "string", "name": "ag_", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getNextSleeveId", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "_svgType", "type": "bytes32" }, + { "internalType": "uint256", "name": "_itemId", "type": "uint256" } + ], + "name": "getSvg", + "outputs": [{ "internalType": "string", "name": "svg_", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "_svgType", "type": "bytes32" }, + { "internalType": "uint256[]", "name": "_itemIds", "type": "uint256[]" } + ], + "name": "getSvgs", + "outputs": [ + { "internalType": "string[]", "name": "svgs_", "type": "string[]" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } + ], + "name": "portalAavegotchisSvg", + "outputs": [ + { "internalType": "string[10]", "name": "svg_", "type": "string[10]" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_hauntId", "type": "uint256" }, + { + "internalType": "address", + "name": "_collateralType", + "type": "address" + }, + { + "internalType": "int16[6]", + "name": "_numericTraits", + "type": "int16[6]" + }, + { + "internalType": "uint16[16]", + "name": "equippedWearables", + "type": "uint16[16]" + } + ], + "name": "previewAavegotchi", + "outputs": [{ "internalType": "string", "name": "ag_", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256[]", "name": "_itemIds", "type": "uint256[]" }, + { + "components": [ + { "internalType": "uint8", "name": "x", "type": "uint8" }, + { "internalType": "uint8", "name": "y", "type": "uint8" }, + { "internalType": "uint8", "name": "width", "type": "uint8" }, + { "internalType": "uint8", "name": "height", "type": "uint8" } + ], + "internalType": "struct Dimensions[]", + "name": "_dimensions", + "type": "tuple[]" + } + ], + "name": "setItemsDimensions", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { "internalType": "uint256", "name": "sleeveId", "type": "uint256" }, + { "internalType": "uint256", "name": "wearableId", "type": "uint256" } + ], + "internalType": "struct SvgFacet.Sleeve[]", + "name": "_sleeves", + "type": "tuple[]" + } + ], + "name": "setSleeves", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "string", "name": "_svg", "type": "string" }, + { + "components": [ + { "internalType": "bytes32", "name": "svgType", "type": "bytes32" }, + { "internalType": "uint256[]", "name": "sizes", "type": "uint256[]" } + ], + "internalType": "struct LibSvg.SvgTypeAndSizes[]", + "name": "_typesAndSizes", + "type": "tuple[]" + } + ], + "name": "storeSvg", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "string", "name": "_svg", "type": "string" }, + { + "components": [ + { "internalType": "bytes32", "name": "svgType", "type": "bytes32" }, + { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, + { "internalType": "uint256[]", "name": "sizes", "type": "uint256[]" } + ], + "internalType": "struct LibSvg.SvgTypeAndIdsAndSizes[]", + "name": "_typesAndIdsAndSizes", + "type": "tuple[]" + } + ], + "name": "updateSvg", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } + ], + "name": "getAavegotchiSideSvgs", + "outputs": [ + { "internalType": "string[]", "name": "ag_", "type": "string[]" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_itemId", "type": "uint256" } + ], + "name": "getItemSvgs", + "outputs": [ + { "internalType": "string[]", "name": "svg_", "type": "string[]" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256[]", "name": "_itemIds", "type": "uint256[]" } + ], + "name": "getItemsSvgs", + "outputs": [ + { "internalType": "string[][]", "name": "svgs_", "type": "string[][]" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_hauntId", "type": "uint256" }, + { + "internalType": "address", + "name": "_collateralType", + "type": "address" + }, + { + "internalType": "int16[6]", + "name": "_numericTraits", + "type": "int16[6]" + }, + { + "internalType": "uint16[16]", + "name": "equippedWearables", + "type": "uint16[16]" + } + ], + "name": "previewSideAavegotchi", + "outputs": [ + { "internalType": "string[]", "name": "ag_", "type": "string[]" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { "internalType": "uint256", "name": "itemId", "type": "uint256" }, + { "internalType": "string", "name": "side", "type": "string" }, + { + "components": [ + { "internalType": "uint8", "name": "x", "type": "uint8" }, + { "internalType": "uint8", "name": "y", "type": "uint8" }, + { "internalType": "uint8", "name": "width", "type": "uint8" }, + { "internalType": "uint8", "name": "height", "type": "uint8" } + ], + "internalType": "struct Dimensions", + "name": "dimensions", + "type": "tuple" + } + ], + "internalType": "struct SvgViewsFacet.SideViewDimensionsArgs[]", + "name": "_sideViewDimensions", + "type": "tuple[]" + } + ], + "name": "setSideViewDimensions", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { "internalType": "uint256", "name": "itemId", "type": "uint256" }, + { + "internalType": "uint256", + "name": "slotPosition", + "type": "uint256" + }, + { "internalType": "bytes32", "name": "side", "type": "bytes32" }, + { "internalType": "bool", "name": "exceptionBool", "type": "bool" } + ], + "internalType": "struct SvgViewsFacet.SideViewExceptions[]", + "name": "_sideViewExceptions", + "type": "tuple[]" + } + ], + "name": "setSideViewExceptions", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256[]", + "name": "_tokenIds", + "type": "uint256[]" + } + ], + "name": "OpenPortals", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "PortalOpened", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "randomNumber", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_vrfTimeSet", + "type": "uint256" + } + ], + "name": "VrfRandomNumber", + "type": "event" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_newFee", "type": "uint256" }, + { "internalType": "bytes32", "name": "_keyHash", "type": "bytes32" }, + { + "internalType": "address", + "name": "_vrfCoordinator", + "type": "address" + }, + { "internalType": "address", "name": "_link", "type": "address" } + ], + "name": "changeVrf", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "keyHash", + "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "link", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "linkBalance", + "outputs": [ + { "internalType": "uint256", "name": "linkBalance_", "type": "uint256" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256[]", "name": "_tokenIds", "type": "uint256[]" } + ], + "name": "openPortals", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "_requestId", "type": "bytes32" }, + { "internalType": "uint256", "name": "_randomNumber", "type": "uint256" } + ], + "name": "rawFulfillRandomness", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_to", "type": "address" }, + { "internalType": "uint256", "name": "_value", "type": "uint256" } + ], + "name": "removeLinkTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "vrfCoordinator", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "_ids", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "_values", + "type": "uint256[]" + } + ], + "name": "MigrateVouchers", + "type": "event" + }, + { + "inputs": [ + { + "components": [ + { "internalType": "address", "name": "owner", "type": "address" }, + { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, + { "internalType": "uint256[]", "name": "values", "type": "uint256[]" } + ], + "internalType": "struct VoucherMigrationFacet.VouchersOwner[]", + "name": "_vouchersOwners", + "type": "tuple[]" + } + ], + "name": "migrateVouchers", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "_wearableIds", + "type": "uint256[]" + } + ], + "name": "findWearableSets", + "outputs": [ + { + "internalType": "uint256[]", + "name": "wearableSetIds_", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_index", "type": "uint256" } + ], + "name": "getWearableSet", + "outputs": [ + { + "components": [ + { "internalType": "string", "name": "name", "type": "string" }, + { + "internalType": "uint8[]", + "name": "allowedCollaterals", + "type": "uint8[]" + }, + { + "internalType": "uint16[]", + "name": "wearableIds", + "type": "uint16[]" + }, + { + "internalType": "int8[5]", + "name": "traitsBonuses", + "type": "int8[5]" + } + ], + "internalType": "struct WearableSet", + "name": "wearableSet_", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getWearableSets", + "outputs": [ + { + "components": [ + { "internalType": "string", "name": "name", "type": "string" }, + { + "internalType": "uint8[]", + "name": "allowedCollaterals", + "type": "uint8[]" + }, + { + "internalType": "uint16[]", + "name": "wearableIds", + "type": "uint16[]" + }, + { + "internalType": "int8[5]", + "name": "traitsBonuses", + "type": "int8[5]" + } + ], + "internalType": "struct WearableSet[]", + "name": "wearableSets_", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalWearableSets", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint32", + "name": "whitelistId", + "type": "uint32" + } + ], + "name": "WhitelistCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint32", + "name": "whitelistId", + "type": "uint32" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "WhitelistOwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint32", + "name": "whitelistId", + "type": "uint32" + } + ], + "name": "WhitelistUpdated", + "type": "event" + }, + { + "inputs": [ + { "internalType": "string", "name": "_name", "type": "string" }, + { + "internalType": "address[]", + "name": "_whitelistAddresses", + "type": "address[]" + } + ], + "name": "createWhitelist", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint32", "name": "_whitelistId", "type": "uint32" } + ], + "name": "getBorrowLimit", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint32", "name": "_whitelistId", "type": "uint32" } + ], + "name": "getWhitelist", + "outputs": [ + { + "components": [ + { "internalType": "address", "name": "owner", "type": "address" }, + { "internalType": "string", "name": "name", "type": "string" }, + { + "internalType": "address[]", + "name": "addresses", + "type": "address[]" + } + ], + "internalType": "struct Whitelist", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint32", "name": "_whitelistId", "type": "uint32" }, + { "internalType": "uint256", "name": "_actionRight", "type": "uint256" } + ], + "name": "getWhitelistAccessRight", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getWhitelistsLength", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint32", "name": "_whitelistId", "type": "uint32" }, + { + "internalType": "address", + "name": "_whitelistAddress", + "type": "address" + } + ], + "name": "isWhitelisted", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint32", "name": "_whitelistId", "type": "uint32" }, + { + "internalType": "address[]", + "name": "_whitelistAddresses", + "type": "address[]" + } + ], + "name": "removeAddressesFromWhitelist", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint32", "name": "_whitelistId", "type": "uint32" }, + { "internalType": "uint256", "name": "_borrowlimit", "type": "uint256" } + ], + "name": "setBorrowLimit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint32", "name": "_whitelistId", "type": "uint32" }, + { "internalType": "uint256", "name": "_actionRight", "type": "uint256" }, + { "internalType": "uint256", "name": "_accessRight", "type": "uint256" } + ], + "name": "setWhitelistAccessRight", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint32", "name": "_whitelistId", "type": "uint32" }, + { + "internalType": "address", + "name": "_whitelistOwner", + "type": "address" + } + ], + "name": "transferOwnershipOfWhitelist", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint32", "name": "_whitelistId", "type": "uint32" }, + { + "internalType": "address[]", + "name": "_whitelistAddresses", + "type": "address[]" + } + ], + "name": "updateWhitelist", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint32", "name": "whitelistId", "type": "uint32" } + ], + "name": "whitelistExists", + "outputs": [{ "internalType": "bool", "name": "exists", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint32", "name": "_whitelistId", "type": "uint32" } + ], + "name": "whitelistOwner", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "kinship", + "type": "uint256" + } + ], + "name": "AavegotchiInteract", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "listingId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "category", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "time", + "type": "uint256" + } + ], + "name": "ERC1155ListingCancelled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "listingId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "category", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "time", + "type": "uint256" + } + ], + "name": "ERC1155ListingRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "listingId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "quantity", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "priceInWei", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "time", + "type": "uint256" + } + ], + "name": "UpdateERC1155Listing", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "listingId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "category", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "time", + "type": "uint256" + } + ], + "name": "ERC721ListingCancelled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "listingId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "priceInWei", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "time", + "type": "uint256" + } + ], + "name": "ERC721ListingPriceUpdate", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "listingId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "category", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "time", + "type": "uint256" + } + ], + "name": "ERC721ListingRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint32", + "name": "listingId", + "type": "uint32" + } + ], + "name": "GotchiLendingAdd", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "components": [ + { "internalType": "uint32", "name": "listingId", "type": "uint32" }, + { "internalType": "address", "name": "lender", "type": "address" }, + { "internalType": "uint32", "name": "tokenId", "type": "uint32" }, + { "internalType": "uint96", "name": "initialCost", "type": "uint96" }, + { "internalType": "uint32", "name": "period", "type": "uint32" }, + { + "internalType": "uint8[3]", + "name": "revenueSplit", + "type": "uint8[3]" + }, + { + "internalType": "address", + "name": "originalOwner", + "type": "address" + }, + { + "internalType": "address", + "name": "thirdParty", + "type": "address" + }, + { "internalType": "uint32", "name": "whitelistId", "type": "uint32" }, + { + "internalType": "address[]", + "name": "revenueTokens", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "timeCreated", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "channellingStatus", + "type": "uint256" + } + ], + "indexed": false, + "internalType": "struct LibEventStructContainers.GotchiLendingAdd", + "name": "", + "type": "tuple" + } + ], + "name": "GotchiLendingAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint32", + "name": "listingId", + "type": "uint32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "time", + "type": "uint256" + } + ], + "name": "GotchiLendingCancel", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "components": [ + { "internalType": "uint32", "name": "listingId", "type": "uint32" }, + { "internalType": "address", "name": "lender", "type": "address" }, + { "internalType": "uint32", "name": "tokenId", "type": "uint32" }, + { "internalType": "uint96", "name": "initialCost", "type": "uint96" }, + { "internalType": "uint32", "name": "period", "type": "uint32" }, + { + "internalType": "uint8[3]", + "name": "revenueSplit", + "type": "uint8[3]" + }, + { + "internalType": "address", + "name": "originalOwner", + "type": "address" + }, + { + "internalType": "address", + "name": "thirdParty", + "type": "address" + }, + { "internalType": "uint32", "name": "whitelistId", "type": "uint32" }, + { + "internalType": "address[]", + "name": "revenueTokens", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "timeCancelled", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "channellingStatus", + "type": "uint256" + } + ], + "indexed": false, + "internalType": "struct LibEventStructContainers.GotchiLendingCancellation", + "name": "", + "type": "tuple" + } + ], + "name": "GotchiLendingCancelled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint32", + "name": "listingId", + "type": "uint32" + }, + { + "indexed": false, + "internalType": "address[]", + "name": "tokenAddresses", + "type": "address[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "name": "GotchiLendingClaim", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "components": [ + { "internalType": "uint32", "name": "listingId", "type": "uint32" }, + { "internalType": "address", "name": "lender", "type": "address" }, + { "internalType": "address", "name": "borrower", "type": "address" }, + { "internalType": "uint32", "name": "tokenId", "type": "uint32" }, + { "internalType": "uint96", "name": "initialCost", "type": "uint96" }, + { "internalType": "uint32", "name": "period", "type": "uint32" }, + { + "internalType": "uint8[3]", + "name": "revenueSplit", + "type": "uint8[3]" + }, + { + "internalType": "address", + "name": "originalOwner", + "type": "address" + }, + { + "internalType": "address", + "name": "thirdParty", + "type": "address" + }, + { "internalType": "uint32", "name": "whitelistId", "type": "uint32" }, + { + "internalType": "address[]", + "name": "revenueTokens", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "timeClaimed", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "channellingStatus", + "type": "uint256" + } + ], + "indexed": false, + "internalType": "struct LibEventStructContainers.GotchiLendingClaim", + "name": "", + "type": "tuple" + } + ], + "name": "GotchiLendingClaimed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint32", + "name": "listingId", + "type": "uint32" + } + ], + "name": "GotchiLendingEnd", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "components": [ + { "internalType": "uint32", "name": "listingId", "type": "uint32" }, + { "internalType": "address", "name": "lender", "type": "address" }, + { "internalType": "address", "name": "borrower", "type": "address" }, + { "internalType": "uint32", "name": "tokenId", "type": "uint32" }, + { "internalType": "uint96", "name": "initialCost", "type": "uint96" }, + { "internalType": "uint32", "name": "period", "type": "uint32" }, + { + "internalType": "uint8[3]", + "name": "revenueSplit", + "type": "uint8[3]" + }, + { + "internalType": "address", + "name": "originalOwner", + "type": "address" + }, + { + "internalType": "address", + "name": "thirdParty", + "type": "address" + }, + { "internalType": "uint32", "name": "whitelistId", "type": "uint32" }, + { + "internalType": "address[]", + "name": "revenueTokens", + "type": "address[]" + }, + { "internalType": "uint256", "name": "timeEnded", "type": "uint256" }, + { + "internalType": "uint256", + "name": "channellingStatus", + "type": "uint256" + } + ], + "indexed": false, + "internalType": "struct LibEventStructContainers.GotchiLendingEnd", + "name": "", + "type": "tuple" + } + ], + "name": "GotchiLendingEnded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint32", + "name": "listingId", + "type": "uint32" + } + ], + "name": "GotchiLendingExecute", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "components": [ + { "internalType": "uint32", "name": "listingId", "type": "uint32" }, + { "internalType": "address", "name": "lender", "type": "address" }, + { "internalType": "address", "name": "borrower", "type": "address" }, + { "internalType": "uint32", "name": "tokenId", "type": "uint32" }, + { "internalType": "uint96", "name": "initialCost", "type": "uint96" }, + { "internalType": "uint32", "name": "period", "type": "uint32" }, + { + "internalType": "uint8[3]", + "name": "revenueSplit", + "type": "uint8[3]" + }, + { + "internalType": "address", + "name": "originalOwner", + "type": "address" + }, + { + "internalType": "address", + "name": "thirdParty", + "type": "address" + }, + { "internalType": "uint32", "name": "whitelistId", "type": "uint32" }, + { + "internalType": "address[]", + "name": "revenueTokens", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "timeAgreed", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "channellingStatus", + "type": "uint256" + } + ], + "indexed": false, + "internalType": "struct LibEventStructContainers.GotchiLendingExecution", + "name": "", + "type": "tuple" + } + ], + "name": "GotchiLendingExecuted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint32", + "name": "listingId", + "type": "uint32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "channellingStatus", + "type": "uint256" + } + ], + "name": "LendingChannelingStatusChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "components": [ + { "internalType": "bytes32", "name": "svgType", "type": "bytes32" }, + { "internalType": "uint256[]", "name": "sizes", "type": "uint256[]" } + ], + "indexed": false, + "internalType": "struct LibSvg.SvgTypeAndSizes[]", + "name": "_typesAndSizes", + "type": "tuple[]" + } + ], + "name": "StoreSvg", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "components": [ + { "internalType": "bytes32", "name": "svgType", "type": "bytes32" }, + { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, + { "internalType": "uint256[]", "name": "sizes", "type": "uint256[]" } + ], + "indexed": false, + "internalType": "struct LibSvg.SvgTypeAndIdsAndSizes[]", + "name": "_typesAndIdsAndSizes", + "type": "tuple[]" + } + ], + "name": "UpdateSvg", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint32", + "name": "whitelistId", + "type": "uint32" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "actionRight", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "accessRight", + "type": "uint256" + } + ], + "name": "WhitelistAccessRightSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256[]", + "name": "_tokenIds", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "_xpValues", + "type": "uint256[]" + } + ], + "name": "GrantExperience", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "_propId", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_gotchiId", + "type": "uint256" + } + ], + "name": "XPClaimed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "_propId", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "_merkleRoot", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_xpAmount", + "type": "uint256" + } + ], + "name": "XPDropCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "facetAddress", + "type": "address" + }, + { + "internalType": "enum IDiamondCut.FacetCutAction", + "name": "action", + "type": "uint8" + }, + { + "internalType": "bytes4[]", + "name": "functionSelectors", + "type": "bytes4[]" + } + ], + "indexed": false, + "internalType": "struct IDiamondCut.FacetCut[]", + "name": "_diamondCut", + "type": "tuple[]" + }, + { + "indexed": false, + "internalType": "address", + "name": "_init", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_calldata", + "type": "bytes" + } + ], + "name": "DiamondCut", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "_operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "_approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "_ids", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "_values", + "type": "uint256[]" + } + ], + "name": "TransferBatch", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_fromContract", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "_fromTokenId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "_tokenTypeId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_value", + "type": "uint256" + } + ], + "name": "TransferFromParent", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_id", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_value", + "type": "uint256" + } + ], + "name": "TransferSingle", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_toContract", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "_toTokenId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "_tokenTypeId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_value", + "type": "uint256" + } + ], + "name": "TransferToParent", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "_value", + "type": "string" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "_id", + "type": "uint256" + } + ], + "name": "URI", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "_approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "_operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "_approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + } +] From cdf4c9223148dbc41a5291b3201bb0b1d58d5979 Mon Sep 17 00:00:00 2001 From: Timidan Date: Thu, 18 May 2023 15:04:04 +0100 Subject: [PATCH 07/24] use bitmaps for lending permissions --- .../Aavegotchi/facets/AavegotchiGameFacet.sol | 13 ++- .../Aavegotchi/facets/GotchiLendingFacet.sol | 10 +- .../facets/LendingGetterAndSetterFacet.sol | 23 +++- .../Aavegotchi/libraries/LibAavegotchi.sol | 2 +- .../Aavegotchi/libraries/LibAppStorage.sol | 6 +- .../Aavegotchi/libraries/LibBitmapHelpers.sol | 31 ++++++ .../Aavegotchi/libraries/LibGotchiLending.sol | 45 ++------ diamondABI/diamond.json | 105 +++++++++--------- scripts/LendingPermissions.ts | 47 ++++++++ scripts/upgrades/upgrade-kinshipBurning.ts | 10 +- test/testNewLendingEvents.ts | 51 +++------ 11 files changed, 203 insertions(+), 140 deletions(-) create mode 100644 contracts/Aavegotchi/libraries/LibBitmapHelpers.sol create mode 100644 scripts/LendingPermissions.ts diff --git a/contracts/Aavegotchi/facets/AavegotchiGameFacet.sol b/contracts/Aavegotchi/facets/AavegotchiGameFacet.sol index 460c873d6..13ea33229 100644 --- a/contracts/Aavegotchi/facets/AavegotchiGameFacet.sol +++ b/contracts/Aavegotchi/facets/AavegotchiGameFacet.sol @@ -15,6 +15,8 @@ import {LibERC721Marketplace} from "../libraries/LibERC721Marketplace.sol"; import {LibGotchiLending} from "../libraries/LibGotchiLending.sol"; +import {LibBitmapHelpers} from "../libraries/LibBitmapHelpers.sol"; + contract AavegotchiGameFacet is Modifiers { /// @dev This emits when the approved address for an NFT is changed or /// reaffirmed. The zero address indicates there is no approved address. @@ -335,9 +337,16 @@ contract AavegotchiGameFacet is Modifiers { //no need to do checks on _gotchiId since realmDiamond handles that //first check if aavegotchi is lent if (LibGotchiLending.isAavegotchiLent(_gotchiId)) { - //check if channeling is allowed for the listing + //short-circuit here uint32 listingId = s.aavegotchiToListingId[_gotchiId]; - if (LibGotchiLending.getChannelingStatus(listingId) > 0) { + if (LibBitmapHelpers.getValueInByte(0, s.gotchiLendings[listingId].permissions) == 0) { + revert("This listing has no permissions set"); + } + + //check if channelling is allowed for the listing + //check that the modifier is at least 1 + //more checks can be introduced if more modifiers are added + if (LibBitmapHelpers.getValueInByte(0, s.gotchiLendings[listingId].permissions) > 0) { //more checks can be introduced here as different permissions are added LibAavegotchi._reduceAavegotchiKinship(_gotchiId, 2); } else { diff --git a/contracts/Aavegotchi/facets/GotchiLendingFacet.sol b/contracts/Aavegotchi/facets/GotchiLendingFacet.sol index 3c3298221..be8dea3f8 100644 --- a/contracts/Aavegotchi/facets/GotchiLendingFacet.sol +++ b/contracts/Aavegotchi/facets/GotchiLendingFacet.sol @@ -26,7 +26,7 @@ contract GotchiLendingFacet is Modifiers { address thirdParty; uint32 whitelistId; address[] revenueTokens; - uint256 channellingStatus; + uint256 permissions; } ///@notice Allow an aavegotchi lender (msg sender) or their lending operator to add request for lending @@ -47,7 +47,7 @@ contract GotchiLendingFacet is Modifiers { thirdParty: p.thirdParty, whitelistId: p.whitelistId, revenueTokens: p.revenueTokens, - channellingStatus: p.channellingStatus + permissions: p.permissions }); LibGotchiLending._addGotchiLending(addLendingStruct); } @@ -143,7 +143,7 @@ contract GotchiLendingFacet is Modifiers { address _thirdParty, uint32 _whitelistId, address[] calldata _revenueTokens, - uint256 _channellingStatus + uint256 _permissions ) external { uint8[3] memory revenueSplit = _revenueSplit; address[] memory revenueTokens = _revenueTokens; @@ -156,7 +156,7 @@ contract GotchiLendingFacet is Modifiers { thirdParty: _thirdParty, whitelistId: _whitelistId, revenueTokens: revenueTokens, - channellingStatus: _channellingStatus + permissions: _permissions }); addGotchiListing(listing); } @@ -181,7 +181,7 @@ contract GotchiLendingFacet is Modifiers { thirdParty: lending.thirdParty, whitelistId: lending.whitelistId, revenueTokens: lending.revenueTokens, - channellingStatus: lending.channellingStatus + permissions: lending.permissions }) ); } diff --git a/contracts/Aavegotchi/facets/LendingGetterAndSetterFacet.sol b/contracts/Aavegotchi/facets/LendingGetterAndSetterFacet.sol index 7b0db32b9..a4d2b5b30 100644 --- a/contracts/Aavegotchi/facets/LendingGetterAndSetterFacet.sol +++ b/contracts/Aavegotchi/facets/LendingGetterAndSetterFacet.sol @@ -7,6 +7,8 @@ import {Modifiers, GotchiLending} from "../libraries/LibAppStorage.sol"; import {LibMeta} from "../../shared/libraries/LibMeta.sol"; import {IERC20} from "../../shared/interfaces/IERC20.sol"; +import {LibBitmapHelpers} from "../libraries/LibBitmapHelpers.sol"; + contract LendingGetterAndSetterFacet is Modifiers { event LendingOperatorSet(address indexed lender, address indexed lendingOperator, uint32 indexed tokenId, bool isLendingOperator); @@ -67,10 +69,6 @@ contract LendingGetterAndSetterFacet is Modifiers { } } - function setLendingChannelingStatus(uint32 _listingId, uint256 _newChannelStatus) external { - LibGotchiLending.changeChannelingStatus(_listingId, _newChannelStatus); - } - /*///////////////////////////////////////////////////////////////////////////////// /// GETTERS /// /////////////////////////////////////////////////////////////////////////////////*/ @@ -209,7 +207,20 @@ contract LendingGetterAndSetterFacet is Modifiers { return LibGotchiLending.isAavegotchiListed(_erc721TokenId); } - function getListingChannelingStatus(uint32 _listingId) external view returns (uint256) { - return LibGotchiLending.getChannelingStatus(_listingId); + function getLendingPermissionBitmap(uint32 _listingId) external view returns (uint256) { + return s.gotchiLendings[_listingId].permissions; + } + + function getAllLendingPermissions(uint32 _listingId) external view returns (uint8[32] memory permissions_) { + permissions_ = LibBitmapHelpers.getAllNumbers(s.gotchiLendings[_listingId].permissions); + } + + function getLendingPermissionModifier(uint32 _listingId, uint8 _permissionIndex) public view returns (uint8) { + return LibBitmapHelpers.getValueInByte(_permissionIndex, s.gotchiLendings[_listingId].permissions); + } + + //simple check to see if a lending listing permission is set to none + function lendingPermissionSetToNone(uint32 _listingId) public view returns (bool) { + return getLendingPermissionModifier(_listingId, 0) == 0; } } diff --git a/contracts/Aavegotchi/libraries/LibAavegotchi.sol b/contracts/Aavegotchi/libraries/LibAavegotchi.sol index fa11346c7..db9667efb 100644 --- a/contracts/Aavegotchi/libraries/LibAavegotchi.sol +++ b/contracts/Aavegotchi/libraries/LibAavegotchi.sol @@ -369,7 +369,7 @@ library LibAavegotchi { AppStorage storage s = LibAppStorage.diamondStorage(); uint256 currentKinship = s.aavegotchis[_tokenId].interactionCount; if (_amount > currentKinship) { - revert("Kinship too low to channel"); + revert("Kinship too low to reduce"); } else { s.aavegotchis[_tokenId].interactionCount -= _amount; } diff --git a/contracts/Aavegotchi/libraries/LibAppStorage.sol b/contracts/Aavegotchi/libraries/LibAppStorage.sol index 2203f17c4..aed5aac5d 100644 --- a/contracts/Aavegotchi/libraries/LibAppStorage.sol +++ b/contracts/Aavegotchi/libraries/LibAppStorage.sol @@ -182,7 +182,11 @@ struct GotchiLending { // storage slot 5 address[] revenueTokens; //storage slot 6 - uint256 channellingStatus; + //this is a bitmap value that packs all the permissions of a listing into a single uint256 + //each index represents a permission, therefore 32 indexes,== 32 possible permissions + //index 0 means no permission by default + //indexes can store up to 256 values (0-255), each value representing a modifer for that permission, but we only use 0-9 + uint256 permissions; //0=none, 1=channelling } struct LendingListItem { diff --git a/contracts/Aavegotchi/libraries/LibBitmapHelpers.sol b/contracts/Aavegotchi/libraries/LibBitmapHelpers.sol new file mode 100644 index 000000000..182b17a44 --- /dev/null +++ b/contracts/Aavegotchi/libraries/LibBitmapHelpers.sol @@ -0,0 +1,31 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.1; + +library LibBitmapHelpers { + function getValueInByte(uint8 index, uint256 bitmap) internal pure returns (uint8) { + require(index < 32, "Invalid index"); // Ensure index is within bounds + //reverse index order + index = 31 - index; + bytes32 bitmapBytes = bytes32(bitmap); + uint8 byteValue = uint8(bitmapBytes[index]); + return byteValue; + } + + function getAllNumbers(uint256 bitmap) internal pure returns (uint8[32] memory) { + uint8[32] memory numbers; + for (uint8 i = 0; i < 32; i++) { + numbers[i] = getValueInByte(i, bitmap); + } + return numbers; + } + + function getSelectedNumbers(uint8[] memory bytePositions, uint256 bitmap) internal pure returns (uint8[] memory) { + uint8[] memory selectedNumbers = new uint8[](bytePositions.length); + + for (uint256 i = 0; i < bytePositions.length; i++) { + selectedNumbers[i] = getValueInByte(bytePositions[i], bitmap); + } + + return selectedNumbers; + } +} diff --git a/contracts/Aavegotchi/libraries/LibGotchiLending.sol b/contracts/Aavegotchi/libraries/LibGotchiLending.sol index 083bf87db..776c9384f 100644 --- a/contracts/Aavegotchi/libraries/LibGotchiLending.sol +++ b/contracts/Aavegotchi/libraries/LibGotchiLending.sol @@ -26,7 +26,7 @@ library LibEventStructContainers { uint32 whitelistId; address[] revenueTokens; uint256 timeCreated; - uint256 channellingStatus; + uint256 permissions; } struct GotchiLendingExecution { @@ -42,7 +42,7 @@ library LibEventStructContainers { uint32 whitelistId; address[] revenueTokens; uint256 timeAgreed; - uint256 channellingStatus; + uint256 permissions; } struct GotchiLendingCancellation { @@ -57,7 +57,7 @@ library LibEventStructContainers { uint32 whitelistId; address[] revenueTokens; uint256 timeCancelled; - uint256 channellingStatus; + uint256 permissions; } struct GotchiLendingClaim { @@ -74,7 +74,7 @@ library LibEventStructContainers { address[] revenueTokens; uint256[] amounts; uint256 timeClaimed; - uint256 channellingStatus; + uint256 permissions; } struct GotchiLendingEnd { @@ -90,7 +90,7 @@ library LibEventStructContainers { uint32 whitelistId; address[] revenueTokens; uint256 timeEnded; - uint256 channellingStatus; + uint256 permissions; } } @@ -109,8 +109,6 @@ library LibGotchiLending { event GotchiLendingClaimed(LibEventStructContainers.GotchiLendingClaim); event GotchiLendingEnded(LibEventStructContainers.GotchiLendingEnd); - event LendingChannelingStatusChanged(uint32 listingId, uint256 channellingStatus); - function getListing(uint32 _listingId) internal view returns (GotchiLending memory listing_) { AppStorage storage s = LibAppStorage.diamondStorage(); listing_ = s.gotchiLendings[_listingId]; @@ -138,7 +136,7 @@ library LibGotchiLending { address thirdParty; uint32 whitelistId; address[] revenueTokens; - uint256 channellingStatus; + uint256 permissions; //0 = none, 1 = channelling allowed for borrower } function _addGotchiLending(LibAddGotchiLending memory _listing) internal { @@ -176,14 +174,13 @@ library LibGotchiLending { lastClaimed: 0, canceled: false, completed: false, - channellingStatus: _listing.channellingStatus + permissions: _listing.permissions }); addLendingListItem(_listing.lender, listingId, "listed"); s.aavegotchis[_listing.tokenId].locked = true; emit GotchiLendingAdd(listingId); - emit LendingChannelingStatusChanged(listingId, _listing.channellingStatus); emit GotchiLendingAdded( LibEventStructContainers.GotchiLendingAdd( listingId, @@ -197,7 +194,7 @@ library LibGotchiLending { _listing.whitelistId, _listing.revenueTokens, block.timestamp, - _listing.channellingStatus + _listing.permissions ) ); } @@ -265,7 +262,7 @@ library LibGotchiLending { lending.whitelistId, lending.revenueTokens, currentTime, - lending.channellingStatus + lending.permissions ) ); } @@ -300,7 +297,7 @@ library LibGotchiLending { lending.whitelistId, lending.revenueTokens, block.timestamp, - lending.channellingStatus + lending.permissions ) ); } @@ -370,7 +367,7 @@ library LibGotchiLending { lending.revenueTokens, amounts, block.timestamp, - lending.channellingStatus + lending.permissions ) ); } @@ -413,7 +410,7 @@ library LibGotchiLending { lending.whitelistId, lending.revenueTokens, block.timestamp, - lending.channellingStatus + lending.permissions ) ); } @@ -601,22 +598,4 @@ library LibGotchiLending { lendingItem.parentListingId = 0; lendingItem.childListingId = 0; } - - function changeChannelingStatus(uint32 _listingId, uint256 _newChannelStatus) internal { - AppStorage storage s = LibAppStorage.diamondStorage(); - GotchiLending storage lending = s.gotchiLendings[_listingId]; - //make sure listing exists - require(lending.timeCreated != 0, "GotchiLending: Listing not found"); - address sender = LibMeta.msgSender(); - address lender = lending.lender; - require(lender == sender, "GotchiLending: Only lender can toggle channeling status"); - require(lending.timeAgreed == 0, "LibGotchiLending: Listing already agreed"); - s.gotchiLendings[_listingId].channellingStatus = _newChannelStatus; - emit LendingChannelingStatusChanged(_listingId, _newChannelStatus); - } - - function getChannelingStatus(uint32 _listingId) internal view returns (uint256) { - AppStorage storage s = LibAppStorage.diamondStorage(); - return s.gotchiLendings[_listingId].channellingStatus; - } } diff --git a/diamondABI/diamond.json b/diamondABI/diamond.json index 9512fc230..fbb2d370c 100644 --- a/diamondABI/diamond.json +++ b/diamondABI/diamond.json @@ -3882,11 +3882,7 @@ "name": "_revenueTokens", "type": "address[]" }, - { - "internalType": "uint256", - "name": "_channellingStatus", - "type": "uint256" - } + { "internalType": "uint256", "name": "_permissions", "type": "uint256" } ], "name": "addGotchiLending", "outputs": [], @@ -3923,7 +3919,7 @@ }, { "internalType": "uint256", - "name": "channellingStatus", + "name": "permissions", "type": "uint256" } ], @@ -3984,7 +3980,7 @@ }, { "internalType": "uint256", - "name": "channellingStatus", + "name": "permissions", "type": "uint256" } ], @@ -4985,6 +4981,21 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { "internalType": "uint32", "name": "_listingId", "type": "uint32" } + ], + "name": "getAllLendingPermissions", + "outputs": [ + { + "internalType": "uint8[32]", + "name": "permissions_", + "type": "uint8[32]" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { "internalType": "uint32", "name": "_erc721TokenId", "type": "uint32" } @@ -5031,7 +5042,7 @@ }, { "internalType": "uint256", - "name": "channellingStatus", + "name": "permissions", "type": "uint256" } ], @@ -5098,7 +5109,7 @@ }, { "internalType": "uint256", - "name": "channellingStatus", + "name": "permissions", "type": "uint256" } ], @@ -5366,7 +5377,7 @@ }, { "internalType": "uint256", - "name": "channellingStatus", + "name": "permissions", "type": "uint256" } ], @@ -5431,7 +5442,7 @@ }, { "internalType": "uint256", - "name": "channellingStatus", + "name": "permissions", "type": "uint256" } ], @@ -5445,21 +5456,31 @@ }, { "inputs": [ - { "internalType": "address", "name": "_lender", "type": "address" } + { "internalType": "uint32", "name": "_listingId", "type": "uint32" } ], - "name": "getLentTokenIdsOfLender", - "outputs": [ - { "internalType": "uint32[]", "name": "tokenIds_", "type": "uint32[]" } + "name": "getLendingPermissionBitmap", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint32", "name": "_listingId", "type": "uint32" }, + { "internalType": "uint8", "name": "_permissionIndex", "type": "uint8" } ], + "name": "getLendingPermissionModifier", + "outputs": [{ "internalType": "uint8", "name": "", "type": "uint8" }], "stateMutability": "view", "type": "function" }, { "inputs": [ - { "internalType": "uint32", "name": "_listingId", "type": "uint32" } + { "internalType": "address", "name": "_lender", "type": "address" } + ], + "name": "getLentTokenIdsOfLender", + "outputs": [ + { "internalType": "uint32[]", "name": "tokenIds_", "type": "uint32[]" } ], - "name": "getListingChannelingStatus", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], "stateMutability": "view", "type": "function" }, @@ -5511,7 +5532,7 @@ }, { "internalType": "uint256", - "name": "channellingStatus", + "name": "permissions", "type": "uint256" } ], @@ -5588,25 +5609,20 @@ }, { "inputs": [ - { "internalType": "address", "name": "token", "type": "address" } + { "internalType": "uint32", "name": "_listingId", "type": "uint32" } ], - "name": "revenueTokenAllowed", + "name": "lendingPermissionSetToNone", "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], "stateMutability": "view", "type": "function" }, { "inputs": [ - { "internalType": "uint32", "name": "_listingId", "type": "uint32" }, - { - "internalType": "uint256", - "name": "_newChannelStatus", - "type": "uint256" - } + { "internalType": "address", "name": "token", "type": "address" } ], - "name": "setLendingChannelingStatus", - "outputs": [], - "stateMutability": "nonpayable", + "name": "revenueTokenAllowed", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", "type": "function" }, { @@ -8432,7 +8448,7 @@ }, { "internalType": "uint256", - "name": "channellingStatus", + "name": "permissions", "type": "uint256" } ], @@ -8502,7 +8518,7 @@ }, { "internalType": "uint256", - "name": "channellingStatus", + "name": "permissions", "type": "uint256" } ], @@ -8584,7 +8600,7 @@ }, { "internalType": "uint256", - "name": "channellingStatus", + "name": "permissions", "type": "uint256" } ], @@ -8645,7 +8661,7 @@ { "internalType": "uint256", "name": "timeEnded", "type": "uint256" }, { "internalType": "uint256", - "name": "channellingStatus", + "name": "permissions", "type": "uint256" } ], @@ -8710,7 +8726,7 @@ }, { "internalType": "uint256", - "name": "channellingStatus", + "name": "permissions", "type": "uint256" } ], @@ -8723,25 +8739,6 @@ "name": "GotchiLendingExecuted", "type": "event" }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint32", - "name": "listingId", - "type": "uint32" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "channellingStatus", - "type": "uint256" - } - ], - "name": "LendingChannelingStatusChanged", - "type": "event" - }, { "anonymous": false, "inputs": [ diff --git a/scripts/LendingPermissions.ts b/scripts/LendingPermissions.ts new file mode 100644 index 000000000..78731ff5c --- /dev/null +++ b/scripts/LendingPermissions.ts @@ -0,0 +1,47 @@ +const noPermissionModifiers = { + noPermissionsAllowed: 0, + otherPermissionsAllowed: 1, +}; + +const channellingModifiers = { + none: 0, + channellingAllowedForAllBorrowers: 1, + //new channelling permission modifiers can be added here up to 8 +}; + +interface LendingPermissions { + noPermissions: 0 | 1; + channellingAllowed: 0 | 1; + + //new lending permissions can be added here up to 32 +} + +export function constructPermissionsBitMap(permissions: LendingPermissions) { + let permissionsBitMap = BigInt(0); + + if (permissions.noPermissions == 0) { + return 0; + } else { + //loop through all object keys and set the permissions + const totalKeys = Object.keys(permissions).length; + + for (let i = 0; i < totalKeys; i++) { + permissionsBitMap = storeValueInBitmap( + Object.values(permissions)[i], + i, + permissionsBitMap + ); + } + } + + return permissionsBitMap; +} + +function storeValueInBitmap(value: number, position: number, bitmap: any) { + bitmap &= ~(BigInt(0xff) << (BigInt(position) * BigInt(8))); + + // Set the value in the specified position + bitmap |= BigInt(value) << (BigInt(position) * BigInt(8)); + + return bitmap; +} diff --git a/scripts/upgrades/upgrade-kinshipBurning.ts b/scripts/upgrades/upgrade-kinshipBurning.ts index 81f9a3684..ef417c343 100644 --- a/scripts/upgrades/upgrade-kinshipBurning.ts +++ b/scripts/upgrades/upgrade-kinshipBurning.ts @@ -10,7 +10,7 @@ export async function upgrade() { const diamondUpgrader = "0x35fe3df776474a7b24b3b1ec6e745a830fdad351"; const addGotchiListing = - "(uint32 tokenId,uint96 initialCost,uint32 period,uint8[3] revenueSplit,address originalOwner,address thirdParty,uint32 whitelistId,address[] revenueTokens, uint256 channellingStatus)"; + "(uint32 tokenId,uint96 initialCost,uint32 period,uint8[3] revenueSplit,address originalOwner,address thirdParty,uint32 whitelistId,address[] revenueTokens, uint256 permissions)"; const addGotchiListingOld = "(uint32 tokenId,uint96 initialCost,uint32 period,uint8[3] revenueSplit,address originalOwner,address thirdParty,uint32 whitelistId,address[] revenueTokens)"; const facets: FacetsAndAddSelectors[] = [ @@ -18,7 +18,7 @@ export async function upgrade() { facetName: "GotchiLendingFacet", addSelectors: [ `function addGotchiListing(${addGotchiListing} memory p) external`, - `function addGotchiLending(uint32 _erc721TokenId,uint96 _initialCost,uint32 _period,uint8[3] calldata _revenueSplit,address _originalOwner,address _thirdParty,uint32 _whitelistId,address[] calldata _revenueTokens, uint256 channellingStatus) external`, + `function addGotchiLending(uint32 _erc721TokenId,uint96 _initialCost,uint32 _period,uint8[3] calldata _revenueSplit,address _originalOwner,address _thirdParty,uint32 _whitelistId,address[] calldata _revenueTokens, uint256 permissions) external`, `function batchAddGotchiListing(${addGotchiListing}[] memory listings) external`, ], removeSelectors: [ @@ -37,8 +37,10 @@ export async function upgrade() { { facetName: "LendingGetterAndSetterFacet", addSelectors: [ - ` function getListingChannelingStatus(uint32 _listingId) external view returns (uint256)`, - `function setLendingChannelingStatus(uint32 _listingId, uint256 _newChannelStatus) external`, + `function getLendingPermissionBitmap(uint32 _listingId) external view returns (uint256)`, + `function getAllLendingPermissions(uint32 _listingId) external view returns (uint8[32] memory permissions_)`, + `function getLendingPermissionModifier(uint32 _listingId, uint8 _permissionIndex) public view returns (uint8)`, + `function lendingPermissionSetToNone(uint32 _listingId) public view returns (bool) `, ], removeSelectors: [], }, diff --git a/test/testNewLendingEvents.ts b/test/testNewLendingEvents.ts index 9c2332a80..d4de1f319 100644 --- a/test/testNewLendingEvents.ts +++ b/test/testNewLendingEvents.ts @@ -10,23 +10,24 @@ import { expect } from "chai"; import { upgrade } from "../scripts/upgrades/upgrade-kinshipBurning"; import { BigNumber, ContractReceipt } from "ethers"; +import { constructPermissionsBitMap } from "../scripts/LendingPermissions"; const gCancel = [ - `event GotchiLendingCancelled((uint32 listingId,address lender,uint32 tokenId,uint96 initialCost,uint32 period,uint8[3] revenueSplit,address originalOwner,address thirdParty,uint32 whitelistId,address[] revenueTokens,uint256 timeCancelled,uint256 channellingStatus))`, + `event GotchiLendingCancelled((uint32 listingId,address lender,uint32 tokenId,uint96 initialCost,uint32 period,uint8[3] revenueSplit,address originalOwner,address thirdParty,uint32 whitelistId,address[] revenueTokens,uint256 timeCancelled,uint256 permissions))`, ]; const gAdd = [ - `event GotchiLendingAdded((uint32 listingId,address lender,uint32 tokenId,uint96 initialCost,uint32 period,uint8[3] revenueSplit,address originalOwner,address thirdParty,uint32 whitelistId,address[] revenueTokens,uint256 timeCreated,uint256 channellingStatus))`, + `event GotchiLendingAdded((uint32 listingId,address lender,uint32 tokenId,uint96 initialCost,uint32 period,uint8[3] revenueSplit,address originalOwner,address thirdParty,uint32 whitelistId,address[] revenueTokens,uint256 timeCreated,uint256 permissions))`, ]; const gExecute = [ - `event GotchiLendingExecuted((uint32 listingId,address lender,address borrower,uint32 tokenId,uint96 initialCost,uint32 period,uint8[3] revenueSplit,address originalOwner,address thirdParty,uint32 whitelistId,address[] revenueTokens,uint256 timeAgreed,uint256 channellingStatus))`, + `event GotchiLendingExecuted((uint32 listingId,address lender,address borrower,uint32 tokenId,uint96 initialCost,uint32 period,uint8[3] revenueSplit,address originalOwner,address thirdParty,uint32 whitelistId,address[] revenueTokens,uint256 timeAgreed,uint256 permissions))`, ]; const gClaim = [ - `event GotchiLendingClaimed((uint32 listingId,address lender,address borrower,uint32 tokenId,uint96 initialCost,uint32 period,uint8[3] revenueSplit,address originalOwner,address thirdParty,uint32 whitelistId,address[] revenueTokens,uint256[] amounts,uint256 timeClaimed,uint256 channellingStatus))`, + `event GotchiLendingClaimed((uint32 listingId,address lender,address borrower,uint32 tokenId,uint96 initialCost,uint32 period,uint8[3] revenueSplit,address originalOwner,address thirdParty,uint32 whitelistId,address[] revenueTokens,uint256[] amounts,uint256 timeClaimed,uint256 permissions))`, ]; const gEnd = [ - `event GotchiLendingEnded((uint32 listingId,address lender,address borrower,uint32 tokenId,uint96 initialCost,uint32 period,uint8[3] revenueSplit,address originalOwner,address thirdParty,uint32 whitelistId,address[] revenueTokens,uint256 timeEnded,uint256 channellingStatus))`, + `event GotchiLendingEnded((uint32 listingId,address lender,address borrower,uint32 tokenId,uint96 initialCost,uint32 period,uint8[3] revenueSplit,address originalOwner,address thirdParty,uint32 whitelistId,address[] revenueTokens,uint256 timeEnded,uint256 permissions))`, ]; const user: string = "0x4083FE56Ed8e2784CD720ec6851a01E7e931076b"; @@ -47,7 +48,7 @@ interface IGotchiLending { timeAgreed?: BigNumber; timeCreated?: BigNumber; borrower?: string; - channellingStatus: BigNumber; + permissions: BigNumber; } let gotchiLendingFacet: GotchiLendingFacet; @@ -68,7 +69,7 @@ describe("Testing Correct events for lending actions", async function () { thirdParty: any; whitelistId: any; revenueTokens: any; - channellingStatus: any; + permissions: any; listingId?: string; lender?: string; timeCancelled?: number; @@ -95,7 +96,7 @@ describe("Testing Correct events for lending actions", async function () { }); it("Test event for lending cancellation ", async function () { - const listingId = "1730619"; + const listingId = "1734651"; const info = await getAndSetFacet.getLendingListingInfo(listingId); @@ -120,7 +121,7 @@ describe("Testing Correct events for lending actions", async function () { whitelistId: info.whitelistId, revenueTokens: info.revenueTokens, timeCancelled: getCurrentTimestamp(), - channellingStatus: 0, + permissions: 0, }; //cache details for later @@ -134,6 +135,10 @@ describe("Testing Correct events for lending actions", async function () { modularAssert("cancel", tx2, GotchiLendingCancellation); }); + const channellingAllowed = constructPermissionsBitMap({ + noPermissions: 1, + channellingAllowed: 1, + }); it("Test event for lending creation ", async function () { //make sure the listingCancelled event is emitted //create similar listing @@ -146,7 +151,7 @@ describe("Testing Correct events for lending actions", async function () { cancellationDetails.thirdParty, cancellationDetails.whitelistId, cancellationDetails.revenueTokens, - 0 + channellingAllowed ); const tx2 = await tx.wait(); @@ -154,20 +159,6 @@ describe("Testing Correct events for lending actions", async function () { newListingId = await modularAssert("add", tx2, cancellationDetails); }); - it("Test for channeling permission changes", async function () { - getAndSetFacet = await impersonate(owner, getAndSetFacet, ethers, network); - - const tx = await getAndSetFacet.setLendingChannelingStatus(newListingId, 1); - - const tx2 = await tx.wait(); - - const newChannelingStatus = await getAndSetFacet.getListingChannelingStatus( - newListingId - ); - - expect(newChannelingStatus).to.equal(1); - }); - it("Test event for lending execution ", async function () { gotchiLendingFacet = await impersonate( user, @@ -188,14 +179,6 @@ describe("Testing Correct events for lending actions", async function () { newListingId = await modularAssert("execute", tx2, cancellationDetails); }); - it("Cannot change channeling status while listing has been executed", async function () { - getAndSetFacet = await impersonate(owner, getAndSetFacet, ethers, network); - - await expect( - getAndSetFacet.setLendingChannelingStatus(newListingId, 1) - ).to.be.revertedWith("LibGotchiLending: Listing already agreed"); - }); - it("Test event for lending claim ", async function () { const tx = await gotchiLendingFacet.claimGotchiLending( cancellationDetails.tokenId @@ -280,8 +263,8 @@ async function modularAssert( expect(pItems[0].revenueTokens.length).to.equal(info.revenueTokens.length); const currentChannelingStatus = - await getAndSetFacet.getListingChannelingStatus(pItems[0].listingId); - expect(pItems[0].channellingStatus).to.equal(currentChannelingStatus); + await getAndSetFacet.getLendingPermissionBitmap(pItems[0].listingId); + expect(pItems[0].permissions).to.equal(currentChannelingStatus); return pItems[0].listingId; } From 6f828d001550da35da49ae8ad789e840d54d51b8 Mon Sep 17 00:00:00 2001 From: Timidan Date: Fri, 19 May 2023 10:30:41 +0100 Subject: [PATCH 08/24] add extra function --- scripts/LendingPermissions.ts | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/scripts/LendingPermissions.ts b/scripts/LendingPermissions.ts index 78731ff5c..e18a49616 100644 --- a/scripts/LendingPermissions.ts +++ b/scripts/LendingPermissions.ts @@ -37,6 +37,24 @@ export function constructPermissionsBitMap(permissions: LendingPermissions) { return permissionsBitMap; } +export function getPermissionsFromBitmap(bitmap: bigint): LendingPermissions { + const permissions: LendingPermissions = { + noPermissions: 0, + channellingAllowed: 0, + // Initialize additional lending permissions here + }; + + const totalKeys = Object.keys(permissions).length; + + for (let i = 0; i < totalKeys; i++) { + const value = Number((bitmap >> BigInt(i * 8)) & BigInt(0xff)); + permissions[Object.keys(permissions)[i] as keyof LendingPermissions] = + value as 0 | 1; + } + + return permissions; +} + function storeValueInBitmap(value: number, position: number, bitmap: any) { bitmap &= ~(BigInt(0xff) << (BigInt(position) * BigInt(8))); From bb739addd9acccfd594a111baa8bc683d70197ff Mon Sep 17 00:00:00 2001 From: Timidan Date: Sun, 21 May 2023 02:20:45 +0100 Subject: [PATCH 09/24] include XP event --- contracts/Aavegotchi/facets/VRFFacet.sol | 9 +--- .../Aavegotchi/libraries/LibAavegotchi.sol | 7 +++ hardhat.config.ts | 54 +++++++++---------- svgs/wearables-sides.ts | 36 ++++++------- svgs/wearables.ts | 12 ++--- 5 files changed, 60 insertions(+), 58 deletions(-) diff --git a/contracts/Aavegotchi/facets/VRFFacet.sol b/contracts/Aavegotchi/facets/VRFFacet.sol index 08b93c645..10a420446 100644 --- a/contracts/Aavegotchi/facets/VRFFacet.sol +++ b/contracts/Aavegotchi/facets/VRFFacet.sol @@ -83,7 +83,7 @@ import {ILink} from "../interfaces/ILink.sol"; * @dev until it calls fulfillRandomness(). */ -contract VrfFacet is Modifiers { +contract VRFFacet is Modifiers { event VrfRandomNumber(uint256 indexed tokenId, uint256 randomNumber, uint256 _vrfTimeSet); event OpenPortals(uint256[] _tokenIds); event PortalOpened(uint256 indexed tokenId); @@ -194,12 +194,7 @@ contract VrfFacet is Modifiers { //@param _keyHash New keyhash //@param _vrfCoordinator The new vrf coordinator address //@param _link New LINK token contract address - function changeVrf( - uint256 _newFee, - bytes32 _keyHash, - address _vrfCoordinator, - address _link - ) external onlyOwner { + function changeVrf(uint256 _newFee, bytes32 _keyHash, address _vrfCoordinator, address _link) external onlyOwner { if (_newFee != 0) { s.fee = uint96(_newFee); } diff --git a/contracts/Aavegotchi/libraries/LibAavegotchi.sol b/contracts/Aavegotchi/libraries/LibAavegotchi.sol index db9667efb..a2ccf206b 100644 --- a/contracts/Aavegotchi/libraries/LibAavegotchi.sol +++ b/contracts/Aavegotchi/libraries/LibAavegotchi.sol @@ -9,6 +9,8 @@ import {IERC721} from "../../shared/interfaces/IERC721.sol"; import {LibERC721} from "../../shared/libraries/LibERC721.sol"; import {LibItems, ItemTypeIO} from "../libraries/LibItems.sol"; +import {LibXPAllocation} from "./LibXPAllocation.sol"; + struct AavegotchiCollateralTypeIO { address collateralType; AavegotchiCollateralTypeInfo collateralTypeInfo; @@ -372,6 +374,11 @@ library LibAavegotchi { revert("Kinship too low to reduce"); } else { s.aavegotchis[_tokenId].interactionCount -= _amount; + uint256[] memory tokenIds = new uint256[](1); + uint256[] memory xpAmounts = new uint256[](1); + tokenIds[0] = _tokenId; + xpAmounts[0] = s.aavegotchis[_tokenId].interactionCount; + emit LibXPAllocation.GrantExperience(tokenIds, xpAmounts); } } } diff --git a/hardhat.config.ts b/hardhat.config.ts index f12b6f79f..ea649aa5a 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -17,17 +17,17 @@ dotenv.config({ path: __dirname + "/.env" }); // require("./tasks/verifyFacet.js"); require("./tasks/deployUpgrade.ts"); -require("./tasks/addBaadgeSvgs.ts"); -require("./tasks/mintBaadgeSvgs.ts"); -require("./tasks/baadgeAirdrop.ts"); -require("./tasks/updateItemDimensions.ts"); -require("./tasks/updateSvgs.ts"); -require("./tasks/updateItemSideDimensions.ts"); -require("./tasks/batchDeposit.ts"); -require("./tasks/rarityPayouts"); -require("./tasks/grantXP_snapshot"); -require("./tasks/grantXP_minigame"); -require("./tasks/grantXP"); +// require("./tasks/addBaadgeSvgs.ts"); +// require("./tasks/mintBaadgeSvgs.ts"); +// require("./tasks/baadgeAirdrop.ts"); +// require("./tasks/updateItemDimensions.ts"); +// require("./tasks/updateSvgs.ts"); +// require("./tasks/updateItemSideDimensions.ts"); +// require("./tasks/batchDeposit.ts"); +// require("./tasks/rarityPayouts"); +// require("./tasks/grantXP_snapshot"); +// require("./tasks/grantXP_minigame"); +// require("./tasks/grantXP"); require("./tasks/addItemTypes"); require("./tasks/addWearableSets"); require("./tasks/grantXP_customValues"); @@ -60,27 +60,27 @@ export default { matic: { url: process.env.MATIC_URL, // url: 'https://rpc-mainnet.maticvigil.com/', - accounts: [process.env.ITEM_MANAGER], + accounts: [process.env.SECRET], // blockGasLimit: 20000000, blockGasLimit: 20000000, gasPrice: 400000000000, timeout: 90000, }, - tenderly: { - url: process.env.TENDERLY_FORK, - chainId: Number(process.env.TENDERLY_NETWORK_ID), - accounts: [process.env.ITEM_MANAGER], - // blockGasLimit: 20000000, - blockGasLimit: 20000000, - gasPrice: 1000000000, - timeout: 90000, - }, - mumbai: { - url: process.env.MUMBAI_URL, - accounts: [process.env.SECRET], - blockGasLimit: 20000000, - gasPrice: 1000000000, - }, + // tenderly: { + // url: process.env.TENDERLY_FORK, + // chainId: Number(process.env.TENDERLY_NETWORK_ID), + // accounts: [process.env.ITEM_MANAGER], + // // blockGasLimit: 20000000, + // blockGasLimit: 20000000, + // gasPrice: 1000000000, + // timeout: 90000, + // }, + // mumbai: { + // url: process.env.MUMBAI_URL, + // accounts: [process.env.SECRET], + // blockGasLimit: 20000000, + // gasPrice: 1000000000, + // }, // gorli: { // url: process.env.GORLI, // accounts: [process.env.SECRET], diff --git a/svgs/wearables-sides.ts b/svgs/wearables-sides.ts index a1721827d..16db3b050 100644 --- a/svgs/wearables-sides.ts +++ b/svgs/wearables-sides.ts @@ -367,14 +367,14 @@ export const wearablesRightSvgs = [ wearable("359_ForgeGogglesRight"), wearable("360_GeodeSmasherRight"), wearable("361_GeoRight"), - bodyWearableRight("362_FAKEShirt"), - wearable("363_FAKEBeretRight"), + bodyWearableRight("362_FakeShirt"), + wearable("363_FakeBeretRight"), wearable("364_PaintBrushRight"), wearable("365_PaintPaletteRight"), bodyWearableRight("366_HeavenlyRobes"), - wearable("367_EyesofDevotionRight"), - wearable("368_BeardofDivinityRight"), - wearable("369_StaffofCreationRight"), + wearable("367_EyesOfDevotionRight"), + wearable("368_BeardOfDivinityRight"), + wearable("369_StaffOfCreationRight"), ]; export const wearablesBackSvgs = [ @@ -744,14 +744,14 @@ export const wearablesBackSvgs = [ wearable("359_ForgeGogglesBack"), wearable("360_GeodeSmasherBack"), wearable("361_GeoBack"), - bodyWearable("362_FAKEShirt"), - wearable("363_FAKEBeretBack"), + bodyWearable("362_FakeShirt"), + wearable("363_FakeBeretBack"), wearable("364_PaintBrushBack"), wearable("365_PaintPaletteBack"), bodyWearable("366_HeavenlyRobes"), - "367_EyesofDevotionBack", - "368_BeardofDivinityBack", - wearable("369_StaffofCreationBack"), + "367_EyesOfDevotionBack", + "368_BeardOfDivinityBack", + wearable("369_StaffOfCreationBack"), ]; export const wearablesLeftSvgs = [ @@ -1121,14 +1121,14 @@ export const wearablesLeftSvgs = [ wearable("359_ForgeGogglesLeft"), wearable("360_GeodeSmasherLeft"), wearable("361_GeoLeft"), - bodyWearableLeft("362_FAKEShirt"), - wearable("363_FAKEBeretLeft"), + bodyWearableLeft("362_FakeShirt"), + wearable("363_FakeBeretLeft"), wearable("364_PaintBrushLeft"), wearable("365_PaintPaletteLeft"), bodyWearableLeft("366_HeavenlyRobes"), - wearable("367_EyesofDevotionLeft"), - wearable("368_BeardofDivinityLeft"), - wearable("369_StaffofCreationLeft"), + wearable("367_EyesOfDevotionLeft"), + wearable("368_BeardOfDivinityLeft"), + wearable("369_StaffOfCreationLeft"), ]; export const wearablesLeftSleeveSvgs = [ @@ -1331,7 +1331,7 @@ export const wearablesLeftSleeveSvgs = [ sleeveWearableLeft("318_TrackSuit"), // forge wearables sleeveWearableLeft("350_PixelcraftTee"), - sleeveWearableLeft("362_FAKEShirt"), + sleeveWearableLeft("362_FakeShirt"), sleeveWearableLeft("366_HeavenlyRobes"), ]; @@ -1535,7 +1535,7 @@ export const wearablesRightSleeveSvgs = [ sleeveWearableRight("318_TrackSuit"), // forge wearables sleeveWearableRight("350_PixelcraftTee"), - sleeveWearableRight("362_FAKEShirt"), + sleeveWearableRight("362_FakeShirt"), sleeveWearableRight("366_HeavenlyRobes"), ]; @@ -1737,7 +1737,7 @@ export const wearablesBackSleeveSvgs = [ sleeveWearableRight("318_TrackSuit"), // forge wearables sleeveWearableRight("350_PixelcraftTee"), - sleeveWearableRight("362_FAKEShirt"), + sleeveWearableRight("362_FakeShirt"), sleeveWearableRight("366_HeavenlyRobes"), ]; diff --git a/svgs/wearables.ts b/svgs/wearables.ts index ac70263ec..72110662e 100644 --- a/svgs/wearables.ts +++ b/svgs/wearables.ts @@ -368,14 +368,14 @@ export const wearablesSvgs = [ wearable("359_ForgeGoggles"), wearable("360_GeodeSmasher"), wearable("361_Geo"), - bodyWearable("362_FAKEShirt"), - wearable("363_FAKEBeret"), + bodyWearable("362_FakeShirt"), + wearable("363_FakeBeret"), wearable("364_PaintBrush"), wearable("365_PaintPalette"), bodyWearable("366_HeavenlyRobes"), - wearable("367_EyesofDevotion"), - wearable("368_BeardofDivinity"), - wearable("369_StaffofCreation"), + wearable("367_EyesOfDevotion"), + wearable("368_BeardOfDivinity"), + wearable("369_StaffOfCreation"), ]; export const sleeveSvgs = [ @@ -577,7 +577,7 @@ export const sleeveSvgs = [ sleeves("318_TrackSuit"), // forge wearables sleeves("350_PixelcraftTee"), - sleeves("362_FAKEShirt"), + sleeves("362_FakeShirt"), sleeves("366_HeavenlyRobes"), ]; From 03e7927a073239312d18c1c7dc6088de673d039f Mon Sep 17 00:00:00 2001 From: Timidan Date: Sun, 21 May 2023 10:25:37 +0100 Subject: [PATCH 10/24] Revert "include XP event" This reverts commit bb739addd9acccfd594a111baa8bc683d70197ff. --- contracts/Aavegotchi/facets/VRFFacet.sol | 9 +++- .../Aavegotchi/libraries/LibAavegotchi.sol | 7 --- hardhat.config.ts | 54 +++++++++---------- svgs/wearables-sides.ts | 36 ++++++------- svgs/wearables.ts | 12 ++--- 5 files changed, 58 insertions(+), 60 deletions(-) diff --git a/contracts/Aavegotchi/facets/VRFFacet.sol b/contracts/Aavegotchi/facets/VRFFacet.sol index 10a420446..08b93c645 100644 --- a/contracts/Aavegotchi/facets/VRFFacet.sol +++ b/contracts/Aavegotchi/facets/VRFFacet.sol @@ -83,7 +83,7 @@ import {ILink} from "../interfaces/ILink.sol"; * @dev until it calls fulfillRandomness(). */ -contract VRFFacet is Modifiers { +contract VrfFacet is Modifiers { event VrfRandomNumber(uint256 indexed tokenId, uint256 randomNumber, uint256 _vrfTimeSet); event OpenPortals(uint256[] _tokenIds); event PortalOpened(uint256 indexed tokenId); @@ -194,7 +194,12 @@ contract VRFFacet is Modifiers { //@param _keyHash New keyhash //@param _vrfCoordinator The new vrf coordinator address //@param _link New LINK token contract address - function changeVrf(uint256 _newFee, bytes32 _keyHash, address _vrfCoordinator, address _link) external onlyOwner { + function changeVrf( + uint256 _newFee, + bytes32 _keyHash, + address _vrfCoordinator, + address _link + ) external onlyOwner { if (_newFee != 0) { s.fee = uint96(_newFee); } diff --git a/contracts/Aavegotchi/libraries/LibAavegotchi.sol b/contracts/Aavegotchi/libraries/LibAavegotchi.sol index a2ccf206b..db9667efb 100644 --- a/contracts/Aavegotchi/libraries/LibAavegotchi.sol +++ b/contracts/Aavegotchi/libraries/LibAavegotchi.sol @@ -9,8 +9,6 @@ import {IERC721} from "../../shared/interfaces/IERC721.sol"; import {LibERC721} from "../../shared/libraries/LibERC721.sol"; import {LibItems, ItemTypeIO} from "../libraries/LibItems.sol"; -import {LibXPAllocation} from "./LibXPAllocation.sol"; - struct AavegotchiCollateralTypeIO { address collateralType; AavegotchiCollateralTypeInfo collateralTypeInfo; @@ -374,11 +372,6 @@ library LibAavegotchi { revert("Kinship too low to reduce"); } else { s.aavegotchis[_tokenId].interactionCount -= _amount; - uint256[] memory tokenIds = new uint256[](1); - uint256[] memory xpAmounts = new uint256[](1); - tokenIds[0] = _tokenId; - xpAmounts[0] = s.aavegotchis[_tokenId].interactionCount; - emit LibXPAllocation.GrantExperience(tokenIds, xpAmounts); } } } diff --git a/hardhat.config.ts b/hardhat.config.ts index ea649aa5a..f12b6f79f 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -17,17 +17,17 @@ dotenv.config({ path: __dirname + "/.env" }); // require("./tasks/verifyFacet.js"); require("./tasks/deployUpgrade.ts"); -// require("./tasks/addBaadgeSvgs.ts"); -// require("./tasks/mintBaadgeSvgs.ts"); -// require("./tasks/baadgeAirdrop.ts"); -// require("./tasks/updateItemDimensions.ts"); -// require("./tasks/updateSvgs.ts"); -// require("./tasks/updateItemSideDimensions.ts"); -// require("./tasks/batchDeposit.ts"); -// require("./tasks/rarityPayouts"); -// require("./tasks/grantXP_snapshot"); -// require("./tasks/grantXP_minigame"); -// require("./tasks/grantXP"); +require("./tasks/addBaadgeSvgs.ts"); +require("./tasks/mintBaadgeSvgs.ts"); +require("./tasks/baadgeAirdrop.ts"); +require("./tasks/updateItemDimensions.ts"); +require("./tasks/updateSvgs.ts"); +require("./tasks/updateItemSideDimensions.ts"); +require("./tasks/batchDeposit.ts"); +require("./tasks/rarityPayouts"); +require("./tasks/grantXP_snapshot"); +require("./tasks/grantXP_minigame"); +require("./tasks/grantXP"); require("./tasks/addItemTypes"); require("./tasks/addWearableSets"); require("./tasks/grantXP_customValues"); @@ -60,27 +60,27 @@ export default { matic: { url: process.env.MATIC_URL, // url: 'https://rpc-mainnet.maticvigil.com/', - accounts: [process.env.SECRET], + accounts: [process.env.ITEM_MANAGER], // blockGasLimit: 20000000, blockGasLimit: 20000000, gasPrice: 400000000000, timeout: 90000, }, - // tenderly: { - // url: process.env.TENDERLY_FORK, - // chainId: Number(process.env.TENDERLY_NETWORK_ID), - // accounts: [process.env.ITEM_MANAGER], - // // blockGasLimit: 20000000, - // blockGasLimit: 20000000, - // gasPrice: 1000000000, - // timeout: 90000, - // }, - // mumbai: { - // url: process.env.MUMBAI_URL, - // accounts: [process.env.SECRET], - // blockGasLimit: 20000000, - // gasPrice: 1000000000, - // }, + tenderly: { + url: process.env.TENDERLY_FORK, + chainId: Number(process.env.TENDERLY_NETWORK_ID), + accounts: [process.env.ITEM_MANAGER], + // blockGasLimit: 20000000, + blockGasLimit: 20000000, + gasPrice: 1000000000, + timeout: 90000, + }, + mumbai: { + url: process.env.MUMBAI_URL, + accounts: [process.env.SECRET], + blockGasLimit: 20000000, + gasPrice: 1000000000, + }, // gorli: { // url: process.env.GORLI, // accounts: [process.env.SECRET], diff --git a/svgs/wearables-sides.ts b/svgs/wearables-sides.ts index 16db3b050..a1721827d 100644 --- a/svgs/wearables-sides.ts +++ b/svgs/wearables-sides.ts @@ -367,14 +367,14 @@ export const wearablesRightSvgs = [ wearable("359_ForgeGogglesRight"), wearable("360_GeodeSmasherRight"), wearable("361_GeoRight"), - bodyWearableRight("362_FakeShirt"), - wearable("363_FakeBeretRight"), + bodyWearableRight("362_FAKEShirt"), + wearable("363_FAKEBeretRight"), wearable("364_PaintBrushRight"), wearable("365_PaintPaletteRight"), bodyWearableRight("366_HeavenlyRobes"), - wearable("367_EyesOfDevotionRight"), - wearable("368_BeardOfDivinityRight"), - wearable("369_StaffOfCreationRight"), + wearable("367_EyesofDevotionRight"), + wearable("368_BeardofDivinityRight"), + wearable("369_StaffofCreationRight"), ]; export const wearablesBackSvgs = [ @@ -744,14 +744,14 @@ export const wearablesBackSvgs = [ wearable("359_ForgeGogglesBack"), wearable("360_GeodeSmasherBack"), wearable("361_GeoBack"), - bodyWearable("362_FakeShirt"), - wearable("363_FakeBeretBack"), + bodyWearable("362_FAKEShirt"), + wearable("363_FAKEBeretBack"), wearable("364_PaintBrushBack"), wearable("365_PaintPaletteBack"), bodyWearable("366_HeavenlyRobes"), - "367_EyesOfDevotionBack", - "368_BeardOfDivinityBack", - wearable("369_StaffOfCreationBack"), + "367_EyesofDevotionBack", + "368_BeardofDivinityBack", + wearable("369_StaffofCreationBack"), ]; export const wearablesLeftSvgs = [ @@ -1121,14 +1121,14 @@ export const wearablesLeftSvgs = [ wearable("359_ForgeGogglesLeft"), wearable("360_GeodeSmasherLeft"), wearable("361_GeoLeft"), - bodyWearableLeft("362_FakeShirt"), - wearable("363_FakeBeretLeft"), + bodyWearableLeft("362_FAKEShirt"), + wearable("363_FAKEBeretLeft"), wearable("364_PaintBrushLeft"), wearable("365_PaintPaletteLeft"), bodyWearableLeft("366_HeavenlyRobes"), - wearable("367_EyesOfDevotionLeft"), - wearable("368_BeardOfDivinityLeft"), - wearable("369_StaffOfCreationLeft"), + wearable("367_EyesofDevotionLeft"), + wearable("368_BeardofDivinityLeft"), + wearable("369_StaffofCreationLeft"), ]; export const wearablesLeftSleeveSvgs = [ @@ -1331,7 +1331,7 @@ export const wearablesLeftSleeveSvgs = [ sleeveWearableLeft("318_TrackSuit"), // forge wearables sleeveWearableLeft("350_PixelcraftTee"), - sleeveWearableLeft("362_FakeShirt"), + sleeveWearableLeft("362_FAKEShirt"), sleeveWearableLeft("366_HeavenlyRobes"), ]; @@ -1535,7 +1535,7 @@ export const wearablesRightSleeveSvgs = [ sleeveWearableRight("318_TrackSuit"), // forge wearables sleeveWearableRight("350_PixelcraftTee"), - sleeveWearableRight("362_FakeShirt"), + sleeveWearableRight("362_FAKEShirt"), sleeveWearableRight("366_HeavenlyRobes"), ]; @@ -1737,7 +1737,7 @@ export const wearablesBackSleeveSvgs = [ sleeveWearableRight("318_TrackSuit"), // forge wearables sleeveWearableRight("350_PixelcraftTee"), - sleeveWearableRight("362_FakeShirt"), + sleeveWearableRight("362_FAKEShirt"), sleeveWearableRight("366_HeavenlyRobes"), ]; diff --git a/svgs/wearables.ts b/svgs/wearables.ts index 72110662e..ac70263ec 100644 --- a/svgs/wearables.ts +++ b/svgs/wearables.ts @@ -368,14 +368,14 @@ export const wearablesSvgs = [ wearable("359_ForgeGoggles"), wearable("360_GeodeSmasher"), wearable("361_Geo"), - bodyWearable("362_FakeShirt"), - wearable("363_FakeBeret"), + bodyWearable("362_FAKEShirt"), + wearable("363_FAKEBeret"), wearable("364_PaintBrush"), wearable("365_PaintPalette"), bodyWearable("366_HeavenlyRobes"), - wearable("367_EyesOfDevotion"), - wearable("368_BeardOfDivinity"), - wearable("369_StaffOfCreation"), + wearable("367_EyesofDevotion"), + wearable("368_BeardofDivinity"), + wearable("369_StaffofCreation"), ]; export const sleeveSvgs = [ @@ -577,7 +577,7 @@ export const sleeveSvgs = [ sleeves("318_TrackSuit"), // forge wearables sleeves("350_PixelcraftTee"), - sleeves("362_FakeShirt"), + sleeves("362_FAKEShirt"), sleeves("366_HeavenlyRobes"), ]; From 23d2e148be924c9f3eb8d71077c955da37c8e9c5 Mon Sep 17 00:00:00 2001 From: Timidan Date: Sun, 21 May 2023 10:56:41 +0100 Subject: [PATCH 11/24] include xp event --- contracts/Aavegotchi/libraries/LibAavegotchi.sol | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/contracts/Aavegotchi/libraries/LibAavegotchi.sol b/contracts/Aavegotchi/libraries/LibAavegotchi.sol index db9667efb..08b858623 100644 --- a/contracts/Aavegotchi/libraries/LibAavegotchi.sol +++ b/contracts/Aavegotchi/libraries/LibAavegotchi.sol @@ -61,6 +61,7 @@ library LibAavegotchi { uint8 constant STATUS_AAVEGOTCHI = 3; event AavegotchiInteract(uint256 indexed _tokenId, uint256 kinship); + event RemoveExperience(uint256[] _tokenIds, uint256[] _xpValues); function toNumericTraits( uint256 _randomNumber, @@ -372,6 +373,11 @@ library LibAavegotchi { revert("Kinship too low to reduce"); } else { s.aavegotchis[_tokenId].interactionCount -= _amount; + uint256[] memory tokenIds = new uint256[](1); + uint256[] memory xpAmounts = new uint256[](1); + tokenIds[0] = _tokenId; + xpAmounts[0] = _amount; + emit RemoveExperience(tokenIds, xpAmounts); } } } From 140c870b9b07f7fa1e2ed049fcf9460866d6ee4b Mon Sep 17 00:00:00 2001 From: Timidan Date: Sun, 21 May 2023 15:17:57 +0100 Subject: [PATCH 12/24] add in new event --- contracts/Aavegotchi/libraries/LibAavegotchi.sol | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/contracts/Aavegotchi/libraries/LibAavegotchi.sol b/contracts/Aavegotchi/libraries/LibAavegotchi.sol index 08b858623..09c6014e8 100644 --- a/contracts/Aavegotchi/libraries/LibAavegotchi.sol +++ b/contracts/Aavegotchi/libraries/LibAavegotchi.sol @@ -61,7 +61,7 @@ library LibAavegotchi { uint8 constant STATUS_AAVEGOTCHI = 3; event AavegotchiInteract(uint256 indexed _tokenId, uint256 kinship); - event RemoveExperience(uint256[] _tokenIds, uint256[] _xpValues); + event KinshipBurned(uint256 _tokenId, uint256 _value); function toNumericTraits( uint256 _randomNumber, @@ -373,11 +373,7 @@ library LibAavegotchi { revert("Kinship too low to reduce"); } else { s.aavegotchis[_tokenId].interactionCount -= _amount; - uint256[] memory tokenIds = new uint256[](1); - uint256[] memory xpAmounts = new uint256[](1); - tokenIds[0] = _tokenId; - xpAmounts[0] = _amount; - emit RemoveExperience(tokenIds, xpAmounts); + emit KinshipBurned(_tokenId, _amount); } } } From b1667c3288b92beaf86bd81da089c48b5547f379 Mon Sep 17 00:00:00 2001 From: Timidan Date: Tue, 23 May 2023 16:14:15 +0100 Subject: [PATCH 13/24] update diamond abi --- diamondABI/diamond.json | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/diamondABI/diamond.json b/diamondABI/diamond.json index fbb2d370c..2fb232787 100644 --- a/diamondABI/diamond.json +++ b/diamondABI/diamond.json @@ -8241,6 +8241,25 @@ "name": "AavegotchiInteract", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_value", + "type": "uint256" + } + ], + "name": "KinshipBurned", + "type": "event" + }, { "anonymous": false, "inputs": [ From 09565c0b6c0954a17c7190a0124b15fa87d977b0 Mon Sep 17 00:00:00 2001 From: Timidan Date: Tue, 23 May 2023 16:35:38 +0100 Subject: [PATCH 14/24] edit event values --- contracts/Aavegotchi/libraries/LibAavegotchi.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/Aavegotchi/libraries/LibAavegotchi.sol b/contracts/Aavegotchi/libraries/LibAavegotchi.sol index 09c6014e8..54a918d62 100644 --- a/contracts/Aavegotchi/libraries/LibAavegotchi.sol +++ b/contracts/Aavegotchi/libraries/LibAavegotchi.sol @@ -373,7 +373,7 @@ library LibAavegotchi { revert("Kinship too low to reduce"); } else { s.aavegotchis[_tokenId].interactionCount -= _amount; - emit KinshipBurned(_tokenId, _amount); + emit KinshipBurned(_tokenId, s.aavegotchis[_tokenId].interactionCount); } } } From 43ed0d92566c1c58dd18b18b822d5a9c8d591649 Mon Sep 17 00:00:00 2001 From: orionstardust Date: Tue, 23 May 2023 22:39:14 -0500 Subject: [PATCH 15/24] Fix an issue in forge updates --- scripts/upgrades/forge/upgrade-deployAndUpgradeForgeDiamond.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/scripts/upgrades/forge/upgrade-deployAndUpgradeForgeDiamond.ts b/scripts/upgrades/forge/upgrade-deployAndUpgradeForgeDiamond.ts index 85d6de892..346e4a6da 100644 --- a/scripts/upgrades/forge/upgrade-deployAndUpgradeForgeDiamond.ts +++ b/scripts/upgrades/forge/upgrade-deployAndUpgradeForgeDiamond.ts @@ -78,6 +78,8 @@ export async function deployAndUpgradeForgeDiamond() { // "function mintEssence(address owner, uint256 gotchiId) external", "function mintEssence(address owner) external", "function adminMint(address account, uint256 id, uint256 amount) external", + "function fixInvalidTokenIds(address[] calldata owners) external", + "function adminMintBatch(address to, uint256[] memory ids, uint256[] memory amounts) external", ], removeSelectors: [], }, @@ -86,6 +88,7 @@ export async function deployAndUpgradeForgeDiamond() { facetName: "ForgeDAOFacet", addSelectors: [ "function setAavegotchiDaoAddress(address daoAddress) external", + "function setAavegotchiDiamondAddress(address _address) external", "function setGltrAddress(address gltr) external", "function getAlloyDaoFeeInBips() external view returns (uint256)", "function setAlloyDaoFeeInBips(uint256 alloyDaoFeeInBips) external", From 1cb3b84e88fcba0a738b0b3ae19160dd77a5f14a Mon Sep 17 00:00:00 2001 From: Timidan Date: Fri, 26 May 2023 11:18:13 +0100 Subject: [PATCH 16/24] better naming --- scripts/LendingPermissions.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/LendingPermissions.ts b/scripts/LendingPermissions.ts index e18a49616..1b3c50d9b 100644 --- a/scripts/LendingPermissions.ts +++ b/scripts/LendingPermissions.ts @@ -10,7 +10,7 @@ const channellingModifiers = { }; interface LendingPermissions { - noPermissions: 0 | 1; + permissionsAllowed: 0 | 1; channellingAllowed: 0 | 1; //new lending permissions can be added here up to 32 @@ -19,7 +19,7 @@ interface LendingPermissions { export function constructPermissionsBitMap(permissions: LendingPermissions) { let permissionsBitMap = BigInt(0); - if (permissions.noPermissions == 0) { + if (permissions.permissionsAllowed == 0) { return 0; } else { //loop through all object keys and set the permissions @@ -39,7 +39,7 @@ export function constructPermissionsBitMap(permissions: LendingPermissions) { export function getPermissionsFromBitmap(bitmap: bigint): LendingPermissions { const permissions: LendingPermissions = { - noPermissions: 0, + permissionsAllowed: 0, channellingAllowed: 0, // Initialize additional lending permissions here }; From f48d261621d7575a8f167585733b96be698ad6de Mon Sep 17 00:00:00 2001 From: orionstardust Date: Thu, 1 Jun 2023 23:02:50 -0500 Subject: [PATCH 17/24] Fix issues in Wearable Diamond and cleanup --- .../WearableDiamond/facets/WearablesFacet.sol | 30 ++++++------------- .../libraries/WearableLibDiamond.sol | 16 ++++------ .../upgrades/upgrade-deployWearableDiamond.ts | 15 ++++++++-- 3 files changed, 28 insertions(+), 33 deletions(-) diff --git a/contracts/Aavegotchi/WearableDiamond/facets/WearablesFacet.sol b/contracts/Aavegotchi/WearableDiamond/facets/WearablesFacet.sol index c4c73f350..2a25345c0 100644 --- a/contracts/Aavegotchi/WearableDiamond/facets/WearablesFacet.sol +++ b/contracts/Aavegotchi/WearableDiamond/facets/WearablesFacet.sol @@ -9,16 +9,16 @@ import {ItemsFacet} from "../../facets/ItemsFacet.sol"; import {AavegotchiFacet} from "../../facets/AavegotchiFacet.sol"; contract WearablesFacet { - function periphery() internal pure returns (PeripheryFacet pFacet) { - pFacet = PeripheryFacet(WearableLibDiamond.AAVEGOTCHI_DIAMOND); + function periphery() internal view returns (PeripheryFacet pFacet) { + pFacet = PeripheryFacet(WearableLibDiamond.aavegotchiDiamond()); } - function itemsFacet() internal pure returns (ItemsFacet iFacet) { - iFacet = ItemsFacet(WearableLibDiamond.AAVEGOTCHI_DIAMOND); + function itemsFacet() internal view returns (ItemsFacet iFacet) { + iFacet = ItemsFacet(WearableLibDiamond.aavegotchiDiamond()); } - function aavegotchiFacet() internal pure returns (AavegotchiFacet aFacet) { - aFacet = AavegotchiFacet(WearableLibDiamond.AAVEGOTCHI_DIAMOND); + function aavegotchiFacet() internal view returns (AavegotchiFacet aFacet) { + aFacet = AavegotchiFacet(WearableLibDiamond.aavegotchiDiamond()); } //READ @@ -39,7 +39,7 @@ contract WearablesFacet { approved_ = aavegotchiFacet().isApprovedForAll(_owner, _operator); } - function tokenURI(uint256 _tokenId) external pure returns (string memory) { + function tokenURI(uint256 _tokenId) external view returns (string memory) { return aavegotchiFacet().tokenURI(_tokenId); } @@ -65,25 +65,13 @@ contract WearablesFacet { } } - function safeTransferFrom( - address _from, - address _to, - uint256 _id, - uint256 _value, - bytes calldata _data - ) external { + function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data) external { periphery().peripherySafeTransferFrom(msg.sender, _from, _to, _id, _value, _data); //emit event LibEventHandler._receiveAndEmitTransferSingleEvent(msg.sender, _from, _to, _id, _value); } - function safeBatchTransferFrom( - address _from, - address _to, - uint256[] calldata _ids, - uint256[] calldata _values, - bytes calldata _data - ) external { + function safeBatchTransferFrom(address _from, address _to, uint256[] calldata _ids, uint256[] calldata _values, bytes calldata _data) external { periphery().peripherySafeBatchTransferFrom(msg.sender, _from, _to, _ids, _values, _data); //emit event LibEventHandler._receiveAndEmitTransferBatchEvent(msg.sender, _from, _to, _ids, _values); diff --git a/contracts/Aavegotchi/WearableDiamond/libraries/WearableLibDiamond.sol b/contracts/Aavegotchi/WearableDiamond/libraries/WearableLibDiamond.sol index f802a0fb8..63041139b 100644 --- a/contracts/Aavegotchi/WearableDiamond/libraries/WearableLibDiamond.sol +++ b/contracts/Aavegotchi/WearableDiamond/libraries/WearableLibDiamond.sol @@ -67,17 +67,17 @@ library WearableLibDiamond { require(LibMeta.msgSender() == diamondStorage().contractOwner, "LibDiamond: Must be contract owner"); } + function aavegotchiDiamond() internal view returns (address aavegotchiDiamond_) { + aavegotchiDiamond_ = diamondStorage().aavegotchiDiamond; + } + function enforceIsDiamond() internal view { require(msg.sender == diamondStorage().aavegotchiDiamond, "LibDiamond: Caller must be Aavegotchi Diamond"); } event DiamondCut(IDiamondCut.FacetCut[] _diamondCut, address _init, bytes _calldata); - function addDiamondFunctions( - address _diamondCutFacet, - address _diamondLoupeFacet, - address _ownershipFacet - ) internal { + function addDiamondFunctions(address _diamondCutFacet, address _diamondLoupeFacet, address _ownershipFacet) internal { IDiamondCut.FacetCut[] memory cut = new IDiamondCut.FacetCut[](3); bytes4[] memory functionSelectors = new bytes4[](1); functionSelectors[0] = IDiamondCut.diamondCut.selector; @@ -101,11 +101,7 @@ library WearableLibDiamond { } // Internal function version of diamondCut - function diamondCut( - IDiamondCut.FacetCut[] memory _diamondCut, - address _init, - bytes memory _calldata - ) internal { + function diamondCut(IDiamondCut.FacetCut[] memory _diamondCut, address _init, bytes memory _calldata) internal { for (uint256 facetIndex; facetIndex < _diamondCut.length; facetIndex++) { IDiamondCut.FacetCutAction action = _diamondCut[facetIndex].action; if (action == IDiamondCut.FacetCutAction.Add) { diff --git a/scripts/upgrades/upgrade-deployWearableDiamond.ts b/scripts/upgrades/upgrade-deployWearableDiamond.ts index 542af03ea..30103f458 100644 --- a/scripts/upgrades/upgrade-deployWearableDiamond.ts +++ b/scripts/upgrades/upgrade-deployWearableDiamond.ts @@ -15,7 +15,12 @@ const aavegotchiCutFacet = "0x4f908Fa47F10bc2254dae7c74d8B797C1749A8a6"; const aavegotchiLoupeFacet = "0x58f64b56B1e15D8C932c51287d814EDaa8d6feb9"; const aavegotchiOwnerShipFacet = "0xAE7DF9f59FEc446903c64f21a76d039Bc81712ef"; -export async function deployAndUpgradeWearableDiamond(cutFacet: string, loupeFacet: string, ownerShipFacet: string, aavegotchiDiamond: string) { +export async function deployAndUpgradeWearableDiamond( + cutFacet: string, + loupeFacet: string, + ownerShipFacet: string, + aavegotchiDiamond: string +) { console.log("Deploying wearable diamond"); // deploy Wearable Diamond const Diamond = (await ethers.getContractFactory( @@ -52,6 +57,7 @@ export async function deployAndUpgradeWearableDiamond(cutFacet: string, loupeFac "function setBaseURI(string memory _value) external", "function safeTransferFrom(address _from,address _to,uint256 _id,uint256 _value,bytes calldata _data) external", "function safeBatchTransferFrom(address _from,address _to,uint256[] calldata _ids,uint256[] calldata _values,bytes calldata _data) external", + "function tokenURI(uint256 _tokenId) external view returns (string memory)", ], removeSelectors: [], }, @@ -85,7 +91,12 @@ export async function deployAndUpgradeWearableDiamond(cutFacet: string, loupeFac } if (require.main === module) { - deployAndUpgradeWearableDiamond(aavegotchiCutFacet, aavegotchiLoupeFacet, aavegotchiOwnerShipFacet, aavegotchiDiamondAddressMatic) + deployAndUpgradeWearableDiamond( + aavegotchiCutFacet, + aavegotchiLoupeFacet, + aavegotchiOwnerShipFacet, + aavegotchiDiamondAddressMatic + ) .then(() => process.exit(0)) // .then(() => console.log('upgrade completed') /* process.exit(0) */) .catch((error) => { From cef172616c5960bfefb655e7eaa5219a7a22d9ca Mon Sep 17 00:00:00 2001 From: orionstardust Date: Thu, 1 Jun 2023 23:12:12 -0500 Subject: [PATCH 18/24] Fix issues in Forge Diamond and cleanup --- .../Aavegotchi/ForgeDiamond/ForgeDiamond.sol | 6 +- .../ForgeDiamond/facets/ForgeFacet.sol | 76 +++++-------------- .../libraries/ForgeLibDiamond.sol | 23 +++--- helpers/constants.ts | 2 + scripts/deploy-mumbai.ts | 2 +- .../upgrade-deployAndUpgradeForgeDiamond.ts | 16 +++- 6 files changed, 55 insertions(+), 70 deletions(-) diff --git a/contracts/Aavegotchi/ForgeDiamond/ForgeDiamond.sol b/contracts/Aavegotchi/ForgeDiamond/ForgeDiamond.sol index e6d51891a..d793bc5e5 100644 --- a/contracts/Aavegotchi/ForgeDiamond/ForgeDiamond.sol +++ b/contracts/Aavegotchi/ForgeDiamond/ForgeDiamond.sol @@ -17,12 +17,16 @@ contract ForgeDiamond { address _contractOwner, address _diamondCutFacet, address _diaomondLoupeFacet, - address _ownershipFacet + address _ownershipFacet, + address _aavegotchiDiamond, + address _wearableDiamond ) { ForgeLibDiamond.setContractOwner(_contractOwner); ForgeLibDiamond.addDiamondFunctions(_diamondCutFacet, _diaomondLoupeFacet, _ownershipFacet); ForgeLibDiamond.DiamondStorage storage ds = ForgeLibDiamond.diamondStorage(); ds.supportedInterfaces[0xd9b67a26] = true; //erc1155 + ds.aavegotchiDiamond = _aavegotchiDiamond; + ds.wearableDiamond = _wearableDiamond; } // Find facet for function that is called and execute the diff --git a/contracts/Aavegotchi/ForgeDiamond/facets/ForgeFacet.sol b/contracts/Aavegotchi/ForgeDiamond/facets/ForgeFacet.sol index 61ec9c835..5db19dc41 100644 --- a/contracts/Aavegotchi/ForgeDiamond/facets/ForgeFacet.sol +++ b/contracts/Aavegotchi/ForgeDiamond/facets/ForgeFacet.sol @@ -45,24 +45,24 @@ contract ForgeFacet is Modifiers { } // External contracts - function aavegotchiGameFacet() internal pure returns (AavegotchiGameFacet facet) { - facet = AavegotchiGameFacet(ForgeLibDiamond.AAVEGOTCHI_DIAMOND); + function aavegotchiGameFacet() internal view returns (AavegotchiGameFacet facet) { + facet = AavegotchiGameFacet(ForgeLibDiamond.aavegotchiDiamond()); } - function aavegotchiFacet() internal pure returns (AavegotchiFacet facet) { - facet = AavegotchiFacet(ForgeLibDiamond.AAVEGOTCHI_DIAMOND); + function aavegotchiFacet() internal view returns (AavegotchiFacet facet) { + facet = AavegotchiFacet(ForgeLibDiamond.aavegotchiDiamond()); } - function itemsFacet() internal pure returns (ItemsFacet facet) { - facet = ItemsFacet(ForgeLibDiamond.AAVEGOTCHI_DIAMOND); + function itemsFacet() internal view returns (ItemsFacet facet) { + facet = ItemsFacet(ForgeLibDiamond.aavegotchiDiamond()); } - function wearablesFacet() internal pure returns (WearablesFacet facet) { - facet = WearablesFacet(ForgeLibDiamond.WEARABLE_DIAMOND); + function wearablesFacet() internal view returns (WearablesFacet facet) { + facet = WearablesFacet(ForgeLibDiamond.wearableDiamond()); } - function lendingGetterAndSetterFacet() internal pure returns (LendingGetterAndSetterFacet facet) { - facet = LendingGetterAndSetterFacet(ForgeLibDiamond.AAVEGOTCHI_DIAMOND); + function lendingGetterAndSetterFacet() internal view returns (LendingGetterAndSetterFacet facet) { + facet = LendingGetterAndSetterFacet(ForgeLibDiamond.aavegotchiDiamond()); } function gltrContract() internal view returns (IERC20 token) { @@ -268,11 +268,7 @@ contract ForgeFacet is Modifiers { } } - function _forge( - uint256 itemId, - uint256 gotchiId, - uint40 _gltr - ) internal onlyAavegotchiOwner(gotchiId) onlyAavegotchiUnlocked(gotchiId) { + function _forge(uint256 itemId, uint256 gotchiId, uint40 _gltr) internal onlyAavegotchiOwner(gotchiId) onlyAavegotchiUnlocked(gotchiId) { require(!s.gotchiForging[gotchiId].isForging, "ForgeFacet: Aavegotchi already forging"); address sender = LibMeta.msgSender(); @@ -382,7 +378,7 @@ contract ForgeFacet is Modifiers { uint40 blockLeft = queueItem.readyBlock - uint40(block.number); uint40 removeBlocks = _amounts[i] <= blockLeft ? _amounts[i] : blockLeft; - uint256 burnAmount = uint256(removeBlocks) * 10**18; + uint256 burnAmount = uint256(removeBlocks) * 10 ** 18; require( gltrContract().transferFrom(msg.sender, 0xFFfFfFffFFfffFFfFFfFFFFFffFFFffffFfFFFfF, burnAmount), @@ -430,11 +426,7 @@ contract ForgeFacet is Modifiers { } } - function forgeWearables( - uint256[] calldata _itemIds, - uint256[] calldata _gotchiIds, - uint40[] calldata _gltr - ) external whenNotPaused { + function forgeWearables(uint256[] calldata _itemIds, uint256[] calldata _gotchiIds, uint40[] calldata _gltr) external whenNotPaused { require(_itemIds.length == _gotchiIds.length && _gotchiIds.length == _gltr.length, "ForgeFacet: mismatched array lengths"); for (uint256 i; i < _itemIds.length; i++) { @@ -454,10 +446,8 @@ contract ForgeFacet is Modifiers { // @notice Allow Aavegotchi diamond to mint essence. // @dev Only called from CollateralFacet's decreaseAndDestroy function. Not including a whenNotPaused modifier // here to avoid impacts to aavegotchi sacrifice functionality. - function mintEssence( - address owner /*uint256 gotchiId*/ - ) external { - require(LibMeta.msgSender() == ForgeLibDiamond.AAVEGOTCHI_DIAMOND, "ForgeFacet: Can only be called by Aavegotchi Diamond"); + function mintEssence(address owner /*uint256 gotchiId*/) external { + require(LibMeta.msgSender() == ForgeLibDiamond.aavegotchiDiamond(), "ForgeFacet: Can only be called by Aavegotchi Diamond"); // require(aavegotchiFacet.ownerOf(gotchiId) == address(0), "ForgeFacet: Aavegotchi not sacrificed"); _mintItem(owner, ESSENCE, 1000); @@ -501,31 +491,19 @@ contract ForgeFacet is Modifiers { } } - function _mintItem( - address account, - uint256 id, - uint256 amount - ) internal { + function _mintItem(address account, uint256 id, uint256 amount) internal { // mint doesnt exceed max supply // require(totalSupply(id) + amount <= s.maxSupplyByToken[id], "ForgeFacet: mint would exceed max supply"); _mint(account, id, amount); } - function adminMint( - address account, - uint256 id, - uint256 amount - ) external onlyDaoOrOwner { + function adminMint(address account, uint256 id, uint256 amount) external onlyDaoOrOwner { // mint doesnt exceed max supply // require(totalSupply(id) + amount <= s.maxSupplyByToken[id], "ForgeFacet: mint would exceed max supply"); _mint(account, id, amount); } - function adminMintBatch( - address to, - uint256[] memory ids, - uint256[] memory amounts - ) external onlyDaoOrOwner { + function adminMintBatch(address to, uint256[] memory ids, uint256[] memory amounts) external onlyDaoOrOwner { // mint doesnt exceed max supply // require(totalSupply(id) + amount <= s.maxSupplyByToken[id], "ForgeFacet: mint would exceed max supply"); _mintBatch(to, ids, amounts); @@ -534,11 +512,7 @@ contract ForgeFacet is Modifiers { // function _mintBatchItems(address to, uint256[] memory ids, uint256[] memory amounts) internal { // _mintBatch(to, ids, amounts, ""); // } - function _burnItem( - address account, - uint256 id, - uint256 amount - ) internal { + function _burnItem(address account, uint256 id, uint256 amount) internal { _burn(account, id, amount); } @@ -570,11 +544,7 @@ contract ForgeFacet is Modifiers { emit TransferBatch(msg.sender, address(0), to, ids, amounts); } - function _burn( - address from, - uint256 id, - uint256 amount - ) internal virtual { + function _burn(address from, uint256 id, uint256 amount) internal virtual { require(from != address(0), "ForgeTokenFacet: burn from the zero address"); uint256 fromBalance = s._balances[id][from]; @@ -586,11 +556,7 @@ contract ForgeFacet is Modifiers { emit TransferSingle(msg.sender, from, address(0), id, amount); } - function _burnBatch( - address from, - uint256[] memory ids, - uint256[] memory amounts - ) internal virtual { + function _burnBatch(address from, uint256[] memory ids, uint256[] memory amounts) internal virtual { require(from != address(0), "ForgeTokenFacet: burn from the zero address"); require(ids.length == amounts.length, "ForgeTokenFacet: ids and amounts length mismatch"); diff --git a/contracts/Aavegotchi/ForgeDiamond/libraries/ForgeLibDiamond.sol b/contracts/Aavegotchi/ForgeDiamond/libraries/ForgeLibDiamond.sol index cc45bb049..a281b2284 100644 --- a/contracts/Aavegotchi/ForgeDiamond/libraries/ForgeLibDiamond.sol +++ b/contracts/Aavegotchi/ForgeDiamond/libraries/ForgeLibDiamond.sol @@ -38,6 +38,7 @@ library ForgeLibDiamond { address contractOwner; //aavegotchi master diamond address address aavegotchiDiamond; + address wearableDiamond; } bytes32 public constant DIAMOND_STORAGE_POSITION = keccak256("diamond.standard.diamond.storage"); @@ -68,17 +69,21 @@ library ForgeLibDiamond { require(LibMeta.msgSender() == diamondStorage().contractOwner, "LibDiamond: Must be contract owner"); } + function wearableDiamond() internal view returns (address wearableDiamond_) { + wearableDiamond_ = diamondStorage().wearableDiamond; + } + + function aavegotchiDiamond() internal view returns (address aavegotchiDiamond_) { + aavegotchiDiamond_ = diamondStorage().aavegotchiDiamond; + } + function enforceIsDiamond() internal view { - require(msg.sender == AAVEGOTCHI_DIAMOND, "LibDiamond: Caller must be Aavegotchi Diamond"); + require(msg.sender == diamondStorage().aavegotchiDiamond, "LibDiamond: Caller must be Aavegotchi Diamond"); } event DiamondCut(IDiamondCut.FacetCut[] _diamondCut, address _init, bytes _calldata); - function addDiamondFunctions( - address _diamondCutFacet, - address _diamondLoupeFacet, - address _ownershipFacet - ) internal { + function addDiamondFunctions(address _diamondCutFacet, address _diamondLoupeFacet, address _ownershipFacet) internal { IDiamondCut.FacetCut[] memory cut = new IDiamondCut.FacetCut[](3); bytes4[] memory functionSelectors = new bytes4[](1); functionSelectors[0] = IDiamondCut.diamondCut.selector; @@ -102,11 +107,7 @@ library ForgeLibDiamond { } // Internal function version of diamondCut - function diamondCut( - IDiamondCut.FacetCut[] memory _diamondCut, - address _init, - bytes memory _calldata - ) internal { + function diamondCut(IDiamondCut.FacetCut[] memory _diamondCut, address _init, bytes memory _calldata) internal { for (uint256 facetIndex; facetIndex < _diamondCut.length; facetIndex++) { IDiamondCut.FacetCutAction action = _diamondCut[facetIndex].action; if (action == IDiamondCut.FacetCutAction.Add) { diff --git a/helpers/constants.ts b/helpers/constants.ts index fc79729bc..c5ad19da0 100644 --- a/helpers/constants.ts +++ b/helpers/constants.ts @@ -10,6 +10,8 @@ export const aavegotchiDAOAddress = export const pixelcraftAddress = "0xD4151c984e6CF33E04FFAAF06c3374B2926Ecc64"; export const playerRewardsAddress = "0x27df5c6dcd360f372e23d5e63645ec0072d0c098"; +export const wearableDiamondAddressMatic = "0x58de9AaBCaeEC0f69883C94318810ad79Cc6a44f"; + export const snapshotGraphUrl = "https://hub.snapshot.org/graphql"; export const WEARABLE_GAP_OFFSET = 1000000000; diff --git a/scripts/deploy-mumbai.ts b/scripts/deploy-mumbai.ts index 8b7177c55..1f15026b6 100644 --- a/scripts/deploy-mumbai.ts +++ b/scripts/deploy-mumbai.ts @@ -441,7 +441,7 @@ async function main() { // console.log("Prize items minted:", tx.hash); // forge - let forgeDiamondAddress = await deployAndUpgradeForgeDiamond(); + let forgeDiamondAddress = await deployAndUpgradeForgeDiamond(aavegotchiDiamond.address, wearableDiamondAddress); await setForgeProperties(forgeDiamondAddress); tx = await daoFacet.setForge(forgeDiamondAddress, { gasLimit: gasLimit }); receipt = await tx.wait(); diff --git a/scripts/upgrades/forge/upgrade-deployAndUpgradeForgeDiamond.ts b/scripts/upgrades/forge/upgrade-deployAndUpgradeForgeDiamond.ts index 346e4a6da..01a387415 100644 --- a/scripts/upgrades/forge/upgrade-deployAndUpgradeForgeDiamond.ts +++ b/scripts/upgrades/forge/upgrade-deployAndUpgradeForgeDiamond.ts @@ -7,6 +7,10 @@ import { import { ForgeDiamond__factory } from "../../../typechain/factories/ForgeDiamond__factory"; import { gasPrice, maticDiamondUpgrader } from "../../helperFunctions"; +import { + aavegotchiDiamondAddressMatic, + wearableDiamondAddressMatic, +} from "../../../helpers/constants"; //these already deployed facets(in the aavegotchi diamond) are added to the forgeDiamond directly // default matic network values @@ -14,7 +18,10 @@ let aavegotchiCutFacet = "0x4f908Fa47F10bc2254dae7c74d8B797C1749A8a6"; let aavegotchiLoupeFacet = "0x58f64b56B1e15D8C932c51287d814EDaa8d6feb9"; let aavegotchiOwnerShipFacet = "0xAE7DF9f59FEc446903c64f21a76d039Bc81712ef"; -export async function deployAndUpgradeForgeDiamond() { +export async function deployAndUpgradeForgeDiamond( + aavegotchiDiamond: string, + wearableDiamond: string +) { console.log("Deploying forge diamond"); const Diamond = (await ethers.getContractFactory( @@ -46,6 +53,8 @@ export async function deployAndUpgradeForgeDiamond() { aavegotchiCutFacet, aavegotchiLoupeFacet, aavegotchiOwnerShipFacet, + aavegotchiDiamond, + wearableDiamond, { gasPrice: gasPrice } ); await diamond.deployed(); @@ -155,7 +164,10 @@ export async function deployAndUpgradeForgeDiamond() { } if (require.main === module) { - deployAndUpgradeForgeDiamond() + deployAndUpgradeForgeDiamond( + aavegotchiDiamondAddressMatic, + wearableDiamondAddressMatic + ) .then(() => process.exit(0)) .catch((error) => { console.error(error); From f218ab90f653ee652a3d38834bbe7460b3b2ac5a Mon Sep 17 00:00:00 2001 From: orionstardust Date: Tue, 6 Jun 2023 10:45:42 -0500 Subject: [PATCH 19/24] Fix an issue --- contracts/Aavegotchi/ForgeDiamond/facets/ForgeFacet.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/Aavegotchi/ForgeDiamond/facets/ForgeFacet.sol b/contracts/Aavegotchi/ForgeDiamond/facets/ForgeFacet.sol index dcf7f04ee..88ce8113c 100644 --- a/contracts/Aavegotchi/ForgeDiamond/facets/ForgeFacet.sol +++ b/contracts/Aavegotchi/ForgeDiamond/facets/ForgeFacet.sol @@ -235,7 +235,7 @@ contract ForgeFacet is Modifiers { } else if (tokenId == GEODE_MYTHICAL) { rarityScoreModifier = MYTHICAL_RSM; } else if (tokenId == GEODE_GODLIKE) { - rarityScoreModifier == GODLIKE_RSM; + rarityScoreModifier = GODLIKE_RSM; } else { revert("Invalid tokenId"); } From 831af72039c7bd12d995f6430de8c3e8523efd08 Mon Sep 17 00:00:00 2001 From: Coderdan Date: Thu, 29 Jun 2023 11:43:29 +0800 Subject: [PATCH 20/24] add gotchi positions array --- contracts/Aavegotchi/facets/MerkleDropFacet.sol | 15 +++++++++------ .../Aavegotchi/libraries/LibXPAllocation.sol | 10 ++++++++-- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/contracts/Aavegotchi/facets/MerkleDropFacet.sol b/contracts/Aavegotchi/facets/MerkleDropFacet.sol index 26ddf9600..0aed28461 100644 --- a/contracts/Aavegotchi/facets/MerkleDropFacet.sol +++ b/contracts/Aavegotchi/facets/MerkleDropFacet.sol @@ -16,9 +16,10 @@ contract MerkleDropFacet is Modifiers { address _claimer, uint256[] calldata _gotchiId, bytes32[] calldata _proof, - uint256[] calldata _onlyGotchis + uint256[] calldata _onlyGotchis, + uint256[] calldata _onlyGotchisPositions ) external { - LibXPAllocation._claimXPDrop(_propId, _claimer, _gotchiId, _proof, _onlyGotchis); + LibXPAllocation._claimXPDrop(_propId, _claimer, _gotchiId, _proof, _onlyGotchis, _onlyGotchisPositions); } //claim for multiple addresses for one particular drop @@ -28,11 +29,12 @@ contract MerkleDropFacet is Modifiers { address[] calldata _claimers, uint256[][] calldata _gotchiIds, bytes32[][] calldata _proofs, - uint256[][] calldata _onlyGotchis + uint256[][] calldata _onlyGotchis, + uint256[][] calldata _onlyGotchisPositions ) external { if (_claimers.length != _gotchiIds.length || _gotchiIds.length != _proofs.length) revert("ArrayLengthMismatch"); for (uint256 i; i < _gotchiIds.length; i++) { - LibXPAllocation._claimXPDrop(_propId, _claimers[i], _gotchiIds[i], _proofs[i], _onlyGotchis[i]); + LibXPAllocation._claimXPDrop(_propId, _claimers[i], _gotchiIds[i], _proofs[i], _onlyGotchis[i], _onlyGotchisPositions[i]); } } @@ -43,12 +45,13 @@ contract MerkleDropFacet is Modifiers { address[] calldata _claimers, uint256[][] calldata _gotchiIds, bytes32[][] calldata _proofs, - uint256[][] calldata _onlyGotchis + uint256[][] calldata _onlyGotchis, + uint256[][] calldata _onlyGotchisPositions ) external { if (_propIds.length != _gotchiIds.length || _claimers.length != _gotchiIds.length || _gotchiIds.length != _proofs.length) revert("ArrayLengthMismatch"); for (uint256 i; i < _propIds.length; i++) { - LibXPAllocation._claimXPDrop(_propIds[i], _claimers[i], _gotchiIds[i], _proofs[i], _onlyGotchis[i]); + LibXPAllocation._claimXPDrop(_propIds[i], _claimers[i], _gotchiIds[i], _proofs[i], _onlyGotchis[i], _onlyGotchisPositions[i]); } } diff --git a/contracts/Aavegotchi/libraries/LibXPAllocation.sol b/contracts/Aavegotchi/libraries/LibXPAllocation.sol index 41607324e..e7112baee 100644 --- a/contracts/Aavegotchi/libraries/LibXPAllocation.sol +++ b/contracts/Aavegotchi/libraries/LibXPAllocation.sol @@ -22,7 +22,8 @@ library LibXPAllocation { address _claimer, uint256[] calldata _gotchiIds, bytes32[] calldata _proof, - uint256[] calldata _onlyGotchis + uint256[] calldata _onlyGotchis, + uint256[] calldata _onlyGotchisPositions //position of each _onlyGotchi in _gotchiIds array ) internal { //short-circuits AppStorage storage s = LibAppStorage.diamondStorage(); @@ -41,12 +42,17 @@ library LibXPAllocation { //make sure gotchi is a subset for (uint256 i; i < _onlyGotchis.length; i++) { uint256 gotchiId = _onlyGotchis[i]; - if (_inUintArray(_gotchiIds, gotchiId)) { + uint256 position = _onlyGotchisPositions[i]; + + //verify that gotchi is in _gotchiIds + if (_gotchiIds[position] == gotchiId) { //check claimed status if (s.xpClaimed[gotchiId][_propId] == 0) { //allocate xp _allocateXPViaDrop(_propId, gotchiId, xpAmount); } + } else { + revert("GotchiIdMismatch"); } } } else { From f613239b1ecdae2a96c7734aa07e22e9f1d06513 Mon Sep 17 00:00:00 2001 From: Timidan Date: Thu, 29 Jun 2023 15:57:11 +0100 Subject: [PATCH 21/24] gotchiPositions fix --- .../Aavegotchi/libraries/LibXPAllocation.sol | 37 +++++++++----- .../upgrades/upgrade--onlyGotchiPositions.ts | 50 +++++++++++++++++++ 2 files changed, 74 insertions(+), 13 deletions(-) create mode 100644 scripts/upgrades/upgrade--onlyGotchiPositions.ts diff --git a/contracts/Aavegotchi/libraries/LibXPAllocation.sol b/contracts/Aavegotchi/libraries/LibXPAllocation.sol index e7112baee..69dd74bab 100644 --- a/contracts/Aavegotchi/libraries/LibXPAllocation.sol +++ b/contracts/Aavegotchi/libraries/LibXPAllocation.sol @@ -9,6 +9,15 @@ library LibXPAllocation { event XPClaimed(bytes32 indexed _propId, uint256 _gotchiId); event GrantExperience(uint256[] _tokenIds, uint256[] _xpValues); + struct ClaimStruct { + uint256 xpAmount; + bytes32 node; + bytes32 root; + uint256 gotchiId; + //optional + uint256 position; + } + function _createXPDrop(bytes32 _propId, bytes32 _merkleRoot, uint256 _xpAmount) internal { AppStorage storage s = LibAppStorage.diamondStorage(); XPMerkleDrops storage xp = s.xpDrops[_propId]; @@ -27,29 +36,31 @@ library LibXPAllocation { ) internal { //short-circuits AppStorage storage s = LibAppStorage.diamondStorage(); - uint256 xpAmount = s.xpDrops[_propId].xpAmount; + //initialize memory struct to escape `stack too deep` + ClaimStruct memory cStruct; + cStruct.xpAmount = s.xpDrops[_propId].xpAmount; //short-circuit here - if (xpAmount == 0) revert("NonExistentDrop"); + if (cStruct.xpAmount == 0) revert("NonExistentDrop"); //drops are unique by their roots - bytes32 node = keccak256(abi.encodePacked(_claimer, _gotchiIds)); - bytes32 root = s.xpDrops[_propId].root; + cStruct.node = keccak256(abi.encodePacked(_claimer, _gotchiIds)); + cStruct.root = s.xpDrops[_propId].root; //short-circuits do not revert entire claim process //proof is valid - if (LibMerkle.verify(_proof, root, node)) { + if (LibMerkle.verify(_proof, cStruct.root, cStruct.node)) { //claiming for a set of gotchis if (_onlyGotchis.length > 0) { //make sure gotchi is a subset for (uint256 i; i < _onlyGotchis.length; i++) { - uint256 gotchiId = _onlyGotchis[i]; - uint256 position = _onlyGotchisPositions[i]; + cStruct.gotchiId = _onlyGotchis[i]; + cStruct.position = _onlyGotchisPositions[i]; //verify that gotchi is in _gotchiIds - if (_gotchiIds[position] == gotchiId) { + if (_gotchiIds[cStruct.position] == cStruct.gotchiId) { //check claimed status - if (s.xpClaimed[gotchiId][_propId] == 0) { + if (s.xpClaimed[cStruct.gotchiId][_propId] == 0) { //allocate xp - _allocateXPViaDrop(_propId, gotchiId, xpAmount); + _allocateXPViaDrop(_propId, cStruct.gotchiId, cStruct.xpAmount); } } else { revert("GotchiIdMismatch"); @@ -58,11 +69,11 @@ library LibXPAllocation { } else { //claiming for all gotchis for (uint256 i; i < _gotchiIds.length; i++) { - uint256 gotchiId = _gotchiIds[i]; + cStruct.gotchiId = _gotchiIds[i]; //check claimed status - if (s.xpClaimed[gotchiId][_propId] == 0) { + if (s.xpClaimed[cStruct.gotchiId][_propId] == 0) { //allocate xp - _allocateXPViaDrop(_propId, gotchiId, xpAmount); + _allocateXPViaDrop(_propId, cStruct.gotchiId, cStruct.xpAmount); } } } diff --git a/scripts/upgrades/upgrade--onlyGotchiPositions.ts b/scripts/upgrades/upgrade--onlyGotchiPositions.ts new file mode 100644 index 000000000..96daaeb54 --- /dev/null +++ b/scripts/upgrades/upgrade--onlyGotchiPositions.ts @@ -0,0 +1,50 @@ +import { run } from "hardhat"; +import { + convertFacetAndSelectorsToString, + DeployUpgradeTaskArgs, + FacetsAndAddSelectors, +} from "../../tasks/deployUpgrade"; + +import { maticDiamondAddress } from "../helperFunctions"; + +export async function upgrade() { + const diamondUpgrader = "0x35fe3df776474a7b24b3b1ec6e745a830fdad351"; + const XPMerkleDrops = "tuple(bytes32 root,uint256 xpAmount)"; + const facets: FacetsAndAddSelectors[] = [ + { + facetName: "MerkleDropFacet", + addSelectors: [ + `function claimXPDrop(bytes32 _propId, address _claimer, uint256[] calldata _gotchiId, bytes32[] calldata _proof, uint256[] calldata _onlyGotchis, uint256[] calldata _onlyGotchisPositions ) external `, + `function batchGotchiClaimXPDrop( bytes32 _propId, address[] calldata _claimers, uint256[][] calldata _gotchiIds, bytes32[][] calldata _proofs, uint256[][] calldata _onlyGotchis,uint256[][] calldata _onlyGotchisPositions) external`, + `function batchDropClaimXPDrop( bytes32[] calldata _propIds, address[] calldata _claimers, uint256[][] calldata _gotchiIds, bytes32[][] calldata _proofs, uint256[][] calldata _onlyGotchis,uint256[][] calldata _onlyGotchisPositions ) external`, + ], + removeSelectors: [ + `function claimXPDrop(bytes32 _propId, address _claimer, uint256[] calldata _gotchiId, bytes32[] calldata _proof, uint256[] calldata _onlyGotchis ) external `, + `function batchGotchiClaimXPDrop( bytes32 _propId, address[] calldata _claimers, uint256[][] calldata _gotchiIds, bytes32[][] calldata _proofs, uint256[][] calldata _onlyGotchis) external`, + `function batchDropClaimXPDrop( bytes32[] calldata _propIds, address[] calldata _claimers, uint256[][] calldata _gotchiIds, bytes32[][] calldata _proofs, uint256[][] calldata _onlyGotchis ) external`, + ], + }, + ]; + + const joined = convertFacetAndSelectorsToString(facets); + + const args: DeployUpgradeTaskArgs = { + diamondUpgrader: diamondUpgrader, + diamondAddress: maticDiamondAddress, + facetsAndAddSelectors: joined, + useLedger: true, + useMultisig: false, + }; + + await run("deployUpgrade", args); +} + +if (require.main === module) { + upgrade() + .then(() => process.exit(0)) + // .then(() => console.log('upgrade completed') /* process.exit(0) */) + .catch((error) => { + console.error(error); + process.exit(1); + }); +} From adcf3cf26942f924b4c49d57962e3a8d1b87359a Mon Sep 17 00:00:00 2001 From: Timidan Date: Mon, 3 Jul 2023 14:45:19 +0100 Subject: [PATCH 22/24] add mumbai deployment support --- .../upgrades/upgrade-onlyGotchiPositions.ts | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 scripts/upgrades/upgrade-onlyGotchiPositions.ts diff --git a/scripts/upgrades/upgrade-onlyGotchiPositions.ts b/scripts/upgrades/upgrade-onlyGotchiPositions.ts new file mode 100644 index 000000000..db3eb8be9 --- /dev/null +++ b/scripts/upgrades/upgrade-onlyGotchiPositions.ts @@ -0,0 +1,59 @@ +import { network, run } from "hardhat"; +import { + convertFacetAndSelectorsToString, + DeployUpgradeTaskArgs, + FacetsAndAddSelectors, +} from "../../tasks/deployUpgrade"; + +import { + maticDiamondAddress, + mumbaiOwner, + mumbiaAavegotchiDiamond, +} from "../helperFunctions"; + +export async function upgrade() { + const diamondUpgrader = "0x35fe3df776474a7b24b3b1ec6e745a830fdad351"; + const XPMerkleDrops = "tuple(bytes32 root,uint256 xpAmount)"; + const facets: FacetsAndAddSelectors[] = [ + { + facetName: "MerkleDropFacet", + addSelectors: [ + `function claimXPDrop(bytes32 _propId, address _claimer, uint256[] calldata _gotchiId, bytes32[] calldata _proof, uint256[] calldata _onlyGotchis, uint256[] calldata _onlyGotchisPositions ) external `, + `function batchGotchiClaimXPDrop( bytes32 _propId, address[] calldata _claimers, uint256[][] calldata _gotchiIds, bytes32[][] calldata _proofs, uint256[][] calldata _onlyGotchis,uint256[][] calldata _onlyGotchisPositions) external`, + `function batchDropClaimXPDrop( bytes32[] calldata _propIds, address[] calldata _claimers, uint256[][] calldata _gotchiIds, bytes32[][] calldata _proofs, uint256[][] calldata _onlyGotchis,uint256[][] calldata _onlyGotchisPositions ) external`, + ], + removeSelectors: [ + `function claimXPDrop(bytes32 _propId, address _claimer, uint256[] calldata _gotchiId, bytes32[] calldata _proof, uint256[] calldata _onlyGotchis ) external `, + `function batchGotchiClaimXPDrop( bytes32 _propId, address[] calldata _claimers, uint256[][] calldata _gotchiIds, bytes32[][] calldata _proofs, uint256[][] calldata _onlyGotchis) external`, + `function batchDropClaimXPDrop( bytes32[] calldata _propIds, address[] calldata _claimers, uint256[][] calldata _gotchiIds, bytes32[][] calldata _proofs, uint256[][] calldata _onlyGotchis ) external`, + ], + }, + ]; + + const joined = convertFacetAndSelectorsToString(facets); + + const args: DeployUpgradeTaskArgs = { + diamondUpgrader: mumbaiOwner, + diamondAddress: maticDiamondAddress, + facetsAndAddSelectors: joined, + useLedger: true, + useMultisig: false, + }; + + if (network.name === "mumbai") { + args.diamondUpgrader = mumbaiOwner; + args.diamondAddress = mumbiaAavegotchiDiamond; + } + + await run("deployUpgrade", args); +} + +if (require.main === module) { + upgrade() + .then(() => process.exit(0)) + // .then(() => console.log('upgrade completed') /* process.exit(0) */) + .catch((error) => { + console.error(error); + process.exit(1); + }); +} From 7416eda484e9112a93be46ede59f4999f46652c0 Mon Sep 17 00:00:00 2001 From: Timidan Date: Mon, 3 Jul 2023 14:58:30 +0100 Subject: [PATCH 23/24] delete erroneous file --- .../upgrades/upgrade--onlyGotchiPositions.ts | 50 ------------------- 1 file changed, 50 deletions(-) delete mode 100644 scripts/upgrades/upgrade--onlyGotchiPositions.ts diff --git a/scripts/upgrades/upgrade--onlyGotchiPositions.ts b/scripts/upgrades/upgrade--onlyGotchiPositions.ts deleted file mode 100644 index 96daaeb54..000000000 --- a/scripts/upgrades/upgrade--onlyGotchiPositions.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { run } from "hardhat"; -import { - convertFacetAndSelectorsToString, - DeployUpgradeTaskArgs, - FacetsAndAddSelectors, -} from "../../tasks/deployUpgrade"; - -import { maticDiamondAddress } from "../helperFunctions"; - -export async function upgrade() { - const diamondUpgrader = "0x35fe3df776474a7b24b3b1ec6e745a830fdad351"; - const XPMerkleDrops = "tuple(bytes32 root,uint256 xpAmount)"; - const facets: FacetsAndAddSelectors[] = [ - { - facetName: "MerkleDropFacet", - addSelectors: [ - `function claimXPDrop(bytes32 _propId, address _claimer, uint256[] calldata _gotchiId, bytes32[] calldata _proof, uint256[] calldata _onlyGotchis, uint256[] calldata _onlyGotchisPositions ) external `, - `function batchGotchiClaimXPDrop( bytes32 _propId, address[] calldata _claimers, uint256[][] calldata _gotchiIds, bytes32[][] calldata _proofs, uint256[][] calldata _onlyGotchis,uint256[][] calldata _onlyGotchisPositions) external`, - `function batchDropClaimXPDrop( bytes32[] calldata _propIds, address[] calldata _claimers, uint256[][] calldata _gotchiIds, bytes32[][] calldata _proofs, uint256[][] calldata _onlyGotchis,uint256[][] calldata _onlyGotchisPositions ) external`, - ], - removeSelectors: [ - `function claimXPDrop(bytes32 _propId, address _claimer, uint256[] calldata _gotchiId, bytes32[] calldata _proof, uint256[] calldata _onlyGotchis ) external `, - `function batchGotchiClaimXPDrop( bytes32 _propId, address[] calldata _claimers, uint256[][] calldata _gotchiIds, bytes32[][] calldata _proofs, uint256[][] calldata _onlyGotchis) external`, - `function batchDropClaimXPDrop( bytes32[] calldata _propIds, address[] calldata _claimers, uint256[][] calldata _gotchiIds, bytes32[][] calldata _proofs, uint256[][] calldata _onlyGotchis ) external`, - ], - }, - ]; - - const joined = convertFacetAndSelectorsToString(facets); - - const args: DeployUpgradeTaskArgs = { - diamondUpgrader: diamondUpgrader, - diamondAddress: maticDiamondAddress, - facetsAndAddSelectors: joined, - useLedger: true, - useMultisig: false, - }; - - await run("deployUpgrade", args); -} - -if (require.main === module) { - upgrade() - .then(() => process.exit(0)) - // .then(() => console.log('upgrade completed') /* process.exit(0) */) - .catch((error) => { - console.error(error); - process.exit(1); - }); -} From 9b2e9cc65e4ce8e914247b82e93538404f954875 Mon Sep 17 00:00:00 2001 From: orionstardust Date: Thu, 6 Jul 2023 13:58:27 -0500 Subject: [PATCH 24/24] Add GotchichainBridgeFacet --- .../Aavegotchi/facets/AavegotchiFacet.sol | 9 ++- contracts/Aavegotchi/facets/DAOFacet.sol | 16 ++++ .../facets/PolygonXGotchichainBridgeFacet.sol | 44 +++++++++++ .../Aavegotchi/libraries/LibAppStorage.sol | 10 +++ .../upgrade-gotchichainBridgeFacet.ts | 76 +++++++++++++++++++ 5 files changed, 154 insertions(+), 1 deletion(-) create mode 100644 contracts/Aavegotchi/facets/PolygonXGotchichainBridgeFacet.sol create mode 100644 scripts/upgrades/upgrade-gotchichainBridgeFacet.ts diff --git a/contracts/Aavegotchi/facets/AavegotchiFacet.sol b/contracts/Aavegotchi/facets/AavegotchiFacet.sol index 149228bec..238927919 100644 --- a/contracts/Aavegotchi/facets/AavegotchiFacet.sol +++ b/contracts/Aavegotchi/facets/AavegotchiFacet.sol @@ -4,7 +4,7 @@ pragma solidity 0.8.1; import {LibAavegotchi, AavegotchiInfo} from "../libraries/LibAavegotchi.sol"; import {LibStrings} from "../../shared/libraries/LibStrings.sol"; -import {AppStorage, Modifiers} from "../libraries/LibAppStorage.sol"; +import {AppStorage, Modifiers, Aavegotchi} from "../libraries/LibAppStorage.sol"; import {LibGotchiLending} from "../libraries/LibGotchiLending.sol"; // import "hardhat/console.sol"; import {LibMeta} from "../../shared/libraries/LibMeta.sol"; @@ -40,6 +40,13 @@ contract AavegotchiFacet is Modifiers { aavegotchiInfo_ = LibAavegotchi.getAavegotchi(_tokenId); } + ///@notice Query details relating to an NFT + ///@param _tokenId the identifier of the NFT to query + ///@return aavegotchi_ an Aavegotchi struct containing details about the aavegotchi + function getAavegotchiData(uint256 _tokenId) external view returns (Aavegotchi memory aavegotchi_) { + aavegotchi_ = s.aavegotchis[_tokenId]; + } + ///@notice returns the time an NFT was claimed ///@dev will return 0 if the NFT is still an unclaimed portal ///@param _tokenId the identifier of the NFT diff --git a/contracts/Aavegotchi/facets/DAOFacet.sol b/contracts/Aavegotchi/facets/DAOFacet.sol index 59dafcf6f..b7e6470e3 100644 --- a/contracts/Aavegotchi/facets/DAOFacet.sol +++ b/contracts/Aavegotchi/facets/DAOFacet.sol @@ -31,6 +31,8 @@ contract DAOFacet is Modifiers { event ItemModifiersSet(uint256 _wearableId, int8[6] _traitModifiers, uint8 _rarityScoreModifier); event RemoveExperience(uint256[] _tokenIds, uint256[] _xpValues); event UpdateItemPrice(uint256 _itemId, uint256 _priceInWei); + event LayerZeroBridgeAdded(address _newLayerZeroBridge); + event LayerZeroBridgeRemoved(address _layerZeroBridgeToRemove); /***********************************| | Read Functions | @@ -417,4 +419,18 @@ contract DAOFacet is Modifiers { emit UpdateItemPrice(itemId, _newPrices[i]); } } + + ///@notice Allow the DAO to add an address as a Layer Zero bridge + ///@param _newLayerZeroBridge The address to be added as Layer Zero bridge + function addLayerZeroBridgeAddress(address _newLayerZeroBridge) external onlyDaoOrOwner { + s.layerZeroBridgeAddresses[_newLayerZeroBridge] = true; + emit LayerZeroBridgeAdded(_newLayerZeroBridge); + } + + ///@notice Allow the DAO to remove an address that was an Layer Zero bridge + ///@param _layerZeroBridgeToRemove The address to be removed fron being a Layer Zero bridge + function removeLayerZeroBridgeAddress(address _layerZeroBridgeToRemove) external onlyDaoOrOwner { + s.layerZeroBridgeAddresses[_layerZeroBridgeToRemove] = false; + emit LayerZeroBridgeRemoved(_layerZeroBridgeToRemove); + } } diff --git a/contracts/Aavegotchi/facets/PolygonXGotchichainBridgeFacet.sol b/contracts/Aavegotchi/facets/PolygonXGotchichainBridgeFacet.sol new file mode 100644 index 000000000..5da67b203 --- /dev/null +++ b/contracts/Aavegotchi/facets/PolygonXGotchichainBridgeFacet.sol @@ -0,0 +1,44 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.1; + +import {Aavegotchi} from "../libraries/LibAppStorage.sol"; +import {Modifiers} from "../libraries/LibAppStorage.sol"; +import {LibItems} from "../libraries/LibItems.sol"; + +contract PolygonXGotchichainBridgeFacet is Modifiers { + + function setAavegotchiMetadata(uint _id, Aavegotchi memory _aavegotchi) external onlyLayerZeroBridge { + s.aavegotchis[_id] = _aavegotchi; + for (uint i; i < _aavegotchi.equippedWearables.length; i++) { + if (_aavegotchi.equippedWearables[i] != 0) { + uint wearableId = _aavegotchi.equippedWearables[i]; + LibItems.addToParent(address(this), _id, wearableId, 1); + } + } + } + + function mintWithId(address _toAddress, uint _tokenId) external onlyLayerZeroBridge() { + s.aavegotchis[_tokenId].owner = _toAddress; + s.tokenIds.push(uint32(_tokenId)); + s.ownerTokenIdIndexes[_toAddress][_tokenId] = s.ownerTokenIds[_toAddress].length; + s.ownerTokenIds[_toAddress].push(uint32(_tokenId)); + } + + function removeItemsFromOwner(address _owner, uint256[] calldata _tokenIds, uint256[] calldata _tokenAmounts) external onlyLayerZeroBridge() { + for (uint256 i; i < _tokenIds.length; i++) { + uint256 tokenId = _tokenIds[i]; + uint256 tokenAmount = _tokenAmounts[i]; + LibItems.removeFromOwner(_owner, tokenId, tokenAmount); + } + } + + + function addItemsToOwner(address _owner, uint256[] calldata _tokenIds, uint256[] calldata _tokenAmounts) external onlyLayerZeroBridge() { + for (uint256 i; i < _tokenIds.length; i++) { + uint256 tokenId = _tokenIds[i]; + uint256 tokenAmount = _tokenAmounts[i]; + LibItems.addToOwner(_owner, tokenId, tokenAmount); + } + } + +} diff --git a/contracts/Aavegotchi/libraries/LibAppStorage.sol b/contracts/Aavegotchi/libraries/LibAppStorage.sol index 29f6141a1..b357fc035 100644 --- a/contracts/Aavegotchi/libraries/LibAppStorage.sol +++ b/contracts/Aavegotchi/libraries/LibAppStorage.sol @@ -339,6 +339,7 @@ struct AppStorage { mapping(address => mapping(uint256 => uint256[])) erc721TokenToBuyOrderIds; // erc721 token address => erc721TokenId => buyOrderIds mapping(address => mapping(uint256 => mapping(uint256 => uint256))) erc721TokenToBuyOrderIdIndexes; // erc721 token address => erc721TokenId => buyOrderId => index mapping(address => mapping(uint256 => mapping(address => uint256))) buyerToBuyOrderId; // erc721 token address => erc721TokenId => sender => buyOrderId + mapping(address => bool) layerZeroBridgeAddresses; } library LibAppStorage { @@ -405,6 +406,15 @@ contract Modifiers { _; } + modifier onlyLayerZeroBridge() { + address sender = LibMeta.msgSender(); + require( + s.layerZeroBridgeAddresses[sender], + "LibAppStorage: Do not have access" + ); + _; + } + modifier onlyPeriphery() { address sender = LibMeta.msgSender(); require(sender == s.wearableDiamond, "LibAppStorage: Not wearable diamond"); diff --git a/scripts/upgrades/upgrade-gotchichainBridgeFacet.ts b/scripts/upgrades/upgrade-gotchichainBridgeFacet.ts new file mode 100644 index 000000000..acc248419 --- /dev/null +++ b/scripts/upgrades/upgrade-gotchichainBridgeFacet.ts @@ -0,0 +1,76 @@ +import { ethers, run } from "hardhat"; +import { + convertFacetAndSelectorsToString, + DeployUpgradeTaskArgs, + FacetsAndAddSelectors, +} from "../../tasks/deployUpgrade"; +import { maticDiamondAddress } from "../helperFunctions"; +import { DAOFacetInterface } from "../../typechain/DAOFacet"; +import { DAOFacet__factory } from "../../typechain"; + +const gotchichainBridgeAddress = "0xe6517944BbA81e86Bf619DF6D5b549348Bb70446"; + +export async function upgrade(bridgeAddress: string) { + const diamondUpgrader = "0x35fe3df776474a7b24b3b1ec6e745a830fdad351"; + const aavegotchiTuple = `tuple(uint16[16] equippedWearables, int8[6] temporaryTraitBoosts, int16[6] numericTraits, string name, uint256 randomNumber, uint256 experience, uint256 minimumStake, uint256 usedSkillPoints, uint256 interactionCount, address collateralType, uint40 claimTime, uint40 lastTemporaryBoost, uint16 hauntId, address owner, uint8 status, uint40 lastInteracted, bool locked, address escrow)`; + + const facets: FacetsAndAddSelectors[] = [ + { + facetName: "PolygonXGotchichainBridgeFacet", + addSelectors: [ + `function setAavegotchiMetadata(uint _id, ${aavegotchiTuple} memory _aavegotchi) external`, + "function mintWithId(address _toAddress, uint _tokenId) external", + "function removeItemsFromOwner(address _owner, uint256[] calldata _tokenIds, uint256[] calldata _tokenAmounts) external", + "function addItemsToOwner(address _owner, uint256[] calldata _tokenIds, uint256[] calldata _tokenAmounts) external", + ], + removeSelectors: [], + }, + { + facetName: "contracts/Aavegotchi/facets/AavegotchiFacet.sol:AavegotchiFacet", + addSelectors: [ + "function getAavegotchiData(uint256 _tokenId) external view", + ], + removeSelectors: [], + }, + { + facetName: "DAOFacet", + addSelectors: [ + "function addLayerZeroBridgeAddress(address _newLayerZeroBridge) external", + "function removeLayerZeroBridgeAddress(address _layerZeroBridgeToRemove) external", + ], + removeSelectors: [], + }, + ]; + + const joined = convertFacetAndSelectorsToString(facets); + + let iface: DAOFacetInterface = new ethers.utils.Interface( + DAOFacet__factory.abi + ) as DAOFacetInterface; + + const calldata = iface.encodeFunctionData("addLayerZeroBridgeAddress", [ + bridgeAddress, + ]); + + const args: DeployUpgradeTaskArgs = { + diamondUpgrader: diamondUpgrader, + diamondAddress: maticDiamondAddress, + facetsAndAddSelectors: joined, + useLedger: false, + useMultisig: false, + initAddress: maticDiamondAddress, + initCalldata: calldata, + }; + + await run("deployUpgrade", args); +} + +if (require.main === module) { + upgrade(gotchichainBridgeAddress) + .then(() => process.exit(0)) + // .then(() => console.log('upgrade completed') /* process.exit(0) */) + .catch((error) => { + console.error(error); + process.exit(1); + }); +}