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 && ( +
+ +
+ )} +
+
+ + + + + + + + + + {/* Render builders with profile pages first */} + {buildersWithProfile.map((member, i) => { + const address = member?.args?.builder; + return ( + + + + + ); + })} + {/* Render builders without profile pages */} + {buildersWithoutProfile.map((member, i) => { + const address = member?.args?.builder; + return ( + + + + + ); + })} + +
+ Addresses + + Profile Links +
+
+
+
+
+
+
+ + View Profile +
+ +
+ +
+
+
+
+
+
+
+ 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;