diff --git a/packages/nextjs/app/builders/_components/MembersList.tsx b/packages/nextjs/app/builders/_components/MembersList.tsx
new file mode 100644
index 0000000..ffb24c0
--- /dev/null
+++ b/packages/nextjs/app/builders/_components/MembersList.tsx
@@ -0,0 +1,157 @@
+"use client";
+
+import React from "react";
+import Link from "next/link";
+import { AiOutlineLoading3Quarters } from "react-icons/ai";
+import { RiShareBoxLine } from "react-icons/ri";
+import { Address } from "~~/components/scaffold-eth";
+import { useScaffoldEventHistory, useScaffoldReadContract } from "~~/hooks/scaffold-eth";
+
+const MembersList = ({ builders }: { builders: string[] }) => {
+ // Getting the list of builders who have completed their check-in.
+ const { data: checkedInnBuilders, isLoading: loading } = useScaffoldReadContract({
+ contractName: "BatchRegistry",
+ functionName: "checkedInCounter",
+ });
+
+ // Getting the list of builders' address list who have completed their check-in.
+ const { data: MembersList } = useScaffoldEventHistory({
+ contractName: "BatchRegistry",
+ eventName: "CheckedIn",
+ blockData: true,
+ fromBlock: 123753708n - 123506774n,
+ transactionData: true,
+ receiptData: true,
+ });
+
+ // Separating builders into those with and without a profile page.
+ const buildersWithProfile =
+ MembersList?.filter(member => {
+ const address = member?.args?.builder;
+ return address && builders.includes(address);
+ }) || [];
+
+ const buildersWithoutProfile =
+ MembersList?.filter(member => {
+ const address = member?.args?.builder;
+ return address && !builders.includes(address);
+ }) || [];
+
+ // Counting the number of builders with a profile page.
+ const profileBuildersCount = buildersWithProfile.length;
+
+ return (
+ <>
+
+
+
Builders:
+
+ {loading ? (
+
+ ) : (
+ checkedInnBuilders?.toString()
+ )}
+
+
+
+
Builders pages created:
+
+ {loading ? (
+
+ ) : (
+ profileBuildersCount?.toString()
+ )}
+
+
+
+
+ {!MembersList && (
+
+ )}
+
+
+
+
+
+
+ Addresses
+ |
+
+ Profile Links
+ |
+
+
+
+
+ {/* Render builders with profile pages first */}
+ {buildersWithProfile.map((member, i) => {
+ const address = member?.args?.builder;
+ return (
+
+
+
+ |
+
+
+ View Profile
+
+
+
+
+ |
+
+ );
+ })}
+ {/* Render builders without profile pages */}
+ {buildersWithoutProfile.map((member, i) => {
+ const address = member?.args?.builder;
+ return (
+
+
+
+ |
+
+ No Profile Page
+ |
+
+ );
+ })}
+
+
+
+ >
+ );
+};
+
+export default MembersList;
diff --git a/packages/nextjs/app/builders/page.tsx b/packages/nextjs/app/builders/page.tsx
new file mode 100644
index 0000000..1ac7223
--- /dev/null
+++ b/packages/nextjs/app/builders/page.tsx
@@ -0,0 +1,23 @@
+import React from "react";
+import MembersList from "./_components/MembersList";
+import fs from "fs/promises";
+import path from "path";
+
+// Getting the buildres dir. data
+const getBuildersData = async () => {
+ const buildersDirectory = path.join(process.cwd(), "/app/builders");
+ const builderFiles = await fs.readdir(buildersDirectory);
+ return builderFiles.filter(file => file !== "page.tsx").map(file => file.replace(".tsx", ""));
+};
+
+const BuildersPage = async () => {
+ const builders = await getBuildersData();
+ return (
+
+
🏰 The Builders 🏗️ of BuidlGuidl: Batch #8
+
+
+ );
+};
+
+export default BuildersPage;
diff --git a/packages/nextjs/components/Header.tsx b/packages/nextjs/components/Header.tsx
index 866f372..860e474 100644
--- a/packages/nextjs/components/Header.tsx
+++ b/packages/nextjs/components/Header.tsx
@@ -19,6 +19,10 @@ export const menuLinks: HeaderMenuLink[] = [
label: "Home",
href: "/",
},
+ {
+ label: "Builders",
+ href: "/builders",
+ },
{
label: "Debug Contracts",
href: "/debug",
diff --git a/packages/nextjs/contracts/deployedContracts.ts b/packages/nextjs/contracts/deployedContracts.ts
index 008d4eb..d7d0306 100644
--- a/packages/nextjs/contracts/deployedContracts.ts
+++ b/packages/nextjs/contracts/deployedContracts.ts
@@ -4,6 +4,1329 @@
*/
import { GenericContractsDeclaration } from "~~/utils/scaffold-eth/contract";
-const deployedContracts = {} as const;
+const deployedContracts = {
+ 31337: {
+ BatchRegistry: {
+ address: "0x5FbDB2315678afecb367f032d93F642f64180aa3",
+ abi: [
+ {
+ inputs: [
+ {
+ internalType: "address",
+ name: "initialOwner",
+ type: "address",
+ },
+ {
+ internalType: "uint16",
+ name: "batchNumber",
+ type: "uint16",
+ },
+ ],
+ stateMutability: "nonpayable",
+ type: "constructor",
+ },
+ {
+ inputs: [],
+ name: "AlreadyGraduated",
+ type: "error",
+ },
+ {
+ inputs: [],
+ name: "BatchNotOpen",
+ type: "error",
+ },
+ {
+ inputs: [],
+ name: "NotAContract",
+ type: "error",
+ },
+ {
+ inputs: [],
+ name: "NotCheckedIn",
+ type: "error",
+ },
+ {
+ inputs: [],
+ name: "NotInAllowList",
+ type: "error",
+ },
+ {
+ anonymous: false,
+ inputs: [
+ {
+ indexed: false,
+ internalType: "bool",
+ name: "first",
+ type: "bool",
+ },
+ {
+ indexed: false,
+ internalType: "address",
+ name: "builder",
+ type: "address",
+ },
+ {
+ indexed: false,
+ internalType: "address",
+ name: "checkInContract",
+ type: "address",
+ },
+ ],
+ name: "CheckedIn",
+ 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",
+ },
+ {
+ inputs: [],
+ name: "BATCH_NUMBER",
+ outputs: [
+ {
+ internalType: "uint16",
+ name: "",
+ type: "uint16",
+ },
+ ],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [
+ {
+ internalType: "address",
+ name: "",
+ type: "address",
+ },
+ ],
+ name: "allowList",
+ outputs: [
+ {
+ internalType: "bool",
+ name: "",
+ type: "bool",
+ },
+ ],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "batchGraduationNFT",
+ outputs: [
+ {
+ internalType: "contract BatchGraduationNFT",
+ name: "",
+ type: "address",
+ },
+ ],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "checkIn",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "checkedInCounter",
+ outputs: [
+ {
+ internalType: "uint256",
+ name: "",
+ type: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "graduate",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [
+ {
+ internalType: "address",
+ name: "",
+ type: "address",
+ },
+ ],
+ name: "graduatedTokenId",
+ outputs: [
+ {
+ internalType: "uint256",
+ name: "",
+ type: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "isOpen",
+ outputs: [
+ {
+ internalType: "bool",
+ name: "",
+ type: "bool",
+ },
+ ],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "owner",
+ outputs: [
+ {
+ internalType: "address",
+ name: "",
+ type: "address",
+ },
+ ],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "renounceOwnership",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "toggleBatchOpenStatus",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [
+ {
+ internalType: "address",
+ name: "newOwner",
+ type: "address",
+ },
+ ],
+ name: "transferOwnership",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [
+ {
+ internalType: "address[]",
+ name: "builders",
+ type: "address[]",
+ },
+ {
+ internalType: "bool[]",
+ name: "statuses",
+ type: "bool[]",
+ },
+ ],
+ name: "updateAllowList",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "withdraw",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [
+ {
+ internalType: "address",
+ name: "",
+ type: "address",
+ },
+ ],
+ name: "yourContractAddress",
+ outputs: [
+ {
+ internalType: "address",
+ name: "",
+ type: "address",
+ },
+ ],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ stateMutability: "payable",
+ type: "receive",
+ },
+ ],
+ inheritedFunctions: {
+ owner: "@openzeppelin/contracts/access/Ownable.sol",
+ renounceOwnership: "@openzeppelin/contracts/access/Ownable.sol",
+ transferOwnership: "@openzeppelin/contracts/access/Ownable.sol",
+ },
+ },
+ CheckIn: {
+ address: "0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0",
+ abi: [
+ {
+ inputs: [
+ {
+ internalType: "address",
+ name: "_batchRegistryAddress",
+ type: "address",
+ },
+ ],
+ stateMutability: "nonpayable",
+ type: "constructor",
+ },
+ {
+ inputs: [],
+ name: "batchRegistry",
+ outputs: [
+ {
+ internalType: "contract IBatchRegistry",
+ name: "",
+ type: "address",
+ },
+ ],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "callCheckIn",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ ],
+ inheritedFunctions: {},
+ },
+ MemberList: {
+ address: "0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512",
+ abi: [
+ {
+ inputs: [
+ {
+ internalType: "address",
+ name: "initialOwner",
+ type: "address",
+ },
+ {
+ internalType: "uint16",
+ name: "batchNumber",
+ type: "uint16",
+ },
+ ],
+ stateMutability: "nonpayable",
+ type: "constructor",
+ },
+ {
+ inputs: [],
+ name: "AlreadyGraduated",
+ type: "error",
+ },
+ {
+ inputs: [],
+ name: "BatchNotOpen",
+ type: "error",
+ },
+ {
+ inputs: [],
+ name: "NotAContract",
+ type: "error",
+ },
+ {
+ inputs: [],
+ name: "NotCheckedIn",
+ type: "error",
+ },
+ {
+ inputs: [],
+ name: "NotInAllowList",
+ type: "error",
+ },
+ {
+ anonymous: false,
+ inputs: [
+ {
+ indexed: false,
+ internalType: "bool",
+ name: "first",
+ type: "bool",
+ },
+ {
+ indexed: false,
+ internalType: "address",
+ name: "builder",
+ type: "address",
+ },
+ {
+ indexed: false,
+ internalType: "address",
+ name: "checkInContract",
+ type: "address",
+ },
+ ],
+ name: "CheckedIn",
+ 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",
+ },
+ {
+ inputs: [],
+ name: "BATCH_NUMBER",
+ outputs: [
+ {
+ internalType: "uint16",
+ name: "",
+ type: "uint16",
+ },
+ ],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [
+ {
+ internalType: "address",
+ name: "",
+ type: "address",
+ },
+ ],
+ name: "allowList",
+ outputs: [
+ {
+ internalType: "bool",
+ name: "",
+ type: "bool",
+ },
+ ],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "batchGraduationNFT",
+ outputs: [
+ {
+ internalType: "contract BatchGraduationNFT",
+ name: "",
+ type: "address",
+ },
+ ],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "checkIn",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "checkInAndTrack",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [
+ {
+ internalType: "uint256",
+ name: "",
+ type: "uint256",
+ },
+ ],
+ name: "checkedInAddresses",
+ outputs: [
+ {
+ internalType: "address",
+ name: "",
+ type: "address",
+ },
+ ],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "checkedInCounter",
+ outputs: [
+ {
+ internalType: "uint256",
+ name: "",
+ type: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "getCheckedInAddresses",
+ outputs: [
+ {
+ internalType: "address[]",
+ name: "",
+ type: "address[]",
+ },
+ ],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "graduate",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [
+ {
+ internalType: "address",
+ name: "",
+ type: "address",
+ },
+ ],
+ name: "graduatedTokenId",
+ outputs: [
+ {
+ internalType: "uint256",
+ name: "",
+ type: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "isOpen",
+ outputs: [
+ {
+ internalType: "bool",
+ name: "",
+ type: "bool",
+ },
+ ],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "owner",
+ outputs: [
+ {
+ internalType: "address",
+ name: "",
+ type: "address",
+ },
+ ],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "renounceOwnership",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "toggleBatchOpenStatus",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [
+ {
+ internalType: "address",
+ name: "newOwner",
+ type: "address",
+ },
+ ],
+ name: "transferOwnership",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [
+ {
+ internalType: "address[]",
+ name: "builders",
+ type: "address[]",
+ },
+ {
+ internalType: "bool[]",
+ name: "statuses",
+ type: "bool[]",
+ },
+ ],
+ name: "updateAllowList",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "withdraw",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [
+ {
+ internalType: "address",
+ name: "",
+ type: "address",
+ },
+ ],
+ name: "yourContractAddress",
+ outputs: [
+ {
+ internalType: "address",
+ name: "",
+ type: "address",
+ },
+ ],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ stateMutability: "payable",
+ type: "receive",
+ },
+ ],
+ inheritedFunctions: {
+ BATCH_NUMBER: "contracts/BatchRegistry.sol",
+ allowList: "contracts/BatchRegistry.sol",
+ batchGraduationNFT: "contracts/BatchRegistry.sol",
+ checkIn: "contracts/BatchRegistry.sol",
+ checkedInCounter: "contracts/BatchRegistry.sol",
+ graduate: "contracts/BatchRegistry.sol",
+ graduatedTokenId: "contracts/BatchRegistry.sol",
+ isOpen: "contracts/BatchRegistry.sol",
+ owner: "contracts/BatchRegistry.sol",
+ renounceOwnership: "contracts/BatchRegistry.sol",
+ toggleBatchOpenStatus: "contracts/BatchRegistry.sol",
+ transferOwnership: "contracts/BatchRegistry.sol",
+ updateAllowList: "contracts/BatchRegistry.sol",
+ withdraw: "contracts/BatchRegistry.sol",
+ yourContractAddress: "contracts/BatchRegistry.sol",
+ },
+ },
+ },
+ 11155111: {
+ BatchMemberList: {
+ address: "0x192D77407Dbf2A0Ef2a7f2F58E0DAb4CE8f18eD3",
+ abi: [
+ {
+ inputs: [
+ {
+ internalType: "address",
+ name: "initialOwner",
+ type: "address",
+ },
+ {
+ internalType: "uint16",
+ name: "batchNumber",
+ type: "uint16",
+ },
+ ],
+ stateMutability: "nonpayable",
+ type: "constructor",
+ },
+ {
+ inputs: [],
+ name: "AlreadyGraduated",
+ type: "error",
+ },
+ {
+ inputs: [],
+ name: "BatchNotOpen",
+ type: "error",
+ },
+ {
+ inputs: [],
+ name: "NotAContract",
+ type: "error",
+ },
+ {
+ inputs: [],
+ name: "NotCheckedIn",
+ type: "error",
+ },
+ {
+ inputs: [],
+ name: "NotInAllowList",
+ type: "error",
+ },
+ {
+ anonymous: false,
+ inputs: [
+ {
+ indexed: false,
+ internalType: "bool",
+ name: "first",
+ type: "bool",
+ },
+ {
+ indexed: false,
+ internalType: "address",
+ name: "builder",
+ type: "address",
+ },
+ {
+ indexed: false,
+ internalType: "address",
+ name: "checkInContract",
+ type: "address",
+ },
+ ],
+ name: "CheckedIn",
+ 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",
+ },
+ {
+ inputs: [],
+ name: "BATCH_NUMBER",
+ outputs: [
+ {
+ internalType: "uint16",
+ name: "",
+ type: "uint16",
+ },
+ ],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [
+ {
+ internalType: "address",
+ name: "",
+ type: "address",
+ },
+ ],
+ name: "allowList",
+ outputs: [
+ {
+ internalType: "bool",
+ name: "",
+ type: "bool",
+ },
+ ],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "batchGraduationNFT",
+ outputs: [
+ {
+ internalType: "contract BatchGraduationNFT",
+ name: "",
+ type: "address",
+ },
+ ],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "checkIn",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "checkInAndTrack",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "checkedInCounter",
+ outputs: [
+ {
+ internalType: "uint256",
+ name: "",
+ type: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "getCheckedInAccounts",
+ outputs: [
+ {
+ internalType: "address[]",
+ name: "",
+ type: "address[]",
+ },
+ ],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "getCheckedInCount",
+ outputs: [
+ {
+ internalType: "uint256",
+ name: "",
+ type: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "graduate",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [
+ {
+ internalType: "address",
+ name: "",
+ type: "address",
+ },
+ ],
+ name: "graduatedTokenId",
+ outputs: [
+ {
+ internalType: "uint256",
+ name: "",
+ type: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "isOpen",
+ outputs: [
+ {
+ internalType: "bool",
+ name: "",
+ type: "bool",
+ },
+ ],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "owner",
+ outputs: [
+ {
+ internalType: "address",
+ name: "",
+ type: "address",
+ },
+ ],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "renounceOwnership",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "toggleBatchOpenStatus",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [
+ {
+ internalType: "address",
+ name: "newOwner",
+ type: "address",
+ },
+ ],
+ name: "transferOwnership",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [
+ {
+ internalType: "address[]",
+ name: "builders",
+ type: "address[]",
+ },
+ {
+ internalType: "bool[]",
+ name: "statuses",
+ type: "bool[]",
+ },
+ ],
+ name: "updateAllowList",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "withdraw",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [
+ {
+ internalType: "address",
+ name: "",
+ type: "address",
+ },
+ ],
+ name: "yourContractAddress",
+ outputs: [
+ {
+ internalType: "address",
+ name: "",
+ type: "address",
+ },
+ ],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ stateMutability: "payable",
+ type: "receive",
+ },
+ ],
+ inheritedFunctions: {
+ BATCH_NUMBER: "contracts/BatchRegistry.sol",
+ allowList: "contracts/BatchRegistry.sol",
+ batchGraduationNFT: "contracts/BatchRegistry.sol",
+ checkIn: "contracts/BatchRegistry.sol",
+ checkedInCounter: "contracts/BatchRegistry.sol",
+ graduate: "contracts/BatchRegistry.sol",
+ graduatedTokenId: "contracts/BatchRegistry.sol",
+ isOpen: "contracts/BatchRegistry.sol",
+ owner: "contracts/BatchRegistry.sol",
+ renounceOwnership: "contracts/BatchRegistry.sol",
+ toggleBatchOpenStatus: "contracts/BatchRegistry.sol",
+ transferOwnership: "contracts/BatchRegistry.sol",
+ updateAllowList: "contracts/BatchRegistry.sol",
+ withdraw: "contracts/BatchRegistry.sol",
+ yourContractAddress: "contracts/BatchRegistry.sol",
+ },
+ },
+ BatchRegistry: {
+ address: "0x2596cd976A1704c7D509Fb875DA7DFA98Bf47b0A",
+ abi: [
+ {
+ inputs: [
+ {
+ internalType: "address",
+ name: "initialOwner",
+ type: "address",
+ },
+ {
+ internalType: "uint16",
+ name: "batchNumber",
+ type: "uint16",
+ },
+ ],
+ stateMutability: "nonpayable",
+ type: "constructor",
+ },
+ {
+ inputs: [],
+ name: "AlreadyGraduated",
+ type: "error",
+ },
+ {
+ inputs: [],
+ name: "BatchNotOpen",
+ type: "error",
+ },
+ {
+ inputs: [],
+ name: "NotAContract",
+ type: "error",
+ },
+ {
+ inputs: [],
+ name: "NotCheckedIn",
+ type: "error",
+ },
+ {
+ inputs: [],
+ name: "NotInAllowList",
+ type: "error",
+ },
+ {
+ anonymous: false,
+ inputs: [
+ {
+ indexed: false,
+ internalType: "bool",
+ name: "first",
+ type: "bool",
+ },
+ {
+ indexed: false,
+ internalType: "address",
+ name: "builder",
+ type: "address",
+ },
+ {
+ indexed: false,
+ internalType: "address",
+ name: "checkInContract",
+ type: "address",
+ },
+ ],
+ name: "CheckedIn",
+ 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",
+ },
+ {
+ inputs: [],
+ name: "BATCH_NUMBER",
+ outputs: [
+ {
+ internalType: "uint16",
+ name: "",
+ type: "uint16",
+ },
+ ],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [
+ {
+ internalType: "address",
+ name: "",
+ type: "address",
+ },
+ ],
+ name: "allowList",
+ outputs: [
+ {
+ internalType: "bool",
+ name: "",
+ type: "bool",
+ },
+ ],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "batchGraduationNFT",
+ outputs: [
+ {
+ internalType: "contract BatchGraduationNFT",
+ name: "",
+ type: "address",
+ },
+ ],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "checkIn",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "checkedInCounter",
+ outputs: [
+ {
+ internalType: "uint256",
+ name: "",
+ type: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "graduate",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [
+ {
+ internalType: "address",
+ name: "",
+ type: "address",
+ },
+ ],
+ name: "graduatedTokenId",
+ outputs: [
+ {
+ internalType: "uint256",
+ name: "",
+ type: "uint256",
+ },
+ ],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "isOpen",
+ outputs: [
+ {
+ internalType: "bool",
+ name: "",
+ type: "bool",
+ },
+ ],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "owner",
+ outputs: [
+ {
+ internalType: "address",
+ name: "",
+ type: "address",
+ },
+ ],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "renounceOwnership",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "toggleBatchOpenStatus",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [
+ {
+ internalType: "address",
+ name: "newOwner",
+ type: "address",
+ },
+ ],
+ name: "transferOwnership",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [
+ {
+ internalType: "address[]",
+ name: "builders",
+ type: "address[]",
+ },
+ {
+ internalType: "bool[]",
+ name: "statuses",
+ type: "bool[]",
+ },
+ ],
+ name: "updateAllowList",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "withdraw",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ {
+ inputs: [
+ {
+ internalType: "address",
+ name: "",
+ type: "address",
+ },
+ ],
+ name: "yourContractAddress",
+ outputs: [
+ {
+ internalType: "address",
+ name: "",
+ type: "address",
+ },
+ ],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ stateMutability: "payable",
+ type: "receive",
+ },
+ ],
+ inheritedFunctions: {
+ owner: "@openzeppelin/contracts/access/Ownable.sol",
+ renounceOwnership: "@openzeppelin/contracts/access/Ownable.sol",
+ transferOwnership: "@openzeppelin/contracts/access/Ownable.sol",
+ },
+ },
+ CheckIn: {
+ address: "0x49f305DD5F993b0719e982C8E8833c1b26892c6b",
+ abi: [
+ {
+ inputs: [
+ {
+ internalType: "address",
+ name: "_batchRegistryAddress",
+ type: "address",
+ },
+ ],
+ stateMutability: "nonpayable",
+ type: "constructor",
+ },
+ {
+ inputs: [],
+ name: "batchRegistry",
+ outputs: [
+ {
+ internalType: "contract IBatchRegistry",
+ name: "",
+ type: "address",
+ },
+ ],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [],
+ name: "callCheckIn",
+ outputs: [],
+ stateMutability: "nonpayable",
+ type: "function",
+ },
+ ],
+ inheritedFunctions: {},
+ },
+ },
+} as const;
export default deployedContracts satisfies GenericContractsDeclaration;