From cfd5a26b5e5aee793fc8d899210ddb42837d6314 Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 18 Nov 2024 11:46:28 +0200 Subject: [PATCH] fix: added caching layer for getting proposals and payloads --- package.json | 6 +- pnpm-lock.yaml | 970 +++++++++++++++++- src/app/page.page.tsx | 2 - src/old/delegate/store/delegationSlice.ts | 2 +- src/old/rpcSwitcher/store/rpcSwitcherSlice.ts | 2 +- src/old/web3/services/delegationService.ts | 2 +- src/old/web3/services/govDataService.ts | 2 +- src/requests/fetchInitialData.ts | 2 +- src/requests/fetchProposalsDataForList.ts | 91 +- src/requests/utils/cachingLayer.ts | 5 + src/requests/utils/formatProposalData.ts | 119 +-- src/requests/utils/getGovCoreConfigs.ts | 2 +- src/requests/utils/getPayloadsData.ts | 41 +- src/requests/utils/getProposalsData.ts | 44 +- src/requests/utils/getVotingData.ts | 32 +- src/store/rpcSwitcherSlice.ts | 2 +- src/types.ts | 14 +- 17 files changed, 1142 insertions(+), 196 deletions(-) create mode 100644 src/requests/utils/cachingLayer.ts diff --git a/package.json b/package.json index 78309df3..5a085ad3 100644 --- a/package.json +++ b/package.json @@ -31,8 +31,10 @@ "test": "NODE_OPTIONS=--experimental-vm-modules jest --watch" }, "dependencies": { - "@bgd-labs/aave-address-book": "3.1.1", - "@bgd-labs/aave-governance-ui-helpers": "3.1.6", + "@bgd-labs/aave-address-book": "^4.3.1", + "@bgd-labs/aave-cli": "^1.1.10", + "@bgd-labs/aave-governance-ui-helpers": "^3.1.8", + "@bgd-labs/aave-v3-governance-cache": "^1.0.8", "@bgd-labs/frontend-web3-utils": "1.3.1", "@bgd-labs/react-web3-icons": "1.4.6", "@emotion/cache": "^11.13.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a4361a40..8f966881 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,11 +9,17 @@ importers: .: dependencies: '@bgd-labs/aave-address-book': - specifier: 3.1.1 - version: 3.1.1 + specifier: ^4.3.1 + version: 4.3.1 + '@bgd-labs/aave-cli': + specifier: ^1.1.10 + version: 1.1.10(bufferutil@4.0.8)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10) '@bgd-labs/aave-governance-ui-helpers': - specifier: 3.1.6 - version: 3.1.6(@bgd-labs/aave-address-book@3.1.1)(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(viem@2.21.41(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8)) + specifier: ^3.1.8 + version: 3.1.8(@bgd-labs/aave-address-book@4.3.1)(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(typescript@5.6.3)(viem@2.21.41(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) + '@bgd-labs/aave-v3-governance-cache': + specifier: ^1.0.8 + version: 1.0.8(@bgd-labs/aave-address-book@4.3.1)(viem@2.21.41(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8)) '@bgd-labs/frontend-web3-utils': specifier: 1.3.1 version: 1.3.1(immer@10.1.1)(react@18.3.1)(viem@2.21.41(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8))(wagmi@2.12.26(@tanstack/query-core@5.59.17)(@tanstack/react-query@5.59.19(react@18.3.1))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10)(viem@2.21.41(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8))(zustand@4.5.5(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1)) @@ -289,6 +295,9 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} + '@assemblyscript/loader@0.9.4': + resolution: {integrity: sha512-HazVq9zwTVwGmqdwYzu7WyQ6FQVZ7SwET0KKQuKm55jD0IfUpZgN0OPIiZG3zV1iSrVYcN0bdwLRXI/VNCYsUA==} + '@babel/code-frame@7.26.2': resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} engines: {node: '>=6.9.0'} @@ -1002,16 +1011,26 @@ packages: resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==} engines: {node: '>=6.9.0'} - '@bgd-labs/aave-address-book@3.1.1': - resolution: {integrity: sha512-H3oQFMCgnL0BsQuSTAaj9M3zBm1uK3Uk6qfPH29ktLxhipE4UVqglhC/ZQVMT2wlgf1bMBjmsvwgTDRDOwXuFQ==} + '@bgd-labs/aave-address-book@4.3.1': + resolution: {integrity: sha512-Rg5ak/OuXgT6Q0q+CcP4GvutsTVaR6HmSsyHogkjwPgrgApg4d8GxtKHqBj9oXbNHnW5/N7piEGZc8Jd5z7G/Q==} + + '@bgd-labs/aave-cli@1.1.10': + resolution: {integrity: sha512-ax2qIvbMmOle24GPDqA+syJRB8SOnCOftR7UCfxZ5jT5m0RjR0AWxGGKPILfXAuCwXj0NV5Xi5Zelu2BalBAEA==} + hasBin: true - '@bgd-labs/aave-governance-ui-helpers@3.1.6': - resolution: {integrity: sha512-hFpiY/bBb45nzy2LBzJiGvih8hzkh87QRkSEtWUSq2KpilSmUDZm/tFjMouuQfCcsOKoqHQwwmRaTAMM52A93A==} + '@bgd-labs/aave-governance-ui-helpers@3.1.8': + resolution: {integrity: sha512-78CSHUkIU4fUL1QCENIPdy2+JbWmUXVFk0T1YbL3XUBPcQJLXJLaiSWk3shYkybbIbucglc2LaJRBUxVlx+JUg==} engines: {node: '>=18'} peerDependencies: - '@bgd-labs/aave-address-book': ^3.1.1 + '@bgd-labs/aave-address-book': ^4 ethers: ^5 - viem: ^2.9.3 + viem: ^2 + + '@bgd-labs/aave-v3-governance-cache@1.0.8': + resolution: {integrity: sha512-niaJafgxLQcuzZ13Wo1rO5tJ8f5pE5AdWs+5/PoHMrk5Z+bm5kE59oHbIO2xpg1pCQ7IZmsxXEIIlC2c0+v/Jg==} + peerDependencies: + '@bgd-labs/aave-address-book': ^4.0.1-02c70ec5f8a433b38372b81d27ed44b79aa52f65.0 + viem: ^2.9.20 '@bgd-labs/frontend-web3-utils@1.3.1': resolution: {integrity: sha512-89dkqPijNZH9NacBFGZGnLkeplEB+DN/PMlbkN0PxQlkai/6wXPLjHtI+QO/vO2lAIC+kz76x0rHHFcPrOXLsg==} @@ -1023,10 +1042,22 @@ packages: wagmi: ^2.5.13 zustand: ^4.5.2 + '@bgd-labs/js-utils@1.4.2': + resolution: {integrity: sha512-hKiorNIyEApdH1w7laYQ+sGkrCGZTem9kD5Ud7YP/ZKtkoPx12FcTAp+P+JZ42BerPEqzGLZMDRJDB2ZGKeAJw==} + engines: {node: '>=18.0.0'} + peerDependencies: + viem: ^2.0.3 + '@bgd-labs/react-web3-icons@1.4.6': resolution: {integrity: sha512-668HIZLxzvcI1uTDvQ3bkcBmLqV1k3OJ4R/6hpCyx6OQDzzjfvHhuLpIUPSbMzi3q+15xX8fMDVVE2MBUCs1Xg==} engines: {node: '>=18'} + '@chainsafe/is-ip@2.0.2': + resolution: {integrity: sha512-ndGqEMG1W5WkGagaqOZHpPU172AGdxr+LD15sv3WIUvT5oCFUrG1Y0CW/v2Egwj4JXEvSibaIIIqImsm98y1nA==} + + '@chainsafe/netmask@2.0.0': + resolution: {integrity: sha512-I3Z+6SWUoaljh3TBzCnCxjlUyN8tA+NAk5L6m9IxvCf1BENQTePzPMis97CoN/iMW1St3WN+AWCCRp+TTBRiDg==} + '@changesets/apply-release-plan@7.0.5': resolution: {integrity: sha512-1cWCk+ZshEkSVEZrm2fSj1Gz8sYvxgUL4Q78+1ZZqeqfuevPTPk033/yUZ3df8BKMohkqqHfzj0HOOrG0KtXTw==} @@ -1088,6 +1119,11 @@ packages: '@coinbase/wallet-sdk@4.1.0': resolution: {integrity: sha512-SkJJ72X/AA3+aS21sPs/4o4t6RVeDSA7HuBW4zauySX3eBiPU0zmVw95tXH/eNSX50agKz9WzeN8P5F+HcwLOw==} + '@commander-js/extra-typings@11.1.0': + resolution: {integrity: sha512-GuvZ38d23H+7Tz2C9DhzCepivsOsky03s5NI+KCy7ke1FNUvsJ2oO47scQ9YaGGhgjgNW5OYYNSADmbjcSoIhw==} + peerDependencies: + commander: 11.1.x + '@discoveryjs/json-ext@0.5.7': resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} engines: {node: '>=10.0.0'} @@ -1160,6 +1196,150 @@ packages: '@emotion/weak-memoize@0.4.0': resolution: {integrity: sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==} + '@esbuild/aix-ppc64@0.23.1': + resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.23.1': + resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.23.1': + resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.23.1': + resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.23.1': + resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.23.1': + resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.23.1': + resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.23.1': + resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.23.1': + resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.23.1': + resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.23.1': + resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.23.1': + resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.23.1': + resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.23.1': + resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.23.1': + resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.23.1': + resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.23.1': + resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.23.1': + resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.23.1': + resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.23.1': + resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.23.1': + resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.23.1': + resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.23.1': + resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.23.1': + resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + '@eslint-community/eslint-utils@4.4.1': resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1331,6 +1511,54 @@ packages: resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==} engines: {node: '>=18.18'} + '@inquirer/checkbox@1.5.2': + resolution: {integrity: sha512-CifrkgQjDkUkWexmgYYNyB5603HhTHI91vLFeQXh6qrTKiCMVASol01Rs1cv6LP/A2WccZSRlJKZhbaBIs/9ZA==} + engines: {node: '>=14.18.0'} + + '@inquirer/confirm@2.0.17': + resolution: {integrity: sha512-EqzhGryzmGpy2aJf6LxJVhndxYmFs+m8cxXzf8nejb1DE3sabf6mUgBcp4J0jAUEiAcYzqmkqRr7LPFh/WdnXA==} + engines: {node: '>=14.18.0'} + + '@inquirer/core@6.0.0': + resolution: {integrity: sha512-fKi63Khkisgda3ohnskNf5uZJj+zXOaBvOllHsOkdsXRA/ubQLJQrZchFFi57NKbZzkTunXiBMdvWOv71alonw==} + engines: {node: '>=14.18.0'} + + '@inquirer/editor@1.2.15': + resolution: {integrity: sha512-gQ77Ls09x5vKLVNMH9q/7xvYPT6sIs5f7URksw+a2iJZ0j48tVS6crLqm2ugG33tgXHIwiEqkytY60Zyh5GkJQ==} + engines: {node: '>=14.18.0'} + + '@inquirer/expand@1.1.16': + resolution: {integrity: sha512-TGLU9egcuo+s7PxphKUCnJnpCIVY32/EwPCLLuu+gTvYiD8hZgx8Z2niNQD36sa6xcfpdLY6xXDBiL/+g1r2XQ==} + engines: {node: '>=14.18.0'} + + '@inquirer/input@1.2.16': + resolution: {integrity: sha512-Ou0LaSWvj1ni+egnyQ+NBtfM1885UwhRCMtsRt2bBO47DoC1dwtCa+ZUNgrxlnCHHF0IXsbQHYtIIjFGAavI4g==} + engines: {node: '>=14.18.0'} + + '@inquirer/password@1.1.16': + resolution: {integrity: sha512-aZYZVHLUXZ2gbBot+i+zOJrks1WaiI95lvZCn1sKfcw6MtSSlYC8uDX8sTzQvAsQ8epHoP84UNvAIT0KVGOGqw==} + engines: {node: '>=14.18.0'} + + '@inquirer/prompts@3.3.2': + resolution: {integrity: sha512-k52mOMRvTUejrqyF1h8Z07chC+sbaoaUYzzr1KrJXyj7yaX7Nrh0a9vktv8TuocRwIJOQMaj5oZEmkspEcJFYQ==} + engines: {node: '>=14.18.0'} + + '@inquirer/rawlist@1.2.16': + resolution: {integrity: sha512-pZ6TRg2qMwZAOZAV6TvghCtkr53dGnK29GMNQ3vMZXSNguvGqtOVc4j/h1T8kqGJFagjyfBZhUPGwNS55O5qPQ==} + engines: {node: '>=14.18.0'} + + '@inquirer/select@1.3.3': + resolution: {integrity: sha512-RzlRISXWqIKEf83FDC9ZtJ3JvuK1l7aGpretf41BCWYrvla2wU8W8MTRNMiPrPJ+1SIqrRC1nZdZ60hD9hRXLg==} + engines: {node: '>=14.18.0'} + + '@inquirer/type@1.5.5': + resolution: {integrity: sha512-MzICLu4yS7V8AA61sANROZ9vT1H3ooca5dSmI1FjZkzq7o/koMsRfQSzRtFo+F3Ao4Sf1C0bpLKejpKB/+j6MA==} + engines: {node: '>=18'} + + '@ipld/dag-pb@4.1.3': + resolution: {integrity: sha512-ueULCaaSCcD+dQga6nKiRr+RSeVgdiYiEPKVUu5iQMNYDN+9osd0KpR3UDd9uQQ+6RWuv9L34SchfEwj7YIbOA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -1392,6 +1620,15 @@ packages: '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + '@leichtgewicht/ip-codec@2.0.5': + resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} + + '@libp2p/interface@2.2.0': + resolution: {integrity: sha512-Pn3P5ixDggBjDyuULT0GvwdgD3JA426OqZ0e521mI7ysS+/M9Z9fp4Qcy8JrkJ45bLmIi9cgrNrefuU/Zu+bAQ==} + + '@libp2p/logger@5.1.3': + resolution: {integrity: sha512-NUVWEWGbXlBDgDE5ntdm51+ZICmaKYI8mor6KrlPeB1WXDyIFxRWIBw6uzt+HgprQJWzLTojeUEGv6OPsj95Dg==} + '@lit-labs/ssr-dom-shim@1.2.1': resolution: {integrity: sha512-wx4aBmgeGvFmOKucFKY+8VFJSYZxs9poN3SDNQFF6lT6NrQUnHiPB2PWz2sc4ieEcAaYYzN+1uWahEeTq2aRIQ==} @@ -1581,6 +1818,16 @@ packages: '@types/react': optional: true + '@multiformats/dns@1.0.6': + resolution: {integrity: sha512-nt/5UqjMPtyvkG9BQYdJ4GfLK3nMqGpFZOzf4hAmIa0sJh2LlS9YKXZ4FgwBDsaHvzZqR/rUFIywIc7pkHNNuw==} + + '@multiformats/multiaddr@12.3.1': + resolution: {integrity: sha512-yoGODQY4nIj41ENJClucS8FtBoe8w682bzbKldEQr9lSlfdHqAsRC+vpJAOBpiMwPps1tHua4kxrDmvprdhoDQ==} + + '@multiformats/murmur3@2.1.8': + resolution: {integrity: sha512-6vId1C46ra3R1sbJUOFCZnsUIveR9oF20yhPmAFxPm0JfrX3/ZRCgP3YDrBzlGoEppOXnA9czHeYc0T9mB6hbA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + '@next/bundle-analyzer@14.2.15': resolution: {integrity: sha512-W6iyrp/3G7WbIztDcNt+owYX1iv37m9f4RJs0fa/Ayw4EDdjNPX6qKQrC7gBrESHV3FuchED+8R+CNiw1i78eQ==} @@ -1942,6 +2189,10 @@ packages: '@stablelib/x25519@1.0.3': resolution: {integrity: sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw==} + '@supercharge/promise-pool@3.2.0': + resolution: {integrity: sha512-pj0cAALblTZBPtMltWOlZTQSLT07jIaFNeM8TWoJD1cQMgDB9mcMlVMoetiB35OzNJpqQ2b+QEtwiR9f20mADg==} + engines: {node: '>=8'} + '@svgr/babel-plugin-add-jsx-attribute@8.0.0': resolution: {integrity: sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==} engines: {node: '>=14'} @@ -2097,6 +2348,9 @@ packages: '@types/debug@4.1.12': resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + '@types/dns-packet@5.6.5': + resolution: {integrity: sha512-qXOC7XLOEe43ehtWJCMnQXvgcIpv6rPmQ1jXT98Ad8A3TB1Ue50jsCbSSSyuazScEuZ/Q026vHbrOTVkmwA+7Q==} + '@types/dom-css@2.1.1': resolution: {integrity: sha512-ZRruYScw5hPpWY8gOhcHRkBB02CC9uZAmtxkgP+obMLvwfwezQ2adYfAjfBhJR9NdcQAbkexpbuQ1Fj28FejaA==} @@ -2148,12 +2402,18 @@ packages: '@types/ms@0.7.34': resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} + '@types/mute-stream@0.0.4': + resolution: {integrity: sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==} + '@types/node-forge@1.3.11': resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} '@types/node@12.20.55': resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} + '@types/node@20.17.6': + resolution: {integrity: sha512-VEI7OdvK2wP7XHnsuXbAJnEpEkF6NjSN45QJlL4VGqZSXsnicpesdTWsg9RISeSdYd3yeRj/y3k5KGjUXYnFwQ==} + '@types/node@22.9.0': resolution: {integrity: sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==} @@ -2196,6 +2456,9 @@ packages: '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + '@types/wrap-ansi@3.0.0': + resolution: {integrity: sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==} + '@types/yargs-parser@21.0.3': resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} @@ -2501,6 +2764,10 @@ packages: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + ansi-escapes@7.0.0: resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} engines: {node: '>=18'} @@ -2669,6 +2936,9 @@ packages: base-x@4.0.0: resolution: {integrity: sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==} + base-x@5.0.0: + resolution: {integrity: sha512-sMW3VGSX1QWVFA6l8U62MLKz29rRfpTlYdCqLdpLo1/Yd4zZwSbnUaDfciIAowAqvq7YFnWq9hrhdg1KYgc1lQ==} + base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} @@ -2686,6 +2956,12 @@ packages: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} + bl@5.1.0: + resolution: {integrity: sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==} + + blockstore-core@5.0.2: + resolution: {integrity: sha512-y7/BHdYLO3YCpJMg6Ue7b4Oz4FT1HWSZoHHdlsaJTsvoE8XieXb6kUCB9UkkUBDw2x4neRDwlgYBpyK77+Ro2Q==} + bn.js@4.12.0: resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} @@ -2719,6 +2995,9 @@ packages: bs58@5.0.0: resolution: {integrity: sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==} + bs58@6.0.0: + resolution: {integrity: sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==} + bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} @@ -2842,10 +3121,18 @@ packages: resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} engines: {node: '>=18'} + cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + cli-truncate@4.0.0: resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} engines: {node: '>=18'} + cli-width@4.1.0: + resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} + engines: {node: '>= 12'} + client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} @@ -3142,6 +3429,10 @@ packages: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} + dns-packet@5.6.1: + resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} + engines: {node: '>=6'} + doctrine@2.1.0: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} engines: {node: '>=0.10.0'} @@ -3178,6 +3469,10 @@ packages: dot-case@3.0.4: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + dotenv@16.4.5: + resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} + engines: {node: '>=12'} + duplexer2@0.1.4: resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==} @@ -3298,6 +3593,11 @@ packages: resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} engines: {node: '>= 0.4'} + esbuild@0.23.1: + resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==} + engines: {node: '>=18'} + hasBin: true + escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} @@ -3305,6 +3605,10 @@ packages: escape-html@1.0.3: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + escape-string-regexp@2.0.0: resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} engines: {node: '>=8'} @@ -3558,6 +3862,10 @@ packages: fb-watchman@2.0.2: resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + figures@3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} + file-entry-cache@8.0.0: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} @@ -3595,6 +3903,9 @@ packages: resolution: {integrity: sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==} engines: {node: '>=14.16'} + find-object-paths@1.1.0: + resolution: {integrity: sha512-UJvfPQibLUOrXl76PJ49cYbXJPsU1lYX6Pw7mHVW+ahaGx6kVHiozNIQriDc/EOlSvkDa6L9GyTFXPYQsa6sGA==} + find-root@1.1.0: resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} @@ -3724,6 +4035,9 @@ packages: resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} engines: {node: '>= 0.4'} + get-tsconfig@4.8.1: + resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} + glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -3784,6 +4098,9 @@ packages: h3@1.13.0: resolution: {integrity: sha512-vFEAu/yf8UMUcB4s43OaDaigcqpQd14yanmOsn+NcRX3/guSKncyE2rOYhq8RIchgJrPSs/QiIddnTTR1ddiAg==} + hamt-sharding@3.0.6: + resolution: {integrity: sha512-nZeamxfymIWLpVcAN0CRrb7uVq3hCOGj9IcL6NMA6VVCVWqj+h9Jo/SmaWuS92AEDf1thmHsM5D5c70hM3j2Tg==} + harmony-reflect@1.6.2: resolution: {integrity: sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==} @@ -3812,6 +4129,9 @@ packages: hash.js@1.1.7: resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + hashlru@2.3.0: + resolution: {integrity: sha512-0cMsjjIC8I+D3M44pOQdsy0OHXGLVz6Z0beRuufhKa0KfaD2wGwAev6jILzXsd3/vpnNQJmWyZtIILqM1N+n5A==} + hasown@2.0.2: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} @@ -3974,6 +4294,15 @@ packages: inline-style-parser@0.2.4: resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==} + interface-blockstore@5.3.1: + resolution: {integrity: sha512-nhgrQnz6yUQEqxTFLhlOBurQOy5lWlwCpgFmZ3GTObTVTQS9RZjK/JTozY6ty9uz2lZs7VFJSqwjWAltorJ4Vw==} + + interface-datastore@8.3.1: + resolution: {integrity: sha512-3r0ETmHIi6HmvM5sc09QQiCD3gUfwtEM/AAChOyAd/UAKT69uk8LXfTSUBufbUIO/dU65Vj8nb9O6QjwW8vDSQ==} + + interface-store@6.0.2: + resolution: {integrity: sha512-KSFCXtBlNoG0hzwNa0RmhHtrdhzexp+S+UY2s0rWTBJyfdEIgn6i6Zl9otVqrcFYbYrneBT7hbmHQ8gE0C3umA==} + internal-slot@1.0.7: resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} engines: {node: '>= 0.4'} @@ -3981,6 +4310,12 @@ packages: invariant@2.2.4: resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + ipfs-unixfs-importer@15.3.1: + resolution: {integrity: sha512-wHCTBqNsZXLJZ9/GSr7Msb3FDXD5yXF20Y9sKyUbbqNjbvaXs3n3h1+NM/5+WrgESHfwRcJIlJtaOKafL8Ymdg==} + + ipfs-unixfs@11.2.0: + resolution: {integrity: sha512-J8FN1qM5nfrDo8sQKQwfj0+brTg1uBfZK2vY9hxci33lcl3BFrsELS9+1+4q/8tO1ASKfxZO8W3Pi2O4sVX2Lg==} + iron-webcrypto@1.2.1: resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} @@ -4234,6 +4569,36 @@ packages: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} + it-all@3.0.6: + resolution: {integrity: sha512-HXZWbxCgQZJfrv5rXvaVeaayXED8nTKx9tj9fpBhmcUJcedVZshMMMqTj0RG2+scGypb9Ut1zd1ifbf3lA8L+Q==} + + it-batch@3.0.6: + resolution: {integrity: sha512-pQAAlSvJ4aV6xM/6LRvkPdKSKXxS4my2fGzNUxJyAQ8ccFdxPmK1bUuF5OoeUDkcdrbs8jtsmc4DypCMrGY6sg==} + + it-drain@3.0.7: + resolution: {integrity: sha512-vy6S1JKjjHSIFHgBpLpD1zhkCRl3z1zYWUxE14+kAYf+BL9ssWSFImJfhl361IIcwr0ofw8etzg11VqqB+ntUA==} + + it-filter@3.1.1: + resolution: {integrity: sha512-TOXmVuaSkxlLp2hXKoMTra0WMZMKVFxE3vSsbIA+PbADNCBAHhjJ/lM31vBOUTddHMO34Ku++vU8T9PLlBxQtg==} + + it-first@3.0.6: + resolution: {integrity: sha512-ExIewyK9kXKNAplg2GMeWfgjUcfC1FnUXz/RPfAvIXby+w7U4b3//5Lic0NV03gXT8O/isj5Nmp6KiY0d45pIQ==} + + it-merge@3.0.5: + resolution: {integrity: sha512-2l7+mPf85pyRF5pqi0dKcA54E5Jm/2FyY5GsOaN51Ta0ipC7YZ3szuAsH8wOoB6eKY4XsU4k2X+mzPmFBMayEA==} + + it-parallel-batch@3.0.6: + resolution: {integrity: sha512-3wgiQGvMMHy65OXScrtrtmY+bJSF7P6St1AP+BU+SK83fEr8NNk/MrmJKrtB1+MahYX2a8I+pOGKDj8qVtuV0Q==} + + it-peekable@3.0.5: + resolution: {integrity: sha512-JWQOGMt6rKiPcY30zUVMR4g6YxkpueTwHVE7CMs/aGqCf4OydM6w+7ZM3PvmO1e0TocjuR4aL8xyZWR46cTqCQ==} + + it-pushable@3.2.3: + resolution: {integrity: sha512-gzYnXYK8Y5t5b/BnJUr7glfQLO4U5vyb05gPx/TyTw+4Bv1zM9gFk4YsOrnulWefMewlphCjKkakFvj1y99Tcg==} + + it-stream-types@2.0.2: + resolution: {integrity: sha512-Rz/DEZ6Byn/r9+/SBCuJhpPATDF9D+dz5pbgSUyBsCDtza6wtNATrz/jz1gDyNanC3XdLboriHnOC925bZRBww==} + iterator.prototype@1.1.3: resolution: {integrity: sha512-FW5iMbeQ6rBGm/oKgzq2aW4KvAGpxPzYES8N4g4xNXUKpL1mclMvOe+76AcLDTvD+Ze+sOpVhgdAQEKF4L9iGQ==} engines: {node: '>= 0.4'} @@ -4321,6 +4686,9 @@ packages: engines: {node: '>=6'} hasBin: true + json-bigint@1.0.0: + resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==} + json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} @@ -4793,12 +5161,27 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + ms@3.0.0-canary.1: + resolution: {integrity: sha512-kh8ARjh8rMN7Du2igDRO9QJnqCb2xYTJxyQYK7vJJS4TvLLmsbyhiKpSW+t+y26gyOyMd0riphX0GeWKU3ky5g==} + engines: {node: '>=12.13'} + + multiformats@13.3.1: + resolution: {integrity: sha512-QxowxTNwJ3r5RMctoGA5p13w5RbRT2QDkoM+yFlqfLiioBp78nhDjnRLvmSBI9+KAqN4VdgOVWM9c0CHd86m3g==} + multiformats@9.9.0: resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==} multipipe@1.0.2: resolution: {integrity: sha512-6uiC9OvY71vzSGX8lZvSqscE7ft9nPupJ8fMjrCNRAUy2LREUW42UL+V/NTrogr6rFgRydUrCX4ZitfpSNkSCQ==} + murmurhash3js-revisited@3.0.0: + resolution: {integrity: sha512-/sF3ee6zvScXMb1XFJ8gDsSnY+X8PbOyjIuBhtgis10W2Jx4ZjIhikUCIF9c4gpJxVnQIsPAFrSwTCuAjicP6g==} + engines: {node: '>=8.0.0'} + + mute-stream@1.0.0: + resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + nanoid@3.3.7: resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -5005,6 +5388,10 @@ packages: outdent@0.5.0: resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} + p-defer@4.0.1: + resolution: {integrity: sha512-Mr5KC5efvAK5VUptYEIopP1bakB85k2IWXaRC0rsh1uwn1L6M0LVml8OIQ4Gudg4oyZakf7FmeRLkMMtZW1i5A==} + engines: {node: '>=12'} + p-filter@2.1.0: resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} engines: {node: '>=8'} @@ -5041,6 +5428,14 @@ packages: resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} engines: {node: '>=6'} + p-queue@8.0.1: + resolution: {integrity: sha512-NXzu9aQJTAzbBqOt2hwsR63ea7yvxJc0PwN/zobNAudYfb1B7R08SzB4TsLeSbUCuG467NhnoT0oO6w1qRO+BA==} + engines: {node: '>=18'} + + p-timeout@6.1.3: + resolution: {integrity: sha512-UJUyfKbwvr/uZSV6btANfb+0t/mOhKV/KXcCUTp8FcQI+v/0d+wXqH4htrW0E4rR6WiEO/EPvUFiV9D5OI4vlw==} + engines: {node: '>=14.16'} + p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} @@ -5246,6 +5641,9 @@ packages: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} engines: {node: '>= 0.6.0'} + progress-events@1.0.1: + resolution: {integrity: sha512-MOzLIwhpt64KIVN64h1MwdKWiyKFNc/S6BoYKPIVUHFg0/eIEyBulhWCgn678v/4c0ri3FdGuzXymNCv02MUIw==} + promise@8.3.0: resolution: {integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==} @@ -5258,6 +5656,9 @@ packages: property-information@6.5.0: resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} + protons-runtime@5.5.0: + resolution: {integrity: sha512-EsALjF9QsrEk6gbCx3lmfHxVN0ah7nG3cY7GySD4xf4g8cr7g543zB88Foh897Sr1RQJ9yDCUsoT1i1H/cVUFA==} + proxy-compare@2.5.1: resolution: {integrity: sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA==} @@ -5313,6 +5714,10 @@ packages: quick-format-unescaped@4.0.4: resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} + rabin-wasm@0.1.5: + resolution: {integrity: sha512-uWgQTo7pim1Rnj5TuWcCewRDTf0PEFTSlaUjWP4eY9EbLV9em08v89oCz/WO+wRxpYuO36XEHp4wgYQnAgOHzA==} + hasBin: true + radix3@1.1.2: resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} @@ -5542,6 +5947,9 @@ packages: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + resolve@1.22.8: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true @@ -5571,6 +5979,10 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true + run-async@3.0.0: + resolution: {integrity: sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==} + engines: {node: '>=0.12.0'} + run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} @@ -5757,6 +6169,9 @@ packages: space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + sparse-array@1.3.2: + resolution: {integrity: sha512-ZT711fePGn3+kQyLuv1fpd3rNSkNF8vd5Kv2D+qnOANeyKs3fx6bUMGWRPvgTTcYV64QMqZKZwcuaQSP3AZ0tg==} + spawndamnit@2.0.0: resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==} @@ -5917,6 +6332,10 @@ packages: resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} engines: {node: '>=10'} + supports-color@9.4.0: + resolution: {integrity: sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==} + engines: {node: '>=12'} + supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} @@ -6047,6 +6466,11 @@ packages: tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + tsx@4.19.2: + resolution: {integrity: sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g==} + engines: {node: '>=18.0.0'} + hasBin: true + type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -6055,6 +6479,10 @@ packages: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + type-fest@0.7.1: resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} engines: {node: '>=8'} @@ -6092,9 +6520,18 @@ packages: ufo@1.5.4: resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} + uint8-varint@2.0.4: + resolution: {integrity: sha512-FwpTa7ZGA/f/EssWAb5/YV6pHgVF1fViKdW8cWaEarjB8t7NyofSWBdOTyFPaGuUG4gx3v1O3PQ8etsiOs3lcw==} + + uint8arraylist@2.4.8: + resolution: {integrity: sha512-vc1PlGOzglLF0eae1M8mLRTBivsvrGsdmJ5RbK3e+QRvRLOZfZhQROTwH/OfyF3+ZVUg9/8hE8bmKP2CvP9quQ==} + uint8arrays@3.1.0: resolution: {integrity: sha512-ei5rfKtoRO8OyOIor2Rz5fhzjThwIHJZ3uyDPnDHTXbP0aMQ1RN/6AI5B5d9dBxJOU+BvOAk7ZQ1xphsX8Lrog==} + uint8arrays@5.1.0: + resolution: {integrity: sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==} + unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} @@ -6299,6 +6736,9 @@ packages: resolution: {integrity: sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==} engines: {node: '>=10.13.0'} + weald@1.0.4: + resolution: {integrity: sha512-+kYTuHonJBwmFhP1Z4YQK/dGi3jAnJGCYhyODFpHK73rbxnp9lnZQj7a2m+WVgn8fXr5bJaxUpF6l8qZpPeNWQ==} + webauthn-p256@0.0.10: resolution: {integrity: sha512-EeYD+gmIT80YkSIDb2iWq0lq2zbHo1CxHlQTeJ+KkCILWpVy3zASH3ByD4bopzfk0uCwXxLqKGLqp2W4O28VFA==} @@ -6560,6 +7000,8 @@ snapshots: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 + '@assemblyscript/loader@0.9.4': {} + '@babel/code-frame@7.26.2': dependencies: '@babel/helper-validator-identifier': 7.25.9 @@ -7460,16 +7902,50 @@ snapshots: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 - '@bgd-labs/aave-address-book@3.1.1': {} + '@bgd-labs/aave-address-book@4.3.1': {} - '@bgd-labs/aave-governance-ui-helpers@3.1.6(@bgd-labs/aave-address-book@3.1.1)(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(viem@2.21.41(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8))': + '@bgd-labs/aave-cli@1.1.10(bufferutil@4.0.8)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10)': dependencies: - '@bgd-labs/aave-address-book': 3.1.1 - bs58: 5.0.0 + '@bgd-labs/aave-address-book': 4.3.1 + '@bgd-labs/aave-v3-governance-cache': 1.0.8(@bgd-labs/aave-address-book@4.3.1)(viem@2.21.41(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8)) + '@bgd-labs/js-utils': 1.4.2(viem@2.21.41(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8)) + '@commander-js/extra-typings': 11.1.0(commander@12.1.0) + '@inquirer/prompts': 3.3.2 + blockstore-core: 5.0.2 + chalk: 4.1.2 + commander: 12.1.0 + deepmerge: 4.3.1 + dotenv: 16.4.5 + find-object-paths: 1.1.0 + gray-matter: 4.0.3 + ipfs-unixfs-importer: 15.3.1(encoding@0.1.13) + json-bigint: 1.0.0 + viem: 2.21.41(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8) + zod: 3.23.8 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - typescript + - utf-8-validate + + '@bgd-labs/aave-governance-ui-helpers@3.1.8(@bgd-labs/aave-address-book@4.3.1)(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(typescript@5.6.3)(viem@2.21.41(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)': + dependencies: + '@bgd-labs/aave-address-book': 4.3.1 + abitype: 1.0.6(typescript@5.6.3)(zod@3.23.8) + bs58: 6.0.0 dayjs: 1.11.13 ethers: 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) gray-matter: 4.0.3 viem: 2.21.41(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8) + transitivePeerDependencies: + - typescript + - zod + + '@bgd-labs/aave-v3-governance-cache@1.0.8(@bgd-labs/aave-address-book@4.3.1)(viem@2.21.41(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8))': + dependencies: + '@bgd-labs/aave-address-book': 4.3.1 + viem: 2.21.41(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8) '@bgd-labs/frontend-web3-utils@1.3.1(immer@10.1.1)(react@18.3.1)(viem@2.21.41(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8))(wagmi@2.12.26(@tanstack/query-core@5.59.17)(@tanstack/react-query@5.59.19(react@18.3.1))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10)(viem@2.21.41(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8))(zustand@4.5.5(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1))': dependencies: @@ -7481,6 +7957,14 @@ snapshots: wagmi: 2.12.26(@tanstack/query-core@5.59.17)(@tanstack/react-query@5.59.19(react@18.3.1))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10)(viem@2.21.41(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8) zustand: 4.5.5(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1) + '@bgd-labs/js-utils@1.4.2(viem@2.21.41(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8))': + dependencies: + '@supercharge/promise-pool': 3.2.0 + bs58: 5.0.0 + gray-matter: 4.0.3 + tsx: 4.19.2 + viem: 2.21.41(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8) + '@bgd-labs/react-web3-icons@1.4.6': dependencies: '@loadable/component': 5.16.4(react@18.3.1) @@ -7488,6 +7972,12 @@ snapshots: react-dom: 18.3.1(react@18.3.1) react-inlinesvg: 4.1.4(react@18.3.1) + '@chainsafe/is-ip@2.0.2': {} + + '@chainsafe/netmask@2.0.0': + dependencies: + '@chainsafe/is-ip': 2.0.2 + '@changesets/apply-release-plan@7.0.5': dependencies: '@changesets/config': 3.0.3 @@ -7651,6 +8141,10 @@ snapshots: eventemitter3: 5.0.1 preact: 10.24.3 + '@commander-js/extra-typings@11.1.0(commander@12.1.0)': + dependencies: + commander: 12.1.0 + '@discoveryjs/json-ext@0.5.7': {} '@ecies/ciphers@0.2.1(@noble/ciphers@1.0.0)': @@ -7747,6 +8241,78 @@ snapshots: '@emotion/weak-memoize@0.4.0': {} + '@esbuild/aix-ppc64@0.23.1': + optional: true + + '@esbuild/android-arm64@0.23.1': + optional: true + + '@esbuild/android-arm@0.23.1': + optional: true + + '@esbuild/android-x64@0.23.1': + optional: true + + '@esbuild/darwin-arm64@0.23.1': + optional: true + + '@esbuild/darwin-x64@0.23.1': + optional: true + + '@esbuild/freebsd-arm64@0.23.1': + optional: true + + '@esbuild/freebsd-x64@0.23.1': + optional: true + + '@esbuild/linux-arm64@0.23.1': + optional: true + + '@esbuild/linux-arm@0.23.1': + optional: true + + '@esbuild/linux-ia32@0.23.1': + optional: true + + '@esbuild/linux-loong64@0.23.1': + optional: true + + '@esbuild/linux-mips64el@0.23.1': + optional: true + + '@esbuild/linux-ppc64@0.23.1': + optional: true + + '@esbuild/linux-riscv64@0.23.1': + optional: true + + '@esbuild/linux-s390x@0.23.1': + optional: true + + '@esbuild/linux-x64@0.23.1': + optional: true + + '@esbuild/netbsd-x64@0.23.1': + optional: true + + '@esbuild/openbsd-arm64@0.23.1': + optional: true + + '@esbuild/openbsd-x64@0.23.1': + optional: true + + '@esbuild/sunos-x64@0.23.1': + optional: true + + '@esbuild/win32-arm64@0.23.1': + optional: true + + '@esbuild/win32-ia32@0.23.1': + optional: true + + '@esbuild/win32-x64@0.23.1': + optional: true + '@eslint-community/eslint-utils@4.4.1(eslint@9.14.0(jiti@2.4.0))': dependencies: eslint: 9.14.0(jiti@2.4.0) @@ -8095,6 +8661,98 @@ snapshots: '@humanwhocodes/retry@0.4.1': {} + '@inquirer/checkbox@1.5.2': + dependencies: + '@inquirer/core': 6.0.0 + '@inquirer/type': 1.5.5 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + figures: 3.2.0 + + '@inquirer/confirm@2.0.17': + dependencies: + '@inquirer/core': 6.0.0 + '@inquirer/type': 1.5.5 + chalk: 4.1.2 + + '@inquirer/core@6.0.0': + dependencies: + '@inquirer/type': 1.5.5 + '@types/mute-stream': 0.0.4 + '@types/node': 20.17.6 + '@types/wrap-ansi': 3.0.0 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-spinners: 2.9.2 + cli-width: 4.1.0 + figures: 3.2.0 + mute-stream: 1.0.0 + run-async: 3.0.0 + signal-exit: 4.1.0 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + + '@inquirer/editor@1.2.15': + dependencies: + '@inquirer/core': 6.0.0 + '@inquirer/type': 1.5.5 + chalk: 4.1.2 + external-editor: 3.1.0 + + '@inquirer/expand@1.1.16': + dependencies: + '@inquirer/core': 6.0.0 + '@inquirer/type': 1.5.5 + chalk: 4.1.2 + figures: 3.2.0 + + '@inquirer/input@1.2.16': + dependencies: + '@inquirer/core': 6.0.0 + '@inquirer/type': 1.5.5 + chalk: 4.1.2 + + '@inquirer/password@1.1.16': + dependencies: + '@inquirer/core': 6.0.0 + '@inquirer/type': 1.5.5 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + + '@inquirer/prompts@3.3.2': + dependencies: + '@inquirer/checkbox': 1.5.2 + '@inquirer/confirm': 2.0.17 + '@inquirer/core': 6.0.0 + '@inquirer/editor': 1.2.15 + '@inquirer/expand': 1.1.16 + '@inquirer/input': 1.2.16 + '@inquirer/password': 1.1.16 + '@inquirer/rawlist': 1.2.16 + '@inquirer/select': 1.3.3 + + '@inquirer/rawlist@1.2.16': + dependencies: + '@inquirer/core': 6.0.0 + '@inquirer/type': 1.5.5 + chalk: 4.1.2 + + '@inquirer/select@1.3.3': + dependencies: + '@inquirer/core': 6.0.0 + '@inquirer/type': 1.5.5 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + figures: 3.2.0 + + '@inquirer/type@1.5.5': + dependencies: + mute-stream: 1.0.0 + + '@ipld/dag-pb@4.1.3': + dependencies: + multiformats: 13.3.1 + '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 @@ -8191,6 +8849,25 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 + '@leichtgewicht/ip-codec@2.0.5': {} + + '@libp2p/interface@2.2.0': + dependencies: + '@multiformats/multiaddr': 12.3.1 + it-pushable: 3.2.3 + it-stream-types: 2.0.2 + multiformats: 13.3.1 + progress-events: 1.0.1 + uint8arraylist: 2.4.8 + + '@libp2p/logger@5.1.3': + dependencies: + '@libp2p/interface': 2.2.0 + '@multiformats/multiaddr': 12.3.1 + interface-datastore: 8.3.1 + multiformats: 13.3.1 + weald: 1.0.4 + '@lit-labs/ssr-dom-shim@1.2.1': {} '@lit/reactive-element@1.6.3': @@ -8483,6 +9160,30 @@ snapshots: optionalDependencies: '@types/react': 18.3.3 + '@multiformats/dns@1.0.6': + dependencies: + '@types/dns-packet': 5.6.5 + buffer: 6.0.3 + dns-packet: 5.6.1 + hashlru: 2.3.0 + p-queue: 8.0.1 + progress-events: 1.0.1 + uint8arrays: 5.1.0 + + '@multiformats/multiaddr@12.3.1': + dependencies: + '@chainsafe/is-ip': 2.0.2 + '@chainsafe/netmask': 2.0.0 + '@multiformats/dns': 1.0.6 + multiformats: 13.3.1 + uint8-varint: 2.0.4 + uint8arrays: 5.1.0 + + '@multiformats/murmur3@2.1.8': + dependencies: + multiformats: 13.3.1 + murmurhash3js-revisited: 3.0.0 + '@next/bundle-analyzer@14.2.15(bufferutil@4.0.8)(utf-8-validate@5.0.10)': dependencies: webpack-bundle-analyzer: 4.10.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) @@ -8912,6 +9613,8 @@ snapshots: '@stablelib/random': 1.0.2 '@stablelib/wipe': 1.0.1 + '@supercharge/promise-pool@3.2.0': {} + '@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -9081,6 +9784,10 @@ snapshots: dependencies: '@types/ms': 0.7.34 + '@types/dns-packet@5.6.5': + dependencies: + '@types/node': 22.9.0 + '@types/dom-css@2.1.1': {} '@types/eslint-scope@3.7.7': @@ -9135,12 +9842,20 @@ snapshots: '@types/ms@0.7.34': {} + '@types/mute-stream@0.0.4': + dependencies: + '@types/node': 22.9.0 + '@types/node-forge@1.3.11': dependencies: '@types/node': 22.9.0 '@types/node@12.20.55': {} + '@types/node@20.17.6': + dependencies: + undici-types: 6.19.8 + '@types/node@22.9.0': dependencies: undici-types: 6.19.8 @@ -9182,6 +9897,8 @@ snapshots: '@types/unist@3.0.3': {} + '@types/wrap-ansi@3.0.0': {} + '@types/yargs-parser@21.0.3': {} '@types/yargs@17.0.33': @@ -9793,6 +10510,10 @@ snapshots: ansi-colors@4.1.3: {} + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 + ansi-escapes@7.0.0: dependencies: environment: 1.1.0 @@ -10027,6 +10748,8 @@ snapshots: base-x@4.0.0: {} + base-x@5.0.0: {} + base64-js@1.5.1: {} bech32@1.1.4: {} @@ -10039,6 +10762,23 @@ snapshots: binary-extensions@2.3.0: {} + bl@5.1.0: + dependencies: + buffer: 6.0.3 + inherits: 2.0.4 + readable-stream: 3.6.2 + + blockstore-core@5.0.2: + dependencies: + '@libp2p/logger': 5.1.3 + interface-blockstore: 5.3.1 + interface-store: 6.0.2 + it-drain: 3.0.7 + it-filter: 3.1.1 + it-merge: 3.0.5 + it-pushable: 3.2.3 + multiformats: 13.3.1 + bn.js@4.12.0: {} bn.js@5.2.1: {} @@ -10073,6 +10813,10 @@ snapshots: dependencies: base-x: 4.0.0 + bs58@6.0.0: + dependencies: + base-x: 5.0.0 + bser@2.1.1: dependencies: node-int64: 0.4.0 @@ -10200,11 +10944,15 @@ snapshots: dependencies: restore-cursor: 5.1.0 + cli-spinners@2.9.2: {} + cli-truncate@4.0.0: dependencies: slice-ansi: 5.0.0 string-width: 7.2.0 + cli-width@4.1.0: {} + client-only@0.0.1: {} clipboardy@4.0.0: @@ -10484,6 +11232,10 @@ snapshots: dependencies: path-type: 4.0.0 + dns-packet@5.6.1: + dependencies: + '@leichtgewicht/ip-codec': 2.0.5 + doctrine@2.1.0: dependencies: esutils: 2.0.3 @@ -10537,6 +11289,8 @@ snapshots: no-case: 3.0.4 tslib: 2.8.1 + dotenv@16.4.5: {} + duplexer2@0.1.4: dependencies: readable-stream: 2.3.8 @@ -10736,10 +11490,39 @@ snapshots: is-date-object: 1.0.5 is-symbol: 1.0.4 + esbuild@0.23.1: + optionalDependencies: + '@esbuild/aix-ppc64': 0.23.1 + '@esbuild/android-arm': 0.23.1 + '@esbuild/android-arm64': 0.23.1 + '@esbuild/android-x64': 0.23.1 + '@esbuild/darwin-arm64': 0.23.1 + '@esbuild/darwin-x64': 0.23.1 + '@esbuild/freebsd-arm64': 0.23.1 + '@esbuild/freebsd-x64': 0.23.1 + '@esbuild/linux-arm': 0.23.1 + '@esbuild/linux-arm64': 0.23.1 + '@esbuild/linux-ia32': 0.23.1 + '@esbuild/linux-loong64': 0.23.1 + '@esbuild/linux-mips64el': 0.23.1 + '@esbuild/linux-ppc64': 0.23.1 + '@esbuild/linux-riscv64': 0.23.1 + '@esbuild/linux-s390x': 0.23.1 + '@esbuild/linux-x64': 0.23.1 + '@esbuild/netbsd-x64': 0.23.1 + '@esbuild/openbsd-arm64': 0.23.1 + '@esbuild/openbsd-x64': 0.23.1 + '@esbuild/sunos-x64': 0.23.1 + '@esbuild/win32-arm64': 0.23.1 + '@esbuild/win32-ia32': 0.23.1 + '@esbuild/win32-x64': 0.23.1 + escalade@3.2.0: {} escape-html@1.0.3: {} + escape-string-regexp@1.0.5: {} + escape-string-regexp@2.0.0: {} escape-string-regexp@4.0.0: {} @@ -11084,6 +11867,10 @@ snapshots: dependencies: bser: 2.1.1 + figures@3.2.0: + dependencies: + escape-string-regexp: 1.0.5 + file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 @@ -11127,6 +11914,8 @@ snapshots: common-path-prefix: 3.0.0 pkg-dir: 7.0.0 + find-object-paths@1.1.0: {} + find-root@1.1.0: {} find-up@3.0.0: @@ -11240,6 +12029,10 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.2.4 + get-tsconfig@4.8.1: + dependencies: + resolve-pkg-maps: 1.0.0 + glob-parent@5.1.2: dependencies: is-glob: 4.0.3 @@ -11319,6 +12112,11 @@ snapshots: uncrypto: 0.1.3 unenv: 1.10.0 + hamt-sharding@3.0.6: + dependencies: + sparse-array: 1.3.2 + uint8arrays: 5.1.0 + harmony-reflect@1.6.2: {} has-bigints@1.0.2: {} @@ -11342,6 +12140,8 @@ snapshots: inherits: 2.0.4 minimalistic-assert: 1.0.1 + hashlru@2.3.0: {} + hasown@2.0.2: dependencies: function-bind: 1.1.2 @@ -11522,6 +12322,18 @@ snapshots: inline-style-parser@0.2.4: {} + interface-blockstore@5.3.1: + dependencies: + interface-store: 6.0.2 + multiformats: 13.3.1 + + interface-datastore@8.3.1: + dependencies: + interface-store: 6.0.2 + uint8arrays: 5.1.0 + + interface-store@6.0.2: {} + internal-slot@1.0.7: dependencies: es-errors: 1.3.0 @@ -11532,6 +12344,32 @@ snapshots: dependencies: loose-envify: 1.4.0 + ipfs-unixfs-importer@15.3.1(encoding@0.1.13): + dependencies: + '@ipld/dag-pb': 4.1.3 + '@multiformats/murmur3': 2.1.8 + hamt-sharding: 3.0.6 + interface-blockstore: 5.3.1 + interface-store: 6.0.2 + ipfs-unixfs: 11.2.0 + it-all: 3.0.6 + it-batch: 3.0.6 + it-first: 3.0.6 + it-parallel-batch: 3.0.6 + multiformats: 13.3.1 + progress-events: 1.0.1 + rabin-wasm: 0.1.5(encoding@0.1.13) + uint8arraylist: 2.4.8 + uint8arrays: 5.1.0 + transitivePeerDependencies: + - encoding + - supports-color + + ipfs-unixfs@11.2.0: + dependencies: + protons-runtime: 5.5.0 + uint8arraylist: 2.4.8 + iron-webcrypto@1.2.1: {} is-alphabetical@1.0.4: {} @@ -11743,6 +12581,34 @@ snapshots: transitivePeerDependencies: - supports-color + it-all@3.0.6: {} + + it-batch@3.0.6: {} + + it-drain@3.0.7: {} + + it-filter@3.1.1: + dependencies: + it-peekable: 3.0.5 + + it-first@3.0.6: {} + + it-merge@3.0.5: + dependencies: + it-pushable: 3.2.3 + + it-parallel-batch@3.0.6: + dependencies: + it-batch: 3.0.6 + + it-peekable@3.0.5: {} + + it-pushable@3.2.3: + dependencies: + p-defer: 4.0.1 + + it-stream-types@2.0.2: {} + iterator.prototype@1.1.3: dependencies: define-properties: 1.2.1 @@ -11883,6 +12749,10 @@ snapshots: jsesc@3.0.2: {} + json-bigint@1.0.0: + dependencies: + bignumber.js: 9.1.2 + json-buffer@3.0.1: {} json-parse-better-errors@1.0.2: {} @@ -12698,6 +13568,10 @@ snapshots: ms@2.1.3: {} + ms@3.0.0-canary.1: {} + + multiformats@13.3.1: {} + multiformats@9.9.0: {} multipipe@1.0.2: @@ -12705,6 +13579,10 @@ snapshots: duplexer2: 0.1.4 object-assign: 4.1.1 + murmurhash3js-revisited@3.0.0: {} + + mute-stream@1.0.0: {} + nanoid@3.3.7: {} natural-compare@1.4.0: {} @@ -12906,6 +13784,8 @@ snapshots: outdent@0.5.0: {} + p-defer@4.0.1: {} + p-filter@2.1.0: dependencies: p-map: 2.1.0 @@ -12940,6 +13820,13 @@ snapshots: p-map@2.1.0: {} + p-queue@8.0.1: + dependencies: + eventemitter3: 5.0.1 + p-timeout: 6.1.3 + + p-timeout@6.1.3: {} + p-try@2.2.0: {} package-manager-detector@0.2.2: {} @@ -13142,6 +14029,8 @@ snapshots: process@0.11.10: {} + progress-events@1.0.1: {} + promise@8.3.0: dependencies: asap: 2.0.6 @@ -13158,6 +14047,12 @@ snapshots: property-information@6.5.0: {} + protons-runtime@5.5.0: + dependencies: + uint8-varint: 2.0.4 + uint8arraylist: 2.4.8 + uint8arrays: 5.1.0 + proxy-compare@2.5.1: {} proxy-compare@3.0.0: {} @@ -13213,6 +14108,18 @@ snapshots: quick-format-unescaped@4.0.4: {} + rabin-wasm@0.1.5(encoding@0.1.13): + dependencies: + '@assemblyscript/loader': 0.9.4 + bl: 5.1.0 + debug: 4.3.7 + minimist: 1.2.8 + node-fetch: 2.7.0(encoding@0.1.13) + readable-stream: 3.6.2 + transitivePeerDependencies: + - encoding + - supports-color + radix3@1.1.2: {} raf@3.4.1: @@ -13553,6 +14460,8 @@ snapshots: resolve-from@5.0.0: {} + resolve-pkg-maps@1.0.0: {} + resolve@1.22.8: dependencies: is-core-module: 2.15.1 @@ -13582,6 +14491,8 @@ snapshots: dependencies: glob: 7.2.3 + run-async@3.0.0: {} + run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 @@ -13799,6 +14710,8 @@ snapshots: space-separated-tokens@2.0.2: {} + sparse-array@1.3.2: {} + spawndamnit@2.0.0: dependencies: cross-spawn: 5.1.0 @@ -13953,6 +14866,8 @@ snapshots: dependencies: has-flag: 4.0.0 + supports-color@9.4.0: {} + supports-preserve-symlinks-flag@1.0.0: {} svg-parser@2.0.4: {} @@ -14071,12 +14986,21 @@ snapshots: tslib@2.8.1: {} + tsx@4.19.2: + dependencies: + esbuild: 0.23.1 + get-tsconfig: 4.8.1 + optionalDependencies: + fsevents: 2.3.3 + type-check@0.4.0: dependencies: prelude-ls: 1.2.1 type-detect@4.0.8: {} + type-fest@0.21.3: {} + type-fest@0.7.1: {} typed-array-buffer@1.0.2: @@ -14126,10 +15050,23 @@ snapshots: ufo@1.5.4: {} + uint8-varint@2.0.4: + dependencies: + uint8arraylist: 2.4.8 + uint8arrays: 5.1.0 + + uint8arraylist@2.4.8: + dependencies: + uint8arrays: 5.1.0 + uint8arrays@3.1.0: dependencies: multiformats: 9.9.0 + uint8arrays@5.1.0: + dependencies: + multiformats: 13.3.1 + unbox-primitive@1.0.2: dependencies: call-bind: 1.0.7 @@ -14360,6 +15297,11 @@ snapshots: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 + weald@1.0.4: + dependencies: + ms: 3.0.0-canary.1 + supports-color: 9.4.0 + webauthn-p256@0.0.10: dependencies: '@noble/curves': 1.6.0 diff --git a/src/app/page.page.tsx b/src/app/page.page.tsx index 228f87b4..83ec6af2 100644 --- a/src/app/page.page.tsx +++ b/src/app/page.page.tsx @@ -4,7 +4,6 @@ import { Metadata } from 'next'; import { ActiveItem } from '../components/ProposalsList/ActiveItem'; import { FinishedItem } from '../components/ProposalsList/FinishedItem'; -import { PAGE_SIZE } from '../configs/configs'; import { metaTexts } from '../helpers/texts/metaTexts'; import { api } from '../trpc/server'; @@ -26,7 +25,6 @@ export default async function Page() { ...contractsConstants, votingConfigs: configs, proposalsCount: totalProposalsCount, - pageSize: PAGE_SIZE, }); return ( diff --git a/src/old/delegate/store/delegationSlice.ts b/src/old/delegate/store/delegationSlice.ts index 9556104a..bd6fb94a 100644 --- a/src/old/delegate/store/delegationSlice.ts +++ b/src/old/delegate/store/delegationSlice.ts @@ -1,4 +1,4 @@ -import { IERC20_ABI } from '@bgd-labs/aave-address-book'; +import { IERC20_ABI } from '@bgd-labs/aave-address-book/abis'; import { Asset, normalizeBN } from '@bgd-labs/aave-governance-ui-helpers'; import { safeSdkOptions, diff --git a/src/old/rpcSwitcher/store/rpcSwitcherSlice.ts b/src/old/rpcSwitcher/store/rpcSwitcherSlice.ts index 05f746ef..0067cbb6 100644 --- a/src/old/rpcSwitcher/store/rpcSwitcherSlice.ts +++ b/src/old/rpcSwitcher/store/rpcSwitcherSlice.ts @@ -1,4 +1,4 @@ -import { IPayloadsControllerCore_ABI } from '@bgd-labs/aave-address-book'; +import { IPayloadsControllerCore_ABI } from '@bgd-labs/aave-address-book/abis'; import { blockLimit, getPayloadsCreated, diff --git a/src/old/web3/services/delegationService.ts b/src/old/web3/services/delegationService.ts index f2a59dd7..c3e4355e 100644 --- a/src/old/web3/services/delegationService.ts +++ b/src/old/web3/services/delegationService.ts @@ -1,6 +1,6 @@ 'use client'; -import { IMetaDelegateHelper_ABI } from '@bgd-labs/aave-address-book'; +import { IMetaDelegateHelper_ABI } from '@bgd-labs/aave-address-book/abis'; import { normalizeBN } from '@bgd-labs/aave-governance-ui-helpers'; import { IAaveTokenV3_ABI } from '@bgd-labs/aave-governance-ui-helpers/dist/abis/IAaveTokenV3'; import { IATokenWithDelegation_ABI } from '@bgd-labs/aave-governance-ui-helpers/dist/abis/IATokenWithDelegation'; diff --git a/src/old/web3/services/govDataService.ts b/src/old/web3/services/govDataService.ts index aa16ebf4..695da3bf 100644 --- a/src/old/web3/services/govDataService.ts +++ b/src/old/web3/services/govDataService.ts @@ -8,7 +8,7 @@ import { IPayloadsControllerDataHelper_ABI, IVotingMachineDataHelper_ABI, IVotingMachineWithProofs_ABI, -} from '@bgd-labs/aave-address-book'; +} from '@bgd-labs/aave-address-book/abis'; import { BasicProposal, blockLimit, diff --git a/src/requests/fetchInitialData.ts b/src/requests/fetchInitialData.ts index 11aeb840..4abc49ba 100644 --- a/src/requests/fetchInitialData.ts +++ b/src/requests/fetchInitialData.ts @@ -1,4 +1,4 @@ -import { IGovernanceCore_ABI } from '@bgd-labs/aave-address-book'; +import { IGovernanceCore_ABI } from '@bgd-labs/aave-address-book/abis'; import { Client } from 'viem'; import { readContract } from 'viem/actions'; diff --git a/src/requests/fetchProposalsDataForList.ts b/src/requests/fetchProposalsDataForList.ts index fc1e049e..d7bc5ff9 100644 --- a/src/requests/fetchProposalsDataForList.ts +++ b/src/requests/fetchProposalsDataForList.ts @@ -1,3 +1,8 @@ +import { IVotingPortal_ABI } from '@bgd-labs/aave-address-book/abis'; +import { Client } from 'viem'; +import { readContract } from 'viem/actions'; + +import { appConfig } from '../configs/appConfig'; import { ContractsConstants, InitialPayloadState, @@ -20,6 +25,7 @@ export type FetchProposalsDataForListParams = Pick< votingConfigs: VotingConfig[]; userAddress?: string; representativeAddress?: string; + clients: Record; }; export async function fetchProposalsDataForList({ @@ -36,12 +42,14 @@ export async function fetchProposalsDataForList({ 'Error getting proposals data from API, using RPC fallback', e, ); - const proposalsData = await getProposalsData(input); + const proposalsData = (await getProposalsData(input)).sort( + (a, b) => b.proposal.id - a.proposal.id, + ); const payloadsChainsWithIds: Record = {}; const initialPayloads = proposalsData .map((proposal) => { - return proposal.proposalData.payloads; + return proposal.proposal.payloads; }) .flat(); const payloadsChains = initialPayloads @@ -49,7 +57,7 @@ export async function fetchProposalsDataForList({ .filter((value, index, self) => self.indexOf(value) === index); payloadsChains.forEach((chainId) => { payloadsChainsWithIds[Number(chainId)] = initialPayloads - .filter((payload) => payload.chain === BigInt(chainId)) + .filter((payload) => Number(payload.chain) === Number(chainId)) .map((payload) => payload.payloadId) .filter((value, index, self) => self.indexOf(value) === index); }); @@ -60,32 +68,31 @@ export async function fetchProposalsDataForList({ await getPayloadsData({ chainId: Number(chainId), payloadsIds, - clients, }), ), ) ).flat(); const proposalsWithPayloads = proposalsData.map((proposal) => { - const proposalPayloads = proposal.proposalData.payloads.map((payload) => { + const proposalPayloads = proposal.proposal.payloads.map((payload) => { return payloadsData.filter( (p) => - Number(p.id) === payload.payloadId && - p.chain === payload.chain && - p.payloadsController === payload.payloadsController, + Number(p.payload.id) === Number(payload.payloadId) && + Number(p.payload.data.chain) === Number(payload.chain) && + p.payload.data.payloadsController === payload.payloadsController, )[0]; }); const isProposalPayloadsFinished = proposalPayloads.every( (payload) => - payload && payload?.data.state > InitialPayloadState.Queued, + payload && payload?.payload.data.state > InitialPayloadState.Queued, ); return { proposal: { ...proposal, isFinished: - proposal.proposalData.state === InitialProposalState.Executed + proposal.proposal.state === InitialProposalState.Executed ? isProposalPayloadsFinished - : proposal.proposalData.state > InitialProposalState.Executed, + : proposal.proposal.state > InitialProposalState.Executed, }, payloads: proposalPayloads, }; @@ -93,21 +100,32 @@ export async function fetchProposalsDataForList({ const activeIds = proposalsWithPayloads .filter((item) => !item.proposal.isFinished) - .map((item) => item.proposal.id); + .map((item) => item.proposal.proposal.id); const finishedIds = proposalsWithPayloads .filter((item) => item.proposal.isFinished) - .map((item) => item.proposal.id); + .map((item) => item.proposal.proposal.id); - const proposalsForGetVotingData = activeIds.map((id) => { - const proposal = proposalsWithPayloads.filter( - (item) => item.proposal.id === id, - )[0].proposal; - return { - id: proposal.id, - votingChainId: Number(proposal.votingChainId), - snapshotBlockHash: proposal.proposalData.snapshotBlockHash, - }; - }); + const proposalsForGetVotingData = await Promise.all( + activeIds.map(async (id) => { + const proposal = proposalsWithPayloads.filter( + (item) => item.proposal.proposal.id === id, + )[0].proposal; + const votingChainId = await readContract( + clients[appConfig.govCoreChainId], + { + abi: IVotingPortal_ABI, + address: proposal.proposal.votingPortal, + functionName: 'VOTING_MACHINE_CHAIN_ID', + args: [], + }, + ); + return { + id: BigInt(proposal.proposal.id), + votingChainId: Number(votingChainId), + snapshotBlockHash: proposal.proposal.snapshotBlockHash, + }; + }), + ); const votingProposalsData = proposalsForGetVotingData.length > 0 @@ -124,21 +142,22 @@ export async function fetchProposalsDataForList({ ? await Promise.all( activeIds.map(async (id) => { const data = proposalsWithPayloads.filter( - (item) => item.proposal.id === id, + (item) => item.proposal.proposal.id === id, )[0]; const votingData = votingProposalsData.filter( - (data) => data.proposalData.id === id, + (data) => data.proposalData.id === BigInt(id), )[0]; const votingConfig = votingConfigs.filter( (config) => - config.accessLevel === data.proposal.proposalData.accessLevel, + config.accessLevel === data.proposal.proposal.accessLevel, )[0]; return formatActiveProposalData({ ...input, ...votingConfig, - core: data.proposal, - payloads: data.payloads, + core: data.proposal.proposal, + payloads: data.payloads.map((payload) => payload.payload), voting: votingData, + title: data.proposal.ipfs?.title, }); }), ) @@ -146,23 +165,23 @@ export async function fetchProposalsDataForList({ const finishedProposalsData = finishedIds.map((id) => { const data = proposalsWithPayloads.filter( - (item) => item.proposal.id === id, + (item) => item.proposal.proposal.id === id, )[0]; const votingConfig = votingConfigs.filter( - (config) => - config.accessLevel === data.proposal.proposalData.accessLevel, + (config) => config.accessLevel === data.proposal.proposal.accessLevel, )[0]; const { proposalState, finishedTimestamp } = getStateAndTimestampForFinishedProposal({ ...input, ...votingConfig, - core: data.proposal, - payloads: data.payloads, + core: data.proposal.proposal, + payloads: data.payloads.map((payload) => payload.payload), }); return { - proposalId: Number(data.proposal.id), - title: `Proposal ${data.proposal.id}`, // TODO: should be proposal title - ipfsHash: data.proposal.proposalData.ipfsHash, + proposalId: Number(data.proposal.proposal.id), + title: + data.proposal.ipfs?.title ?? `Proposal #${data.proposal.proposal.id}`, + ipfsHash: data.proposal.proposal.ipfsHash, state: { state: proposalState, timestamp: finishedTimestamp, diff --git a/src/requests/utils/cachingLayer.ts b/src/requests/utils/cachingLayer.ts new file mode 100644 index 00000000..c83ef53f --- /dev/null +++ b/src/requests/utils/cachingLayer.ts @@ -0,0 +1,5 @@ +import { fallbackProvider } from '@bgd-labs/aave-v3-governance-cache/fallbackProvider'; +import { githubPagesProvider } from '@bgd-labs/aave-v3-governance-cache/githubPagesProvider'; +import { rpcProvider } from '@bgd-labs/aave-v3-governance-cache/rpcProvider'; + +export const cachingLayer = fallbackProvider(githubPagesProvider, rpcProvider); diff --git a/src/requests/utils/formatProposalData.ts b/src/requests/utils/formatProposalData.ts index 8281b7d8..f3679bea 100644 --- a/src/requests/utils/formatProposalData.ts +++ b/src/requests/utils/formatProposalData.ts @@ -210,11 +210,9 @@ export function getStatesForActiveProposal({ ); const isCanceled = - core.proposalData.state === InitialProposalState.Cancelled || - allPayloadsCanceled; + core.state === InitialProposalState.Cancelled || allPayloadsCanceled; const isExpired = - core.proposalData.state === InitialProposalState.Expired || - allPayloadsExpired; + core.state === InitialProposalState.Expired || allPayloadsExpired; const isVotingActive = isVotingStarted && !isVotingEnded && !isCanceled; const isVotingFailed = isVotingEnded && @@ -229,13 +227,13 @@ export function getStatesForActiveProposal({ isVotingEnded && isVotingClosed && voting.proposalData.sentToGovernance && - core.proposalData.queuingTime > 0 && - now > core.proposalData.queuingTime + Number(cooldownPeriod); + core.queuingTime > 0 && + now > core.queuingTime + Number(cooldownPeriod); const isProposalExecuted = isVotingEnded && isVotingClosed && !isVotingFailed && - core.proposalData.state === InitialProposalState.Executed && + core.state === InitialProposalState.Executed && !isCanceled; const isPayloadsQueued = isProposalExecuted && now > lastPayloadQueuedAt + executionDelay; @@ -243,15 +241,15 @@ export function getStatesForActiveProposal({ isVotingEnded && isVotingClosed && !isVotingFailed && - core.proposalData.state === InitialProposalState.Executed && + core.state === InitialProposalState.Executed && !isCanceled && allPayloadsExecuted && !isExpired; let isProposalActive = true; if ( - core.proposalData.state === InitialProposalState.Null || - core.proposalData.state === InitialProposalState.Created + core.state === InitialProposalState.Null || + core.state === InitialProposalState.Created ) { isProposalActive = false; } else if (isCanceled) { @@ -330,19 +328,16 @@ export function getStateAndTimestampForActiveProposal({ if ( !isCanceled && voting.proposalData.startTime === 0 && - core.proposalData.state <= InitialProposalState.Active + core.state <= InitialProposalState.Active ) { return { state: ProposalState.Created, - timestamp: core.proposalData.creationTime, + timestamp: core.creationTime, }; - } else if ( - isVotingActive && - core.proposalData.snapshotBlockHash !== zeroHash - ) { + } else if (isVotingActive && core.snapshotBlockHash !== zeroHash) { return { state: ProposalState.Voting, - timestamp: core.proposalData.votingActivationTime, + timestamp: core.votingActivationTime, }; } else if ( isVotingEnded && @@ -366,9 +361,9 @@ export function getStateAndTimestampForActiveProposal({ return { state: ProposalState.Canceled, timestamp: - lastPayloadCanceledAt > core.proposalData.cancelTimestamp + lastPayloadCanceledAt > core.cancelTimestamp ? lastPayloadCanceledAt - : core.proposalData.cancelTimestamp, + : core.cancelTimestamp, }; } else if (isPayloadsExecuted) { return { @@ -379,9 +374,9 @@ export function getStateAndTimestampForActiveProposal({ return { state: ProposalState.Expired, timestamp: - core.proposalData.state === ProposalState.Executed && allPayloadsExpired + core.state === ProposalState.Executed && allPayloadsExpired ? lastPayloadExpiredAt - : core.proposalData.creationTime + Number(expirationTime), + : core.creationTime + Number(expirationTime), }; } } @@ -436,24 +431,24 @@ export function getNextStateAndTimestampForActiveProposal({ isVotingClosed && !isVotingDefeated && voting.proposalData.sentToGovernance && - core.proposalData.queuingTime > 0 && - now < core.proposalData.queuingTime + Number(cooldownPeriod); + core.queuingTime > 0 && + now < core.queuingTime + Number(cooldownPeriod); const isPayloadsWaitForQueued = - core.proposalData.state === InitialProposalState.Executed && + core.state === InitialProposalState.Executed && now < firstPayloadQueuedAt + executionDelay; const executedTimestamp = - core.proposalData.queuingTime > 0 && firstPayloadQueuedAt === 0 - ? core.proposalData.queuingTime + Number(cooldownPeriod) - : core.proposalData.queuingTime > 0 && firstPayloadQueuedAt > 0 + core.queuingTime > 0 && firstPayloadQueuedAt === 0 + ? core.queuingTime + Number(cooldownPeriod) + : core.queuingTime > 0 && firstPayloadQueuedAt > 0 ? firstPayloadQueuedAt + executionDelay : 0; - if (now <= core.proposalData.creationTime + coolDownBeforeVotingStart) { + if (now <= core.creationTime + coolDownBeforeVotingStart) { return { state: ProposalNextState.Voting, - timestamp: core.proposalData.creationTime + coolDownBeforeVotingStart, + timestamp: core.creationTime + coolDownBeforeVotingStart, }; } else if ( isVotingStarted && @@ -484,9 +479,9 @@ export function getNextStateAndTimestampForActiveProposal({ return { state: ProposalNextState.Expired, timestamp: - core.proposalData.state === InitialProposalState.Executed + core.state === InitialProposalState.Executed ? predictPayloadExpiredTime - : core.proposalData.creationTime + Number(expirationTime), + : core.creationTime + Number(expirationTime), }; } } @@ -509,7 +504,7 @@ export function getPendingStateForActiveProposal({ if (!isVotingFailed) { if ( - now > core.proposalData.creationTime + coolDownBeforeVotingStart && + now > core.creationTime + coolDownBeforeVotingStart && !isVotingStarted && !isVotingEnded && !isVotingClosed @@ -522,12 +517,12 @@ export function getPendingStateForActiveProposal({ isVotingEnded && isVotingClosed && voting.proposalData.sentToGovernance && - core.proposalData.queuingTime <= 0 + core.queuingTime <= 0 ) { return ProposalPendingState.WaitForQueueProposal; } else if ( isProposalQueued && - core.proposalData.state !== InitialProposalState.Executed + core.state !== InitialProposalState.Executed ) { return ProposalPendingState.WaitForExecuteProposal; } else if (isProposalExecuted && lastPayloadQueuedAt === 0) { @@ -544,12 +539,14 @@ export function getPendingStateForActiveProposal({ export function formatActiveProposalData({ ...data -}: FormatProposalParamsWithVoting) { +}: FormatProposalParamsWithVoting & { + title?: string; +}) { const { isVotingActive } = getStatesForActiveProposal(data); const state = getStateAndTimestampForActiveProposal(data); const nextState = getNextStateAndTimestampForActiveProposal(data); const pendingState = getPendingStateForActiveProposal(data); - const { core, voting, differential, precisionDivider, quorum } = data; + const { core, voting, differential, precisionDivider, quorum, title } = data; const { minQuorumVotes } = formatQuorum( voting.proposalData.forVotes, @@ -581,21 +578,22 @@ export function formatActiveProposalData({ voting.proposalData.forVotes < minQuorumVotes ? minQuorumVotes : voting.proposalData.forVotes - requiredDiff; + const againstPercent = allVotes > 0n - ? (voting.proposalData.againstVotes / requiredAgainstVotes > 0n - ? requiredAgainstVotes - : 1n) * 100n + ? (voting.proposalData.againstVotes / + (requiredAgainstVotes > 0n ? requiredAgainstVotes : 1n)) * + 100n : 0; return { - proposalId: Number(core.id), - title: `Proposal ${core.id}`, // TODO + proposalId: Number(voting.proposalData.id), + title: title ?? `Proposal ${voting.proposalData.id}`, state, - ipfsHash: core.proposalData.ipfsHash, + ipfsHash: core.ipfsHash, nextState, pendingState, - votingChainId: Number(core.votingChainId), + votingChainId: voting.votingChainId, isVotingActive, isVotingFinished: state.state > ProposalState.Voting, isFinished: state.state > ProposalState.Succeed, @@ -631,32 +629,29 @@ export function getStateAndTimestampForFinishedProposal({ } = data; const { quorumReached } = formatQuorum( - core.proposalData.forVotes, + core.forVotes, quorum, precisionDivider, ); const { requiredDiff } = formatDiff( - core.proposalData.forVotes, - core.proposalData.againstVotes, + core.forVotes, + core.againstVotes, differential, precisionDivider, ); const isCanceled = - core.proposalData.state === InitialProposalState.Cancelled || - allPayloadsCanceled; + core.state === InitialProposalState.Cancelled || allPayloadsCanceled; const isExpired = - core.proposalData.state === InitialProposalState.Expired || - allPayloadsExpired; + core.state === InitialProposalState.Expired || allPayloadsExpired; const isVotingFailed = - core.proposalData.againstVotes >= core.proposalData.forVotes || - (core.proposalData.againstVotes === 0n && - core.proposalData.forVotes === 0n) || + core.againstVotes >= core.forVotes || + (core.againstVotes === 0n && core.forVotes === 0n) || !quorumReached || - core.proposalData.forVotes < core.proposalData.againstVotes + requiredDiff; + core.forVotes < core.againstVotes + requiredDiff; const isPayloadsExecuted = !isVotingFailed && - core.proposalData.state === InitialProposalState.Executed && + core.state === InitialProposalState.Executed && !isCanceled && allPayloadsExecuted && !isExpired; @@ -672,26 +667,24 @@ export function getStateAndTimestampForFinishedProposal({ proposalState = ProposalState.Expired; } - let finishedTimestamp = core.proposalData.creationTime; + let finishedTimestamp = core.creationTime; if (proposalState === ProposalState.Failed) { finishedTimestamp = - core.proposalData.creationTime + - coolDownBeforeVotingStart + - core.proposalData.votingDuration; + core.creationTime + coolDownBeforeVotingStart + core.votingDuration; } else if (proposalState === ProposalState.Executed) { finishedTimestamp = lastPayloadExecutedAt; } else if (proposalState === ProposalState.Canceled) { finishedTimestamp = - lastPayloadCanceledAt > core.proposalData.cancelTimestamp + lastPayloadCanceledAt > core.cancelTimestamp ? lastPayloadCanceledAt - : core.proposalData.cancelTimestamp; + : core.cancelTimestamp; } else if ( - core.proposalData.state === InitialProposalState.Executed && + core.state === InitialProposalState.Executed && allPayloadsExpired ) { finishedTimestamp = lastPayloadExpiredAt; } else { - finishedTimestamp = core.proposalData.creationTime + Number(expirationTime); + finishedTimestamp = core.creationTime + Number(expirationTime); } return { diff --git a/src/requests/utils/getGovCoreConfigs.ts b/src/requests/utils/getGovCoreConfigs.ts index 3c83fb00..fc8e48e9 100644 --- a/src/requests/utils/getGovCoreConfigs.ts +++ b/src/requests/utils/getGovCoreConfigs.ts @@ -1,4 +1,4 @@ -import { IGovernanceDataHelper_ABI } from '@bgd-labs/aave-address-book'; +import { IGovernanceDataHelper_ABI } from '@bgd-labs/aave-address-book/abis'; import { Client, Hex } from 'viem'; import { readContract } from 'viem/actions'; diff --git a/src/requests/utils/getPayloadsData.ts b/src/requests/utils/getPayloadsData.ts index 36a6efcb..1fbd0043 100644 --- a/src/requests/utils/getPayloadsData.ts +++ b/src/requests/utils/getPayloadsData.ts @@ -1,32 +1,35 @@ -import { IPayloadsControllerDataHelper_ABI } from '@bgd-labs/aave-address-book'; -import { Client } from 'viem'; -import { readContract } from 'viem/actions'; - import { appConfig } from '../../configs/appConfig'; +import { cachingLayer } from './cachingLayer'; export type GetPayloadsData = { chainId: number; payloadsIds: number[]; - clients: Record; }; export async function getPayloadsData({ chainId, payloadsIds, - clients, }: GetPayloadsData) { const payloadsConfig = appConfig.payloadsControllerConfig[chainId]; - const payloadsData = await readContract(clients[chainId], { - abi: IPayloadsControllerDataHelper_ABI, - address: payloadsConfig.dataHelperContractAddress, - functionName: 'getPayloadsData', - args: [payloadsConfig.contractAddresses[0], payloadsIds], - }); - return payloadsData.map((payload) => { - return { - ...payload, - chain: BigInt(chainId), - payloadsController: payloadsConfig.contractAddresses[0], - }; - }); + return await Promise.all( + payloadsIds.map(async (id) => { + const data = await cachingLayer.getPayload({ + chainId, + payloadsController: payloadsConfig.contractAddresses[0], + payloadId: id, + }); + + return { + ...data, + payload: { + id: BigInt(id), + data: { + ...data.payload, + chain: BigInt(chainId), + payloadsController: payloadsConfig.contractAddresses[0], + }, + }, + }; + }), + ); } diff --git a/src/requests/utils/getProposalsData.ts b/src/requests/utils/getProposalsData.ts index e299dd5f..1c57c198 100644 --- a/src/requests/utils/getProposalsData.ts +++ b/src/requests/utils/getProposalsData.ts @@ -1,45 +1,33 @@ -import { IGovernanceDataHelper_ABI } from '@bgd-labs/aave-address-book'; -import { Client } from 'viem'; -import { readContract } from 'viem/actions'; - import { appConfig } from '../../configs/appConfig'; -import { PAGE_SIZE } from '../../configs/configs'; +import { cachingLayer } from './cachingLayer'; export type GetProposalsData = { proposalsCount?: number; proposalsIds?: number[]; - pageSize?: number; - clients: Record; }; export async function getProposalsData({ proposalsCount, proposalsIds, - pageSize, - clients, }: GetProposalsData) { const ids = proposalsCount ? [...Array(Number(proposalsCount)).keys()] : (proposalsIds ?? []); - const fr = Math.max.apply( - null, - ids.map((id) => id), - ); - const to = Math.min.apply( - null, - ids.map((id) => id), + return await Promise.all( + ids.map(async (id) => { + const data = await cachingLayer.getProposal({ + chainId: appConfig.govCoreChainId, + governance: appConfig.govCoreConfig.contractAddress, + proposalId: BigInt(id), + }); + return { + ...data, + proposal: { + ...data.proposal, + id, + }, + }; + }), ); - - return await readContract(clients[appConfig.govCoreChainId], { - abi: IGovernanceDataHelper_ABI, - address: appConfig.govCoreConfig.dataHelperContractAddress, - functionName: 'getProposalsData', - args: [ - appConfig.govCoreConfig.contractAddress, - BigInt(fr), - BigInt(to || 0), - BigInt(pageSize || proposalsCount || PAGE_SIZE), - ], - }); } diff --git a/src/requests/utils/getVotingData.ts b/src/requests/utils/getVotingData.ts index 743d5904..59fddd3d 100644 --- a/src/requests/utils/getVotingData.ts +++ b/src/requests/utils/getVotingData.ts @@ -1,4 +1,4 @@ -import { IVotingMachineDataHelper_ABI } from '@bgd-labs/aave-address-book'; +import { IVotingMachineDataHelper_ABI } from '@bgd-labs/aave-address-book/abis'; import { Address, Client, getContract, zeroAddress } from 'viem'; import { appConfig } from '../../configs/appConfig'; @@ -39,24 +39,18 @@ export async function getVotingData({ }; }); - if (representativeAddress && userAddress) { - if (userAddress) { - return ( - (await votingMachineDataHelper.read.getProposalsData([ - appConfig.votingMachineConfig[chainId].contractAddress, - formattedInitialProposals, - (representativeAddress || userAddress || zeroAddress) as Address, - ])) || [] - ); - } - } - return ( - (await votingMachineDataHelper.read.getProposalsData([ - appConfig.votingMachineConfig[chainId].contractAddress, - formattedInitialProposals, - (userAddress || zeroAddress) as Address, - ])) || [] - ); + const data = await votingMachineDataHelper.read.getProposalsData([ + appConfig.votingMachineConfig[chainId].contractAddress, + formattedInitialProposals, + (representativeAddress || userAddress || zeroAddress) as Address, + ]); + + return data.map((votingData) => { + return { + ...votingData, + votingChainId: chainId, + }; + }); }), ); diff --git a/src/store/rpcSwitcherSlice.ts b/src/store/rpcSwitcherSlice.ts index 290cdc8b..792be876 100644 --- a/src/store/rpcSwitcherSlice.ts +++ b/src/store/rpcSwitcherSlice.ts @@ -1,4 +1,4 @@ -import { IPayloadsControllerCore_ABI } from '@bgd-labs/aave-address-book'; +import { IPayloadsControllerCore_ABI } from '@bgd-labs/aave-address-book/abis'; import { blockLimit, getPayloadsCreated, diff --git a/src/types.ts b/src/types.ts index e219a183..e122d499 100644 --- a/src/types.ts +++ b/src/types.ts @@ -1,8 +1,8 @@ import { - IGovernanceDataHelper_ABI, + IGovernanceCore_ABI, IPayloadsControllerDataHelper_ABI, IVotingMachineDataHelper_ABI, -} from '@bgd-labs/aave-address-book'; +} from '@bgd-labs/aave-address-book/abis'; import { AbiStateMutability, Address, @@ -18,10 +18,10 @@ export type IsGaslessVote = 'on' | 'off'; // base export type ProposalInitialStruct = ContractFunctionReturnType< - typeof IGovernanceDataHelper_ABI, + typeof IGovernanceCore_ABI, AbiStateMutability, - 'getProposalsData' ->[0]; + 'getProposal' +>; export type PayloadInitialStruct = ContractFunctionReturnType< typeof IPayloadsControllerDataHelper_ABI, AbiStateMutability, @@ -31,7 +31,9 @@ export type VMProposalInitialStruct = ContractFunctionReturnType< typeof IVotingMachineDataHelper_ABI, AbiStateMutability, 'getProposalsData' ->[0]; +>[0] & { + votingChainId: number; +}; export type VotingConfig = { accessLevel: number;