From 69d5b712cae3eb7382d9018e3aa436e7768343a3 Mon Sep 17 00:00:00 2001 From: Satyajeet Kolhapure <77279246+satyajeetkolhapure@users.noreply.github.com> Date: Wed, 29 Nov 2023 15:18:11 +0000 Subject: [PATCH 01/55] feat: As an Issuer, I want to decode off-chain attestations through the SDK (#433) Co-authored-by: Satyajeet Kolhapure Co-authored-by: Alain Nicolas --- .../attestation/attestationExamples.ts | 13 ++--- sdk/src/dataMapper/AttestationDataMapper.ts | 47 ++++++++++++++++--- sdk/src/types/index.ts | 3 ++ sdk/src/utils/constants.ts | 1 + sdk/src/utils/ipfsClient.ts | 9 ++++ 5 files changed, 57 insertions(+), 16 deletions(-) create mode 100644 sdk/src/utils/ipfsClient.ts diff --git a/sdk/examples/attestation/attestationExamples.ts b/sdk/examples/attestation/attestationExamples.ts index 0df73c96..738e0f13 100644 --- a/sdk/examples/attestation/attestationExamples.ts +++ b/sdk/examples/attestation/attestationExamples.ts @@ -1,5 +1,6 @@ import { Address } from "viem"; import { VeraxSdk } from "../../src/VeraxSdk"; +import { Attestation_filter } from "../../.graphclient"; export default class AttestationExamples { private veraxSdk: VeraxSdk; @@ -16,15 +17,9 @@ export default class AttestationExamples { } if (methodName.toLowerCase() == "findBy".toLowerCase() || methodName == "") { - console.log( - await this.veraxSdk.attestation.findBy( - 2, - 0, - { attester_not: "0x809e815596AbEB3764aBf81BE2DC39fBBAcc9949" }, - "attestedDate", - "desc", - ), - ); + const filter: Attestation_filter | undefined = + argv !== "" ? JSON.parse(argv) : { attester_not: "0x809e815596AbEB3764aBf81BE2DC39fBBAcc9949" }; + console.log(await this.veraxSdk.attestation.findBy(2, 0, filter, "attestedDate", "desc")); } if (methodName.toLowerCase() == "getRelatedAttestations".toLowerCase() || methodName == "") { diff --git a/sdk/src/dataMapper/AttestationDataMapper.ts b/sdk/src/dataMapper/AttestationDataMapper.ts index f0e9ff17..31c56c25 100644 --- a/sdk/src/dataMapper/AttestationDataMapper.ts +++ b/sdk/src/dataMapper/AttestationDataMapper.ts @@ -1,12 +1,13 @@ import BaseDataMapper from "./BaseDataMapper"; import { abiAttestationRegistry } from "../abi/AttestationRegistry"; -import { Attestation, AttestationPayload, AttestationWithDecodeObject, Schema } from "../types"; +import { Attestation, AttestationPayload, AttestationWithDecodeObject, OffchainData, Schema } from "../types"; import { Attestation_filter, Attestation_orderBy, OrderDirection } from "../../.graphclient"; import { Constants } from "../utils/constants"; import { handleSimulationError } from "../utils/simulationErrorHandler"; import { Address } from "viem"; import { decodeWithRetry, encode } from "../utils/abiCoder"; import { executeTransaction } from "../utils/transactionSender"; +import { getIPFSContent } from "../utils/ipfsClient"; export default class AttestationDataMapper extends BaseDataMapper< Attestation, @@ -34,8 +35,7 @@ export default class AttestationDataMapper extends BaseDataMapper< override async findOneById(id: string) { const attestation = await super.findOneById(id); if (attestation !== undefined) { - const schema = (await this.veraxSdk.schema.getSchema(attestation.schemaId)) as Schema; - attestation.decodedPayload = decodeWithRetry(schema.schema, attestation.attestationData as `0x${string}`); + await this.enrichAttestation(attestation); } return attestation; } @@ -48,14 +48,47 @@ export default class AttestationDataMapper extends BaseDataMapper< orderDirection?: OrderDirection, ) { const attestations = await super.findBy(first, skip, where, orderBy, orderDirection); - attestations.forEach(async (attestation) => { - const schema = (await this.veraxSdk.schema.getSchema(attestation.schemaId)) as Schema; - attestation.decodedPayload = decodeWithRetry(schema.schema, attestation.attestationData as `0x${string}`); - }); + await Promise.all( + attestations.map(async (attestation) => { + await this.enrichAttestation(attestation); + }), + ); return attestations; } + private async enrichAttestation(attestation: Attestation) { + const schema = (await this.veraxSdk.schema.getSchema(attestation.schemaId)) as Schema; + attestation.decodedPayload = decodeWithRetry(schema.schema, attestation.attestationData as `0x${string}`); + // Check if data is stored offchain + if (attestation.schemaId === Constants.OFFCHAIN_DATA_SCHEMA_ID) { + attestation.offchainData = { + schemaId: (attestation.decodedPayload as OffchainData[])[0].schemaId, + uri: (attestation.decodedPayload as OffchainData[])[0].uri, + }; + attestation.decodedPayload = {}; + if (attestation.offchainData.uri.startsWith("ipfs://")) { + try { + const ipfsHash = attestation.offchainData.uri.split("//")[1]; + const response = await getIPFSContent(ipfsHash); + if (response.toString().startsWith("0x")) { + const offchainDataSchema = (await this.veraxSdk.schema.getSchema( + attestation.offchainData.schemaId, + )) as Schema; + attestation.decodedPayload = decodeWithRetry( + offchainDataSchema.schema, + attestation.attestationData as `0x${string}`, + ); + } else { + attestation.decodedPayload = response as unknown as object; + } + } catch (error) { + attestation.offchainData.error = (error as Error).message; + } + } + } + } + async getRelatedAttestations(id: string) { return this.findBy( undefined, diff --git a/sdk/src/types/index.ts b/sdk/src/types/index.ts index f34f55b4..7ec93793 100644 --- a/sdk/src/types/index.ts +++ b/sdk/src/types/index.ts @@ -27,8 +27,11 @@ export type Attestation = OnChainAttestation & { schemaString: string; decodedData: string[]; decodedPayload: object; + offchainData?: OffchainData; }; +export type OffchainData = { schemaId: string; uri: string; error?: string }; + export type OnChainAttestation = { attestationId: string; // The unique identifier of the attestation. schemaId: string; // The identifier of the schema this attestation adheres to. diff --git a/sdk/src/utils/constants.ts b/sdk/src/utils/constants.ts index 925834bb..68d92669 100644 --- a/sdk/src/utils/constants.ts +++ b/sdk/src/utils/constants.ts @@ -2,6 +2,7 @@ export class Constants { static readonly RELATIONSHIP_SCHEMA_ID = "0x89bd76e17fd84df8e1e448fa1b46dd8d97f7e8e806552b003f8386a5aebcb9f0"; static readonly NAMED_GRAPH_RELATIONSHIP_SCHEMA_ID = "0x5003a7832fa2734780a5bf6a1f3940b84c0c66a398e62dd4e7f183fdbc7da6ee"; + static readonly OFFCHAIN_DATA_SCHEMA_ID = "0xa288e257097a4bed4166c002cb6911713edacc88e30b6cb2b0104df9c365327d"; } export enum SDKMode { diff --git a/sdk/src/utils/ipfsClient.ts b/sdk/src/utils/ipfsClient.ts new file mode 100644 index 00000000..a47e77b1 --- /dev/null +++ b/sdk/src/utils/ipfsClient.ts @@ -0,0 +1,9 @@ +import axios from "axios"; + +export const getIPFSContent = async (ipfsHash: string): Promise => { + // Use the Cloudflare IPFS gateway URL + const ipfsGatewayUrl = `https://cloudflare-ipfs.com/ipfs/${ipfsHash}`; + // Make a request to the IPFS gateway + const response = await axios.get(ipfsGatewayUrl); + return response.data; +}; From 36e6df71756974507a302cf30656872a848a0eec Mon Sep 17 00:00:00 2001 From: Alain Nicolas Date: Wed, 29 Nov 2023 16:23:07 +0100 Subject: [PATCH 02/55] feat: Add a script to call the massImport method (#193) --- .gitignore | 2 + contracts/package.json | 6 + contracts/script/massImport/massImport.ts | 396 ++++++++++++++ contracts/script/massImport/prepareData.ts | 90 ++++ contracts/script/massImport/rawData.csv | 17 + contracts/tsconfig.json | 4 + pnpm-lock.yaml | 587 ++++++++++++++++----- tsconfig.json | 2 +- 8 files changed, 983 insertions(+), 121 deletions(-) create mode 100644 contracts/script/massImport/massImport.ts create mode 100644 contracts/script/massImport/prepareData.ts create mode 100644 contracts/script/massImport/rawData.csv create mode 100644 contracts/tsconfig.json diff --git a/.gitignore b/.gitignore index ca05c613..25ed6556 100644 --- a/.gitignore +++ b/.gitignore @@ -37,3 +37,5 @@ dist # Misc .DS_Store +tracking.json +source.json diff --git a/contracts/package.json b/contracts/package.json index cfc7b932..3c6d2e89 100644 --- a/contracts/package.json +++ b/contracts/package.json @@ -27,6 +27,8 @@ "deploy:post": "npx hardhat run script/deploy/postDeployment.ts --network", "encode": "npx hardhat run script/encode.ts", "lint": "pnpm solhint \"{script,src,test}/**/*.sol\"", + "massImport:prepare": "npx hardhat run script/massImport/prepareData.ts", + "massImport:attest": "npx hardhat run script/massImport/massImport.ts --network", "reimport": "npx hardhat run script/recreateNetworkFile.ts --network", "test": "forge test", "upgrade:": "npx hardhat run script/upgrade/upgradeEverything.ts --network", @@ -42,5 +44,9 @@ "hardhat": "^2.19.0", "solhint": "^3.6.2", "solhint-plugin-prettier": "^0.0.5" + }, + "dependencies": { + "@consensys/linea-sdk": "^0.1.6", + "@types/node": "^20.9.0" } } diff --git a/contracts/script/massImport/massImport.ts b/contracts/script/massImport/massImport.ts new file mode 100644 index 00000000..81d73a3c --- /dev/null +++ b/contracts/script/massImport/massImport.ts @@ -0,0 +1,396 @@ +import fs from "fs"; +import { config } from "dotenv"; +import path from "path"; +import { AbiCoder, isAddress, parseUnits } from "ethers"; +import { ethers } from "hardhat"; +import { AttestationRegistry } from "../../typechain-types"; +import { HardhatEthersProvider } from "@nomicfoundation/hardhat-ethers/internal/hardhat-ethers-provider"; + +config(); + +const processedBatchIds: number[] = []; + +// ********************************************************************************* +// ********************************* CONFIGURATION ********************************* +// ********************************************************************************* + +const DEFAULT_MAX_FEE_PER_GAS = parseUnits("100", "gwei").toString(); +const DEFAULT_GAS_ESTIMATION_PERCENTILE = "10"; +const DEFAULT_GAS_PRICE_CAP = parseUnits("5", "gwei").toString(); + +type Config = { + inputFile: string; + trackingFile: string; + portalAddress: `0x${string}`; + maxFeePerGas: number; + gasEstimationPercentile: number; + gasPriceCap: number; + attestationRegistry: AttestationRegistry; +}; + +type AttestationPayload = { + schemaId: string; + expirationDate: number; + subject: string; + attestationData: string; +}; + +type Batch = { + id: number; + payloads: AttestationPayload[]; +}; + +type BatchMonitor = { + id: number; + payloads: AttestationPayload[]; + transactionHash?: string; +}; + +enum BatchStatuses { + Failed = "Failed", + Success = "Success", + Pending = "Pending", +} + +type TrackingData = { + payloads: AttestationPayload[]; + status: BatchStatuses; + transactionHash?: string; + error?: unknown; +}; + +type Fees = { + maxFeePerGas: bigint; + maxPriorityFeePerGas?: bigint; +}; + +type FeeHistory = { + oldestBlock: number; + reward: string[][]; + baseFeePerGas: string[]; + gasUsedRatio: number[]; +}; + +function requireEnv(name: string): string { + const envVariable = process.env[name]; + if (!envVariable) { + throw new Error(`Missing ${name} environment variable.`); + } + return envVariable; +} + +async function getConfig(): Promise { + const inputFile = requireEnv("INPUT_FILE"); + const trackingFile = requireEnv("TRACKING_FILE"); + const portalAddress = requireEnv("PORTAL_ADDRESS"); + const attestationRegistryAddress = requireEnv("ATTESTATION_REGISTRY_ADDRESS"); + + if (!isAddress(portalAddress)) { + throw new Error(`Portal address is not a valid Ethereum address.`); + } + + if (!isAddress(attestationRegistryAddress)) { + throw new Error(`Attestation Registry address is not a valid Ethereum address.`); + } + + if (path.extname(inputFile) !== ".json") { + throw new Error(`File ${inputFile} is not a JSON file.`); + } + + if (path.extname(trackingFile) !== ".json") { + throw new Error(`File ${trackingFile} is not a JSON file.`); + } + + if (!fs.existsSync(inputFile)) { + throw new Error(`File ${inputFile} does not exist.`); + } + + const attestationRegistry: AttestationRegistry = await ethers.getContractAt( + "AttestationRegistry", + attestationRegistryAddress, + ); + + return { + inputFile, + trackingFile, + portalAddress: portalAddress as `0x${string}`, + maxFeePerGas: parseInt(process.env.MAX_FEE_PER_GAS ?? DEFAULT_MAX_FEE_PER_GAS), + gasEstimationPercentile: parseInt(process.env.GAS_ESTIMATION_PERCENTILE ?? DEFAULT_GAS_ESTIMATION_PERCENTILE), + gasPriceCap: parseFloat(process.env.GAS_PRICE_CAP ?? DEFAULT_GAS_PRICE_CAP), + attestationRegistry, + }; +} + +// ********************************************************************************* +// ********************************* UTILS FUNCTIONS ******************************* +// ********************************************************************************* + +export const wait = (timeout: number) => new Promise((resolve) => setTimeout(resolve, timeout)); + +function createTrackingFile(path: string): Map { + if (fs.existsSync(path)) { + const mapAsArray = fs.readFileSync(path, "utf-8"); + return new Map(JSON.parse(mapAsArray)); + } + + fs.writeFileSync(path, JSON.stringify(Array.from(new Map().entries()))); + return new Map(); +} + +function updateTrackingFile(trackingData: Map, path: string) { + fs.writeFileSync(path, JSON.stringify(Array.from(trackingData.entries()), null, 2)); +} + +async function processPendingBatches( + provider: HardhatEthersProvider, + batches: Batch[], + trackingData: Map, + trackingFile: string, +): Promise<(Batch & { transactionHash?: string })[]> { + const pendingBatches = batches + .filter((batch) => trackingData.get(batch.id)?.status === BatchStatuses.Pending) + .map((batch) => ({ + ...batch, + transactionHash: trackingData.get(batch.id)?.transactionHash, + })); + + const remainingPendingBatches: BatchMonitor[] = []; + + for (const { transactionHash, id, payloads } of pendingBatches) { + if (!transactionHash) { + remainingPendingBatches.push({ + id, + payloads, + transactionHash: "", + }); + continue; + } + + const receipt = await provider.getTransactionReceipt(transactionHash); + + if (!receipt) { + remainingPendingBatches.push({ id, payloads, transactionHash }); + continue; + } + + if (receipt.status == 0) { + // track failing batches + trackingData.set(id, { + payloads, + transactionHash, + status: BatchStatuses.Failed, + }); + + console.log(`Transaction reverted. Hash: ${transactionHash}, batchId: ${id}`); + updateTrackingFile(trackingData, trackingFile); + + // continue the batch loop + continue; + } + // track successful batches + trackingData.set(id, { + payloads, + transactionHash, + status: BatchStatuses.Success, + }); + + updateTrackingFile(trackingData, trackingFile); + console.log(`Transaction successful. Hash: ${transactionHash}, batchId: ${id}`); + } + + return remainingPendingBatches; +} + +async function get1559Fees( + provider: HardhatEthersProvider, + maxFeePerGasFromConfig: bigint, + percentile: number, +): Promise { + const { reward, baseFeePerGas }: FeeHistory = await provider.send("eth_feeHistory", ["0x4", "latest", [percentile]]); + + const maxPriorityFeePerGas = + reward.reduce((acc: bigint, currentValue: string[]) => acc + BigInt(currentValue[0]), 0n) / BigInt(reward.length); + + if (maxPriorityFeePerGas && maxPriorityFeePerGas > maxFeePerGasFromConfig) { + throw new Error( + `Estimated miner tip of ${maxPriorityFeePerGas} exceeds configured max fee per gas of ${maxFeePerGasFromConfig}.`, + ); + } + + const maxFeePerGas = BigInt(baseFeePerGas[baseFeePerGas.length - 1]) * 2n + maxPriorityFeePerGas; + + if (maxFeePerGas > 0n && maxPriorityFeePerGas > 0n) { + return { + maxPriorityFeePerGas, + maxFeePerGas: maxFeePerGas > maxFeePerGasFromConfig ? maxFeePerGasFromConfig : maxFeePerGas, + }; + } + + return { + maxFeePerGas: maxFeePerGasFromConfig, + }; +} + +// ********************************************************************************* +// ********************************* MAIN FUNCTION ********************************* +// ********************************************************************************* + +async function main() { + const { + inputFile, + trackingFile, + portalAddress, + maxFeePerGas, + gasEstimationPercentile, + gasPriceCap, + attestationRegistry, + } = await getConfig(); + + const provider = ethers.provider; + const { chainId } = await provider.getNetwork(); + const eip1559GasProvider = async () => get1559Fees(provider, BigInt(maxFeePerGas), gasEstimationPercentile); + + const trackingData = createTrackingFile(trackingFile); + + const readFile = fs.readFileSync(inputFile, "utf-8"); + const batches: Batch[] = JSON.parse(readFile); + + const filteredBatches = batches.filter( + (batch) => trackingData.get(batch.id)?.status === BatchStatuses.Failed || !trackingData.has(batch.id), + ); + + console.log("Processing pending batches..."); + const remainingPendingBatches = await processPendingBatches(provider, batches, trackingData, trackingFile); + + if (remainingPendingBatches.length !== 0) { + console.warn(`The following batches are still pending: ${JSON.stringify(remainingPendingBatches, null, 2)}`); + return; + } + + const accounts = await ethers.getSigners(); + const signer = accounts[0]; + let nonce = await provider.getTransactionCount(signer.address); + + const pendingTransactions = []; + + console.log(`Total number of batches to process: ${filteredBatches.length}.`); + + for (const [index, batch] of filteredBatches.entries()) { + try { + let fees = await eip1559GasProvider(); + + while (fees.maxFeePerGas > gasPriceCap) { + console.warn(`Max fee per gas (${fees.maxFeePerGas.toString()}) exceeds gas price cap (${gasPriceCap})`); + + const currentBlockNumber = await provider.getBlockNumber(); + while ((await provider.getBlockNumber()) === currentBlockNumber) { + console.warn(`Waiting for next block: ${currentBlockNumber}`); + await wait(4_000); + } + + fees = await eip1559GasProvider(); + } + + const abiCoder = new AbiCoder(); + batch.payloads.forEach((payload) => { + payload.schemaId = "0xd1664d97bd195df77e3d5fe78c1737ab3adaa38bbe52a680d1aa30fa51f186ba"; + payload.subject = abiCoder.encode(["address"], [payload.subject]); + payload.attestationData = abiCoder.encode(["uint8"], [payload.attestationData]); + payload.expirationDate = 1793835110; + // TODO: add an expirationDate? + }); + + const transactionGasLimit = await attestationRegistry.massImport.estimateGas(batch.payloads, portalAddress); + + const txResponse = await attestationRegistry.massImport(batch.payloads, portalAddress, { + type: 2, + gasLimit: transactionGasLimit, + chainId, + maxFeePerGas: fees.maxFeePerGas, + maxPriorityFeePerGas: fees.maxPriorityFeePerGas, + nonce, + }); + + pendingTransactions.push({ txResponse, batch }); + + trackingData.set(batch.id, { + payloads: batch.payloads, + status: BatchStatuses.Pending, + transactionHash: txResponse.hash, + }); + + updateTrackingFile(trackingData, trackingFile); + + processedBatchIds.push(batch.id); + + console.log(`Batch with ID = ${batch.id} sent.`); + nonce = nonce + 1; + } catch (error) { + trackingData.set(batch.id, { + payloads: batch.payloads, + status: BatchStatuses.Failed, + error, + }); + updateTrackingFile(trackingData, trackingFile); + console.error(error); + console.error(`Batch with ID=${batch.id} failed.\n Stopping script execution.`); + return; + } + + if (index + (1 % 15) === 0) { + console.log(`Pause the execution for 60 seconds...`); + await wait(60_000); + } + } + + if (pendingTransactions.length !== 0) { + console.log(`Waiting for all receipts...`); + } + + const transactionsInfos = await Promise.all( + pendingTransactions.map(async ({ txResponse, batch }) => { + return { + transactionReceipt: await txResponse.wait(), + batch, + }; + }), + ); + + for (const { batch, transactionReceipt } of transactionsInfos) { + if (transactionReceipt) { + if (transactionReceipt.status == 0) { + trackingData.set(batch.id, { + payloads: batch.payloads, + status: BatchStatuses.Failed, + transactionHash: transactionReceipt.hash, + }); + + console.log(`Transaction reverted. Hash: ${transactionReceipt.hash}, batchId: ${batch.id}`); + updateTrackingFile(trackingData, trackingFile); + continue; + } + + trackingData.set(batch.id, { + payloads: batch.payloads, + status: BatchStatuses.Success, + transactionHash: transactionReceipt.hash, + }); + + updateTrackingFile(trackingData, trackingFile); + console.log(`Transaction successful. Hash: ${transactionReceipt.hash}, batchId: ${batch.id}`); + } + } +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error); + process.exit(1); + }); + +process.on("SIGINT", () => { + console.log(`Processed batches: ${JSON.stringify(processedBatchIds, null, 2)}`); + console.log("\nGracefully shutting down from SIGINT (Ctrl-C)"); + process.exit(1); +}); diff --git a/contracts/script/massImport/prepareData.ts b/contracts/script/massImport/prepareData.ts new file mode 100644 index 00000000..9b6d2997 --- /dev/null +++ b/contracts/script/massImport/prepareData.ts @@ -0,0 +1,90 @@ +import fs from "fs"; + +const BATCH_LENGTH = 100; + +type RawPayload = { + subject: string; + attestationData: string; +}; + +type Batch = { + id: number; + payloads: RawPayload[]; +}; + +const convertScoreToAttestation = (score: string): string => { + const scoreNumber = parseInt(score); + let result = 5; + + if (scoreNumber > 2500 && scoreNumber < 2740) { + result = 4; + } else if (scoreNumber >= 2740 && scoreNumber < 3050) { + result = 3; + } else if (scoreNumber >= 3050 && scoreNumber < 3400) { + result = 2; + } else if (scoreNumber >= 3400) { + result = 5; + } + + return result.toString(); +}; + +const csvToJSON = (csv: string) => { + const lines = csv.split("\n"); + const result: RawPayload[] = []; + + // Ignore line 0 (headers) + for (let i = 1; i < lines.length; i++) { + const currentLine = lines[i].split(","); + const address = currentLine[0]; + const rawScore = currentLine[1]; + + if (address !== "" && rawScore !== "") { + const attestationData = convertScoreToAttestation(rawScore); + result.push({ subject: currentLine[0], attestationData }); + } + } + + return result; +}; + +const createBatches = (rawPayloads: RawPayload[]) => { + return Array.from({ length: Math.ceil(rawPayloads.length / BATCH_LENGTH) }, (v, i) => + rawPayloads.slice(i * BATCH_LENGTH, i * BATCH_LENGTH + BATCH_LENGTH), + ).reverse(); +}; + +const generateBatchIds = (batches: RawPayload[][]): Batch[] => { + return batches.map((batch, index) => { + return { id: index, payloads: batch }; + }); +}; + +const generateSourceFile = (batches: Batch[]) => { + fs.writeFileSync("script/massImport/source.json", JSON.stringify(batches, null, 2)); +}; + +async function main() { + console.log("Source file generating..."); + const readFile = fs.readFileSync("script/massImport/rawData.csv", "utf-8"); + const parsedData: RawPayload[] = csvToJSON(readFile); + + console.log(`Raw input contains ${parsedData.length} lines`); + + const batches: RawPayload[][] = createBatches(parsedData); + + console.log(`We have ${batches.length} batches of ${BATCH_LENGTH} items`); + + const finalBatches = generateBatchIds(batches); + + generateSourceFile(finalBatches); + + console.log("Source file generated!"); +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error); + process.exit(1); + }); diff --git a/contracts/script/massImport/rawData.csv b/contracts/script/massImport/rawData.csv new file mode 100644 index 00000000..7d786bdc --- /dev/null +++ b/contracts/script/massImport/rawData.csv @@ -0,0 +1,17 @@ +address,score +0x00d3081e9Ea91bCE2Cca7f47441BD185D0c2ACb1,200 +0x0c9850593Bd7669482306Fa4842746B980b7178d,2625 +0x0fAc332044f88BA323668a25C9784F067ad4c8A5,2646 +0x0e33A836cBF2eddB71C7947103757018a2Eef173,3600 +0x07b09E76d65dFA50f8783c591081530780aa415c,3050 +0x0DCC943109388789e15c383A96326dDc76e62d26,2740 +0x073fb47D6d2feba8fa22524108408F4737520E96,3400 +0x09E693650FC485EB3eEdC858eae7C07388c3c930,2740 +0x06f6B9568b51bA25CAa536473d1Aa367602a8A1b,2741 +0x08DB6Ed9B20E68F9d8DdC8991C32Ac8036Cb308d,2500 +0x022C0A0A236774fA6C19A2d2bD65D67daC8C8c9a,2499 +0x0d7c8d9065D0a47091A29df260F50cEc68c4b2Ce,2501 +0x0Eb3E48a8b4a6c9BBe5f3AAf3bac67E4ED2CC682,3201 +0x009Cc0D57e3EC92174Bede1F5D53f2e3fC5B056F,2006 +0x0515f116646BE7897F751804ef8A110f6661F6cd,3421 +0x0C1DcEf58202FF2b58FC6ddE481588bdbE2e5920,2635 diff --git a/contracts/tsconfig.json b/contracts/tsconfig.json new file mode 100644 index 00000000..e516b7fa --- /dev/null +++ b/contracts/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "../tsconfig.json", + "include": ["**/*.ts"] +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 31841c17..cb2fd00b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -35,6 +35,13 @@ importers: version: 5.2.2 contracts: + dependencies: + '@consensys/linea-sdk': + specifier: ^0.1.6 + version: 0.1.6(ts-node@10.9.1) + '@types/node': + specifier: ^20.9.0 + version: 20.9.0 devDependencies: '@nomicfoundation/hardhat-ethers': specifier: ^3.0.4 @@ -77,7 +84,7 @@ importers: version: 0.4.1(@graphql-tools/utils@9.2.1)(graphql@16.8.1) '@graphql-mesh/graphql': specifier: ^0.95.8 - version: 0.95.8(@graphql-mesh/cross-helpers@0.4.1)(@graphql-mesh/store@0.95.8)(@graphql-mesh/types@0.93.2)(@graphql-mesh/utils@0.95.8)(@graphql-tools/utils@9.2.1)(@types/node@20.9.0)(graphql@16.8.1)(react@18.2.0)(tslib@2.6.2) + version: 0.95.8(@graphql-mesh/cross-helpers@0.4.1)(@graphql-mesh/store@0.95.8)(@graphql-mesh/types@0.93.2)(@graphql-mesh/utils@0.95.8)(@graphql-tools/utils@9.2.1)(@types/node@20.9.0)(graphql@16.8.1)(react-dom@18.2.0)(react@18.2.0)(tslib@2.6.2) '@graphql-mesh/http': specifier: ^0.96.14 version: 0.96.14(@graphql-mesh/cross-helpers@0.4.1)(@graphql-mesh/runtime@0.96.13)(@graphql-mesh/types@0.93.2)(@graphql-mesh/utils@0.95.8)(graphql@16.8.1)(tslib@2.6.2) @@ -350,7 +357,7 @@ importers: version: 0.2.0(@fortawesome/fontawesome-svg-core@6.4.2)(react@18.2.0) '@verax-attestation-registry/verax-sdk': specifier: 0.0.15 - version: 0.0.15(@babel/core@7.23.3)(@envelop/core@4.0.3)(@graphql-tools/delegate@10.0.3)(@graphql-tools/merge@9.0.0)(@graphql-tools/utils@9.2.1)(@graphql-tools/wrap@10.0.1)(@types/node@20.9.0)(graphql-tag@2.12.6)(react-dom@18.2.0)(react-native@0.72.6)(react@18.2.0)(tslib@2.6.2)(typescript@5.2.2) + version: 0.0.15(@babel/core@7.23.3)(@envelop/core@4.0.3)(@graphql-mesh/types@0.93.2)(@graphql-tools/delegate@10.0.3)(@graphql-tools/merge@9.0.0)(@graphql-tools/utils@9.2.1)(@graphql-tools/wrap@10.0.1)(@types/node@20.9.0)(graphql-tag@2.12.6)(react-dom@18.2.0)(react-native@0.72.6)(react@18.2.0)(tslib@2.6.2)(typescript@5.2.2)(zod@3.22.4) axios: specifier: ^1.6.1 version: 1.6.1 @@ -371,7 +378,7 @@ importers: version: 1.18.9(typescript@5.2.2)(zod@3.22.4) wagmi: specifier: ^1.4.6 - version: 1.4.7(@types/react@18.2.37)(react-dom@18.2.0)(react-native@0.72.6)(react@18.2.0)(typescript@5.2.2)(viem@1.18.9) + version: 1.4.7(@types/react@18.2.37)(react-dom@18.2.0)(react-native@0.72.6)(react@18.2.0)(typescript@5.2.2)(viem@1.18.9)(zod@3.22.4) devDependencies: '@types/react': specifier: ^18.2.37 @@ -4440,12 +4447,62 @@ packages: - utf-8-validate dev: false + /@colors/colors@1.6.0: + resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==} + engines: {node: '>=0.1.90'} + dev: false + + /@consensys/linea-sdk@0.1.6(ts-node@10.9.1): + resolution: {integrity: sha512-cqLK8s9u7wXhE8Tcfn+KXfmz4KyDg04fmUO73/tFuZxMXDk0aCkb7+l0ACi2TlZyWHAtKc73Z9ng+tmiPUeiTA==} + dependencies: + '@enzoferey/ethers-error-parser': 0.2.3(ethers@5.7.2) + '@ethersproject/address': 5.7.0 + '@ethersproject/contracts': 5.7.0 + '@ethersproject/providers': 5.7.2 + better-sqlite3: 8.7.0 + class-validator: 0.14.0 + dotenv: 16.3.1 + ethers: 5.7.2 + pg: 8.11.3 + reflect-metadata: 0.1.13 + typeorm: 0.3.17(better-sqlite3@8.7.0)(pg@8.11.3)(ts-node@10.9.1) + typeorm-naming-strategies: 4.1.0(typeorm@0.3.17) + winston: 3.11.0 + transitivePeerDependencies: + - '@google-cloud/spanner' + - '@sap/hana-client' + - bufferutil + - hdb-pool + - ioredis + - mongodb + - mssql + - mysql2 + - oracledb + - pg-native + - pg-query-stream + - redis + - sql.js + - sqlite3 + - supports-color + - ts-node + - typeorm-aurora-data-api-driver + - utf-8-validate + dev: false + /@cspotcode/source-map-support@0.8.1: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} dependencies: '@jridgewell/trace-mapping': 0.3.9 + /@dabh/diagnostics@2.0.3: + resolution: {integrity: sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==} + dependencies: + colorspace: 1.1.4 + enabled: 2.0.0 + kuler: 2.0.0 + dev: false + /@emotion/babel-plugin@11.11.0: resolution: {integrity: sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==} dependencies: @@ -4674,6 +4731,14 @@ packages: tslib: 2.6.2 dev: false + /@enzoferey/ethers-error-parser@0.2.3(ethers@5.7.2): + resolution: {integrity: sha512-Xt5DPAwJP/Czvw6bVLuWpk+y3M5z1fKWUy3w8nLV7WLfDxoN+HmtqQ1+vgG4lvmD2Xr/bW2mBvHPyI3bKDkuXA==} + peerDependencies: + ethers: ^5.7.0 + dependencies: + ethers: 5.7.2 + dev: false + /@es-joy/jsdoccomment@0.36.1: resolution: {integrity: sha512-922xqFsTpHs6D0BUiG4toiyPOMc8/jafnWKxz1KWgS4XzKPy2qXf1Pe6UFuNSCQqt6tOuhAWXBNuuyUhJmw9Vg==} engines: {node: ^14 || ^16 || ^17 || ^18 || ^19} @@ -4989,7 +5054,6 @@ packages: '@ethersproject/logger': 5.7.0 '@ethersproject/properties': 5.7.0 '@ethersproject/strings': 5.7.0 - dev: true /@ethersproject/abstract-provider@5.7.0: resolution: {integrity: sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==} @@ -5001,7 +5065,6 @@ packages: '@ethersproject/properties': 5.7.0 '@ethersproject/transactions': 5.7.0 '@ethersproject/web': 5.7.1 - dev: true /@ethersproject/abstract-signer@5.7.0: resolution: {integrity: sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==} @@ -5011,7 +5074,6 @@ packages: '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 '@ethersproject/properties': 5.7.0 - dev: true /@ethersproject/address@5.7.0: resolution: {integrity: sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==} @@ -5021,20 +5083,17 @@ packages: '@ethersproject/keccak256': 5.7.0 '@ethersproject/logger': 5.7.0 '@ethersproject/rlp': 5.7.0 - dev: true /@ethersproject/base64@5.7.0: resolution: {integrity: sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==} dependencies: '@ethersproject/bytes': 5.7.0 - dev: true /@ethersproject/basex@5.7.0: resolution: {integrity: sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==} dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/properties': 5.7.0 - dev: true /@ethersproject/bignumber@5.7.0: resolution: {integrity: sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==} @@ -5042,19 +5101,16 @@ packages: '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 bn.js: 5.2.1 - dev: true /@ethersproject/bytes@5.7.0: resolution: {integrity: sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==} dependencies: '@ethersproject/logger': 5.7.0 - dev: true /@ethersproject/constants@5.7.0: resolution: {integrity: sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==} dependencies: '@ethersproject/bignumber': 5.7.0 - dev: true /@ethersproject/contracts@5.7.0: resolution: {integrity: sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==} @@ -5069,7 +5125,6 @@ packages: '@ethersproject/logger': 5.7.0 '@ethersproject/properties': 5.7.0 '@ethersproject/transactions': 5.7.0 - dev: true /@ethersproject/hash@5.7.0: resolution: {integrity: sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==} @@ -5083,7 +5138,6 @@ packages: '@ethersproject/logger': 5.7.0 '@ethersproject/properties': 5.7.0 '@ethersproject/strings': 5.7.0 - dev: true /@ethersproject/hdnode@5.7.0: resolution: {integrity: sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==} @@ -5100,7 +5154,6 @@ packages: '@ethersproject/strings': 5.7.0 '@ethersproject/transactions': 5.7.0 '@ethersproject/wordlists': 5.7.0 - dev: true /@ethersproject/json-wallets@5.7.0: resolution: {integrity: sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==} @@ -5118,37 +5171,31 @@ packages: '@ethersproject/transactions': 5.7.0 aes-js: 3.0.0 scrypt-js: 3.0.1 - dev: true /@ethersproject/keccak256@5.7.0: resolution: {integrity: sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==} dependencies: '@ethersproject/bytes': 5.7.0 js-sha3: 0.8.0 - dev: true /@ethersproject/logger@5.7.0: resolution: {integrity: sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==} - dev: true /@ethersproject/networks@5.7.1: resolution: {integrity: sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==} dependencies: '@ethersproject/logger': 5.7.0 - dev: true /@ethersproject/pbkdf2@5.7.0: resolution: {integrity: sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==} dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/sha2': 5.7.0 - dev: true /@ethersproject/properties@5.7.0: resolution: {integrity: sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==} dependencies: '@ethersproject/logger': 5.7.0 - dev: true /@ethersproject/providers@5.7.2: resolution: {integrity: sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==} @@ -5176,21 +5223,18 @@ packages: transitivePeerDependencies: - bufferutil - utf-8-validate - dev: true /@ethersproject/random@5.7.0: resolution: {integrity: sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==} dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 - dev: true /@ethersproject/rlp@5.7.0: resolution: {integrity: sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==} dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 - dev: true /@ethersproject/sha2@5.7.0: resolution: {integrity: sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==} @@ -5198,7 +5242,6 @@ packages: '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 hash.js: 1.1.7 - dev: true /@ethersproject/signing-key@5.7.0: resolution: {integrity: sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==} @@ -5209,7 +5252,6 @@ packages: bn.js: 5.2.1 elliptic: 6.5.4 hash.js: 1.1.7 - dev: true /@ethersproject/solidity@5.7.0: resolution: {integrity: sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==} @@ -5220,7 +5262,6 @@ packages: '@ethersproject/logger': 5.7.0 '@ethersproject/sha2': 5.7.0 '@ethersproject/strings': 5.7.0 - dev: true /@ethersproject/strings@5.7.0: resolution: {integrity: sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==} @@ -5228,7 +5269,6 @@ packages: '@ethersproject/bytes': 5.7.0 '@ethersproject/constants': 5.7.0 '@ethersproject/logger': 5.7.0 - dev: true /@ethersproject/transactions@5.7.0: resolution: {integrity: sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==} @@ -5242,7 +5282,6 @@ packages: '@ethersproject/properties': 5.7.0 '@ethersproject/rlp': 5.7.0 '@ethersproject/signing-key': 5.7.0 - dev: true /@ethersproject/units@5.7.0: resolution: {integrity: sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==} @@ -5250,7 +5289,6 @@ packages: '@ethersproject/bignumber': 5.7.0 '@ethersproject/constants': 5.7.0 '@ethersproject/logger': 5.7.0 - dev: true /@ethersproject/wallet@5.7.0: resolution: {integrity: sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==} @@ -5270,7 +5308,6 @@ packages: '@ethersproject/signing-key': 5.7.0 '@ethersproject/transactions': 5.7.0 '@ethersproject/wordlists': 5.7.0 - dev: true /@ethersproject/web@5.7.1: resolution: {integrity: sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==} @@ -5280,7 +5317,6 @@ packages: '@ethersproject/logger': 5.7.0 '@ethersproject/properties': 5.7.0 '@ethersproject/strings': 5.7.0 - dev: true /@ethersproject/wordlists@5.7.0: resolution: {integrity: sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==} @@ -5290,7 +5326,6 @@ packages: '@ethersproject/logger': 5.7.0 '@ethersproject/properties': 5.7.0 '@ethersproject/strings': 5.7.0 - dev: true /@fastify/busboy@2.0.0: resolution: {integrity: sha512-JUFJad5lv7jxj926GPgymrWQxxjPYuJNiNjNMzqT+HiuP6Vl3dk5xzG+8sTX96np0ZAluvaMzPsjhHZ5rNuNQQ==} @@ -6067,7 +6102,7 @@ packages: - utf-8-validate dev: false - /@graphql-mesh/graphql@0.95.8(@graphql-mesh/cross-helpers@0.4.1)(@graphql-mesh/store@0.95.8)(@graphql-mesh/types@0.93.2)(@graphql-mesh/utils@0.95.8)(@graphql-tools/utils@9.2.1)(@types/node@20.9.0)(graphql@16.8.1)(react@18.2.0)(tslib@2.6.2): + /@graphql-mesh/graphql@0.95.8(@graphql-mesh/cross-helpers@0.4.1)(@graphql-mesh/store@0.95.8)(@graphql-mesh/types@0.93.2)(@graphql-mesh/utils@0.95.8)(@graphql-tools/utils@9.2.1)(@types/node@20.9.0)(graphql@16.8.1)(react-dom@18.2.0)(react@18.2.0)(tslib@2.6.2): resolution: {integrity: sha512-mEbz2XYSgRTdNidUBWB7FT3QzLliJwxJIoqipSbZNputJqSbUZZ6QD/oI1IrdPXqVl/ELE2CuLiogkOSO24C1Q==} engines: {node: '>=16.0.0'} peerDependencies: @@ -6102,40 +6137,6 @@ packages: - utf-8-validate dev: false - /@graphql-mesh/graphql@0.95.8(@graphql-mesh/cross-helpers@0.4.1)(@graphql-mesh/store@0.95.8)(@graphql-mesh/utils@0.95.8)(@graphql-tools/utils@9.2.1)(@types/node@20.9.0)(graphql@16.8.1)(react-dom@18.2.0)(react@18.2.0)(tslib@2.6.2): - resolution: {integrity: sha512-mEbz2XYSgRTdNidUBWB7FT3QzLliJwxJIoqipSbZNputJqSbUZZ6QD/oI1IrdPXqVl/ELE2CuLiogkOSO24C1Q==} - engines: {node: '>=16.0.0'} - peerDependencies: - '@graphql-mesh/cross-helpers': ^0.4.1 - '@graphql-mesh/store': ^0.95.8 - '@graphql-mesh/types': ^0.95.8 - '@graphql-mesh/utils': ^0.95.8 - '@graphql-tools/utils': ^9.2.1 || ^10.0.0 - graphql: '*' - tslib: ^2.4.0 - dependencies: - '@graphql-mesh/cross-helpers': 0.4.1(@graphql-tools/utils@9.2.1)(graphql@16.8.1) - '@graphql-mesh/store': 0.95.8(@graphql-mesh/cross-helpers@0.4.1)(@graphql-mesh/types@0.93.2)(@graphql-mesh/utils@0.95.8)(@graphql-tools/utils@9.2.1)(graphql@16.8.1)(tslib@2.6.2) - '@graphql-mesh/string-interpolation': 0.5.3(graphql@16.8.1)(tslib@2.6.2) - '@graphql-mesh/utils': 0.95.8(@graphql-mesh/cross-helpers@0.4.1)(@graphql-mesh/types@0.93.2)(@graphql-tools/utils@9.2.1)(graphql@16.8.1)(tslib@2.6.2) - '@graphql-tools/delegate': 10.0.3(graphql@16.8.1) - '@graphql-tools/federation': 1.1.10(@types/node@20.9.0)(graphql@16.8.1)(react-dom@18.2.0)(react@18.2.0) - '@graphql-tools/url-loader': 8.0.0(@types/node@20.9.0)(graphql@16.8.1) - '@graphql-tools/utils': 9.2.1(graphql@16.8.1) - graphql: 16.8.1 - lodash.get: 4.4.2 - tslib: 2.6.2 - transitivePeerDependencies: - - '@types/node' - - bufferutil - - encoding - - graphql-ws - - react - - react-dom - - subscriptions-transport-ws - - utf-8-validate - dev: false - /@graphql-mesh/http@0.93.2(@graphql-mesh/cross-helpers@0.3.4)(@graphql-mesh/runtime@0.93.2)(@graphql-mesh/types@0.93.2)(@graphql-mesh/utils@0.93.2)(graphql@16.8.1)(tslib@2.6.2): resolution: {integrity: sha512-tdGEvijb3w2YJsncoh59ZobWLWpYPDmTd07XOYroJTg3m95zloFRJr/IzklKOsAa57zVIuRLCOfDju5m1m47CQ==} peerDependencies: @@ -10165,10 +10166,10 @@ packages: resolution: {integrity: sha512-zGzFsgtZ44mgL4Xef2gOy1hrRVdrs9mcxCOOKZrIPsmbZW14yTkaF591GXxpQvjXiHtgZ/iA9qLyWH6oSReIxQ==} dev: true - /@safe-global/safe-apps-provider@0.17.1(typescript@5.2.2): + /@safe-global/safe-apps-provider@0.17.1(typescript@5.2.2)(zod@3.22.4): resolution: {integrity: sha512-lYfRqrbbK1aKU1/UGkYWc/X7PgySYcumXKc5FB2uuwAs2Ghj8uETuW5BrwPqyjBknRxutFbTv+gth/JzjxAhdQ==} dependencies: - '@safe-global/safe-apps-sdk': 8.0.0(typescript@5.2.2) + '@safe-global/safe-apps-sdk': 8.0.0(typescript@5.2.2)(zod@3.22.4) events: 3.3.0 transitivePeerDependencies: - bufferutil @@ -10177,7 +10178,7 @@ packages: - zod dev: false - /@safe-global/safe-apps-sdk@8.0.0(typescript@5.2.2): + /@safe-global/safe-apps-sdk@8.0.0(typescript@5.2.2)(zod@3.22.4): resolution: {integrity: sha512-gYw0ki/EAuV1oSyMxpqandHjnthZjYYy+YWpTAzf8BqfXM3ItcZLpjxfg+3+mXW8HIO+3jw6T9iiqEXsqHaMMw==} dependencies: '@safe-global/safe-gateway-typescript-sdk': 3.13.2 @@ -10189,7 +10190,7 @@ packages: - zod dev: false - /@safe-global/safe-apps-sdk@8.1.0(typescript@5.2.2): + /@safe-global/safe-apps-sdk@8.1.0(typescript@5.2.2)(zod@3.22.4): resolution: {integrity: sha512-XJbEPuaVc7b9n23MqlF6c+ToYIS3f7P2Sel8f3cSBQ9WORE4xrSuvhMpK9fDSFqJ7by/brc+rmJR/5HViRr0/w==} dependencies: '@safe-global/safe-gateway-typescript-sdk': 3.13.2 @@ -10424,6 +10425,10 @@ packages: dependencies: apg-js: 4.2.1 + /@sqltools/formatter@1.2.5: + resolution: {integrity: sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw==} + dev: false + /@stablelib/aead@1.0.1: resolution: {integrity: sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg==} dev: false @@ -11453,6 +11458,10 @@ packages: resolution: {integrity: sha512-gVC1InwyVrO326wbBZw+AO3u2vRXz/iRWq9jYhpG4W8LXyIgDv3ZmcLQ5Q4Gs+gFMyqx+viFoFT+l3p61QFCmQ==} dev: true + /@types/triple-beam@1.3.5: + resolution: {integrity: sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==} + dev: false + /@types/trusted-types@2.0.7: resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} dev: false @@ -11465,6 +11474,10 @@ packages: resolution: {integrity: sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==} dev: true + /@types/validator@13.11.7: + resolution: {integrity: sha512-q0JomTsJ2I5Mv7dhHhQLGjMvX0JJm5dyZ1DXQySIUzU1UlwzB8bt+R6+LODUbz0UDIOvEzGc28tk27gBJw2N8Q==} + dev: false + /@types/which@2.0.2: resolution: {integrity: sha512-113D3mDkZDjo+EeUEHCFy0qniNc1ZpecGiAU7WSo7YDoSzolZIQKpYFHrPpjkB2nuyahcKfrmLXeQlh7gqJYdw==} dev: true @@ -11881,13 +11894,13 @@ packages: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} dev: true - /@verax-attestation-registry/verax-sdk@0.0.15(@babel/core@7.23.3)(@envelop/core@4.0.3)(@graphql-tools/delegate@10.0.3)(@graphql-tools/merge@9.0.0)(@graphql-tools/utils@9.2.1)(@graphql-tools/wrap@10.0.1)(@types/node@20.9.0)(graphql-tag@2.12.6)(react-dom@18.2.0)(react-native@0.72.6)(react@18.2.0)(tslib@2.6.2)(typescript@5.2.2): + /@verax-attestation-registry/verax-sdk@0.0.15(@babel/core@7.23.3)(@envelop/core@4.0.3)(@graphql-mesh/types@0.93.2)(@graphql-tools/delegate@10.0.3)(@graphql-tools/merge@9.0.0)(@graphql-tools/utils@9.2.1)(@graphql-tools/wrap@10.0.1)(@types/node@20.9.0)(graphql-tag@2.12.6)(react-dom@18.2.0)(react-native@0.72.6)(react@18.2.0)(tslib@2.6.2)(typescript@5.2.2)(zod@3.22.4): resolution: {integrity: sha512-O1wgPRh7xoWi4FonP5Oml0HZxROU574f8zDImn/oTLrjM+1RbGRO1AviRPRESXg5yVRpbjrFXa5jajlddASohA==} dependencies: '@graphprotocol/client-cli': 3.0.0(@babel/core@7.23.3)(@envelop/core@4.0.3)(@graphql-mesh/cross-helpers@0.4.1)(@graphql-mesh/store@0.95.8)(@graphql-mesh/types@0.93.2)(@graphql-mesh/utils@0.95.8)(@graphql-tools/delegate@10.0.3)(@graphql-tools/merge@9.0.0)(@graphql-tools/utils@9.2.1)(@graphql-tools/wrap@10.0.1)(@types/node@20.9.0)(graphql-tag@2.12.6)(graphql@16.8.1)(react-native@0.72.6) '@graphql-mesh/cache-localforage': 0.95.8(@graphql-mesh/types@0.93.2)(@graphql-mesh/utils@0.95.8)(graphql@16.8.1)(tslib@2.6.2) '@graphql-mesh/cross-helpers': 0.4.1(@graphql-tools/utils@9.2.1)(graphql@16.8.1) - '@graphql-mesh/graphql': 0.95.8(@graphql-mesh/cross-helpers@0.4.1)(@graphql-mesh/store@0.95.8)(@graphql-mesh/utils@0.95.8)(@graphql-tools/utils@9.2.1)(@types/node@20.9.0)(graphql@16.8.1)(react-dom@18.2.0)(react@18.2.0)(tslib@2.6.2) + '@graphql-mesh/graphql': 0.95.8(@graphql-mesh/cross-helpers@0.4.1)(@graphql-mesh/store@0.95.8)(@graphql-mesh/types@0.93.2)(@graphql-mesh/utils@0.95.8)(@graphql-tools/utils@9.2.1)(@types/node@20.9.0)(graphql@16.8.1)(react-dom@18.2.0)(react@18.2.0)(tslib@2.6.2) '@graphql-mesh/http': 0.96.14(@graphql-mesh/cross-helpers@0.4.1)(@graphql-mesh/runtime@0.96.13)(@graphql-mesh/types@0.93.2)(@graphql-mesh/utils@0.95.8)(graphql@16.8.1)(tslib@2.6.2) '@graphql-mesh/merger-bare': 0.95.8(@graphql-mesh/store@0.95.8)(@graphql-mesh/types@0.93.2)(@graphql-mesh/utils@0.95.8)(@graphql-tools/utils@9.2.1)(graphql@16.8.1)(tslib@2.6.2) '@graphql-mesh/runtime': 0.96.13(@graphql-mesh/cross-helpers@0.4.1)(@graphql-mesh/types@0.93.2)(@graphql-mesh/utils@0.95.8)(@graphql-tools/utils@9.2.1)(graphql@16.8.1)(tslib@2.6.2) @@ -11948,7 +11961,7 @@ packages: - supports-color dev: true - /@wagmi/connectors@3.1.5(@types/react@18.2.37)(react@18.2.0)(typescript@5.2.2)(viem@1.18.9): + /@wagmi/connectors@3.1.5(@types/react@18.2.37)(react@18.2.0)(typescript@5.2.2)(viem@1.18.9)(zod@3.22.4): resolution: {integrity: sha512-aE4rWZbivqWa9HqjiLDPtwROH2b1Az+lBVMeZ3o/aFxGNGNEkdrSAMOUG15/UFy3VnN6HqGOtTobOBZ10JhfNQ==} peerDependencies: typescript: '>=5.0.4' @@ -11959,13 +11972,13 @@ packages: dependencies: '@coinbase/wallet-sdk': 3.7.2 '@ledgerhq/connect-kit-loader': 1.1.2 - '@safe-global/safe-apps-provider': 0.17.1(typescript@5.2.2) - '@safe-global/safe-apps-sdk': 8.1.0(typescript@5.2.2) + '@safe-global/safe-apps-provider': 0.17.1(typescript@5.2.2)(zod@3.22.4) + '@safe-global/safe-apps-sdk': 8.1.0(typescript@5.2.2)(zod@3.22.4) '@walletconnect/ethereum-provider': 2.10.2(@walletconnect/modal@2.6.2) '@walletconnect/legacy-provider': 2.0.0 '@walletconnect/modal': 2.6.2(@types/react@18.2.37)(react@18.2.0) '@walletconnect/utils': 2.10.2 - abitype: 0.8.7(typescript@5.2.2) + abitype: 0.8.7(typescript@5.2.2)(zod@3.22.4) eventemitter3: 4.0.7 typescript: 5.2.2 viem: 1.18.9(typescript@5.2.2)(zod@3.22.4) @@ -11991,7 +12004,7 @@ packages: - zod dev: false - /@wagmi/core@1.4.7(@types/react@18.2.37)(react@18.2.0)(typescript@5.2.2)(viem@1.18.9): + /@wagmi/core@1.4.7(@types/react@18.2.37)(react@18.2.0)(typescript@5.2.2)(viem@1.18.9)(zod@3.22.4): resolution: {integrity: sha512-PiOIGni8ArQoPmuDylHX38zMt2nPnTYRIluIqiduKyGCM61X/tf10a0rafUMOOphDPudZu1TacNDhCSeoh/LEA==} peerDependencies: typescript: '>=5.0.4' @@ -12000,8 +12013,8 @@ packages: typescript: optional: true dependencies: - '@wagmi/connectors': 3.1.5(@types/react@18.2.37)(react@18.2.0)(typescript@5.2.2)(viem@1.18.9) - abitype: 0.8.7(typescript@5.2.2) + '@wagmi/connectors': 3.1.5(@types/react@18.2.37)(react@18.2.0)(typescript@5.2.2)(viem@1.18.9)(zod@3.22.4) + abitype: 0.8.7(typescript@5.2.2)(zod@3.22.4) eventemitter3: 4.0.7 typescript: 5.2.2 viem: 1.18.9(typescript@5.2.2)(zod@3.22.4) @@ -12797,7 +12810,7 @@ packages: resolution: {integrity: sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==} dev: true - /abitype@0.8.7(typescript@5.2.2): + /abitype@0.8.7(typescript@5.2.2)(zod@3.22.4): resolution: {integrity: sha512-wQ7hV8Yg/yKmGyFpqrNZufCxbszDe5es4AZGYPBitocfSqXtjrTG9JMWFcc4N30ukl2ve48aBTwt7NJxVQdU3w==} peerDependencies: typescript: '>=5.0.4' @@ -12807,6 +12820,7 @@ packages: optional: true dependencies: typescript: 5.2.2 + zod: 3.22.4 dev: false /abitype@0.9.8(typescript@5.2.2)(zod@3.22.4): @@ -12936,7 +12950,6 @@ packages: /aes-js@3.0.0: resolution: {integrity: sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==} - dev: true /aes-js@3.1.2: resolution: {integrity: sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==} @@ -13132,6 +13145,10 @@ packages: resolution: {integrity: sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ==} dev: true + /any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + dev: false + /any-signal@2.1.2: resolution: {integrity: sha512-B+rDnWasMi/eWcajPcCWSlYc7muXOrcYrqgyzcdKisl2H/WTlQ0gip1KyQfr0ZlxJdsuWCj/LWwQm7fhyhRfIQ==} dependencies: @@ -13165,6 +13182,11 @@ packages: resolution: {integrity: sha512-gkco+qxENJV+8vFcDiiFhuoSvRXb2a/QPqpSoWhVz829VNJfOTnELbBmPmNKFxf3xdNnw4DWCkzkDaavcX/1YQ==} dev: true + /app-root-path@3.1.0: + resolution: {integrity: sha512-biN3PwB2gUtjaYy/isrU3aNWI5w+fAfvHkSvCKeQGxhmYpwKFUxudR3Yya+KqVRHBmEDYh+/lTozYCFbmzX4nA==} + engines: {node: '>= 6.0.0'} + dev: false + /appdirsjs@1.2.7: resolution: {integrity: sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==} dev: false @@ -14069,7 +14091,6 @@ packages: /bech32@1.1.4: resolution: {integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==} - dev: true /better-opn@2.1.1: resolution: {integrity: sha512-kIPXZS5qwyKiX/HcRvDYfmBQUa8XP17I0mYZZ0y4UhpYOSvtsLHDYqmomS+Mj20aDvD3knEiQ0ecQy2nhio3yA==} @@ -14078,6 +14099,14 @@ packages: open: 7.4.2 dev: true + /better-sqlite3@8.7.0: + resolution: {integrity: sha512-99jZU4le+f3G6aIl6PmmV0cxUIWqKieHxsiF7G34CVFiE+/UabpYqkU0NJIkY/96mQKikHeBjtR27vFfs5JpEw==} + requiresBuild: true + dependencies: + bindings: 1.5.0 + prebuild-install: 7.1.1 + dev: false + /big-integer@1.6.51: resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} engines: {node: '>=0.6'} @@ -14484,6 +14513,11 @@ packages: engines: {node: '>=0.10'} dev: true + /buffer-writer@2.0.0: + resolution: {integrity: sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==} + engines: {node: '>=4'} + dev: false + /buffer-xor@1.0.3: resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} @@ -14878,7 +14912,6 @@ packages: /chownr@1.1.4: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} - dev: true /chownr@2.0.0: resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} @@ -14931,6 +14964,14 @@ packages: resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==} dev: true + /class-validator@0.14.0: + resolution: {integrity: sha512-ct3ltplN8I9fOwUd8GrP8UQixwff129BkEtuWDKL5W45cQuLd19xqmTLu5ge78YDm/fdje6FMt0hGOhl0lii3A==} + dependencies: + '@types/validator': 13.11.7 + libphonenumber-js: 1.10.51 + validator: 13.11.0 + dev: false + /classic-level@1.3.0: resolution: {integrity: sha512-iwFAJQYtqRTRM0F6L8h4JCt00ZSGdOyqh7yVrhhjrOpFhmBjNlRUey64MCiyo6UmQHMJ+No3c81nujPv+n9yrg==} engines: {node: '>=12'} @@ -14966,6 +15007,19 @@ packages: dependencies: restore-cursor: 3.1.0 + /cli-highlight@2.1.11: + resolution: {integrity: sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==} + engines: {node: '>=8.0.0', npm: '>=5.0.0'} + hasBin: true + dependencies: + chalk: 4.1.2 + highlight.js: 10.7.3 + mz: 2.7.0 + parse5: 5.1.1 + parse5-htmlparser2-tree-adapter: 6.0.1 + yargs: 16.2.0 + dev: false + /cli-progress@3.12.0: resolution: {integrity: sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A==} engines: {node: '>=4'} @@ -15033,7 +15087,6 @@ packages: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 7.0.0 - dev: true /cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} @@ -15112,7 +15165,6 @@ packages: dependencies: color-name: 1.1.4 simple-swizzle: 0.2.2 - dev: true /color-support@1.1.3: resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} @@ -15123,6 +15175,13 @@ packages: resolution: {integrity: sha512-kJhwH5nAwb34tmyuqq/lgjEKzlFXn1U99NlnB6Ws4qVaERcRUYeYP1cBw6BJ4vxaWStAUEef4WMr7WjOCnBt8w==} dev: true + /color@3.2.1: + resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} + dependencies: + color-convert: 1.9.3 + color-string: 1.9.1 + dev: false + /color@4.2.3: resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} engines: {node: '>=12.5.0'} @@ -15143,6 +15202,13 @@ packages: engines: {node: '>=0.1.90'} dev: true + /colorspace@1.1.4: + resolution: {integrity: sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==} + dependencies: + color: 3.2.1 + text-hex: 1.0.0 + dev: false + /combine-source-map@0.8.0: resolution: {integrity: sha512-UlxQ9Vw0b/Bt/KYwCFqdEwsQ1eL8d1gibiFb7lxQJFdvTgc2hIZi6ugsg+kyhzhPV+QEpUiEIwInIAIrgoEkrg==} dependencies: @@ -15335,7 +15401,7 @@ packages: resize-observer-polyfill: 1.5.1 styled-components: 5.3.11(@babel/core@7.23.3)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) viem: 1.18.9(typescript@5.2.2)(zod@3.22.4) - wagmi: 1.4.7(@types/react@18.2.37)(react-dom@18.2.0)(react-native@0.72.6)(react@18.2.0)(typescript@5.2.2)(viem@1.18.9) + wagmi: 1.4.7(@types/react@18.2.37)(react-dom@18.2.0)(react-native@0.72.6)(react@18.2.0)(typescript@5.2.2)(viem@1.18.9)(zod@3.22.4) transitivePeerDependencies: - '@babel/core' - react-is @@ -15955,7 +16021,6 @@ packages: engines: {node: '>=10'} dependencies: mimic-response: 3.1.0 - dev: true /dedent@1.5.1: resolution: {integrity: sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==} @@ -15999,7 +16064,6 @@ packages: /deep-extend@0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} - dev: true /deep-freeze-strict@1.1.1: resolution: {integrity: sha512-QemROZMM2IvhAcCFvahdX2Vbm4S/txeq5rFYU9fh4mQP79WTMW5c/HkQ2ICl1zuzcDZdPZ6zarDxQeQMsVYoNA==} @@ -16149,7 +16213,6 @@ packages: /detect-libc@2.0.2: resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} engines: {node: '>=8'} - dev: true /detect-newline@3.1.0: resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} @@ -16540,6 +16603,10 @@ packages: engines: {node: '>= 4'} dev: true + /enabled@2.0.0: + resolution: {integrity: sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==} + dev: false + /encode-utf8@1.0.3: resolution: {integrity: sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==} dev: false @@ -17670,7 +17737,6 @@ packages: transitivePeerDependencies: - bufferutil - utf-8-validate - dev: true /ethers@6.8.1: resolution: {integrity: sha512-iEKm6zox5h1lDn6scuRWdIdFJUCGg3+/aQWu0F4K0GVyEZiktFkqrJbRjTn1FlYEPz7RKA707D6g5Kdk6j7Ljg==} @@ -17767,7 +17833,6 @@ packages: /expand-template@2.0.3: resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} engines: {node: '>=6'} - dev: true /expect@29.7.0: resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} @@ -18022,6 +18087,10 @@ packages: resolution: {integrity: sha512-iAHrIslQb3U68OcMSP0kkNWabp7sSN6d2TBSb2JO3gcLJVDd4owr/hKM4SFJovFOUeeXeItjYgouEDTMWiVAnA==} dev: true + /fecha@4.2.3: + resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==} + dev: false + /fetch-blob@3.2.0: resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} engines: {node: ^12.20 || >= 14.13} @@ -18227,6 +18296,10 @@ packages: engines: {node: '>=0.4.0'} dev: false + /fn.name@1.1.0: + resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==} + dev: false + /focus-lock@1.0.0: resolution: {integrity: sha512-a8Ge6cdKh9za/GZR/qtigTAk7SrGore56EFcoMshClsh7FLk1zwszc/ltuMfKhx56qeuyL/jWQ4J4axou0iJ9w==} engines: {node: '>=10'} @@ -18412,7 +18485,6 @@ packages: /fs-constants@1.0.0: resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} - dev: true /fs-exists-cached@1.0.0: resolution: {integrity: sha512-kSxoARUDn4F2RPXX48UXnaFKwVU7Ivd/6qpzZL29MCDmr9sTvybv4gFCp+qaI4fM9m0z9fgz/yJvi56GAz+BZg==} @@ -19205,7 +19277,6 @@ packages: /github-from-package@0.0.0: resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} - dev: true /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} @@ -19286,7 +19357,6 @@ packages: inherits: 2.0.4 minimatch: 5.1.6 once: 1.4.0 - dev: true /glob@9.3.5: resolution: {integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==} @@ -19875,6 +19945,10 @@ packages: /hey-listen@1.0.8: resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==} + /highlight.js@10.7.3: + resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} + dev: false + /hmac-drbg@1.0.1: resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} dependencies: @@ -20202,7 +20276,6 @@ packages: /ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - dev: true /ini@2.0.0: resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} @@ -20476,7 +20549,6 @@ packages: /is-arrayish@0.3.2: resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} - dev: true /is-async-function@2.0.0: resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} @@ -21602,7 +21674,6 @@ packages: /js-sha3@0.8.0: resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} - dev: true /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -21857,6 +21928,10 @@ packages: engines: {node: '>= 8'} dev: true + /kuler@2.0.0: + resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==} + dev: false + /ky@0.33.3: resolution: {integrity: sha512-CasD9OCEQSFIam2U8efFK81Yeg8vNMTBUqtMOHlrcWQHqUX3HeCl9Dr31u4toV7emlH8Mymk5+9p0lL6mKb/Xw==} engines: {node: '>=14.16'} @@ -21935,6 +22010,10 @@ packages: type-check: 0.4.0 dev: true + /libphonenumber-js@1.10.51: + resolution: {integrity: sha512-vY2I+rQwrDQzoPds0JeTEpeWzbUJgqoV0O4v31PauHBb/e+1KCXKylHcDnBMgJZ9fH9mErsEbROJY3Z3JtqEmg==} + dev: false + /lie@3.1.1: resolution: {integrity: sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==} dependencies: @@ -22269,6 +22348,18 @@ packages: chalk: 4.1.2 is-unicode-supported: 0.1.0 + /logform@2.6.0: + resolution: {integrity: sha512-1ulHeNPp6k/LD8H91o7VYFBng5i1BDE7HoKxVbZiGFidS1Rj65qcywLxX+pVfAPoQJEjRdvKcusKwOupHCVOVQ==} + engines: {node: '>= 12.0.0'} + dependencies: + '@colors/colors': 1.6.0 + '@types/triple-beam': 1.3.5 + fecha: 4.2.3 + ms: 2.1.3 + safe-stable-stringify: 2.4.3 + triple-beam: 1.4.1 + dev: false + /logkitty@0.7.1: resolution: {integrity: sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==} hasBin: true @@ -22999,7 +23090,6 @@ packages: /mimic-response@3.1.0: resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} engines: {node: '>=10'} - dev: true /mimic-response@4.0.0: resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==} @@ -23046,7 +23136,6 @@ packages: engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 - dev: true /minimatch@8.0.4: resolution: {integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==} @@ -23146,7 +23235,6 @@ packages: /mkdirp-classic@0.5.3: resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} - dev: true /mkdirp@0.5.6: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} @@ -23160,6 +23248,12 @@ packages: hasBin: true dev: true + /mkdirp@2.1.6: + resolution: {integrity: sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==} + engines: {node: '>=10'} + hasBin: true + dev: false + /mkdirp@3.0.1: resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} engines: {node: '>=10'} @@ -23336,6 +23430,14 @@ packages: resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} dev: true + /mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + dev: false + /n12@0.4.0: resolution: {integrity: sha512-p/hj4zQ8d3pbbFLQuN1K9honUxiDDhueOWyFLw/XgBv+wZCE44bcLH4CIcsolOceJQduh4Jf7m/LfaTxyGmGtQ==} dev: true @@ -23353,7 +23455,6 @@ packages: /napi-build-utils@1.0.2: resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} - dev: true /napi-macros@2.2.2: resolution: {integrity: sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g==} @@ -23435,7 +23536,6 @@ packages: engines: {node: '>=10'} dependencies: semver: 7.5.4 - dev: true /node-abort-controller@3.1.1: resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} @@ -23805,6 +23905,12 @@ packages: dependencies: wrappy: 1.0.2 + /one-time@1.0.0: + resolution: {integrity: sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==} + dependencies: + fn.name: 1.1.0 + dev: false + /onetime@5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} @@ -24062,6 +24168,10 @@ packages: semver: 6.3.1 dev: true + /packet-reader@1.0.0: + resolution: {integrity: sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==} + dev: false + /pako@0.2.9: resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} dev: true @@ -24165,6 +24275,20 @@ packages: parse-path: 7.0.0 dev: true + /parse5-htmlparser2-tree-adapter@6.0.1: + resolution: {integrity: sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==} + dependencies: + parse5: 6.0.1 + dev: false + + /parse5@5.1.1: + resolution: {integrity: sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==} + dev: false + + /parse5@6.0.1: + resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} + dev: false + /parseurl@1.3.3: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} engines: {node: '>= 0.8'} @@ -24297,6 +24421,70 @@ packages: resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} dev: true + /pg-cloudflare@1.1.1: + resolution: {integrity: sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==} + requiresBuild: true + dev: false + optional: true + + /pg-connection-string@2.6.2: + resolution: {integrity: sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA==} + dev: false + + /pg-int8@1.0.1: + resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} + engines: {node: '>=4.0.0'} + dev: false + + /pg-pool@3.6.1(pg@8.11.3): + resolution: {integrity: sha512-jizsIzhkIitxCGfPRzJn1ZdcosIt3pz9Sh3V01fm1vZnbnCMgmGl5wvGGdNN2EL9Rmb0EcFoCkixH4Pu+sP9Og==} + peerDependencies: + pg: '>=8.0' + dependencies: + pg: 8.11.3 + dev: false + + /pg-protocol@1.6.0: + resolution: {integrity: sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==} + dev: false + + /pg-types@2.2.0: + resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} + engines: {node: '>=4'} + dependencies: + pg-int8: 1.0.1 + postgres-array: 2.0.0 + postgres-bytea: 1.0.0 + postgres-date: 1.0.7 + postgres-interval: 1.2.0 + dev: false + + /pg@8.11.3: + resolution: {integrity: sha512-+9iuvG8QfaaUrrph+kpF24cXkH1YOOUeArRNYIxq1viYHZagBxrTno7cecY1Fa44tJeZvaoG+Djpkc3JwehN5g==} + engines: {node: '>= 8.0.0'} + peerDependencies: + pg-native: '>=3.0.1' + peerDependenciesMeta: + pg-native: + optional: true + dependencies: + buffer-writer: 2.0.0 + packet-reader: 1.0.0 + pg-connection-string: 2.6.2 + pg-pool: 3.6.1(pg@8.11.3) + pg-protocol: 1.6.0 + pg-types: 2.2.0 + pgpass: 1.0.5 + optionalDependencies: + pg-cloudflare: 1.1.1 + dev: false + + /pgpass@1.0.5: + resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==} + dependencies: + split2: 4.2.0 + dev: false + /physical-cpu-count@2.0.0: resolution: {integrity: sha512-rxJOljMuWtYlvREBmd6TZYanfcPhNUKtGDZBjBBS8WG1dpN2iwPsRJZgQqN/OtJuiQckdRFOfzogqJClTrsi7g==} dev: true @@ -24773,6 +24961,28 @@ packages: source-map-js: 1.0.2 dev: true + /postgres-array@2.0.0: + resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} + engines: {node: '>=4'} + dev: false + + /postgres-bytea@1.0.0: + resolution: {integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==} + engines: {node: '>=0.10.0'} + dev: false + + /postgres-date@1.0.7: + resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} + engines: {node: '>=0.10.0'} + dev: false + + /postgres-interval@1.2.0: + resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} + engines: {node: '>=0.10.0'} + dependencies: + xtend: 4.0.2 + dev: false + /pptr-testing-library@0.7.0(puppeteer@21.1.1): resolution: {integrity: sha512-NYt6XQzAoWCC/WKkBWW40Uth+MBRKmdYr+3NdrF4gTgBeK31zNQN6gFvmTubjZY5mUVdHmPns60jTs7PZuwg2A==} engines: {node: '>=12'} @@ -24805,7 +25015,6 @@ packages: simple-get: 4.0.1 tar-fs: 2.1.1 tunnel-agent: 0.6.0 - dev: true /prelude-ls@1.1.2: resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} @@ -25305,7 +25514,6 @@ packages: ini: 1.3.8 minimist: 1.2.8 strip-json-comments: 2.0.1 - dev: true /react-clientside-effect@1.2.6(react@18.2.0): resolution: {integrity: sha512-XGGGRQAKY+q25Lz9a/4EPqom7WRjz3z9R2k4jhVKA/puQFH/5Nt27vFZYql4m4NVNdUvX8PS3O7r/Zzm7cjUlg==} @@ -25941,6 +26149,10 @@ packages: '@babel/runtime': 7.23.2 dev: true + /reflect-metadata@0.1.13: + resolution: {integrity: sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==} + dev: false + /reflect.getprototypeof@1.0.4: resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==} engines: {node: '>= 0.4'} @@ -26664,7 +26876,6 @@ packages: /simple-concat@1.0.1: resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} - dev: true /simple-get@4.0.1: resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} @@ -26672,13 +26883,11 @@ packages: decompress-response: 6.0.0 once: 1.4.0 simple-concat: 1.0.1 - dev: true /simple-swizzle@0.2.2: resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} dependencies: is-arrayish: 0.3.2 - dev: true /sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} @@ -27030,7 +27239,6 @@ packages: /stack-trace@0.0.10: resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} - dev: true /stack-utils@2.0.6: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} @@ -27298,7 +27506,6 @@ packages: /strip-json-comments@2.0.1: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} - dev: true /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} @@ -27570,7 +27777,6 @@ packages: mkdirp-classic: 0.5.3 pump: 3.0.0 tar-stream: 2.2.0 - dev: true /tar-fs@3.0.4: resolution: {integrity: sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==} @@ -27602,7 +27808,6 @@ packages: fs-constants: 1.0.0 inherits: 2.0.4 readable-stream: 3.6.2 - dev: true /tar-stream@3.1.6: resolution: {integrity: sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==} @@ -27708,6 +27913,10 @@ packages: resolution: {integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==} dev: false + /text-hex@1.0.0: + resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==} + dev: false + /text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true @@ -27729,6 +27938,19 @@ packages: qs: 6.11.2 dev: true + /thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + dependencies: + thenify: 3.3.1 + dev: false + + /thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + dependencies: + any-promise: 1.3.0 + dev: false + /thread-stream@0.15.2: resolution: {integrity: sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==} dependencies: @@ -27876,6 +28098,11 @@ packages: resolution: {integrity: sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==} dev: true + /triple-beam@1.4.1: + resolution: {integrity: sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==} + engines: {node: '>= 14.0.0'} + dev: false + /trough@1.0.5: resolution: {integrity: sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==} dev: true @@ -28084,7 +28311,6 @@ packages: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} dependencies: safe-buffer: 5.2.1 - dev: true /tweetnacl-util@0.15.1: resolution: {integrity: sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==} @@ -28243,6 +28469,94 @@ packages: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} dev: true + /typeorm-naming-strategies@4.1.0(typeorm@0.3.17): + resolution: {integrity: sha512-vPekJXzZOTZrdDvTl1YoM+w+sUIfQHG4kZTpbFYoTsufyv9NIBRe4Q+PdzhEAFA2std3D9LZHEb1EjE9zhRpiQ==} + peerDependencies: + typeorm: ^0.2.0 || ^0.3.0 + dependencies: + typeorm: 0.3.17(better-sqlite3@8.7.0)(pg@8.11.3)(ts-node@10.9.1) + dev: false + + /typeorm@0.3.17(better-sqlite3@8.7.0)(pg@8.11.3)(ts-node@10.9.1): + resolution: {integrity: sha512-UDjUEwIQalO9tWw9O2A4GU+sT3oyoUXheHJy4ft+RFdnRdQctdQ34L9SqE2p7LdwzafHx1maxT+bqXON+Qnmig==} + engines: {node: '>= 12.9.0'} + hasBin: true + peerDependencies: + '@google-cloud/spanner': ^5.18.0 + '@sap/hana-client': ^2.12.25 + better-sqlite3: ^7.1.2 || ^8.0.0 + hdb-pool: ^0.1.6 + ioredis: ^5.0.4 + mongodb: ^5.2.0 + mssql: ^9.1.1 + mysql2: ^2.2.5 || ^3.0.1 + oracledb: ^5.1.0 + pg: ^8.5.1 + pg-native: ^3.0.0 + pg-query-stream: ^4.0.0 + redis: ^3.1.1 || ^4.0.0 + sql.js: ^1.4.0 + sqlite3: ^5.0.3 + ts-node: ^10.7.0 + typeorm-aurora-data-api-driver: ^2.0.0 + peerDependenciesMeta: + '@google-cloud/spanner': + optional: true + '@sap/hana-client': + optional: true + better-sqlite3: + optional: true + hdb-pool: + optional: true + ioredis: + optional: true + mongodb: + optional: true + mssql: + optional: true + mysql2: + optional: true + oracledb: + optional: true + pg: + optional: true + pg-native: + optional: true + pg-query-stream: + optional: true + redis: + optional: true + sql.js: + optional: true + sqlite3: + optional: true + ts-node: + optional: true + typeorm-aurora-data-api-driver: + optional: true + dependencies: + '@sqltools/formatter': 1.2.5 + app-root-path: 3.1.0 + better-sqlite3: 8.7.0 + buffer: 6.0.3 + chalk: 4.1.2 + cli-highlight: 2.1.11 + date-fns: 2.30.0 + debug: 4.3.4(supports-color@5.5.0) + dotenv: 16.3.1 + glob: 8.1.0 + mkdirp: 2.1.6 + pg: 8.11.3 + reflect-metadata: 0.1.13 + sha.js: 2.4.11 + ts-node: 10.9.1(@types/node@20.9.0)(typescript@5.2.2) + tslib: 2.6.2 + uuid: 9.0.1 + yargs: 17.7.2 + transitivePeerDependencies: + - supports-color + dev: false + /typescript-compare@0.0.2: resolution: {integrity: sha512-8ja4j7pMHkfLJQO2/8tut7ub+J3Lw2S3061eJLFQcvs3tsmJKp8KG5NtpLn7KcY2w08edF74BSVN7qJS0U6oHA==} dependencies: @@ -28749,6 +29063,11 @@ packages: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true + /uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + dev: false + /v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} @@ -28778,6 +29097,11 @@ packages: dependencies: builtins: 5.0.1 + /validator@13.11.0: + resolution: {integrity: sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==} + engines: {node: '>= 0.10'} + dev: false + /valtio@1.11.2(@types/react@18.2.37)(react@18.2.0): resolution: {integrity: sha512-1XfIxnUXzyswPAPXo1P3Pdx2mq/pIqZICkWN60Hby0d9Iqb+MEIpqgYVlbflvHdrp2YR/q3jyKWRPJJ100yxaw==} engines: {node: '>=12.20.0'} @@ -28913,7 +29237,7 @@ packages: hasBin: true dev: true - /wagmi@1.4.7(@types/react@18.2.37)(react-dom@18.2.0)(react-native@0.72.6)(react@18.2.0)(typescript@5.2.2)(viem@1.18.9): + /wagmi@1.4.7(@types/react@18.2.37)(react-dom@18.2.0)(react-native@0.72.6)(react@18.2.0)(typescript@5.2.2)(viem@1.18.9)(zod@3.22.4): resolution: {integrity: sha512-/k8gA9S6RnwU6Qroxs630jAFvRIx+DSKpCP1owgAEGWc7D2bAJHljwRSCRTGENz48HyJ4V3R7KYV1yImxPvM3A==} peerDependencies: react: '>=17.0.0' @@ -28926,8 +29250,8 @@ packages: '@tanstack/query-sync-storage-persister': 4.36.1 '@tanstack/react-query': 4.36.1(react-dom@18.2.0)(react-native@0.72.6)(react@18.2.0) '@tanstack/react-query-persist-client': 4.36.1(@tanstack/react-query@4.36.1) - '@wagmi/core': 1.4.7(@types/react@18.2.37)(react@18.2.0)(typescript@5.2.2)(viem@1.18.9) - abitype: 0.8.7(typescript@5.2.2) + '@wagmi/core': 1.4.7(@types/react@18.2.37)(react@18.2.0)(typescript@5.2.2)(viem@1.18.9)(zod@3.22.4) + abitype: 0.8.7(typescript@5.2.2)(zod@3.22.4) react: 18.2.0 typescript: 5.2.2 use-sync-external-store: 1.2.0(react@18.2.0) @@ -29356,6 +29680,32 @@ packages: resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} dev: true + /winston-transport@4.6.0: + resolution: {integrity: sha512-wbBA9PbPAHxKiygo7ub7BYRiKxms0tpfU2ljtWzb3SjRjv5yl6Ozuy/TkXf00HTAt+Uylo3gSkNwzc4ME0wiIg==} + engines: {node: '>= 12.0.0'} + dependencies: + logform: 2.6.0 + readable-stream: 3.6.2 + triple-beam: 1.4.1 + dev: false + + /winston@3.11.0: + resolution: {integrity: sha512-L3yR6/MzZAOl0DsysUXHVjOwv8mKZ71TrA/41EIduGpOOV5LQVodqN+QdQ6BS6PJ/RdIshZhq84P/fStEZkk7g==} + engines: {node: '>= 12.0.0'} + dependencies: + '@colors/colors': 1.6.0 + '@dabh/diagnostics': 2.0.3 + async: 3.2.4 + is-stream: 2.0.1 + logform: 2.6.0 + one-time: 1.0.0 + readable-stream: 3.6.2 + safe-stable-stringify: 2.4.3 + stack-trace: 0.0.10 + triple-beam: 1.4.1 + winston-transport: 4.6.0 + dev: false + /word-wrap@1.2.5: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} @@ -29462,7 +29812,6 @@ packages: optional: true utf-8-validate: optional: true - dev: true /ws@7.5.9: resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} @@ -29618,7 +29967,6 @@ packages: /yargs-parser@20.2.4: resolution: {integrity: sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==} engines: {node: '>=10'} - dev: true /yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} @@ -29661,7 +30009,6 @@ packages: string-width: 4.2.3 y18n: 5.0.8 yargs-parser: 20.2.4 - dev: true /yargs@17.7.1: resolution: {integrity: sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==} diff --git a/tsconfig.json b/tsconfig.json index 0edc506d..0c78eb58 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -29,6 +29,6 @@ "path": "sdk" } ], - "include": ["**/*.ts"], + "include": ["**/*.ts", "**/*.json"], "exclude": ["node_modules", "typechain-types"] } From 1ebcd37b32d58a9a1c225e7f55c3114868f69c86 Mon Sep 17 00:00:00 2001 From: ollie <67156692+0xEillo@users.noreply.github.com> Date: Wed, 29 Nov 2023 15:25:50 +0000 Subject: [PATCH 03/55] chore: add arbitrum SDK config (#434) --- sdk/src/VeraxSdk.ts | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/sdk/src/VeraxSdk.ts b/sdk/src/VeraxSdk.ts index 25fe496a..a0e2a14c 100644 --- a/sdk/src/VeraxSdk.ts +++ b/sdk/src/VeraxSdk.ts @@ -1,4 +1,4 @@ -import { linea, lineaTestnet } from "viem/chains"; +import { arbitrum, arbitrumGoerli, linea, lineaTestnet } from "viem/chains"; import AttestationDataMapper from "./dataMapper/AttestationDataMapper"; import SchemaDataMapper from "./dataMapper/SchemaDataMapper"; import ModuleDataMapper from "./dataMapper/ModuleDataMapper"; @@ -42,6 +42,36 @@ export class VeraxSdk { mode: SDKMode.FRONTEND, }; + static DEFAULT_ARBITRUM_TESTNET: Conf = { + chain: arbitrumGoerli, + mode: SDKMode.BACKEND, + subgraphUrl: "https://api.thegraph.com/subgraphs/name/cliqueofficial/verax-arbitrum-goerli", + portalRegistryAddress: "0x7d6a914C1e33C141CB4a5e0095c1075E5649aFB2", + moduleRegistryAddress: "0x58EE79284bE65b217Db408A0991314f9Ae84348A", + schemaRegistryAddress: "0x129043e80e0B4C7da61a622df0912c31D3414AA7", + attestationRegistryAddress: "0xCD839595FdA5A8111d5E03D42d9D9af60ee67B66", + }; + + static DEFAULT_ARBITRUM_TESTNET_FRONTEND: Conf = { + ...VeraxSdk.DEFAULT_ARBITRUM_TESTNET, + mode: SDKMode.FRONTEND, + }; + + static DEFAULT_ARBITRUM: Conf = { + chain: arbitrum, + mode: SDKMode.BACKEND, + subgraphUrl: "https://api.thegraph.com/subgraphs/name/cliqueofficial/verax-arbitrum", + portalRegistryAddress: "0x4042D0A54f997EE3a1b0F51e4813654199BFd8bD", + moduleRegistryAddress: "0x3acF4daAB6cbc01546Dd4a96c9665B398d48A4ba", + schemaRegistryAddress: "0xE96072F46EA0e42e538762dDc0aFa4ED8AE6Ec27", + attestationRegistryAddress: "0x335E9719e8eFE2a19A92E07BC4836160fC31cd7C", + }; + + static DEFAULT_ARBITRUM_FRONTEND: Conf = { + ...VeraxSdk.DEFAULT_ARBITRUM, + mode: SDKMode.FRONTEND, + }; + private readonly web3Client: PublicClient; private readonly walletClient: WalletClient | undefined; From a464ff0bb67bfecb1e815a72d6c269e50b559ffb Mon Sep 17 00:00:00 2001 From: ollie <67156692+0xEillo@users.noreply.github.com> Date: Wed, 29 Nov 2023 15:29:47 +0000 Subject: [PATCH 04/55] feat: deploy subgraphs on arbitrum mainnet and testnet (#435) --- README.md | 17 ++++-- subgraph/.env.example | 2 + subgraph/abis/AttestationRegistry.json | 74 +++++++++++++++++++++++++ subgraph/networks.json | 10 ++-- subgraph/package.json | 10 ++-- subgraph/subgraph.arbitrum-mainnet.yaml | 8 +-- 6 files changed, 103 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index f0bf0f06..5c0fd25d 100644 --- a/README.md +++ b/README.md @@ -22,11 +22,20 @@ the network. ## Links -📚 [Official documentation](https://docs.ver.ax/) -🔍 -[Testnet GraphQL API](https://graph-query.goerli.linea.build/subgraphs/name/Consensys/linea-attestation-registry/graphql) -🔍 [Mainnet GraphQL API](https://graph-query.linea.build/subgraphs/name/Consensys/linea-attestation-registry/graphql) +📚 [Official documentation](https://docs.ver.ax/) + +
+ 🔍 GraphQL APIs + +- [Linea Testnet](https://graph-query.goerli.linea.build/subgraphs/name/Consensys/linea-attestation-registry/graphql) +- [Linea Mainnet](https://graph-query.linea.build/subgraphs/name/Consensys/linea-attestation-registry/graphql) +- [Arbitrum Goerli](https://api.thegraph.com/subgraphs/name/cliqueofficial/verax-arbitrum-goerli) +- [Arbitrum Mainnet](https://api.thegraph.com/subgraphs/name/cliqueofficial/verax-arbitrum) + +
+ 🧱 [Verax SDK](https://www.npmjs.com/package/@verax-attestation-registry/verax-sdk) - **WIP** + 🌍 Verax Explorer - _Coming soon_ ## Repository Organisation diff --git a/subgraph/.env.example b/subgraph/.env.example index 81a1cadf..c6b631c1 100644 --- a/subgraph/.env.example +++ b/subgraph/.env.example @@ -4,3 +4,5 @@ DEPLOY_ENDPOINT_ARBITRUM_GOERLI= DEPLOY_ENDPOINT_ARBITRUM_MAINNET= IPFS_ENDPOINT= IPFS_IDENTIFIERS= +SUBGRAPH_NAME_ARBITRUM= +SUBGRAPH_NAME_ARBITRUM_GOERLI= diff --git a/subgraph/abis/AttestationRegistry.json b/subgraph/abis/AttestationRegistry.json index 4a728dc4..749cbc89 100644 --- a/subgraph/abis/AttestationRegistry.json +++ b/subgraph/abis/AttestationRegistry.json @@ -184,6 +184,54 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "accounts", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + } + ], + "name": "balanceOfBatch", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -376,6 +424,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "getChainPrefix", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "getVersionNumber", @@ -591,6 +652,19 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_chainPrefix", + "type": "uint256" + } + ], + "name": "updateChainPrefix", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { diff --git a/subgraph/networks.json b/subgraph/networks.json index 9bd00da0..f009c0bf 100644 --- a/subgraph/networks.json +++ b/subgraph/networks.json @@ -38,22 +38,22 @@ "arbitrum-goerli": { "AttestationRegistry": { "address": "0xCD839595FdA5A8111d5E03D42d9D9af60ee67B66", - "startBlock": 54335728 + "startBlock": 56196775 }, "ModuleRegistry": { "address": "0x58EE79284bE65b217Db408A0991314f9Ae84348A", - "startBlock": 54335866 + "startBlock": 56196823 }, "PortalRegistry": { "address": "0x7d6a914C1e33C141CB4a5e0095c1075E5649aFB2", - "startBlock": 54335949 + "startBlock": 56196902 }, "SchemaRegistry": { "address": "0x129043e80e0B4C7da61a622df0912c31D3414AA7", - "startBlock": 54337444 + "startBlock": 56196956 } }, - "arbitrum-mainnet": { + "arbitrum-one": { "AttestationRegistry": { "address": "0x335E9719e8eFE2a19A92E07BC4836160fC31cd7C", "startBlock": 149974789 diff --git a/subgraph/package.json b/subgraph/package.json index 8f087531..d9ea3859 100644 --- a/subgraph/package.json +++ b/subgraph/package.json @@ -18,19 +18,19 @@ "build:linea-mainnet": "cp subgraph.linea-mainnet.yaml subgraph.yaml && pnpm run codegen:linea-mainnet && graph build --network linea-mainnet", "build:linea-goerli": "cp subgraph.linea-goerli.yaml subgraph.yaml && pnpm run codegen:linea-goerli && graph build --network linea-goerli", "build:arbitrum-goerli": "cp subgraph.linea-goerli.yaml subgraph.yaml && pnpm run codegen:arbitrum-goerli && graph build --network arbitrum-goerli", - "build:arbitrum-mainnet": "cp subgraph.linea-goerli.yaml subgraph.yaml && pnpm run codegen:arbitrum-mainnet && graph build --network arbitrum-mainnet", + "build:arbitrum-one": "cp subgraph.linea-goerli.yaml subgraph.yaml && pnpm run codegen:arbitrum-one && graph build --network arbitrum-one", "codegen:linea-mainnet": "cp subgraph.linea-mainnet.yaml subgraph.yaml && graph codegen", "codegen:linea-goerli": "cp subgraph.linea-goerli.yaml subgraph.yaml && graph codegen", "codegen:arbitrum-goerli": "cp subgraph.linea-goerli.yaml subgraph.yaml && graph codegen", - "codegen:arbitrum-mainnet": "cp subgraph.linea-mainnet.yaml subgraph.yaml && graph codegen", + "codegen:arbitrum-one": "cp subgraph.linea-mainnet.yaml subgraph.yaml && graph codegen", "create:linea-mainnet": "source .env && graph create --node $DEPLOY_ENDPOINT_LINEA_MAINNET Consensys/linea-attestation-registry", "create:linea-goerli": "source .env && graph create --node $DEPLOY_ENDPOINT_LINEA_GOERLI Consensys/linea-attestation-registry", "create:arbitrum-goerli": "source .env && graph create --node $DEPLOY_ENDPOINT_ARBITRUM_GOERLI Consensys/verax-arbitrum-goerli", - "create:arbitrum-mainnet": "source .env && graph create --node $DEPLOY_ENDPOINT_ARBITRUM_GOERLI Consensys/verax-arbitrum", + "create:arbitrum-one": "source .env && graph create --node $DEPLOY_ENDPOINT_ARBITRUM_GOERLI Consensys/verax-arbitrum", "deploy:linea-mainnet": "source .env && cp subgraph.linea-mainnet.yaml subgraph.yaml && pnpm run build:linea-mainnet && graph deploy --network linea-mainnet --node $DEPLOY_ENDPOINT_LINEA_MAINNET --headers \"{\\\"Authorization\\\": \\\"Basic $IPFS_IDENTIFIERS\\\"}\" --ipfs $IPFS_ENDPOINT --version-label v0.0.1 Consensys/linea-attestation-registry", "deploy:linea-goerli": "source .env && cp subgraph.linea-goerli.yaml subgraph.yaml && pnpm run build:linea-goerli && graph deploy --network linea-goerli --node $DEPLOY_ENDPOINT_LINEA_GOERLI --headers \"{\\\"Authorization\\\": \\\"Basic $IPFS_IDENTIFIERS\\\"}\" --ipfs $IPFS_ENDPOINT --version-label v0.0.5 Consensys/linea-attestation-registry", - "deploy:arbitrum-goerli": "source .env && cp subgraph.arbitrum-goerli.yaml subgraph.yaml && pnpm run build:arbitrum-goerli && graph deploy --network arbitrum-goerli --node $DEPLOY_ENDPOINT_ARBITRUM_GOERLI --headers \"{\\\"Authorization\\\": \\\"Basic $IPFS_IDENTIFIERS\\\"}\" --ipfs $IPFS_ENDPOINT --version-label v0.0.5 Consensys/verax-arbitrum-goerli", - "deploy:arbitrum-mainnet": "source .env && cp subgraph.arbitrum-mainnet.yaml subgraph.yaml && pnpm run build:arbitrum-mainnet && graph deploy --network arbitrum-mainnet --node $DEPLOY_ENDPOINT_ARBITRUM_MAINNET --headers \"{\\\"Authorization\\\": \\\"Basic $IPFS_IDENTIFIERS\\\"}\" --ipfs $IPFS_ENDPOINT --version-label v0.0.5 Consensys/verax-arbitrum", + "deploy:arbitrum-goerli": "source .env && cp subgraph.arbitrum-goerli.yaml subgraph.yaml && pnpm run build:arbitrum-goerli && graph deploy --network arbitrum-goerli --product hosted-service $SUBGRAPH_NAME_ARBITRUM_GOERLI", + "deploy:arbitrum-one": "source .env && cp subgraph.arbitrum-one.yaml subgraph.yaml && pnpm run build:arbitrum-one && graph deploy --network arbitrum-one --product hosted-service $SUBGRAPH_NAME_ARBITRUM", "remove:linea-mainnet": "source .env && graph remove --node $DEPLOY_ENDPOINT_LINEA_MAINNET Consensys/linea-attestation-registry", "remove:linea-goerli": "source .env && graph remove --node $DEPLOY_ENDPOINT_LINEA_GOERLI Consensys/linea-attestation-registry", "test": "pnpm run codegen:linea-goerli && graph test", diff --git a/subgraph/subgraph.arbitrum-mainnet.yaml b/subgraph/subgraph.arbitrum-mainnet.yaml index 5875c7ef..03e8bbaa 100644 --- a/subgraph/subgraph.arbitrum-mainnet.yaml +++ b/subgraph/subgraph.arbitrum-mainnet.yaml @@ -4,7 +4,7 @@ schema: dataSources: - kind: ethereum name: AttestationRegistry - network: arbitrum-mainnet + network: arbitrum-one source: abi: AttestationRegistry address: "0x335E9719e8eFE2a19A92E07BC4836160fC31cd7C" @@ -24,7 +24,7 @@ dataSources: file: ./src/attestation-registry.ts - kind: ethereum name: ModuleRegistry - network: arbitrum-mainnet + network: arbitrum-one source: abi: ModuleRegistry address: "0x3acF4daAB6cbc01546Dd4a96c9665B398d48A4ba" @@ -44,7 +44,7 @@ dataSources: file: ./src/module-registry.ts - kind: ethereum name: PortalRegistry - network: arbitrum-mainnet + network: arbitrum-one source: abi: PortalRegistry address: "0x4042D0A54f997EE3a1b0F51e4813654199BFd8bD" @@ -64,7 +64,7 @@ dataSources: file: ./src/portal-registry.ts - kind: ethereum name: SchemaRegistry - network: arbitrum-mainnet + network: arbitrum-one source: abi: SchemaRegistry address: "0xE96072F46EA0e42e538762dDc0aFa4ED8AE6Ec27" From abc036fd025a001c4ff696af9ab99c9e9703c725 Mon Sep 17 00:00:00 2001 From: Alain Nicolas Date: Mon, 4 Dec 2023 15:52:28 +0100 Subject: [PATCH 05/55] fix: Remove POH (#436) --- website/src/App.tsx | 4 ++-- website/src/components/Navbar.tsx | 5 ----- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/website/src/App.tsx b/website/src/App.tsx index 628dd330..0c17c9a6 100644 --- a/website/src/App.tsx +++ b/website/src/App.tsx @@ -14,9 +14,9 @@ function App() { - } /> + } /> } /> - } /> + } />