From eb80374307f7e2f3562ceea47fd3e8c835545ae6 Mon Sep 17 00:00:00 2001 From: Jason Schwarz Date: Sat, 18 Apr 2026 07:51:10 -0300 Subject: [PATCH 01/49] chore: drop bun.lockb and tsbuildinfo from tracking MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Project uses npm — CI (.github/workflows/format.yml) runs npm ci and package-lock.json is authoritative. The bun.lockb was a redundant second lockfile; tsconfig.tsbuildinfo is a local TS incremental build cache that shouldn't be committed. Added both patterns to .gitignore so they stay out. --- .gitignore | 4 ++++ bun.lockb | Bin 201126 -> 0 bytes tsconfig.tsbuildinfo | 1 - 3 files changed, 4 insertions(+), 1 deletion(-) delete mode 100644 bun.lockb delete mode 100644 tsconfig.tsbuildinfo diff --git a/.gitignore b/.gitignore index 24e64005..1e038554 100644 --- a/.gitignore +++ b/.gitignore @@ -28,6 +28,10 @@ dist-ssr # Compiler files cache/ out/ +*.tsbuildinfo + +# Bun (project uses npm — bun.lockb should not be committed) +bun.lockb # Ignores development broadcast logs !/broadcast diff --git a/bun.lockb b/bun.lockb deleted file mode 100644 index f41003f46ec30e09b6b5787170776b3b9fd487f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 201126 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

6sjs!nK8W*iaE2FwMU-su)Yj_r;Y|gpcY@5_O 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 QG9?BawTt?!|EK@{4?Fr~Z~y=R diff --git a/tsconfig.tsbuildinfo b/tsconfig.tsbuildinfo deleted file mode 100644 index ecfcef0c..00000000 --- a/tsconfig.tsbuildinfo +++ /dev/null @@ -1 +0,0 @@ -{"program":{"fileNames":["../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.es5.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.es2015.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.es2016.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.es2017.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.es2018.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.es2019.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.es2020.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.es2021.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.es2022.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.esnext.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.dom.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../../library/pnpm/global/5/.pnpm/typescript@4.9.5/node_modules/typescript/lib/lib.esnext.intl.d.ts","./next-env.d.ts","./tailwind.config.ts","./vitest.config.ts","./scripts/getstablecoins.ts","./src/middleware.ts","./src/env/server.ts","./src/lib/email.ts","./src/actions/capture-email.ts","./src/lib/site-config.ts","./src/app/robots.ts","./src/lib/learn.ts","./src/app/sitemap.ts","./src/lib/analytics/sql-string.ts","./src/lib/analytics/queries.ts","./src/lib/analytics/sql/registry.ts","./src/lib/analytics/client.ts","./src/lib/analytics/services/transactions.service.ts","./src/app/api/analytics/active-traders/route.ts","./src/lib/constants.ts","./src/lib/analytics/services/leaderboard-filters.ts","./src/lib/analytics/services/leaderboard.service.ts","./src/lib/analytics/services/leaderboard-transform.ts","./src/lib/analytics-server.ts","./src/app/api/analytics/eth-price/route.ts","./src/lib/analytics/services/l1-transactions.service.ts","./src/app/api/analytics/l1-swap-hashes/route.ts","./src/app/api/analytics/leaderboard/route.ts","./src/app/api/analytics/leaderboard/efficiency-leaders/route.ts","./src/app/api/analytics/leaderboard/find-me/route.ts","./src/app/api/analytics/leaderboard/rising-stars/route.ts","./src/app/api/analytics/leaderboard/volume-leaders/route.ts","./src/app/api/analytics/swap-count/route.ts","./src/app/api/analytics/transactions/route.ts","./src/lib/analytics/services/users.service.ts","./src/app/api/analytics/user/[address]/route.ts","./src/app/api/analytics/volume/swap/route.ts","./src/app/api/barter/route/route.ts","./src/app/api/config/fee-percentile/route.ts","./src/app/api/config/gas-estimate/route.ts","./src/app/api/config/leaderboard-poll/route.ts","./src/app/api/config/tx-timeout/route.ts","./src/lib/vercel-edge-config.ts","./src/app/api/cron/update-edge-config/miles-estimate-gas/route.ts","./src/lib/google-sheets.ts","./src/lib/waitlist-sheet-cache.ts","./src/app/api/early-access/route.ts","./src/app/api/fast-tx-status/[hash]/route.ts","./src/lib/network-config.ts","./src/app/api/fastswap/route.ts","./src/lib/analytics/services/fastswap.service.ts","./src/lib/token-list.json","./src/lib/stablecoin-list.json","./src/lib/stablecoins.ts","./src/lib/swap-constants.ts","./src/types/swap.ts","./src/app/api/fastswap-miles/by-address/route.ts","./src/app/api/feedback/route.ts","./src/app/api/fuul/identify-user/route.ts","./src/app/api/fuul/leaderboard/route.ts","./src/app/api/fuul/leaderboard/find-me/route.ts","./src/app/api/fuul/payouts/route.ts","./src/app/api/fuul/payouts-summary/route.ts","./src/app/api/gate/status/route.ts","./src/app/api/gate/warm/route.ts","./src/app/api/hyperliquid/hype-activity.ts","./src/app/api/hyperliquid/hype-balance.ts","./src/app/api/token-price/route.ts","./src/lib/swap-server.ts","./src/app/api/tokens/route.ts","./src/app/api/transaction-status/[hash]/route.ts","./src/lib/fast-db.ts","./src/app/api/user-community-activity/[wallet_address]/route.ts","./src/app/api/user-community-activity/[wallet_address]/[entity]/route.ts","./src/app/api/user-community-activity/entities/route.ts","./src/app/api/user-community-activity/entity/[entity]/route.ts","./src/app/api/user-community-activity/stats/route.ts","./src/test/utils/mock-next-request.ts","./src/app/api/user-onboarding/[wallet_address]/route.ts","./src/app/api/user-onboarding/[wallet_address]/route.test.ts","./src/app/api/users/route.ts","./src/app/api/waitlist/accept-invite/route.ts","./src/app/api/waitlist/check/route.ts","./src/app/api/waitlist/count/route.ts","./src/app/api/waitlist/list/route.ts","./src/app/api/waitlist/position/route.ts","./src/app/api/whitelist/check/route.ts","./src/app/api/whitelist/convert-waitlist-to-whitelist/route.ts","./src/app/api/whitelist/generate/route.ts","./src/app/api/whitelist/list/route.ts","./src/app/api/whitelist/whitelist-swap-volume-holders/route.ts","./src/app/share/preconfirm/route.ts","./src/components/dashboard/ecosystem-carousel/criteria/types.ts","./src/components/dashboard/ecosystem-carousel/criteria/ethereum.ts","./src/components/dashboard/ecosystem-carousel/criteria/hyperliquid.ts","./src/components/dashboard/ecosystem-carousel/criteria/index.ts","./src/lib/utils.ts","./src/components/ui/button.tsx","./src/components/network-checker/rabby-steps.tsx","./src/components/network-checker/browser-wallet-steps.tsx","./src/hooks/use-network-installation.ts","./src/components/network-checker/programmatic-setup-steps.tsx","./src/hooks/use-wallet-info.ts","./src/components/network-checker/wallet-info.tsx","./src/components/ui/card.tsx","./src/lib/wagmi.ts","./src/lib/fast-tx-status.ts","./src/lib/transaction-receipt-utils.ts","./src/lib/fast-rpc-status.ts","./src/lib/tx-config.ts","./src/lib/transaction-errors.ts","./src/hooks/use-wait-for-tx-confirmation.ts","./src/hooks/use-rpc-test.ts","./src/components/network-checker/rpc-configuration.tsx","./src/components/ui/sheet.tsx","./src/components/network-checker/network-setup-drawer.tsx","./src/components/ui/dialog.tsx","./src/hooks/use-smart-account-detection.ts","./src/components/ui/tabs.tsx","./src/components/ui/badge.tsx","./src/components/onboarding/smartaccountmodal.tsx","./src/components/network-checker/rpc-test-modal.tsx","./src/components/network-checker/index.ts","./src/components/ui/toast.tsx","./src/hooks/use-toast.ts","./src/components/ui/use-toast.ts","./src/hooks/use-gate-status.ts","./src/lib/wallet-provider.ts","./src/lib/contract-config.tsx","./src/lib/onboarding-utils.ts","./src/hooks/use-onboarding-steps.ts","./src/hooks/use-email-capture.ts","./src/hooks/use-rpc-setup.ts","./src/hooks/use-wallet-connection.ts","./src/hooks/use-minting.ts","./src/hooks/use-mobile.tsx","./src/hooks/index.ts","./src/hooks/use-accepted-invite.ts","./src/hooks/use-add-fast-to-metamask.ts","./src/lib/fuul.ts","./src/hooks/use-affiliate-code.ts","./src/hooks/use-balance-flash.ts","./src/lib/barter-api.ts","./src/hooks/use-barter-validation.ts","./src/hooks/use-dashboard-data.ts","./src/hooks/use-user-onboarding.ts","./src/hooks/use-dashboard-tasks.ts","./src/hooks/use-email-dialog.ts","./src/hooks/use-estimated-miles.ts","./src/lib/eth-path-tx.ts","./src/hooks/use-eth-path-gas-estimate.ts","./src/hooks/use-read-only-contract-call.ts","./src/hooks/use-genesis-sbt.ts","./src/lib/leaderboard-config.ts","./src/hooks/use-leaderboard-data.ts","./src/hooks/use-page-active.ts","./src/hooks/use-prefetch-dashboard.ts","./src/hooks/use-page-prefetch.ts","./src/lib/erc20-abi.ts","./src/hooks/use-permit2-allowance.ts","./src/hooks/use-permit2-nonce.ts","./src/hooks/use-recent-tokens.ts","./src/hooks/use-broadcast-gas-price.tsx","./src/lib/permit2-utils.ts","./src/hooks/use-swap-intent.ts","./src/hooks/use-swap-confirmation.ts","./src/lib/token-resolver.ts","./src/lib/feature-flags.ts","./src/hooks/use-swap-quote.ts","./src/hooks/use-token-price.ts","./src/lib/weth-abi.ts","./src/lib/weth-utils.ts","./src/hooks/use-weth-wrap-unwrap.ts","./src/hooks/use-swap-slippage.ts","./src/components/ui/input.tsx","./src/lib/popular-tokens.ts","./src/lib/swap-logic/token-list.ts","./src/lib/barter-supported-tokens.ts","./src/hooks/use-token-balances.ts","./src/lib/token-icons.ts","./src/components/swap/tokenavatar.tsx","./src/components/swap/tokenselectormodal.tsx","./src/hooks/use-swap-form.ts","./src/hooks/use-user-points.ts","./src/lib/swap-events.ts","./src/hooks/use-user-swaps.ts","./src/hooks/use-waitlist-position.ts","./src/lib/gate-data.ts","./src/hooks/use-waitlist.ts","./src/hooks/use-wallet-provider.ts","./src/hooks/use-whitelist.ts","./src/lib/contract-server.ts","./src/lib/fast-settlement-v2-1.ts","./src/lib/fast-settlement-v3-abi.ts","./src/lib/preconfirm-sound.ts","./src/stores/swaptoaststore.ts","./src/components/ui/tooltip.tsx","./src/components/ui/toaster.tsx","./src/components/ui/sonner.tsx","./src/components/swap/tokenicon.tsx","./src/components/swap/tokenpairicon.tsx","./src/components/swap/preconfirmcelebration.tsx","./src/components/swap/swaptoast.tsx","./src/components/swap/swaptoastcontainer.tsx","./src/components/providers.tsx","./src/components/pwa/service-worker-register.tsx","./src/components/pwa/install-prompt.tsx","./src/app/layout.tsx","./src/app/not-found.tsx","./src/app/(app)/dashboardtabcontext.tsx","./src/app/(app)/gateviewcontext.tsx","./src/components/swap/herosection.tsx","./src/components/swap/orbanimatedbackground.tsx","./src/components/swap/amountinput.tsx","./src/components/swap/tokeninforow.tsx","./src/components/swap/sellcard.tsx","./src/components/swap/switchbutton.tsx","./src/components/swap/buycard.tsx","./src/components/swap/exchangerate.tsx","./src/components/ui/skeleton.tsx","./src/components/swap/actionbutton.tsx","./src/components/swap/rewardsbadge.tsx","./src/components/swap/transactionsettings.tsx","./src/components/swap/swapinterface.tsx","./src/components/modals/swapconfirmationmodal.tsx","./src/components/swap/swapform.tsx","./src/components/animatedbackground.tsx","./src/components/landing/page.tsx","./src/components/landing/waitlistheader.tsx","./src/components/ui/hover-border-gradient.tsx","./src/components/onboarding/metamasktogglemodal.tsx","./src/components/onboarding/networkdetailstab.tsx","./src/components/onboarding/addrpcmodal.tsx","./src/components/onboarding/browserwalletstepsmodal.tsx","./src/components/landing/waitlistexperience.tsx","./src/components/landing/alreadyonwaitlistmessage.tsx","./src/components/landing/approvedexperience.tsx","./src/app/(app)/swaporlandinggate.tsx","./src/components/shared/clientonly.tsx","./src/components/shared/appheader.tsx","./src/app/(app)/layout.tsx","./src/app/(app)/page.tsx","./src/app/(app)/dashboard/layout.tsx","./src/components/ui/label.tsx","./src/components/ui/3d-card.tsx","./src/components/dashboard/sbtdisplaycard.tsx","./src/components/dashboard/referralscard.tsx","./src/components/ui/accordion.tsx","./src/components/dashboard/onetimetasksaccordion.tsx","./src/components/dashboard/swapearnaccordion.tsx","./src/components/dashboard/usermetricssection.tsx","./src/components/dashboard/pointshud.tsx","./src/components/ui/progress.tsx","./src/components/dashboard/weeklytaskssection.tsx","./src/components/dashboard/referralssection.tsx","./src/components/dashboard/partnerquestssection.tsx","./src/components/dashboard/onetimetaskssection.tsx","./src/components/modals/sbtgatingmodal.tsx","./src/components/modals/transactionfeedbackmodal.tsx","./src/components/modals/referralmodal.tsx","./src/components/dashboard/ecosystemsetscarousel.tsx","./src/components/ui/table.tsx","./src/components/dashboard/user-swaps-parts.tsx","./src/components/dashboard/userswapsmodal.tsx","./src/components/dashboard/userswapstable.tsx","./src/app/(app)/dashboard/page.tsx","./src/components/dashboard/leaderboardtable.tsx","./src/app/(app)/leaderboard/leaderboardpageclient.tsx","./src/app/(app)/leaderboard/loading.tsx","./src/app/(app)/leaderboard/page.tsx","./src/app/api/og/preconfirm/route.tsx","./src/app/api/og/preconfirm/[time]/route.tsx","./src/app/claim/loading.tsx","./src/components/claim/claimpageclient.tsx","./src/app/claim/page.tsx","./src/app/claim/onboarding/layout.tsx","./src/components/onboarding/onboardingheader.tsx","./src/components/onboarding/onboardingstepcard.tsx","./src/components/onboarding/onboardingstepslist.tsx","./src/components/onboarding/mintbuttonsection.tsx","./src/app/claim/onboarding/page.tsx","./src/app/early-access/layout.tsx","./src/components/landing/earlyaccessform.tsx","./src/app/early-access/page.tsx","./src/app/early-access/thank-you/page.tsx","./src/app/learn/layout.tsx","./src/components/learn/articlecard.tsx","./src/app/learn/page.tsx","./src/app/learn/[slug]/opengraph-image.tsx","./src/app/learn/[slug]/page.tsx","./src/app/network-checker/layout.tsx","./src/app/network-checker/page.tsx","./src/app/og/preconfirm/[time]/route.tsx","./src/components/referral/referralpageskeleton.tsx","./src/app/referral/referralpageclient.tsx","./src/app/referral/layout.tsx","./src/app/referral/loading.tsx","./src/app/referral/page.tsx","./src/app/s/[time]/opengraph-image.tsx","./src/app/s/[time]/page.tsx","./src/components/navlink.tsx","./src/components/dashboard/dashboardheader.tsx","./src/components/dashboard/defiprotocolsmodal.tsx","./src/components/onboarding/alreadyconfiguredwallet.tsx","./src/components/onboarding/communitystepsmodal.tsx","./src/components/onboarding/emaildialog.tsx","./src/components/onboarding/walletwarningmodal.tsx","./src/components/ui/alert-dialog.tsx","./src/components/ui/alert.tsx","./src/components/ui/aspect-ratio.tsx","./src/components/ui/avatar.tsx","./src/components/ui/breadcrumb.tsx","./src/components/ui/calendar.tsx","./src/components/ui/carousel.tsx","./src/components/ui/chart.tsx","./src/components/ui/checkbox.tsx","./src/components/ui/collapsible.tsx","./src/components/ui/command.tsx","./src/components/ui/context-menu.tsx","./src/components/ui/drawer.tsx","./src/components/ui/dropdown-menu.tsx","./src/components/ui/form.tsx","./src/components/ui/hover-card.tsx","./src/components/ui/input-otp.tsx","./src/components/ui/menubar.tsx","./src/components/ui/navigation-menu.tsx","./src/components/ui/pagination.tsx","./src/components/ui/popover.tsx","./src/components/ui/radio-group.tsx","./src/components/ui/resizable.tsx","./src/components/ui/scroll-area.tsx","./src/components/ui/select.tsx","./src/components/ui/separator.tsx","./src/components/ui/sidebar.tsx","./src/components/ui/slider.tsx","./src/components/ui/switch.tsx","./src/components/ui/textarea.tsx","./src/components/ui/toggle.tsx","./src/components/ui/toggle-group.tsx","./.next/types/routes.d.ts"],"fileInfos":[{"version":"8730f4bf322026ff5229336391a18bcaa1f94d4f82416c8b2f3954e2ccaae2ba","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","4b421cbfb3a38a27c279dec1e9112c3d1da296f77a1a85ddadf7e7a425d45d18","1fc5ab7a764205c68fa10d381b08417795fc73111d6dd16b5b1ed36badb743d9","746d62152361558ea6d6115cf0da4dd10ede041d14882ede3568bce5dc4b4f1f","d11a03592451da2d1065e09e61f4e2a9bf68f780f4f6623c18b57816a9679d17","aea179452def8a6152f98f63b191b84e7cbd69b0e248c91e61fb2e52328abe8c",{"version":"3aafcb693fe5b5c3bd277bd4c3a617b53db474fe498fc5df067c5603b1eebde7","affectsGlobalScope":true},{"version":"f3d4da15233e593eacb3965cde7960f3fddf5878528d882bcedd5cbaba0193c7","affectsGlobalScope":true},{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true},{"version":"8cc8c5a3bac513368b0157f3d8b31cfdcfe78b56d3724f30f80ed9715e404af8","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true},{"version":"5f406584aef28a331c36523df688ca3650288d14f39c5d2e555c95f0d2ff8f6f","affectsGlobalScope":true},{"version":"22f230e544b35349cfb3bd9110b6ef37b41c6d6c43c3314a31bd0d9652fcec72","affectsGlobalScope":true},{"version":"7ea0b55f6b315cf9ac2ad622b0a7813315bb6e97bf4bb3fbf8f8affbca7dc695","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"eb26de841c52236d8222f87e9e6a235332e0788af8c87a71e9e210314300410a","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"81cac4cbc92c0c839c70f8ffb94eb61e2d32dc1c3cf6d95844ca099463cf37ea","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"5e5e095c4470c8bab227dbbc61374878ecead104c74ab9960d3adcccfee23205","affectsGlobalScope":true},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true},{"version":"d7f680a43f8cd12a6b6122c07c54ba40952b0c8aa140dcfcf32eb9e6cb028596","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"2768ef564cfc0689a1b76106c421a2909bdff0acbe87da010785adab80efdd5c","affectsGlobalScope":true},{"version":"b248e32ca52e8f5571390a4142558ae4f203ae2f94d5bac38a3084d529ef4e58","affectsGlobalScope":true},{"version":"6c55633c733c8378db65ac3da7a767c3cf2cf3057f0565a9124a16a3a2019e87","affectsGlobalScope":true},{"version":"fb4416144c1bf0323ccbc9afb0ab289c07312214e8820ad17d709498c865a3fe","affectsGlobalScope":true},{"version":"5b0ca94ec819d68d33da516306c15297acec88efeb0ae9e2b39f71dbd9685ef7","affectsGlobalScope":true},{"version":"34c839eaaa6d78c8674ae2c37af2236dee6831b13db7b4ef4df3ec889a04d4f2","affectsGlobalScope":true},{"version":"34478567f8a80171f88f2f30808beb7da15eac0538ae91282dd33dce928d98ed","affectsGlobalScope":true},{"version":"ab7d58e6161a550ff92e5aff755dc37fe896245348332cd5f1e1203479fe0ed1","affectsGlobalScope":true},{"version":"6bda95ea27a59a276e46043b7065b55bd4b316c25e70e29b572958fa77565d43","affectsGlobalScope":true},{"version":"aedb8de1abb2ff1095c153854a6df7deae4a5709c37297f9d6e9948b6806fa66","affectsGlobalScope":true},{"version":"a4da0551fd39b90ca7ce5f68fb55d4dc0c1396d589b612e1902f68ee090aaada","affectsGlobalScope":true},{"version":"11ffe3c281f375fff9ffdde8bbec7669b4dd671905509079f866f2354a788064","affectsGlobalScope":true},{"version":"52d1bb7ab7a3306fd0375c8bff560feed26ed676a5b0457fa8027b563aecb9a4","affectsGlobalScope":true},"85ae5aee75f011967cf2d25cbc342f62d69314e9d925f7f4aa3456fc2cffcca6","44e025d1492c887cd28cbb227fcdf886b476996eb6f4e9d1fdf23706b392984f","fad012c2fb5d060ed5ad85d9abf69db350a7c6ee46c2b029f1931385af25bf72","d77dcc02192fba4686385e8a7e8dcee0fae1cf214a9b2614fd56eddde84942e7","13f1dfea3ef638f04fba8b70aba9b660556269424f9349d301447a0e7112e944","6a1a2bea815b120fae0c2cbad9a2edc6276b0072529a5902adc46d80f35b9812","4c7fa04b6915ddb43fb399f045e3ca6b762f03f013def32cfec2795e010d38ed","2bc18eee7ccfe2bba06607bb712553ab4ecdcb31e84a3f0d8675f9a42cb25adf","ef53b14400bbad7f3dcb91e0cb4c9fbc69a6825dc173f481121a4087d3e8d692","16356e7105edbef1b583199eeedc4062765d80f60f9f4c822dd14d9477eae035","b3e30aa31da7cd266585af192037cedb3c55a217c3ca6612490b43a3c18ba14e","49e60e0e32bd405b69e409626deca8fb83e73e00723ffcc4fd9011be7de949e9","7f45b4256b6f36f419e1721d53e571095b941ed01c8fc4e16a2a1e199bcafc2d","e194262d63ab4e6cc158686f1f065e12325e33866986c6d9240cbfdff5c373e4","2b0c50b95394151eb7544759c5c01ff860da2787a505254f45b3bf10a4fa47cb","54258f452a28161852871c5e9b20b622f13b516d430772768eb2792a8dddc8fe","01389b777841b179790c651aaef05a796f759dd654e68885c669e341b7c61423","ff2f2596fec6e2f727acc1d2919e306eedc23cb98552754eb5fcc40ffec63f2f","c5877eabdbf32bce6aebe2f2cc507fc09a23f64ab8676040ae83afac125b2978","f24168e139ec2b8708d012e2902b18a20f2a051e24705fa78378952d1391551b","106e4444cfd6f1bdc55eb89f7de4d72a257d8f8804509a994b0885463b3f5f3f","36f9b64b2097c82367a74f54688e61982bfbddc9095003356dcea3cc986de434","15bc3c0e7d21aaa56416808acfbe61be03f292b3a3b47a3e2f0a417e2ecfb896","c3ad82cfd3f5c2567e8cd061a65e0d4d1d30fa091e2008ebf245eff8c0e85502","f5f1be1d216a10997a76b4f719e5b12235ab2b3596f22f11ca22ecb0b080f858","f1b45ed6c9894b823537744e6ffffb6ef6283b4007f1741f5be879839c3b2a17","7bb40f967f3a3fa5d9ca39e6577bf6876ecb929a71804f927ef023a138436b4a","56cba00c1ac1e873b0a60f8fd2727059d0743af9409efc11bf9f0973a0b8cd3c","20ba0c1007cc6c13f90347423559c51fbab19bd143e9ccbc1e0d5b0b011e5698","867e05e19123626617d848d9378bcbbf5a3d65e668cbd7173c4e626cd2486637","57900c56730088b95bfcf1f01c4df168cec81d1ab218978518a7902a6489f507","5c597376cf5dd0c4c69cf736e7147331999884190dceed233c11ff1575f3370a","bf1b95b5e0d2f4aaafac558697d30981d19267b1102c1ec3503370433781597e","ceec9b3fd71a0204f101f816ab5a25803bff6a544e9fef5972574769cf53441e","d0b0cba76dab3c1d831141ab6cf29b4017ae5d9981df7209794cfcecdc37bbd3","c195318bb5f7904574be6809e6846e369b51bcd966f65195784bca2ed569ee90","f1d8e2589d960b69fb91769dec7ce3113555933d07b35b93e3c79ab6e247c090","62c36e84f17838ce96b43d5594533a81b842ada42aa044d2c6650ce68c7de5c8","c76ebdebc306abc3db2247ed507efa2648acec8cac84d5a6dc7b3cc3b9d0a125","67a5f035e36eb4b467164d791bd9297321a2ff7e00051a5055f4fb7498f5cfe5","9587f42babb971e6f7f082f56cf6965c817e3d1b6a51f44f6e9d0efcac6284e6","a9783fbe440a223c34406f8a72332fbebec37a6a489f9d2b21babf8c698f4fb4","0f6cc20b8d70e4f2026dea437f51209aaf54defa0d30c90066f81ee10912649b","0e9943742b160a4a46de3b7f9257c04579be7bf612d9bcb08ab45710d60537b8","df335a0da7aea93efd1b5f15dfc77fd884b3c2ecba4db9c3d58c35b2e1dd11c2","fcadecec1348212d479fc71b6289e31af6425a6a89a4381c1f9dd0899b3e0d1d","acb96c4e2b8e0c055b07e902c03235010a89c1044d250319e2b3f9b14f96d695","9d987fb5e4df50c789ba802afcdc648fc10d186fccf51707e7d3b056f1c5dcc4","532f4861fdc466dcf31611edafed4d1442982b8180e0985e5a98f89c03e1038e","203e59daf8ba60259569747a2de6f3385a0f3145c99fa05e4e9d9c859b976a1d","589c09fa066edf1dd341bb362a2ca2f4553289287386ac2901db298707e011be","a4e7e1ee2e31a6ab100cc6a247e666df6384e5f751c370fab6752b3be9c21be7","6ad38b93bc4b504388893b2379623cdd539ad04db42e525feb29bf5b90777d73","a8783aa3bdc37deb6ef22e6106278cd112a84b8e38d3d13c82687de10b27051c","df61044edf84dc736d13f6060957965ae394658d23a3e814f48198f06e8842fe","922e2b3f2c4756e7d88a341e225b652e942496caf27cb4029783259790458bc9","cd124b204c1da007965a08e13992f1eaa118294c534c0b7127df939611b65600","c7f8d9ab72bde23d490a7f2e5de0d33a13db7eb4e1bba6427eb2ea8af3df2008","26e7abdbf38a6ad1193b04da36ce55805877f099a58ee8600ce562af4d660199","7039fc9087e31aca3b6340dbaf663a314132c6faae04550ac5e5e32665e5fc20","5f6d41e5910d152267f757187639a6c3a3ced94a2e798d79d998a4b7cb6493bd","cb4701d0ca9acd8c1a4f367db285221e8968f4b4a84ad3380f2d073fed4ef83c","b385eaf3c70b7900f10f737eae3da8b438c77c6aafcf0603e3c2bcc6d785aedd","32c54a7bcfe986818468084c72feaae5e905d04cc57eefca61cc09af7076ca68","7ff5a69edaef77ff3d0a1e5c695f863ea9773448155ab75acc0e94fd1a2922e5","a108b564c1c5a3ea7d1598bf62a2025b9b4733e7b9608a590b185ebf7b930983","aa094e7150ad9b68bdc5b9d9dbd8c6a4db9e07cd470386ee30eb36e22f0692b8","ef50e61d648235b378e052a373d07b466a1d6022118c5adf08d07129f0b87694","c4cffa4b36bd90c513a1ab7e787df6d42b0c5dad782d861a97f7a31512f59ce1","3e8a2e715366f933720c94493784b7863edfd2d981b76debe132b5580063de07","357a9d7d3c9edfdc46872532ab77a91d57fa6a6ff840eb0d9b50bda0997b67a9","bbb4125a21e4656b672edd83ddbfe041e81492ad4a1ff012960c77ed71c9dfed","a26ffcb01c5e527e21450a25af86a3959061c99923494b0afe3c9fa7e0065760","6d504b596f7835e4b391adeb81eef6c80fbf256e33c06c6d4358cad7dfa707b0","d3ec7105c80850d303d15d722e435e76c800a7a855575f0e6fad993e55f7e8d6","aaf540c8fe6a17a3f7b13512c5c87646a02967637057f8e803b580f8d16957c1","9b57665a9073f5068077b4d7426b44fd2504ba025e2fcbb6943cbde38eef593a","3e9396a1810e4cd3fa507efcdeaf40acf73f6f2a66da8b50f0efcdbd2d7aaec9","7935553928ad4d893ac25a59555d2716299df9f546b2ce046f3feb4ca695d375","20273aa6b5f8b935d7a42c4b1ce4b1cfb12234b08d0ea8480943579e89dd1b66","5dc871a30417cd3b398772d0da778e94294a8f48b5f09d8c41572248995bc8f1","45320cdfda95bed77d3cd5b5340adef7e9efeab1388eecf1f09c3f1a3d46dfca","cb42678e1299019960f3a59bd975e8be715048a195d56b8555ce51917a1df3ad","1d21913e59845207228f63182713fa659bb70383fe4ea0b8f64ef48fc34489d2","2b8e7723120085742b7b9b201cc571cc3fd27f9be470a0a8337d12d0ad8c6a92","cdbecdadd20962f5e48f5c24edc3eb2d337b0a15c331ed525c7e1a958868ea3b","14d8e10934df9b5d8dd77b415a3e83380fdbf67eb61f94aa4e24d0ed555d4c5c","fc24744f75458894a3dcf138f907c4f2f07fa50ec2a534ac2352e88897f2385f","37e5d0308ad018357ebeb503869f3847dec29f282e0e1e0a97164f533746a149","b00109e8d97067e9026f363714c029a26a0120d345dbc8cb1977ff3c7881168a","e91b62e36c654b1b7ae1bbbf7ca1d66c7d8addfb00c9f0962ab4a13d25bab666","3a1bae9c509ea4ee4b61f3f9b347dac54df7bcd3f1cdf5e12b4ff4a9493441dc","fd1e63a8e08dd5e8eb99f7994bb5edba6213ae1ab1e3f321ce727d86567ec343","ce23c956c9f36f2f589353782a7b6f0bffea8a37698b7e33039ba31b996a4794","2f1338b1757d27950e23c6f5c96ecd9592dadd7c00b4b547203f237e13df784d","f12282b8fa91e16871cb1113d0e7b0ef58a3247837d86428b2a51d3cb8eb6157","8c50f590b8ac42bb5bd6eef9ddb98a2994c2fbeb7c64a13e25f3279442d42e16","49f1b56a30e6d9aeb43fdd07f1e98e06fa46642e4cbfcf6bcf417d5ac4ebba9d","91b9bca3afe4eb7baae52199a4a9a32e913a292309e841150646b274acebd137","aabf83ad93e1af12f66d6a13825b977be3f9735797fc2524e9540fcc4ffa1530","b7deabb95c9911cdbfc88831da148a05e1f828d52fbaf109740f2136ac44286e","33ac8315b5968f4c43878e7db6961b895ddf4d74e8f6a54b15452594b4db39e3","d7910a4ba0d940e8c69d78d65d88f5282317ac9198ed067ebaeea4e65dfc174f","4dc90fd53d2538ad316fff8fbb484646856327aaa63612f9df7cff83c46d7378","e88baabed241ab481dfd62362253c0b64d73c36ef5576cc062f269f47ed1a621","94b06de7b3820556a827533a5485349d832905a5e6e5dd550fb308ac901ca8e2","965f95ad61fbf4bb1efecbf7cd974f448a54795e7e28cd3a32a297791c3ff14b","4de44387cf9f564627914513f94023e3d724f5415112e0cb705bd6fafa71e68b","d95d8c5b547632e8196b878609d53c7e07e8605050d2302142b0c6a1c623c726","59330c8f1e8f18d3f2031ee8659d17e071f7a022b6e82715038826a5961049d9","ea18388a6eb79359133fb69cdcf2c01a6e06d0fc6a5d2c9604a5a6a8018c309c","3c78f3095f486276a2c5ddfe78ff8a44a1cb8358b17ad59db16cebca596118b2","aa2a2d15c27a5f8dee260c1313b475560961d2c5066141370217fe2efae635d3","997f569134ba1b56afb856f226dc8ae146c89438901c8bb0921b55cfec2c7daa","b043e18e139453e8e24f574e905a70d43e498cbad0410675168d76fff3bded6d","f96a56a54efeef1132528fe7c56a8c9ee249f5333a79553ea235770d9a254de7","4f2d199d929995502a0f1e6345213c15ec69f7fddd11ecb91cba4c8deccea892","dcf95a5de77142a38bf6c28d5a2c8c88a9cc973e29c879435c0565af4ee40a60","798640f42d279331038edf046e4a3325daca1c749ff06850c59488dd9964ffe3","143ce9db41f0b652c7d02bc819fe3ce1190243d0a02be3289f5eda476134cf09","43cdd7c1befcc3081655792dcc267e93eadf57e0705f3b3260f261d262637e82","d1c16dc002f2833fc0c425bf6332959410d1d37a8471e7196282150963ee8dac","5f4bc67c5b6d9a33e6b0fa230503f66634ef756be824d70d5f368c1648bbf581","108ecd7950fb1a55dbeb4af47d5c32ad18c55f9f24e95b1eacacb1699ce5c0a0","51424b22e857b62d7e8180c51ee10b055ef5c2c8c8e4f3ddd3348ba3eb54b8b5","7518e5737b0f21d099c51e81412ee98d78bd3aa40bbeea6e1dcaea27118427b3","2d358754856f95555fa2f61ece4da8ae6aa274f875e67c89e37bda742bba72b8","5ea84e492457d39080246eeb86ae05d4a65a8bc0c72867732074df6c6dd4d159","32372c9d91987045f90b41005edaf56b7aca3b41a6cff8bcbb64f18228b94cf9","95c4c0b2e9b8557955faf6653cc87d5ddcceaa534dc8ef8526398cbc59852e50","069952bf789e95f4040a3b1da0927f8f34910d005ab19c5beb25cdc433be6845","4134624ebd67409cd6d2c8f816ca8b4520385719d89515b65548e862cfb0e6fc","c1777917b01fbcfd435953dbf3e53f7017eb8fc98e82011481868c5ecc4c0e4b","fac8a908557874baf8a768c7f48d228b17a3fc98ef76e4fee54407b5d3c261c8","ad0936f84f1df79d3697bfbff9c18f8ad58431c1cbaf2359c6a853b0fcc9f28b","9a34c8843e6dc086c32c6e506bc07548e70c785d91bbfa57bf05d48176f1ca90","6327abeb9aff366fb0746dd765c401ac323240cbe1c0296439b32f004b786226","33a91ab5da54073b9ed24c348710a61f7071729948c51193b56cf8079d6ed95d","f2c92d2bd901b47a11d0709ade1fd9fd8d45c16cfe190ac92357ad2849e60b2e","f0561153a996b1f241302b8f8124518a9d3dd45683eb5014e65fd1d9d4380af0","044241d2444a9b092ebf01930b6d8ca7e53d1f237ce21331133ef33ea9596c1e","ae96e237459b0bc03b4b43c4d04febb6f74bda6d9eb9985394b45dac9d01bdf0","d4fa9ea9ca5258352ad75a6b232d3089e7377ec6d3342557d19819a3c559336e","97c1e1145fb7d8c1ac7d47836732066fb307a22997f82c8ae605527b9e0f3457","39c0a5f734d1bfb1016e7359ad7a5e2ef70e5f772b4900879130df1e545f48f4","65bc9fbcfe7623435af9b89eb73113d620d42e062c1bad00d00ab73f27e970b8","e554d5c10be087c846c6724ee7d3981e40a770fcb812b5b70a74e92ab8c430e8","fea67cfecc0d6ae9c3b2bcaf2d185cc3653873cd7e82e2b60944b548b0363ff5","9a555853eea12de8cf1545e3174070702f6afde61222d0d8e1a4ba9d092b97b4","f599d3a99770ef05b2b6e0581dc7d4bdecd3881f2b092f73ba7f1101d56b19cb","a7add3f5aaace0543e804a682288daa521580b5c819e4906ff8727f467f3a22b","5a488ceb1f5b3f454d7edd604618cec999b2039dc04ed521773863206c152afa","9ee378a1d939bede03cbe90bb7deffb5f4289645352c8805279ef5ea21e7272e","0b542eab22b7a10448294efb51571a342db0cf23e94735561398d9c5b768ddee","1fb73d780b1b617e075bead97b14ba0b24265d0c3a7f7136e908b5d8f7a09434","5f0194bacd2b319c110603c6fe56ad26f6385c6bb03f476f8538b4d65bf8c892","4a94f0baee1c23404eabdf8bff7f6d3a63f3f41cd756b77f1d89e94d8f6b32d7","f5a5917ca641b0e44ddbbc7b4684abf759c31dee2077e0fb844acbdcf9d945dc","b637fed02592a4862fe4aa44f1ac932f80361de26e2fb8b6eba6f8f2ee7ea934","a2161fcd4c2605fd8ce5d53eb85a62b381c40e2b11f39f6d6b612b4e0c6d75b7","c6c5125bd936a6d1f5d7911fe8ec2fbef8ace6c773d2fbf95b17b991915d562f","54f0365a70b3c768c350c96e5b1e4afb2366c52a6dc84641d94fc5596c7f35d6","e9cc798096f9f954c4bea916eaa50d6455aced3d62fc21b1963e86a535acedc5","2a63b32e7a83d9131f8afc2289cfd21ace602a628cbfc27ac9bf61ca41597a1b","3178a99f189cebc469c7a572515666d9fb5629bfb88eb3548e6cc435fd30f5d4","c911f9957a7340b9e91bef97e62cce9f681f30999a77465b257b98513f34f14c","384b727ad56f1930d332449d0a85e395ee6a50460130ce1b0b60bcca10d1d50e","4e1efc672c87309765cea7c12d3a98ff67da95378b7b1ed7a6844c598a3aca72","cf0591c1b53389cc7e6b0f43996efba63d6a143aecbbc136ffb702439f67a08e","fad1a958aa13eb1ea6cc8dc24f09c4b10c703674d51019cf53702927d9a21f80","7d9ba4505f832c43d184a9d0c9568c1bb32a8770867e66c0a48b80d0a364384c","ab522f58b23b2d42e80bf1f94607bfc6ca6421de7c1061827edc687f522b802a","f5836a144ea340fe7e3b8781c05ef8f7643246516a80c06bde4a0b2c81d5b21f","b326e2af874b14aa2ac18096ddbec512c6258f3fafc20ba6c8262818d48e6a5b","917c80a9ac0e4c95d0f0fce92db8923158ce9dbc6b12076a236129237d12fdf1","53de0fad8a3120b651807b7b99a53f8c15f2b4cdfc2af0980138aafe4a129ca6","3bbfbae7134375e1b558bb5ef19f420cef32df4ea759aca3215f0e92cb2cc765","437b797e190fbfebcabbb9185dcb47f9d01abec02a3380a641a26b18a3d85992","7d8ddd7c8bc545bfba8df23be55845340d531acc0ccf6bc2de662eb9c3337817","aefac726dbbe4ab36494a74d6a106611dcdc33a968f8dab060edd1521d83604d","37a93f121cc8f84f26bd2104499c72565f5725e06f149d7e21dac3ceb265505c","62eadcb59c4850331f08115046076b884bce31b4ab13e0cd652cc97898fb57bb","f4edee0cf67610c15720408a7382c334864b943e5197e17bf993e92338a05461","f58ee71c1c7ccdfb9c436f28670ea33cd9cd396bc24811ecd1b092730bd421da","a9a3b94a95f92e305afd7cadda8651620424ed73d2e06e79361b9657f2293fb4","be0255e784e64a02fb43b298296771e60b260757010f42d6e48cce1b3ff248e9","443aba0772b934f3884a16488f16c42e9c36587c4f2b51d76edcab88a0a6c973","3628dc4de8bb107f0907c6577b7aa56bef88af1467e723a74b78c1224f887367","f3e906353da4825347e7309b2cc2b9e3c48cbb0b69cc3fb95d0e1c4cfb876d91","c3122e9fac030e11b69362a4eab42dbbde225eacc841be03e1c8719cbe15d7e2","eaffe4eb7118c625e909284c68570ec6262a77e7fe12e318bb9ed10114e6422c","a776057ed6994c57c678e1df42fb06920719e6a6ba77e6c50846e466b0e56acd","117aa06ab3406ea0b80df2037a5817ec5594663d9ce156bebe87c091821c8f4d","afebf2186a096cb65384c9db9a68613c8881d302cb73b450b3bcece5f0a0f583","d66302e450b2e70b1addd35e77aef842480939c9bd7d9400731c67c8d542d648","dcde7832cf8854488ec7278ffceab3f74a5a432d2163d81c5960cdffc70c3346","0f606b7dcd7a46aedd1e72df06b64c9cce8bf1b9486ef04a15a0c746972ea848","0f030764e78d685dded052cb6d0c35558471533b7774896413ce553e634937b5","14291c7b942508df96e05d97f8721c1d2cf0e8f4920242ac0d2623ddd6240459","2d36aa849672080ffa8dc4d5ad110387bf4d60386c29794a9605cbc2a0079e8b","fad89b55c0d4f4f4fbbb48f35bb9af1a52806dbc51afbfbd86587c611ec75fdf","7196eb7c014264d139e9afe727e9439906ee2365ea4045787048b79d59f0cd66","d2f9bc4b2d81f1f3dc0c34290628b960bc0636b5c4b5ca3361f532c675e15f50","039c6720234726edbe96404ffdfa1a1ad43eab07f02e1c7f1ffe495cb4e68bbd","ae1800f4fb2a4824eb05331efea0e893641be1308494790f3b5ee5a4f393ba3c","489aa884fdcbc55ca6fb50cad2c346734a082b81f3acd4d03c280a4900e75f5f","08b391d7a2578cde4c5a319549f359b232b6168d889675579ae5bd5f31a8538a","c446c37aaa29a822a4fef905142692aa28d1cb0e85a71d2d733e40e44338b877","184c3e8f75917bca29d4f0c9ac83c24effa45108ce73f1db139b5d8f2ba882dc","f52ed095a3630d17a67ecabd47e2dcb7d04591d49e79a669910705cf0f9df20d","8234b007d88c13f2324ac2b8abca79eb587af00f14d3bf3fe6c6c6e99bae5654","f1398bc145c4acf2d6226c80647aa9ac95b70c9bb13e85908fc3cb156bfe6169","b50fc6975d8957ba9c1e17ac524db403581f915c5e8397a7d9cf0b6e7742ffac","8370f9d18cbfd1289eb0a2de32763c842ddb1719b88ecfbfdc7644a5798fbe88","548812069f2f033b13fa9f8f96a9d875c81ab71d90920d9e0984c98752a88a25","8317b53e7f489940a771eeb5e9b2e9535783f8263ecbf2c654cc9f418ce1af12","77f27469a1c185d0c3893d1402867952883b2307ea3421cb762be254caca44a3","8056eb56750337e08f3f0410e9dbff5c7fd0c25148a3e15cc6a6485f15674c5b","f474a86bd81d315325efd548280cbaf8b37d7161dbda48ac9fc925ccbb93a9de","c65023b9eb4d1d750388f4da1aadd9cbdacc3af60d73c5e95d11e76b1a9a5999","bd96ded647b411b874bb33a8d2fe5b6cd3d1e88d703d5a5ff8bf632d48f2e0ca","d2c873fc74ed16054a1533d95070d7b1cf02fcf8a9a76661eebd96f50678cf72","badc6d9dc89daf375734de0d0523970c47cb8139a6f9f74b2241eb03b9ffffb6","3ccde67b5c2d3c74f6dc2374f33a19af1e682ba3229c14a692830219cf861eeb","76de3af1cd0af74e1bcc37abc4578716ad08338a37cab5da26de6006f7f7b53a","3d282877960cf355374095b5689c253e8703342d0ece7ca17e4f013b30e36639","a6db4a88029d4769963b981fc206d81e672d98c9647ff60ea745b101d15293a4","e9004b28169a5d1f3c034715e14fe314031c8c6dd9a9a8d7fff74f14a3ad0b08","5cf94169f831f9b60097ee44ad9e3bc0517e6016f03dfcbbeb125713599922ff","95eba5bb2228c25b7e252d0e36a0e887dec63bc32203bf784532224a7d30c5cb","113b1878a965b9109979f4edc6da5bd1f0df5d8324bff54906ee5a03521c8ac2","871798d402e929d15aa802d59b7d1a5d2bd60bf1b2e3c213f543b8457ce28481","fcd36160f917aa619b3d0c1400bb46e692fab19a31ea9fcde0a026e2b0021445","68de3af0099ee0ed8e080e4c24745f7bf198ccf7dede04ab0a4dec7d12e1544f","e9125bd166a3624f611a537a4bc1bc5389eab2d67ed7e2e4ce07e424e69ee1db","759d779e50c0418a0fa1aea9932897bc18237adafac5f3b0aaef7cea5b5127ec","01ec909160d3e92b19240dae79a3e0d319ecfd451c6faeb16ab9ed93d944f2b2","9706ec7bb8b0cfa87731e7db09faf43f267f81c7299f749257fd105f3ee2bd46","cd64965b7f5991165bd5cfdb8ec040a0d226164fed4ced96c54a56f843c8092f","61af56d0c1afdf2c0248eeb8ca815952144bc10b8c28b8bb5e35cfc43cc2c159","e74ebcb403bec13d08b9ab55d32137f025e885c2314dcb061cc0cab7c38a1ec7","a7b82cdd79413faca0d086bd4ff67b3af703a6117a013aec3e475067a4d2b54d","51ae18592c6a24fd86b24bd54e726561f783566640425d3aec684d9e9cbf350a","173a45310c170c79f1903bf5b5a1522b6c25a8f6be6dd496e086f6663f071424","0e8643db2db234e8897ba24f5e18e06e27b4c4d577d6044e344a9ee19fb569f6","8405106d33cacff354f65871209e9e6f4f1caca17c868e7814393243add7e4a4","f6fd2dad693f61f842bc7dd307e128e80cddff4913fe98a1be5ad76d9035d75b","9b62c28f3414c36c8e2017774fee3526619fadce40ab3ebe65338ad6cd9ada1f","8356c023da38da8ffd8cce4d2226cff4fc8f6ac8304cb73fa33b81cd2c265918","e687417688dc21835258bbce8b6c8774bc4c357bdcebbab9bc4d0dc8da6ad709","fa139a02ec2f5b63cebbd1192b8a3f860abd6ae253a1104a580f65fa09446fdc","48d24de89a470434abb373a63362280fae3c0d67a24ac2d61504e84a8ebe4d2c","e3b2c2e161a9a56ec36ea78f7853dd051cf00d8edcf9c1b00b18d7a6ec36d09b","bd745cfe7cca6dd6dedd7cc03a7c9121ebf1e036de04ce970e0227c080f07138","22761c125f8c40eade126cee4f2f33b21f1ef904afa4829eb424ab1f37824274","a3e30b34dafee0b9963376bfcfc71bdb1faaf00e91541e82f0400c0daa9281a5","f1e03ee15baf8de8f48a96ce0b33a8cb1b568d0b4175c772fe80e1cc152bc541","53acd9f7e0d2d0e6bd0c296821a48c9332b609ec602c7b328a76fc38e997a54b","6036c13a0152edd51689fef07223482d44d6e66e36b70f70d8f580927780e57c","726f37204e6de34cad653b8a9ae82595a3df5ad940e6e5e24f82c61f8aea682b","16f7bbc6ad1c4489bf7ad3b61ce059eddc8e7af1584730fdbc0fb415df15ef67","a83d4172eb264a12848e95d811db490d517db098fec0f123e008739de2630fca","96b8687568f26082702f07fa23a68eba41c8fcb6ead589e1509631cb902b42bc","72092cf6847231405e3eafe7d01a4db8f850ef3295ab6da1d56bbd9db65859af","d2a49ca61854cad8ad7c4e7678318fff43e14bd183c150db596d044640a3d6d1","c765a31af03c0d0b272f805fbc0dcfe22bf95aa9d9d2133c44e71af1fec0341a","faaf57864cbc52b29917928b71fd41f3283ab11effae8cb7cb0a31d6522683f8","dd93f9ebe98abe1eecdcb55f0761c637cd722de2ec3af94bb495d0d36e0c7d4b","8038b452c700ad2b0f56802d9b83ef0b057b0858a6664d8104cfa109c709f813","d7fa685813fcd763097e16dd60bdbf52e0f0b8e196820598a3dd41eb4a8661e8","d70ddc10468f17f6fcb66774e7b1915b01bd881a1974c46d602b93601f83214d","3f75ca9c04584cf92be6e3dd41eab9b2fb821b1e9524a904197147771fcd4600","616b7a7d9a879ef7b45caaa5d5c1f3aca88599e4519ae6d05816027b04dcbc78","de9e374970b56a3cec6ac37e3c6f00231faa39752b92042c5ddef2b566ca0e17","76d8c71417bf7dc4869c20b592f663d57c94b36c029d37321493a7b8903d86ec","0722c3578a1249000177e86f41dd2a904d850a844a5b3885739499a06e25a1ea","a0cd08bfeca697a43ac06f19ced30c32f50fde0731849a1b2187a170888b7e0c","52b0665aff3f11e2fa3cb472e4ac5eb328c3b0b2699e6db0cf4d76973ee4b657","db561b36574b577dc38c0c86dde675c97830d861b2fb4e37638f009cf6ba4f13",{"version":"eab4317448ddfd6739949d5be146bb4bf928be21fc32893bfb45da5fee419672","affectsGlobalScope":true},"b50b3e9a58b0687357ef4bf7447e0e4e6643f0c6aa3f93dc018037156aa80bae","dd4d2f2bde383e20d3e501d38cf8b0b08f1d98c947d3d6188564383e4439b7b5","8f5b43cb9d7c5f0e54c6fb0247b8feac872c80226a2dfe66010e5955a2151f23","0b9c54a9b8e2ea5b3643ebe1f3bb6872db2028de229592695a7ee864da74f20a","8372784ad2385412c2f9a673a2b839ff9e82ccea9b580295f650a517445bd609","8563176de0cfb243e3cedf2545b9d46d3bb30ae33c6625f8b27d9f32f49feeac","ca68f14eb0cf87ccf2da524efb2ba8956064805d0d983024d0e97f2d3bf512c0","bf3ba1e92297699107e27c464b728350aaca6f52828688e8e58787883861aa6c","fcddc7a1ba597c3b74c8483139469a512a9cb54485cdd34ef1f3fda5ba6e1999","a5436b5bf52b98b1c28937d4b6bf17454568473128da54c3bf99dd935a6ce27b","accc0b98390aa57756a10f8db238a5c73160d05a49e6eb558a6d3562f55e831c","d70ddc10468f17f6fcb66774e7b1915b01bd881a1974c46d602b93601f83214d","cc9543c1a4be9c64df93f6bededc86d2bc2d507036d46f78ab3226c00191dcda","7e9bd1af54ec8c3d97a428798cfcb0aeef0f59abf4a9b9190c39e29abb7c6559","23d99c688fd0f93f792f8fb04db2779907c00ba36beb69402cc38d7f16010ce7","d19912f303a4d415f14fa8db7f380678330729eac24b33bf7d699ee13e23a871","4d77b3316fb84c9e730a8016cab4123020a5cd7736a6d81bc1a03694887a2365","633abe77132501f19b37cfa116dda0401b9eccf096105ba555ef3ef7e55c25fd","30416408dba76051699a7445ea2066f464ef90cee898eba10c3903c954a5fc13","3eca9b229a8ad33096db47346d7e832f1b929be8670950b561e26ebc032fc572","cf5a61c556e177ebc97ffe97119bc53cf9d6267068bfea29db0456eecdc9b5d5","06bf0d716b1d641c25aa29827442ab66b6317f5403b995ef23cc91bf7b658e20","4bb3656cc2b9e44485784d2438310c0a7c103f16e23f98afdcfa1f335c90dd39","ccd5e9bba49f5edaed6df797271ff1cce0d6aa0f7682177822f8111b222ea4ee","d7138847220c0d2ba260abd2b1fd5d3609a7bee4c1e7d1c59b471011cf99befb","658e8eb81317e748b3f3409f6a49b427b49714e91a860769abbb96c89b827d65","97bd4d655a9f9c9c8049f8977e8753d3744a34be176a892a89d61e58fa670e60","4ecbbe1a457524605bb6defbc227f4742e60b6f5757adcebf8602407fdb6bba4","08b0aa0b05efc573c7d63363c03e83d4b101bfeb54140764e96ddea30659cfcc","bfff3a87b6c30e3d0599cd45ab905b0dd14d619ef99cdcea8177d0905674b184","2ab3eba8970b5abaca4e5ec4a1d330daa8ee8db67eb32ef0d45a1379682bc0bf","f221c3f19baf23c7d07fecde096796d6fbb2287702644702b3b9784d593bdc15","66b35649e2f18e09ded34a12bdcd877fa1c408e52f462208a0bde6a4e0be4338","489a19d7386833b13eb9f800958c1d114fe2813bbbd71623f9cbe5b87956eda0","917e93a75cac4a511374bb138ee662e109913e46b5504a3f8ce36d67c026aec3","6f5be8ba164c177759bf63cc25ad4d49391f162f6784ba624d72e5d5c0c0dde2","57c1c43527a83d3c22a5963cd7c0f198b36378049ddf7ad8599361fc5d53b677","d4123efaeed2e627df28805dec2c9a18f669416ecbe8119122b93bfb7d0e8dad","c0be852ec96803fae0420209567c0990a690dc208f84d6b016b9624032535a04","7b6fbcf9e423c86629969268f4212854c32e3482b904ab5024f9daabce7f48e0","bb6a43d18318dfc5190105dedbebdce71e302c2922e3f8cae985ff18045720f7","f877605d6ca646301df880f38796980bd62594cd3d0089c689e17399fbf0cb14","e08bc73494340e6c8a50b1090585a97498bee3dce4074e56086082d653e1243c","663314e3bae28dd5b180d480f369dcf282f1287d8af261722c95faddbf692682","058a22755c3dac1fcec1b8299afe1f92011dc4e4e34a719a0b34b4dbf09bcea4","c362ebb96929bbaac110b84a9ae71450e472611d818cce04f25912bdf4b5d2c8","d86882a36b2b0f92a0031f20814f6b9137b5ca484816776495ffb763fd5b0219","15488f68aa626d45518cb269406c3601dd7e9386622284ab4cdb2a6ff07e4f35","d824e49b688f1709cd9837b7816c655f78a75a0ad022a18d45359fc0d09ea0ef","1dc4de7a413b7104d08d34580090738e4092a72d88a2561dbb7062f9750dec1c","d23ab9dd4805282a4d488ade7de7937aeca92112226eb7f92570588c481b608f","48e75022a7a6eba8f58a2a5e919c4b0dfa24e0d8acae25427de114d980957ba2","74ffe747e6ea9edd3f804fce41eeafa76601f2a5cc65e0a3246005b6605c80fc","dee333d9cc2108e2c54eb166887d489d62ddb0bfb1e03c8310baeb4b6a0b67eb","05f7fa99ab3da1a77d2ea35b7a2d943cbfc8a32e152bcdd7cd725ffd5dd6347d","1dcb6000137f7e75e534e6a7d49a3fb65b9ba84d553c261970c503b17e216ccb","1c3d59cb964febc0e18ba75bcc917a91df1b4fbbe236ba3604982abfff703d33","e0bc15999de7191e4e45a657f75ca95d2c24cc0759be31f2e77fc527c2167b39"],"options":{"esModuleInterop":true,"jsx":1,"module":99,"noImplicitAny":false,"noUnusedLocals":false,"noUnusedParameters":false,"skipLibCheck":true,"strict":false,"strictNullChecks":false,"target":7},"fileIdsList":[[395],[63],[65],[153,172,174,196,201,202,203,208,210,230,265,299,301,302,304,305,306,307,309,310,311,312,313,314,315,316,320],[104,158,168,185,223,265,266,282,286,288,289,295],[75,210,212,322],[65,79,322,323],[65,293],[182,223,266,267,268,281,283,291,292],[72,73],[79],[72,81],[72,75,77,78],[72,77],[62,72,90],[72,98],[100,101],[72],[106,107,110,111],[104],[62],[78],[62,75,78],[124],[127],[133,134],[100],[72,100,101],[72,100],[160,275],[158,168,185,186,188,189,190,195,286,288,289,332,334,335],[65,79,247,329],[338],[65,260,261,262],[67],[65,67,342],[153,160,175],[349],[350],[153,160,195,349],[65,67],[191],[152,153,160],[295],[160,172],[148],[148,149,150],[121,122,208,313],[75,78,152,160,172,174,175,223,252],[153,201,202,303],[175],[153,285],[153,160,252,308],[75,153,175,184,300],[160,303],[175,241,317],[152,160,200,223],[172,241,275,318],[160,241,275,318,319],[160,175,308],[284,290],[153,196,284,285],[153,182,230,284,291,292,299],[75,153,172,184,194,207,282],[153,158,177,182,185,196,285,286,288,289],[153],[153,172,196,230,299],[153,172],[75,109,110,111,152,166,172,206,218,221,224,225,228,239,240,251,252,255],[152,160],[152],[104,153],[154,155,157,159,169,171,177],[154,155,157,158,170],[75,153,156],[153,160,168],[104,153,160,168,172,173,176],[153,158],[153,172,174,287],[75,172,185,186,333],[153,172,230,299],[153,160,184],[153,160,186],[186,333],[153,172,174,175],[153,172,174],[161,233,252,253,254,259],[275],[75,152,153,170,175,213,223,239,275,294],[111,153,172,182,275],[111,152,197,236,269,270],[152,224,252],[110,111,152,197,224,236,252,269,270],[110,152,204,216,218,223,232,237,238,251,279,280],[111,224,271,272,273,274,276,277,278],[104,152,166,167,250,251,256,257],[223,251,258],[111,152,235],[111,152],[111,255],[110,111,152,172,217,230,232,233,234,236],[152,252],[152,153],[152,172],[152,299],[152,379],[152,153,170,191,230,252,275,388],[254],[179,180],[152,393],[180],[156,158,168,173,180,182,186,187,188,189,190,191],[195],[110,111,198],[75],[75,201],[63,64],[110,111,205],[184,207],[75,209],[167,184,185],[185],[210,212],[110,111,214],[104,110],[200],[111],[104,168,183,185],[161,167],[104,110,111,205,216,218,220],[109,110,111,152,199,211,215,218,224,225,227,228,229,237],[110,111,219],[104,109,111,152,222,223],[179],[110,111,233],[239,240],[162,163,164,165,166],[223,243],[183],[110,167,218,226,227],[62,73,77,78],[62,69,71],[77],[72,76],[70],[107,111],[104,184],[161,183,184],[110],[108],[109],[107,111,231],[110,111],[109,110],[161],[104,110,111,226]],"referencedMap":[[57,1],[64,2],[298,3],[321,4],[296,5],[323,6],[325,7],[297,8],[293,9],[74,10],[80,11],[82,12],[84,13],[85,14],[86,13],[83,13],[87,13],[88,10],[89,10],[91,15],[92,10],[99,16],[102,17],[103,18],[112,19],[105,20],[113,21],[114,21],[116,22],[115,23],[118,21],[117,21],[119,17],[120,17],[123,11],[125,24],[126,21],[129,25],[128,25],[130,25],[131,25],[132,25],[135,26],[134,25],[136,25],[137,17],[138,17],[139,17],[140,17],[141,17],[142,17],[143,27],[144,28],[145,17],[146,29],[328,30],[331,3],[336,31],[330,32],[337,3],[339,33],[263,34],[344,35],[345,36],[341,3],[343,36],[346,3],[347,37],[351,3],[352,38],[353,39],[350,40],[66,3],[68,41],[282,42],[329,43],[357,44],[358,45],[149,46],[150,46],[151,47],[316,48],[322,49],[304,50],[312,37],[311,37],[307,51],[302,52],[310,53],[301,54],[305,55],[318,56],[306,57],[319,58],[320,59],[309,60],[291,61],[292,62],[338,63],[283,64],[290,65],[284,66],[342,35],[315,67],[313,68],[280,69],[314,70],[356,71],[155,72],[178,73],[171,74],[157,75],[154,72],[169,76],[177,77],[159,78],[288,79],[359,68],[289,79],[360,80],[361,81],[286,68],[335,82],[287,72],[332,66],[333,83],[334,84],[176,85],[362,86],[260,87],[349,88],[295,89],[276,90],[269,71],[273,91],[274,92],[271,93],[281,94],[279,95],[258,96],[259,97],[236,98],[255,99],[256,100],[237,101],[278,102],[300,71],[303,71],[363,103],[364,71],[366,71],[175,71],[367,71],[153,71],[368,103],[160,71],[369,103],[370,71],[371,71],[373,104],[374,71],[172,71],[375,71],[376,71],[377,105],[285,71],[378,71],[379,106],[230,71],[299,71],[380,71],[381,71],[382,103],[383,71],[308,71],[384,71],[385,71],[386,71],[387,71],[388,71],[170,71],[389,107],[275,71],[390,71],[254,108],[391,71],[317,71],[174,71],[392,71],[179,71],[253,109],[394,110],[393,71],[252,71],[181,111],[192,112],[194,20],[196,113],[199,114],[200,115],[202,116],[187,117],[204,20],[206,118],[208,119],[210,120],[190,121],[156,20],[186,122],[213,123],[215,124],[216,125],[212,126],[207,20],[217,127],[188,128],[168,129],[221,130],[238,131],[220,132],[224,133],[180,134],[234,135],[201,126],[241,136],[167,137],[244,138],[245,139],[228,140],[246,138],[79,141],[72,142],[106,18],[81,18],[76,115],[78,143],[77,144],[73,18],[90,18],[71,145],[233,146],[247,147],[63,21],[205,20],[209,115],[185,148],[231,149],[109,150],[110,151],[232,152],[235,153],[222,153],[152,154],[161,155],[227,156],[251,127]],"exportedModulesMap":[[57,1],[64,2],[298,3],[321,4],[296,5],[323,6],[325,7],[297,8],[293,9],[74,10],[80,11],[82,12],[84,13],[85,14],[86,13],[83,13],[87,13],[88,10],[89,10],[91,15],[92,10],[99,16],[102,17],[103,18],[112,19],[105,20],[113,21],[114,21],[116,22],[115,23],[118,21],[117,21],[119,17],[120,17],[123,11],[125,24],[126,21],[129,25],[128,25],[130,25],[131,25],[132,25],[135,26],[134,25],[136,25],[137,17],[138,17],[139,17],[140,17],[141,17],[142,17],[143,27],[144,28],[145,17],[146,29],[328,30],[331,3],[336,31],[330,32],[337,3],[339,33],[263,34],[344,35],[345,36],[341,3],[343,36],[346,3],[347,37],[351,3],[352,38],[353,39],[350,40],[66,3],[68,41],[282,42],[329,43],[357,44],[358,45],[149,46],[150,46],[151,47],[316,48],[322,49],[304,50],[312,37],[311,37],[307,51],[302,52],[310,53],[301,54],[305,55],[318,56],[306,57],[319,58],[320,59],[309,60],[291,61],[292,62],[338,63],[283,64],[290,65],[284,66],[342,35],[315,67],[313,68],[280,69],[314,70],[356,71],[155,72],[178,73],[171,74],[157,75],[154,72],[169,76],[177,77],[159,78],[288,79],[359,68],[289,79],[360,80],[361,81],[286,68],[335,82],[287,72],[332,66],[333,83],[334,84],[176,85],[362,86],[260,87],[349,88],[295,89],[276,90],[269,71],[273,91],[274,92],[271,93],[281,94],[279,95],[258,96],[259,97],[236,98],[255,99],[256,100],[237,101],[278,102],[300,71],[303,71],[363,103],[364,71],[366,71],[175,71],[367,71],[153,71],[368,103],[160,71],[369,103],[370,71],[371,71],[373,104],[374,71],[172,71],[375,71],[376,71],[377,105],[285,71],[378,71],[379,106],[230,71],[299,71],[380,71],[381,71],[382,103],[383,71],[308,71],[384,71],[385,71],[386,71],[387,71],[388,71],[170,71],[389,107],[275,71],[390,71],[254,108],[391,71],[317,71],[174,71],[392,71],[179,71],[253,109],[394,110],[393,71],[252,71],[181,111],[192,112],[194,20],[196,113],[199,114],[200,115],[202,116],[187,117],[204,20],[206,118],[208,119],[210,120],[190,121],[156,20],[186,122],[213,123],[215,124],[216,125],[212,126],[207,20],[217,127],[188,128],[168,129],[221,130],[238,131],[220,132],[224,133],[180,134],[234,135],[201,126],[241,136],[167,137],[244,138],[245,139],[228,140],[246,138],[79,141],[72,142],[106,18],[81,18],[76,115],[78,143],[77,144],[73,18],[90,18],[71,145],[233,146],[247,147],[63,21],[205,20],[209,115],[185,148],[231,149],[109,150],[110,151],[232,152],[235,153],[222,153],[152,154],[161,155],[227,156],[251,127]],"semanticDiagnosticsPerFile":[57,[60,[{"file":"./scripts/getstablecoins.ts","start":819,"length":4,"messageText":"Cannot find module 'fs'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./scripts/getstablecoins.ts","start":860,"length":6,"messageText":"Cannot find module 'path'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./scripts/getstablecoins.ts","start":909,"length":5,"messageText":"Cannot find module 'url'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./scripts/getstablecoins.ts","start":1179,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580}]],64,[298,[{"file":"./src/app/(app)/dashboard/layout.tsx","start":30,"length":6,"messageText":"Cannot find module 'next'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/(app)/dashboard/layout.tsx","start":566,"length":5,"messageText":"Cannot find namespace 'React'.","category":1,"code":2503}]],[321,[{"file":"./src/app/(app)/dashboard/page.tsx","start":68,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/(app)/dashboard/page.tsx","start":108,"length":17,"messageText":"Cannot find module 'next/navigation'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/(app)/dashboard/page.tsx","start":153,"length":7,"messageText":"Cannot find module 'wagmi'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/(app)/dashboard/page.tsx","start":193,"length":24,"messageText":"Cannot find module '@rainbow-me/rainbowkit'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/(app)/dashboard/page.tsx","start":556,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/(app)/dashboard/page.tsx","start":2029,"length":14,"messageText":"Cannot find module 'next/dynamic'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[265,[{"file":"./src/app/(app)/dashboardtabcontext.tsx","start":88,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/(app)/dashboardtabcontext.tsx","start":139,"length":17,"messageText":"Cannot find module 'next/navigation'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[266,[{"file":"./src/app/(app)/gateviewcontext.tsx","start":79,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/(app)/gateviewcontext.tsx","start":522,"length":5,"messageText":"Cannot find namespace 'React'.","category":1,"code":2503}]],[296,[{"file":"./src/app/(app)/layout.tsx","start":71,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/(app)/layout.tsx","start":107,"length":17,"messageText":"Cannot find module 'next/navigation'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/(app)/layout.tsx","start":164,"length":7,"messageText":"Cannot find module 'wagmi'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/(app)/layout.tsx","start":204,"length":24,"messageText":"Cannot find module '@rainbow-me/rainbowkit'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/(app)/layout.tsx","start":251,"length":8,"messageText":"Cannot find module 'sonner'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/(app)/layout.tsx","start":285,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/(app)/layout.tsx","start":899,"length":30,"messageText":"Cannot find module '@/components/network-checker'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/(app)/layout.tsx","start":1221,"length":5,"messageText":"Cannot find namespace 'React'.","category":1,"code":2503},{"file":"./src/app/(app)/layout.tsx","start":8083,"length":5,"messageText":"Cannot find namespace 'React'.","category":1,"code":2503},{"file":"./src/app/(app)/layout.tsx","start":8195,"length":16,"code":2741,"category":1,"messageText":"Property 'children' is missing in type '{}' but required in type '{ children: React.ReactNode; }'.","relatedInformation":[{"file":"./src/app/(app)/gateviewcontext.tsx","start":512,"length":8,"messageText":"'children' is declared here.","category":3,"code":2728}]},{"file":"./src/app/(app)/layout.tsx","start":8222,"length":20,"code":2741,"category":1,"messageText":"Property 'children' is missing in type '{}' but required in type '{ children: ReactNode; }'.","relatedInformation":[{"file":"./src/app/(app)/dashboardtabcontext.tsx","start":401,"length":8,"messageText":"'children' is declared here.","category":3,"code":2728}]},{"file":"./src/app/(app)/layout.tsx","start":8255,"length":16,"code":2741,"category":1,"messageText":"Property 'children' is missing in type '{}' but required in type '{ children: React.ReactNode; }'.","relatedInformation":[{"file":"./src/app/(app)/layout.tsx","start":1211,"length":8,"messageText":"'children' is declared here.","category":3,"code":2728}]}]],[323,[{"file":"./src/app/(app)/leaderboard/leaderboardpageclient.tsx","start":58,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/(app)/leaderboard/leaderboardpageclient.tsx","start":93,"length":7,"messageText":"Cannot find module 'wagmi'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/(app)/leaderboard/leaderboardpageclient.tsx","start":132,"length":23,"messageText":"Cannot find module '@tanstack/react-query'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],324,[325,[{"file":"./src/app/(app)/leaderboard/page.tsx","start":30,"length":6,"messageText":"Cannot find module 'next'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/(app)/leaderboard/page.tsx","start":107,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[297,[{"file":"./src/app/(app)/page.tsx","start":30,"length":6,"messageText":"Cannot find module 'next'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[293,[{"file":"./src/app/(app)/swaporlandinggate.tsx","start":50,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/(app)/swaporlandinggate.tsx","start":84,"length":17,"messageText":"Cannot find module 'next/navigation'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/(app)/swaporlandinggate.tsx","start":129,"length":7,"messageText":"Cannot find module 'wagmi'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[74,[{"file":"./src/app/api/analytics/active-traders/route.ts","start":29,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[80,[{"file":"./src/app/api/analytics/eth-price/route.ts","start":29,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[82,[{"file":"./src/app/api/analytics/l1-swap-hashes/route.ts","start":29,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[84,[{"file":"./src/app/api/analytics/leaderboard/efficiency-leaders/route.ts","start":42,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[85,[{"file":"./src/app/api/analytics/leaderboard/find-me/route.ts","start":42,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[86,[{"file":"./src/app/api/analytics/leaderboard/rising-stars/route.ts","start":42,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[83,[{"file":"./src/app/api/analytics/leaderboard/route.ts","start":42,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[87,[{"file":"./src/app/api/analytics/leaderboard/volume-leaders/route.ts","start":42,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[88,[{"file":"./src/app/api/analytics/swap-count/route.ts","start":29,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[89,[{"file":"./src/app/api/analytics/transactions/route.ts","start":29,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[91,[{"file":"./src/app/api/analytics/user/[address]/route.ts","start":42,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[92,[{"file":"./src/app/api/analytics/volume/swap/route.ts","start":29,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[93,[{"file":"./src/app/api/barter/route/route.ts","start":42,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/api/barter/route/route.ts","start":471,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580}]],[94,[{"file":"./src/app/api/config/fee-percentile/route.ts","start":29,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/api/config/fee-percentile/route.ts","start":63,"length":21,"messageText":"Cannot find module '@vercel/edge-config'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[95,[{"file":"./src/app/api/config/gas-estimate/route.ts","start":29,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/api/config/gas-estimate/route.ts","start":63,"length":21,"messageText":"Cannot find module '@vercel/edge-config'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[96,[{"file":"./src/app/api/config/leaderboard-poll/route.ts","start":29,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/api/config/leaderboard-poll/route.ts","start":63,"length":21,"messageText":"Cannot find module '@vercel/edge-config'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[97,[{"file":"./src/app/api/config/tx-timeout/route.ts","start":29,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/api/config/tx-timeout/route.ts","start":63,"length":21,"messageText":"Cannot find module '@vercel/edge-config'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[99,[{"file":"./src/app/api/cron/update-edge-config/miles-estimate-gas/route.ts","start":29,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/api/cron/update-edge-config/miles-estimate-gas/route.ts","start":1982,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580},{"file":"./src/app/api/cron/update-edge-config/miles-estimate-gas/route.ts","start":2716,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580}]],[102,[{"file":"./src/app/api/early-access/route.ts","start":42,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/api/early-access/route.ts","start":82,"length":6,"messageText":"Cannot find module 'viem'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[103,[{"file":"./src/app/api/fast-tx-status/[hash]/route.ts","start":42,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[112,[{"file":"./src/app/api/fastswap-miles/by-address/route.ts","start":42,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/api/fastswap-miles/by-address/route.ts","start":82,"length":6,"messageText":"Cannot find module 'viem'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[105,[{"file":"./src/app/api/fastswap/route.ts","start":42,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[113,[{"file":"./src/app/api/feedback/route.ts","start":42,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/api/feedback/route.ts","start":824,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580},{"file":"./src/app/api/feedback/route.ts","start":885,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580},{"file":"./src/app/api/feedback/route.ts","start":949,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580},{"file":"./src/app/api/feedback/route.ts","start":1343,"length":12,"messageText":"Cannot find module 'googleapis'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[114,[{"file":"./src/app/api/fuul/identify-user/route.ts","start":42,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/api/fuul/identify-user/route.ts","start":117,"length":6,"messageText":"Cannot find module 'viem'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/api/fuul/identify-user/route.ts","start":711,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580}]],[116,[{"file":"./src/app/api/fuul/leaderboard/find-me/route.ts","start":42,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[115,[{"file":"./src/app/api/fuul/leaderboard/route.ts","start":42,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[118,[{"file":"./src/app/api/fuul/payouts-summary/route.ts","start":42,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[117,[{"file":"./src/app/api/fuul/payouts/route.ts","start":42,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/api/fuul/payouts/route.ts","start":117,"length":6,"messageText":"Cannot find module 'viem'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[119,[{"file":"./src/app/api/gate/status/route.ts","start":42,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/api/gate/status/route.ts","start":82,"length":6,"messageText":"Cannot find module 'viem'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[120,[{"file":"./src/app/api/gate/warm/route.ts","start":29,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],121,122,[327,[{"file":"./src/app/api/og/preconfirm/[time]/route.tsx","start":30,"length":9,"messageText":"Cannot find module 'next/og'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/api/og/preconfirm/[time]/route.tsx","start":68,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[326,[{"file":"./src/app/api/og/preconfirm/route.tsx","start":42,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[123,[{"file":"./src/app/api/token-price/route.ts","start":42,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[125,[{"file":"./src/app/api/tokens/route.ts","start":85,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[126,[{"file":"./src/app/api/transaction-status/[hash]/route.ts","start":42,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[129,[{"file":"./src/app/api/user-community-activity/[wallet_address]/[entity]/route.ts","start":63,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[128,[{"file":"./src/app/api/user-community-activity/[wallet_address]/route.ts","start":63,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[130,[{"file":"./src/app/api/user-community-activity/entities/route.ts","start":50,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[131,[{"file":"./src/app/api/user-community-activity/entity/[entity]/route.ts","start":63,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[132,[{"file":"./src/app/api/user-community-activity/stats/route.ts","start":63,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[135,[{"file":"./src/app/api/user-onboarding/[wallet_address]/route.test.ts","start":53,"length":8,"messageText":"Cannot find module 'vitest'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[134,[{"file":"./src/app/api/user-onboarding/[wallet_address]/route.ts","start":63,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[136,[{"file":"./src/app/api/users/route.ts","start":29,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[137,[{"file":"./src/app/api/waitlist/accept-invite/route.ts","start":42,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/api/waitlist/accept-invite/route.ts","start":82,"length":6,"messageText":"Cannot find module 'viem'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[138,[{"file":"./src/app/api/waitlist/check/route.ts","start":42,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/api/waitlist/check/route.ts","start":82,"length":6,"messageText":"Cannot find module 'viem'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[139,[{"file":"./src/app/api/waitlist/count/route.ts","start":29,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[140,[{"file":"./src/app/api/waitlist/list/route.ts","start":29,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[141,[{"file":"./src/app/api/waitlist/position/route.ts","start":42,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/api/waitlist/position/route.ts","start":82,"length":6,"messageText":"Cannot find module 'viem'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[142,[{"file":"./src/app/api/whitelist/check/route.ts","start":42,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/api/whitelist/check/route.ts","start":82,"length":6,"messageText":"Cannot find module 'viem'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[143,[{"file":"./src/app/api/whitelist/convert-waitlist-to-whitelist/route.ts","start":29,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[144,[{"file":"./src/app/api/whitelist/generate/route.ts","start":29,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[145,[{"file":"./src/app/api/whitelist/list/route.ts","start":29,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[146,[{"file":"./src/app/api/whitelist/whitelist-swap-volume-holders/route.ts","start":29,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],328,[331,[{"file":"./src/app/claim/onboarding/layout.tsx","start":30,"length":6,"messageText":"Cannot find module 'next'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/claim/onboarding/layout.tsx","start":562,"length":5,"messageText":"Cannot find namespace 'React'.","category":1,"code":2503}]],[336,[{"file":"./src/app/claim/onboarding/page.tsx","start":68,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/claim/onboarding/page.tsx","start":108,"length":17,"messageText":"Cannot find module 'next/navigation'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/claim/onboarding/page.tsx","start":158,"length":24,"messageText":"Cannot find module '@rainbow-me/rainbowkit'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/claim/onboarding/page.tsx","start":242,"length":7,"messageText":"Cannot find module 'wagmi'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/claim/onboarding/page.tsx","start":276,"length":6,"messageText":"Cannot find module 'viem'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/claim/onboarding/page.tsx","start":304,"length":11,"messageText":"Cannot find module '@fuul/sdk'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/claim/onboarding/page.tsx","start":462,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/claim/onboarding/page.tsx","start":499,"length":8,"messageText":"Cannot find module 'sonner'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/claim/onboarding/page.tsx","start":537,"length":30,"messageText":"Cannot find module '@/components/network-checker'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[330,[{"file":"./src/app/claim/page.tsx","start":30,"length":6,"messageText":"Cannot find module 'next'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[337,[{"file":"./src/app/early-access/layout.tsx","start":30,"length":6,"messageText":"Cannot find module 'next'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/early-access/layout.tsx","start":601,"length":5,"messageText":"Cannot find namespace 'React'.","category":1,"code":2503}]],[339,[{"file":"./src/app/early-access/page.tsx","start":41,"length":7,"messageText":"Cannot find module 'wagmi'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[340,[{"file":"./src/app/early-access/thank-you/page.tsx","start":25,"length":17,"messageText":"Cannot find module 'next/navigation'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[263,[{"file":"./src/app/layout.tsx","start":68,"length":6,"messageText":"Cannot find module 'next'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/layout.tsx","start":152,"length":24,"messageText":"Cannot find module '@vercel/analytics/next'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/layout.tsx","start":207,"length":29,"messageText":"Cannot find module '@vercel/speed-insights/next'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/layout.tsx","start":3124,"length":5,"messageText":"Cannot find namespace 'React'.","category":1,"code":2503},{"file":"./src/app/layout.tsx","start":6187,"length":9,"code":2741,"category":1,"messageText":"Property 'children' is missing in type '{}' but required in type '{ children: React.ReactNode; }'.","relatedInformation":[{"file":"./src/components/providers.tsx","start":5456,"length":8,"messageText":"'children' is declared here.","category":3,"code":2728}]}]],[344,[{"file":"./src/app/learn/[slug]/opengraph-image.tsx","start":30,"length":9,"messageText":"Cannot find module 'next/og'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[345,[{"file":"./src/app/learn/[slug]/page.tsx","start":30,"length":6,"messageText":"Cannot find module 'next'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/learn/[slug]/page.tsx","start":62,"length":17,"messageText":"Cannot find module 'next/navigation'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/learn/[slug]/page.tsx","start":97,"length":11,"messageText":"Cannot find module 'next/link'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/learn/[slug]/page.tsx","start":7372,"length":3,"code":2322,"category":1,"messageText":{"messageText":"Type '{ key: string; frontmatter: ArticleFrontmatter; }' is not assignable to type '{ frontmatter: ArticleFrontmatter; }'.","category":1,"code":2322,"next":[{"messageText":"Property 'key' does not exist on type '{ frontmatter: ArticleFrontmatter; }'.","category":1,"code":2339}]}}]],[341,[{"file":"./src/app/learn/layout.tsx","start":30,"length":6,"messageText":"Cannot find module 'next'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/learn/layout.tsx","start":55,"length":12,"messageText":"Cannot find module 'next/image'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/learn/layout.tsx","start":85,"length":11,"messageText":"Cannot find module 'next/link'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/learn/layout.tsx","start":539,"length":5,"messageText":"Cannot find namespace 'React'.","category":1,"code":2503}]],[343,[{"file":"./src/app/learn/page.tsx","start":30,"length":6,"messageText":"Cannot find module 'next'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/learn/page.tsx","start":2665,"length":3,"code":2322,"category":1,"messageText":{"messageText":"Type '{ key: string; frontmatter: ArticleFrontmatter; }' is not assignable to type '{ frontmatter: ArticleFrontmatter; }'.","category":1,"code":2322,"next":[{"messageText":"Property 'key' does not exist on type '{ frontmatter: ArticleFrontmatter; }'.","category":1,"code":2339}]}}]],[346,[{"file":"./src/app/network-checker/layout.tsx","start":30,"length":6,"messageText":"Cannot find module 'next'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/network-checker/layout.tsx","start":573,"length":5,"messageText":"Cannot find namespace 'React'.","category":1,"code":2503}]],[347,[{"file":"./src/app/network-checker/page.tsx","start":39,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/network-checker/page.tsx","start":65,"length":12,"messageText":"Cannot find module 'next/image'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/network-checker/page.tsx","start":108,"length":24,"messageText":"Cannot find module '@rainbow-me/rainbowkit'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/network-checker/page.tsx","start":160,"length":7,"messageText":"Cannot find module 'wagmi'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/network-checker/page.tsx","start":188,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/network-checker/page.tsx","start":429,"length":30,"messageText":"Cannot find module '@/components/network-checker'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/network-checker/page.tsx","start":486,"length":17,"messageText":"Cannot find module 'next/navigation'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/network-checker/page.tsx","start":2141,"length":7,"code":2322,"category":1,"messageText":{"messageText":"Type '{ variant: string; className: string; }' is not assignable to type 'BadgeProps'.","category":1,"code":2322,"next":[{"messageText":"Property 'variant' does not exist on type 'BadgeProps'.","category":1,"code":2339}]}}]],[264,[{"file":"./src/app/not-found.tsx","start":17,"length":11,"messageText":"Cannot find module 'next/link'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[348,[{"file":"./src/app/og/preconfirm/[time]/route.tsx","start":30,"length":9,"messageText":"Cannot find module 'next/og'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/og/preconfirm/[time]/route.tsx","start":68,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[351,[{"file":"./src/app/referral/layout.tsx","start":30,"length":6,"messageText":"Cannot find module 'next'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/referral/layout.tsx","start":608,"length":5,"messageText":"Cannot find namespace 'React'.","category":1,"code":2503}]],352,[353,[{"file":"./src/app/referral/page.tsx","start":30,"length":6,"messageText":"Cannot find module 'next'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/referral/page.tsx","start":63,"length":6,"messageText":"Cannot find module 'viem'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[350,[{"file":"./src/app/referral/referralpageclient.tsx","start":68,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/referral/referralpageclient.tsx","start":119,"length":17,"messageText":"Cannot find module 'next/navigation'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/referral/referralpageclient.tsx","start":155,"length":12,"messageText":"Cannot find module 'next/image'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/referral/referralpageclient.tsx","start":344,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/referral/referralpageclient.tsx","start":380,"length":11,"messageText":"Cannot find module '@fuul/sdk'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/referral/referralpageclient.tsx","start":418,"length":6,"messageText":"Cannot find module 'viem'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/referral/referralpageclient.tsx","start":452,"length":7,"messageText":"Cannot find module 'wagmi'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/app/referral/referralpageclient.tsx","start":492,"length":24,"messageText":"Cannot find module '@rainbow-me/rainbowkit'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[66,[{"file":"./src/app/robots.ts","start":35,"length":6,"messageText":"Cannot find module 'next'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[354,[{"file":"./src/app/s/[time]/opengraph-image.tsx","start":30,"length":9,"messageText":"Cannot find module 'next/og'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[355,[{"file":"./src/app/s/[time]/page.tsx","start":25,"length":6,"messageText":"Cannot find module 'next'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[147,[{"file":"./src/app/share/preconfirm/route.ts","start":42,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[68,[{"file":"./src/app/sitemap.ts","start":35,"length":6,"messageText":"Cannot find module 'next'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[282,[{"file":"./src/components/animatedbackground.tsx","start":34,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[329,[{"file":"./src/components/claim/claimpageclient.tsx","start":32,"length":12,"messageText":"Cannot find module 'next/image'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/claim/claimpageclient.tsx","start":184,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/claim/claimpageclient.tsx","start":225,"length":17,"messageText":"Cannot find module 'next/navigation'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],357,[358,[{"file":"./src/components/dashboard/defiprotocolsmodal.tsx","start":219,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/dashboard/defiprotocolsmodal.tsx","start":252,"length":12,"messageText":"Cannot find module 'next/image'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[149,[{"file":"./src/components/dashboard/ecosystem-carousel/criteria/ethereum.ts","start":84,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580}]],[150,[{"file":"./src/components/dashboard/ecosystem-carousel/criteria/hyperliquid.ts","start":95,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580}]],151,148,[316,[{"file":"./src/components/dashboard/ecosystemsetscarousel.tsx","start":73,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/dashboard/ecosystemsetscarousel.tsx","start":107,"length":11,"messageText":"Cannot find module 'react-dom'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/dashboard/ecosystemsetscarousel.tsx","start":148,"length":22,"messageText":"Cannot find module 'embla-carousel-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/dashboard/ecosystemsetscarousel.tsx","start":298,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/dashboard/ecosystemsetscarousel.tsx","start":358,"length":7,"messageText":"Cannot find module 'wagmi'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/dashboard/ecosystemsetscarousel.tsx","start":402,"length":6,"messageText":"Cannot find module 'viem'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/dashboard/ecosystemsetscarousel.tsx","start":440,"length":52,"messageText":"Cannot find module '@/components/dashboard/ecosystem-carousel/criteria'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[322,[{"file":"./src/components/dashboard/leaderboardtable.tsx","start":79,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/dashboard/leaderboardtable.tsx","start":114,"length":7,"messageText":"Cannot find module 'wagmi'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/dashboard/leaderboardtable.tsx","start":661,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/dashboard/leaderboardtable.tsx","start":42223,"length":9,"code":2322,"category":1,"messageText":{"messageText":"Type '{ className: string; }' is not assignable to type 'BadgeProps'.","category":1,"code":2322,"next":[{"messageText":"Property 'className' does not exist on type 'BadgeProps'.","category":1,"code":2339}]}},{"file":"./src/components/dashboard/leaderboardtable.tsx","start":45191,"length":9,"code":2322,"category":1,"messageText":{"messageText":"Type '{ className: string; }' is not assignable to type 'BadgeProps'.","category":1,"code":2322,"next":[{"messageText":"Property 'className' does not exist on type 'BadgeProps'.","category":1,"code":2339}]}},{"file":"./src/components/dashboard/leaderboardtable.tsx","start":60105,"length":9,"code":2322,"category":1,"messageText":{"messageText":"Type '{ className: string; }' is not assignable to type 'BadgeProps'.","category":1,"code":2322,"next":[{"messageText":"Property 'className' does not exist on type 'BadgeProps'.","category":1,"code":2339}]}},{"file":"./src/components/dashboard/leaderboardtable.tsx","start":70604,"length":9,"code":2322,"category":1,"messageText":{"messageText":"Type '{ className: string; }' is not assignable to type 'BadgeProps'.","category":1,"code":2322,"next":[{"messageText":"Property 'className' does not exist on type 'BadgeProps'.","category":1,"code":2339}]}}]],[304,[{"file":"./src/components/dashboard/onetimetasksaccordion.tsx","start":212,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/dashboard/onetimetasksaccordion.tsx","start":249,"length":8,"messageText":"Cannot find module 'sonner'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[312,[{"file":"./src/components/dashboard/onetimetaskssection.tsx","start":188,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/dashboard/onetimetaskssection.tsx","start":225,"length":8,"messageText":"Cannot find module 'sonner'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/dashboard/onetimetaskssection.tsx","start":1650,"length":7,"code":2322,"category":1,"messageText":{"messageText":"Type '{ variant: string; className: string; }' is not assignable to type 'BadgeProps'.","category":1,"code":2322,"next":[{"messageText":"Property 'variant' does not exist on type 'BadgeProps'.","category":1,"code":2339}]}}]],[311,[{"file":"./src/components/dashboard/partnerquestssection.tsx","start":188,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/dashboard/partnerquestssection.tsx","start":2404,"length":7,"code":2322,"category":1,"messageText":{"messageText":"Type '{ variant: string; className: string; }' is not assignable to type 'BadgeProps'.","category":1,"code":2322,"next":[{"messageText":"Property 'variant' does not exist on type 'BadgeProps'.","category":1,"code":2339}]}}]],[307,[{"file":"./src/components/dashboard/pointshud.tsx","start":68,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/dashboard/pointshud.tsx","start":1516,"length":3,"code":2322,"category":1,"messageText":{"messageText":"Type '{ key: string; variant: string; className: string; }' is not assignable to type 'BadgeProps'.","category":1,"code":2322,"next":[{"messageText":"Property 'key' does not exist on type 'BadgeProps'.","category":1,"code":2339}]}}]],[302,[{"file":"./src/components/dashboard/referralscard.tsx","start":169,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/dashboard/referralscard.tsx","start":211,"length":17,"messageText":"Cannot find module 'react-icons/fa6'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/dashboard/referralscard.tsx","start":251,"length":8,"messageText":"Cannot find module 'sonner'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[310,[{"file":"./src/components/dashboard/referralssection.tsx","start":192,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/dashboard/referralssection.tsx","start":229,"length":8,"messageText":"Cannot find module 'sonner'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[301,[{"file":"./src/components/dashboard/sbtdisplaycard.tsx","start":40,"length":17,"messageText":"Cannot find module 'next/navigation'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/dashboard/sbtdisplaycard.tsx","start":264,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/dashboard/sbtdisplaycard.tsx","start":306,"length":20,"messageText":"Cannot find module 'react-social-icons'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/dashboard/sbtdisplaycard.tsx","start":468,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580},{"file":"./src/components/dashboard/sbtdisplaycard.tsx","start":1029,"length":8,"code":2741,"category":1,"messageText":"Property 'children' is missing in type '{ className: string; }' but required in type '{ children: React.ReactNode; className?: string; }'.","relatedInformation":[{"file":"./src/components/ui/3d-card.tsx","start":2090,"length":8,"messageText":"'children' is declared here.","category":3,"code":2728}]},{"file":"./src/components/dashboard/sbtdisplaycard.tsx","start":1894,"length":8,"code":2741,"category":1,"messageText":"Property 'children' is missing in type '{ translateZ: number; className: string; }' but required in type '{ [key: string]: any; as?: React.ElementType; children: React.ReactNode; className?: string; translateX?: string | number; translateY?: string | number; translateZ?: string | number; rotateX?: string | number; rotateY?: string | number; rotateZ?: string | number; }'.","relatedInformation":[{"file":"./src/components/ui/3d-card.tsx","start":2554,"length":8,"messageText":"'children' is declared here.","category":3,"code":2728}]},{"file":"./src/components/dashboard/sbtdisplaycard.tsx","start":2236,"length":9,"code":2322,"category":1,"messageText":{"messageText":"Type '{ className: string; }' is not assignable to type 'BadgeProps'.","category":1,"code":2322,"next":[{"messageText":"Property 'className' does not exist on type 'BadgeProps'.","category":1,"code":2339}]}},{"file":"./src/components/dashboard/sbtdisplaycard.tsx","start":2866,"length":7,"code":2322,"category":1,"messageText":{"messageText":"Type '{ variant: string; className: string; }' is not assignable to type 'BadgeProps'.","category":1,"code":2322,"next":[{"messageText":"Property 'variant' does not exist on type 'BadgeProps'.","category":1,"code":2339}]}},{"file":"./src/components/dashboard/sbtdisplaycard.tsx","start":3333,"length":8,"code":2741,"category":1,"messageText":"Property 'children' is missing in type '{ translateZ: number; }' but required in type '{ [key: string]: any; as?: React.ElementType; children: React.ReactNode; className?: string; translateX?: string | number; translateY?: string | number; translateZ?: string | number; rotateX?: string | number; rotateY?: string | number; rotateZ?: string | number; }'.","relatedInformation":[{"file":"./src/components/ui/3d-card.tsx","start":2554,"length":8,"messageText":"'children' is declared here.","category":3,"code":2728}]},{"file":"./src/components/dashboard/sbtdisplaycard.tsx","start":4186,"length":8,"code":2741,"category":1,"messageText":"Property 'children' is missing in type '{ translateZ: number; className: string; }' but required in type '{ [key: string]: any; as?: React.ElementType; children: React.ReactNode; className?: string; translateX?: string | number; translateY?: string | number; translateZ?: string | number; rotateX?: string | number; rotateY?: string | number; rotateZ?: string | number; }'.","relatedInformation":[{"file":"./src/components/ui/3d-card.tsx","start":2554,"length":8,"messageText":"'children' is declared here.","category":3,"code":2728}]}]],[305,[{"file":"./src/components/dashboard/swapearnaccordion.tsx","start":32,"length":12,"messageText":"Cannot find module 'next/image'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[318,[{"file":"./src/components/dashboard/user-swaps-parts.tsx","start":713,"length":12,"messageText":"Cannot find module 'next/image'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/dashboard/user-swaps-parts.tsx","start":767,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/dashboard/user-swaps-parts.tsx","start":4098,"length":7,"code":2322,"category":1,"messageText":{"messageText":"Type '{ variant: string; className: string; }' is not assignable to type 'BadgeProps'.","category":1,"code":2322,"next":[{"messageText":"Property 'variant' does not exist on type 'BadgeProps'.","category":1,"code":2339}]}},{"file":"./src/components/dashboard/user-swaps-parts.tsx","start":4257,"length":7,"code":2322,"category":1,"messageText":{"messageText":"Type '{ variant: string; className: string; }' is not assignable to type 'BadgeProps'.","category":1,"code":2322,"next":[{"messageText":"Property 'variant' does not exist on type 'BadgeProps'.","category":1,"code":2339}]}},{"file":"./src/components/dashboard/user-swaps-parts.tsx","start":4385,"length":9,"code":2322,"category":1,"messageText":{"messageText":"Type '{ className: string; }' is not assignable to type 'BadgeProps'.","category":1,"code":2322,"next":[{"messageText":"Property 'className' does not exist on type 'BadgeProps'.","category":1,"code":2339}]}}]],[306,[{"file":"./src/components/dashboard/usermetricssection.tsx","start":50,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/dashboard/usermetricssection.tsx","start":150,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[319,[{"file":"./src/components/dashboard/userswapsmodal.tsx","start":39,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/dashboard/userswapsmodal.tsx","start":127,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[320,[{"file":"./src/components/dashboard/userswapstable.tsx","start":39,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/dashboard/userswapstable.tsx","start":71,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[309,[{"file":"./src/components/dashboard/weeklytaskssection.tsx","start":194,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/dashboard/weeklytaskssection.tsx","start":2449,"length":7,"code":2322,"category":1,"messageText":{"messageText":"Type '{ variant: string; className: string; }' is not assignable to type 'BadgeProps'.","category":1,"code":2322,"next":[{"messageText":"Property 'variant' does not exist on type 'BadgeProps'.","category":1,"code":2339}]}}]],[291,[{"file":"./src/components/landing/alreadyonwaitlistmessage.tsx","start":36,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[292,[{"file":"./src/components/landing/approvedexperience.tsx","start":41,"length":7,"messageText":"Cannot find module 'wagmi'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/landing/approvedexperience.tsx","start":103,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/landing/approvedexperience.tsx","start":145,"length":17,"messageText":"Cannot find module 'react-icons/fa6'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/landing/approvedexperience.tsx","start":185,"length":8,"messageText":"Cannot find module 'sonner'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[338,[{"file":"./src/components/landing/earlyaccessform.tsx","start":50,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/landing/earlyaccessform.tsx","start":84,"length":17,"messageText":"Cannot find module 'next/navigation'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/landing/earlyaccessform.tsx","start":129,"length":7,"messageText":"Cannot find module 'wagmi'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/landing/earlyaccessform.tsx","start":163,"length":6,"messageText":"Cannot find module 'viem'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/landing/earlyaccessform.tsx","start":192,"length":8,"messageText":"Cannot find module 'sonner'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/landing/earlyaccessform.tsx","start":221,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/landing/earlyaccessform.tsx","start":2235,"length":5,"messageText":"Cannot find namespace 'React'.","category":1,"code":2503}]],[283,[{"file":"./src/components/landing/page.tsx","start":58,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/landing/page.tsx","start":84,"length":12,"messageText":"Cannot find module 'next/image'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/landing/page.tsx","start":114,"length":11,"messageText":"Cannot find module 'next/link'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/landing/page.tsx","start":152,"length":17,"messageText":"Cannot find module 'next/navigation'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/landing/page.tsx","start":197,"length":7,"messageText":"Cannot find module 'wagmi'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/landing/page.tsx","start":237,"length":24,"messageText":"Cannot find module '@rainbow-me/rainbowkit'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/landing/page.tsx","start":601,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/landing/page.tsx","start":643,"length":20,"messageText":"Cannot find module 'react-social-icons'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/landing/page.tsx","start":825,"length":20,"messageText":"Cannot find module 'react-fast-marquee'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/landing/page.tsx","start":3776,"length":5,"messageText":"Cannot find namespace 'React'.","category":1,"code":2503}]],[290,[{"file":"./src/components/landing/waitlistexperience.tsx","start":39,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/landing/waitlistexperience.tsx","start":74,"length":7,"messageText":"Cannot find module 'wagmi'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/landing/waitlistexperience.tsx","start":128,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/landing/waitlistexperience.tsx","start":170,"length":17,"messageText":"Cannot find module 'react-icons/fa6'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/landing/waitlistexperience.tsx","start":210,"length":8,"messageText":"Cannot find module 'sonner'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[284,[{"file":"./src/components/landing/waitlistheader.tsx","start":32,"length":12,"messageText":"Cannot find module 'next/image'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[342,[{"file":"./src/components/learn/articlecard.tsx","start":17,"length":11,"messageText":"Cannot find module 'next/link'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[315,[{"file":"./src/components/modals/referralmodal.tsx","start":50,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/modals/referralmodal.tsx","start":85,"length":7,"messageText":"Cannot find module 'wagmi'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/modals/referralmodal.tsx","start":395,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/modals/referralmodal.tsx","start":432,"length":8,"messageText":"Cannot find module 'sonner'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/modals/referralmodal.tsx","start":2439,"length":5,"messageText":"Cannot find namespace 'React'.","category":1,"code":2503}]],[313,[{"file":"./src/components/modals/sbtgatingmodal.tsx","start":185,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/modals/sbtgatingmodal.tsx","start":226,"length":17,"messageText":"Cannot find module 'next/navigation'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[280,[{"file":"./src/components/modals/swapconfirmationmodal.tsx","start":87,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/modals/swapconfirmationmodal.tsx","start":118,"length":20,"messageText":"Cannot find module '@number-flow/react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/modals/swapconfirmationmodal.tsx","start":648,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/modals/swapconfirmationmodal.tsx","start":1099,"length":7,"messageText":"Cannot find module 'wagmi'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/modals/swapconfirmationmodal.tsx","start":1131,"length":14,"messageText":"Cannot find module 'wagmi/chains'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/modals/swapconfirmationmodal.tsx","start":19203,"length":6,"messageText":"Cannot find module 'viem'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[314,[{"file":"./src/components/modals/transactionfeedbackmodal.tsx","start":39,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/modals/transactionfeedbackmodal.tsx","start":65,"length":12,"messageText":"Cannot find module 'next/image'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[356,[{"file":"./src/components/navlink.tsx","start":31,"length":11,"messageText":"Cannot find module 'next/link'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/navlink.tsx","start":71,"length":17,"messageText":"Cannot find module 'next/navigation'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/navlink.tsx","start":116,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/navlink.tsx","start":203,"length":5,"messageText":"Cannot find namespace 'React'.","category":1,"code":2503}]],[155,[{"file":"./src/components/network-checker/browser-wallet-steps.tsx","start":39,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/network-checker/browser-wallet-steps.tsx","start":88,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],178,[171,[{"file":"./src/components/network-checker/network-setup-drawer.tsx","start":382,"length":7,"messageText":"Cannot find module 'wagmi'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[157,[{"file":"./src/components/network-checker/programmatic-setup-steps.tsx","start":42,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[154,[{"file":"./src/components/network-checker/rabby-steps.tsx","start":39,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/network-checker/rabby-steps.tsx","start":88,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[169,[{"file":"./src/components/network-checker/rpc-configuration.tsx","start":41,"length":7,"messageText":"Cannot find module 'wagmi'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/network-checker/rpc-configuration.tsx","start":169,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/network-checker/rpc-configuration.tsx","start":366,"length":5,"messageText":"Cannot find namespace 'React'.","category":1,"code":2503}]],[177,[{"file":"./src/components/network-checker/rpc-test-modal.tsx","start":40,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/network-checker/rpc-test-modal.tsx","start":291,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[159,[{"file":"./src/components/network-checker/wallet-info.tsx","start":44,"length":24,"messageText":"Cannot find module '@rainbow-me/rainbowkit'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/network-checker/wallet-info.tsx","start":96,"length":7,"messageText":"Cannot find module 'wagmi'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/network-checker/wallet-info.tsx","start":173,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[288,[{"file":"./src/components/onboarding/addrpcmodal.tsx","start":32,"length":12,"messageText":"Cannot find module 'next/image'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/onboarding/addrpcmodal.tsx","start":315,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[359,[{"file":"./src/components/onboarding/alreadyconfiguredwallet.tsx","start":32,"length":12,"messageText":"Cannot find module 'next/image'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/onboarding/alreadyconfiguredwallet.tsx","start":220,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[289,[{"file":"./src/components/onboarding/browserwalletstepsmodal.tsx","start":297,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[360,[{"file":"./src/components/onboarding/communitystepsmodal.tsx","start":91,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/onboarding/communitystepsmodal.tsx","start":328,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/onboarding/communitystepsmodal.tsx","start":365,"length":8,"messageText":"Cannot find module 'sonner'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/onboarding/communitystepsmodal.tsx","start":4865,"length":3,"code":2322,"category":1,"messageText":{"messageText":"Type '{ key: string; step: { completed: any; title: string; id: string; description: string; icon: React.ComponentType<{ className?: string; }>; }; index: number; onStepClick: (stepId: string) => void; walletStepCompleted: false; ... 11 more ...; forceDisabled: false; }' is not assignable to type 'OnboardingStepCardProps'.","category":1,"code":2322,"next":[{"messageText":"Property 'key' does not exist on type 'OnboardingStepCardProps'.","category":1,"code":2339}]}}]],[361,[{"file":"./src/components/onboarding/emaildialog.tsx","start":295,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[286,[{"file":"./src/components/onboarding/metamasktogglemodal.tsx","start":32,"length":12,"messageText":"Cannot find module 'next/image'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/onboarding/metamasktogglemodal.tsx","start":211,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[335,[{"file":"./src/components/onboarding/mintbuttonsection.tsx","start":98,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[287,[{"file":"./src/components/onboarding/networkdetailstab.tsx","start":39,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/onboarding/networkdetailstab.tsx","start":123,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[332,[{"file":"./src/components/onboarding/onboardingheader.tsx","start":32,"length":12,"messageText":"Cannot find module 'next/image'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/onboarding/onboardingheader.tsx","start":71,"length":17,"messageText":"Cannot find module 'next/navigation'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[333,[{"file":"./src/components/onboarding/onboardingstepcard.tsx","start":154,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[334,[{"file":"./src/components/onboarding/onboardingstepslist.tsx","start":1557,"length":3,"code":2322,"category":1,"messageText":{"messageText":"Type '{ key: string; step: BaseStep & { completed: boolean; }; index: number; showWarning: boolean; isWalletStep: boolean; isRpcStep: boolean; isConnected: boolean; isMetaMask: boolean; ... 11 more ...; onRefresh: () => void; }' is not assignable to type 'OnboardingStepCardProps'.","category":1,"code":2322,"next":[{"messageText":"Property 'key' does not exist on type 'OnboardingStepCardProps'.","category":1,"code":2339}]}}]],[176,[{"file":"./src/components/onboarding/smartaccountmodal.tsx","start":39,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/onboarding/smartaccountmodal.tsx","start":65,"length":12,"messageText":"Cannot find module 'next/image'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/onboarding/smartaccountmodal.tsx","start":384,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[362,[{"file":"./src/components/onboarding/walletwarningmodal.tsx","start":262,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[260,[{"file":"./src/components/providers.tsx","start":40,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/providers.tsx","start":97,"length":23,"messageText":"Cannot find module '@tanstack/react-query'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/providers.tsx","start":163,"length":7,"messageText":"Cannot find module 'wagmi'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/providers.tsx","start":238,"length":24,"messageText":"Cannot find module '@rainbow-me/rainbowkit'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/providers.tsx","start":639,"length":14,"messageText":"Cannot find module 'wagmi/chains'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/providers.tsx","start":5466,"length":5,"messageText":"Cannot find namespace 'React'.","category":1,"code":2503}]],[262,[{"file":"./src/components/pwa/install-prompt.tsx","start":50,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/pwa/install-prompt.tsx","start":93,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/pwa/install-prompt.tsx","start":2891,"length":13,"code":2741,"category":1,"messageText":"Property 'children' is missing in type '{ onDismiss: () => void; }' but required in type '{ children: React.ReactNode; onDismiss: () => void; icon?: React.ReactNode; }'.","relatedInformation":[{"file":"./src/components/pwa/install-prompt.tsx","start":5067,"length":8,"messageText":"'children' is declared here.","category":3,"code":2728}]},{"file":"./src/components/pwa/install-prompt.tsx","start":3589,"length":13,"code":2741,"category":1,"messageText":"Property 'children' is missing in type '{ onDismiss: () => void; icon: any; }' but required in type '{ children: React.ReactNode; onDismiss: () => void; icon?: React.ReactNode; }'.","relatedInformation":[{"file":"./src/components/pwa/install-prompt.tsx","start":5067,"length":8,"messageText":"'children' is declared here.","category":3,"code":2728}]},{"file":"./src/components/pwa/install-prompt.tsx","start":4173,"length":13,"code":2741,"category":1,"messageText":"Property 'children' is missing in type '{ onDismiss: () => void; }' but required in type '{ children: React.ReactNode; onDismiss: () => void; icon?: React.ReactNode; }'.","relatedInformation":[{"file":"./src/components/pwa/install-prompt.tsx","start":5067,"length":8,"messageText":"'children' is declared here.","category":3,"code":2728}]},{"file":"./src/components/pwa/install-prompt.tsx","start":4636,"length":13,"code":2741,"category":1,"messageText":"Property 'children' is missing in type '{ onDismiss: () => void; }' but required in type '{ children: React.ReactNode; onDismiss: () => void; icon?: React.ReactNode; }'.","relatedInformation":[{"file":"./src/components/pwa/install-prompt.tsx","start":5067,"length":8,"messageText":"'children' is declared here.","category":3,"code":2728}]},{"file":"./src/components/pwa/install-prompt.tsx","start":5077,"length":5,"messageText":"Cannot find namespace 'React'.","category":1,"code":2503},{"file":"./src/components/pwa/install-prompt.tsx","start":5126,"length":5,"messageText":"Cannot find namespace 'React'.","category":1,"code":2503}]],[261,[{"file":"./src/components/pwa/service-worker-register.tsx","start":40,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],349,[295,[{"file":"./src/components/shared/appheader.tsx","start":32,"length":12,"messageText":"Cannot find module 'next/image'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/shared/appheader.tsx","start":62,"length":11,"messageText":"Cannot find module 'next/link'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/shared/appheader.tsx","start":101,"length":7,"messageText":"Cannot find module 'wagmi'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/shared/appheader.tsx","start":479,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/shared/appheader.tsx","start":558,"length":24,"messageText":"Cannot find module '@rainbow-me/rainbowkit'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/shared/appheader.tsx","start":605,"length":8,"messageText":"Cannot find module 'sonner'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/shared/appheader.tsx","start":641,"length":20,"messageText":"Cannot find module 'react-social-icons'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/shared/appheader.tsx","start":988,"length":20,"messageText":"Cannot find module '@number-flow/react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/shared/appheader.tsx","start":1048,"length":17,"messageText":"Cannot find module 'next/navigation'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/shared/appheader.tsx","start":5233,"length":7,"code":2322,"category":1,"messageText":{"messageText":"Type '{ variant: string; className: string; }' is not assignable to type 'BadgeProps'.","category":1,"code":2322,"next":[{"messageText":"Property 'variant' does not exist on type 'BadgeProps'.","category":1,"code":2339}]}},{"file":"./src/components/shared/appheader.tsx","start":5745,"length":10,"code":2741,"category":1,"messageText":"Property 'children' is missing in type '{ fallback: any; }' but required in type 'ClientOnlyProps'.","relatedInformation":[{"file":"./src/components/shared/clientonly.tsx","start":100,"length":8,"messageText":"'children' is declared here.","category":3,"code":2728}]},{"file":"./src/components/shared/appheader.tsx","start":6786,"length":10,"code":2741,"category":1,"messageText":"Property 'children' is missing in type '{ fallback: any; }' but required in type 'ClientOnlyProps'.","relatedInformation":[{"file":"./src/components/shared/clientonly.tsx","start":100,"length":8,"messageText":"'children' is declared here.","category":3,"code":2728}]}]],[294,[{"file":"./src/components/shared/clientonly.tsx","start":61,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[276,[{"file":"./src/components/swap/actionbutton.tsx","start":57,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/swap/actionbutton.tsx","start":332,"length":24,"messageText":"Cannot find module '@rainbow-me/rainbowkit'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/swap/actionbutton.tsx","start":384,"length":7,"messageText":"Cannot find module 'wagmi'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[269,[{"file":"./src/components/swap/amountinput.tsx","start":82,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/swap/amountinput.tsx","start":113,"length":20,"messageText":"Cannot find module '@number-flow/react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[273,[{"file":"./src/components/swap/buycard.tsx","start":32,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/swap/buycard.tsx","start":93,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/swap/buycard.tsx","start":398,"length":7,"messageText":"Cannot find module 'wagmi'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[274,[{"file":"./src/components/swap/exchangerate.tsx","start":45,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/swap/exchangerate.tsx","start":76,"length":20,"messageText":"Cannot find module '@number-flow/react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/swap/exchangerate.tsx","start":118,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],267,268,[257,[{"file":"./src/components/swap/preconfirmcelebration.tsx","start":58,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/swap/preconfirmcelebration.tsx","start":106,"length":14,"messageText":"Cannot find module 'motion/react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[277,[{"file":"./src/components/swap/rewardsbadge.tsx","start":32,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/swap/rewardsbadge.tsx","start":58,"length":12,"messageText":"Cannot find module 'next/image'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[271,[{"file":"./src/components/swap/sellcard.tsx","start":32,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/swap/sellcard.tsx","start":93,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/swap/sellcard.tsx","start":136,"length":6,"messageText":"Cannot find module 'viem'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/swap/sellcard.tsx","start":604,"length":7,"messageText":"Cannot find module 'wagmi'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[281,[{"file":"./src/components/swap/swapform.tsx","start":74,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/swap/swapform.tsx","start":102,"length":14,"messageText":"Cannot find module 'next/dynamic'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/swap/swapform.tsx","start":144,"length":7,"messageText":"Cannot find module 'wagmi'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[279,[{"file":"./src/components/swap/swapinterface.tsx","start":32,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/swap/swapinterface.tsx","start":60,"length":14,"messageText":"Cannot find module 'next/dynamic'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/swap/swapinterface.tsx","start":781,"length":7,"messageText":"Cannot find module 'wagmi'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[258,[{"file":"./src/components/swap/swaptoast.tsx","start":48,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/swap/swaptoast.tsx","start":74,"length":12,"messageText":"Cannot find module 'next/image'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/swap/swaptoast.tsx","start":127,"length":14,"messageText":"Cannot find module 'motion/react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/swap/swaptoast.tsx","start":187,"length":7,"messageText":"Cannot find module 'wagmi'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/swap/swaptoast.tsx","start":235,"length":6,"messageText":"Cannot find module 'viem'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/swap/swaptoast.tsx","start":285,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/swap/swaptoast.tsx","start":327,"length":17,"messageText":"Cannot find module 'react-icons/fa6'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[259,[{"file":"./src/components/swap/swaptoastcontainer.tsx","start":40,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/swap/swaptoastcontainer.tsx","start":80,"length":14,"messageText":"Cannot find module 'motion/react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/swap/swaptoastcontainer.tsx","start":1119,"length":3,"code":2322,"category":1,"messageText":{"messageText":"Type '{ key: any; hash: any; }' is not assignable to type '{ hash: string; }'.","category":1,"code":2322,"next":[{"messageText":"Property 'key' does not exist on type '{ hash: string; }'.","category":1,"code":2339}]}}]],[272,[{"file":"./src/components/swap/switchbutton.tsx","start":40,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[236,[{"file":"./src/components/swap/tokenavatar.tsx","start":55,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/swap/tokenavatar.tsx","start":81,"length":12,"messageText":"Cannot find module 'next/image'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[255,[{"file":"./src/components/swap/tokenicon.tsx","start":50,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[270,[{"file":"./src/components/swap/tokeninforow.tsx","start":44,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/swap/tokeninforow.tsx","start":75,"length":20,"messageText":"Cannot find module '@number-flow/react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],256,[237,[{"file":"./src/components/swap/tokenselectormodal.tsx","start":66,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/swap/tokenselectormodal.tsx","start":381,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/swap/tokenselectormodal.tsx","start":633,"length":7,"messageText":"Cannot find module 'wagmi'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[278,[{"file":"./src/components/swap/transactionsettings.tsx","start":32,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/swap/transactionsettings.tsx","start":96,"length":25,"messageText":"Cannot find module '@radix-ui/react-popover'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/swap/transactionsettings.tsx","start":153,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[300,[{"file":"./src/components/ui/3d-card.tsx","start":126,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[303,[{"file":"./src/components/ui/accordion.tsx","start":23,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/accordion.tsx","start":67,"length":27,"messageText":"Cannot find module '@radix-ui/react-accordion'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/accordion.tsx","start":123,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[363,[{"file":"./src/components/ui/alert-dialog.tsx","start":23,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/alert-dialog.tsx","start":69,"length":30,"messageText":"Cannot find module '@radix-ui/react-alert-dialog'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[364,[{"file":"./src/components/ui/alert.tsx","start":23,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/alert.tsx","start":70,"length":26,"messageText":"Cannot find module 'class-variance-authority'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[365,[{"file":"./src/components/ui/aspect-ratio.tsx","start":38,"length":30,"messageText":"Cannot find module '@radix-ui/react-aspect-ratio'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[366,[{"file":"./src/components/ui/avatar.tsx","start":23,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/avatar.tsx","start":64,"length":24,"messageText":"Cannot find module '@radix-ui/react-avatar'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[175,[{"file":"./src/components/ui/badge.tsx","start":23,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/badge.tsx","start":70,"length":26,"messageText":"Cannot find module 'class-variance-authority'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/badge.tsx","start":941,"length":9,"messageText":"Property 'className' does not exist on type 'BadgeProps'.","category":1,"code":2339},{"file":"./src/components/ui/badge.tsx","start":952,"length":7,"messageText":"Property 'variant' does not exist on type 'BadgeProps'.","category":1,"code":2339}]],[367,[{"file":"./src/components/ui/breadcrumb.tsx","start":23,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/breadcrumb.tsx","start":52,"length":22,"messageText":"Cannot find module '@radix-ui/react-slot'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/breadcrumb.tsx","start":120,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[153,[{"file":"./src/components/ui/button.tsx","start":23,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/button.tsx","start":52,"length":22,"messageText":"Cannot find module '@radix-ui/react-slot'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/button.tsx","start":114,"length":26,"messageText":"Cannot find module 'class-variance-authority'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[368,[{"file":"./src/components/ui/calendar.tsx","start":23,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/calendar.tsx","start":73,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/calendar.tsx","start":114,"length":18,"messageText":"Cannot find module 'react-day-picker'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[160,[{"file":"./src/components/ui/card.tsx","start":23,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[369,[{"file":"./src/components/ui/carousel.tsx","start":23,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/carousel.tsx","start":91,"length":22,"messageText":"Cannot find module 'embla-carousel-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/carousel.tsx","start":152,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[370,[{"file":"./src/components/ui/chart.tsx","start":23,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/chart.tsx","start":66,"length":10,"messageText":"Cannot find module 'recharts'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[371,[{"file":"./src/components/ui/checkbox.tsx","start":23,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/checkbox.tsx","start":66,"length":26,"messageText":"Cannot find module '@radix-ui/react-checkbox'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/checkbox.tsx","start":115,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[372,[{"file":"./src/components/ui/collapsible.tsx","start":38,"length":29,"messageText":"Cannot find module '@radix-ui/react-collapsible'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[373,[{"file":"./src/components/ui/command.tsx","start":23,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/command.tsx","start":64,"length":24,"messageText":"Cannot find module '@radix-ui/react-dialog'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/command.tsx","start":133,"length":6,"messageText":"Cannot find module 'cmdk'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/command.tsx","start":163,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[374,[{"file":"./src/components/ui/context-menu.tsx","start":23,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/context-menu.tsx","start":69,"length":30,"messageText":"Cannot find module '@radix-ui/react-context-menu'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/context-menu.tsx","start":144,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[172,[{"file":"./src/components/ui/dialog.tsx","start":23,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/dialog.tsx","start":64,"length":24,"messageText":"Cannot find module '@radix-ui/react-dialog'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/dialog.tsx","start":107,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[375,[{"file":"./src/components/ui/drawer.tsx","start":23,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/drawer.tsx","start":73,"length":6,"messageText":"Cannot find module 'vaul'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[376,[{"file":"./src/components/ui/dropdown-menu.tsx","start":23,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/dropdown-menu.tsx","start":70,"length":31,"messageText":"Cannot find module '@radix-ui/react-dropdown-menu'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/dropdown-menu.tsx","start":146,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[377,[{"file":"./src/components/ui/form.tsx","start":23,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/form.tsx","start":63,"length":23,"messageText":"Cannot find module '@radix-ui/react-label'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/form.tsx","start":108,"length":22,"messageText":"Cannot find module '@radix-ui/react-slot'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/form.tsx","start":242,"length":17,"messageText":"Cannot find module 'react-hook-form'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[285,[{"file":"./src/components/ui/hover-border-gradient.tsx","start":57,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/hover-border-gradient.tsx","start":88,"length":14,"messageText":"Cannot find module 'motion/react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[378,[{"file":"./src/components/ui/hover-card.tsx","start":23,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/hover-card.tsx","start":67,"length":28,"messageText":"Cannot find module '@radix-ui/react-hover-card'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[379,[{"file":"./src/components/ui/input-otp.tsx","start":23,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/input-otp.tsx","start":40,"length":8,"messageText":"Circular definition of import alias 'OTPInput'.","category":1,"code":2303},{"file":"./src/components/ui/input-otp.tsx","start":40,"length":8,"messageText":"Module '\"input-otp\"' declares 'OTPInput' locally, but it is not exported.","category":1,"code":2459,"relatedInformation":[{"file":"./src/components/ui/input-otp.tsx","start":40,"length":8,"messageText":"'OTPInput' is declared here.","category":3,"code":2728}]},{"file":"./src/components/ui/input-otp.tsx","start":50,"length":15,"messageText":"Circular definition of import alias 'OTPInputContext'.","category":1,"code":2303},{"file":"./src/components/ui/input-otp.tsx","start":50,"length":15,"messageText":"Module '\"input-otp\"' declares 'OTPInputContext' locally, but it is not exported.","category":1,"code":2459,"relatedInformation":[{"file":"./src/components/ui/input-otp.tsx","start":50,"length":15,"messageText":"'OTPInputContext' is declared here.","category":3,"code":2728}]},{"file":"./src/components/ui/input-otp.tsx","start":105,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[230,[{"file":"./src/components/ui/input.tsx","start":23,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[299,[{"file":"./src/components/ui/label.tsx","start":23,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/label.tsx","start":63,"length":23,"messageText":"Cannot find module '@radix-ui/react-label'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/label.tsx","start":126,"length":26,"messageText":"Cannot find module 'class-variance-authority'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[380,[{"file":"./src/components/ui/menubar.tsx","start":23,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/menubar.tsx","start":65,"length":25,"messageText":"Cannot find module '@radix-ui/react-menubar'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/menubar.tsx","start":135,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[381,[{"file":"./src/components/ui/navigation-menu.tsx","start":23,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/navigation-menu.tsx","start":72,"length":33,"messageText":"Cannot find module '@radix-ui/react-navigation-menu'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/navigation-menu.tsx","start":126,"length":26,"messageText":"Cannot find module 'class-variance-authority'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/navigation-menu.tsx","start":181,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[382,[{"file":"./src/components/ui/pagination.tsx","start":23,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/pagination.tsx","start":89,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/pagination.tsx","start":1053,"length":6,"code":2344,"category":1,"messageText":"Type '\"size\"' does not satisfy the constraint '\"asChild\"'."}]],[383,[{"file":"./src/components/ui/popover.tsx","start":23,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/popover.tsx","start":65,"length":25,"messageText":"Cannot find module '@radix-ui/react-popover'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[308,[{"file":"./src/components/ui/progress.tsx","start":23,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/progress.tsx","start":66,"length":26,"messageText":"Cannot find module '@radix-ui/react-progress'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[384,[{"file":"./src/components/ui/radio-group.tsx","start":23,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/radio-group.tsx","start":68,"length":29,"messageText":"Cannot find module '@radix-ui/react-radio-group'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/radio-group.tsx","start":121,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[385,[{"file":"./src/components/ui/resizable.tsx","start":29,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/resizable.tsx","start":80,"length":24,"messageText":"Cannot find module 'react-resizable-panels'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/resizable.tsx","start":198,"length":5,"messageText":"Cannot find namespace 'React'.","category":1,"code":2503},{"file":"./src/components/ui/resizable.tsx","start":535,"length":5,"messageText":"Cannot find namespace 'React'.","category":1,"code":2503}]],[386,[{"file":"./src/components/ui/scroll-area.tsx","start":23,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/scroll-area.tsx","start":68,"length":29,"messageText":"Cannot find module '@radix-ui/react-scroll-area'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[387,[{"file":"./src/components/ui/select.tsx","start":23,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/select.tsx","start":64,"length":24,"messageText":"Cannot find module '@radix-ui/react-select'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/select.tsx","start":135,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[388,[{"file":"./src/components/ui/separator.tsx","start":23,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/separator.tsx","start":67,"length":27,"messageText":"Cannot find module '@radix-ui/react-separator'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[170,[{"file":"./src/components/ui/sheet.tsx","start":32,"length":24,"messageText":"Cannot find module '@radix-ui/react-dialog'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/sheet.tsx","start":96,"length":26,"messageText":"Cannot find module 'class-variance-authority'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/sheet.tsx","start":141,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/sheet.tsx","start":179,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[389,[{"file":"./src/components/ui/sidebar.tsx","start":23,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/sidebar.tsx","start":52,"length":22,"messageText":"Cannot find module '@radix-ui/react-slot'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/sidebar.tsx","start":109,"length":26,"messageText":"Cannot find module 'class-variance-authority'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/sidebar.tsx","start":162,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[275,[{"file":"./src/components/ui/skeleton.tsx","start":77,"length":5,"messageText":"Cannot find namespace 'React'.","category":1,"code":2503}]],[390,[{"file":"./src/components/ui/slider.tsx","start":23,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/slider.tsx","start":64,"length":24,"messageText":"Cannot find module '@radix-ui/react-slider'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[254,[{"file":"./src/components/ui/sonner.tsx","start":25,"length":13,"messageText":"Cannot find module 'next-themes'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/sonner.tsx","start":67,"length":5,"messageText":"Circular definition of import alias 'toast'.","category":1,"code":2303},{"file":"./src/components/ui/sonner.tsx","start":95,"length":12,"messageText":"Type alias 'ToasterProps' circularly references itself.","category":1,"code":2456},{"file":"./src/components/ui/sonner.tsx","start":110,"length":5,"messageText":"Cannot find namespace 'React'.","category":1,"code":2503}]],[391,[{"file":"./src/components/ui/switch.tsx","start":23,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/switch.tsx","start":65,"length":24,"messageText":"Cannot find module '@radix-ui/react-switch'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[317,[{"file":"./src/components/ui/table.tsx","start":23,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[174,[{"file":"./src/components/ui/tabs.tsx","start":23,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/tabs.tsx","start":62,"length":22,"messageText":"Cannot find module '@radix-ui/react-tabs'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[392,[{"file":"./src/components/ui/textarea.tsx","start":23,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[179,[{"file":"./src/components/ui/toast.tsx","start":23,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/toast.tsx","start":64,"length":23,"messageText":"Cannot find module '@radix-ui/react-toast'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/toast.tsx","start":127,"length":26,"messageText":"Cannot find module 'class-variance-authority'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/toast.tsx","start":172,"length":14,"messageText":"Cannot find module 'lucide-react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],253,[394,[{"file":"./src/components/ui/toggle-group.tsx","start":23,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/toggle-group.tsx","start":69,"length":30,"messageText":"Cannot find module '@radix-ui/react-toggle-group'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/toggle-group.tsx","start":134,"length":26,"messageText":"Cannot find module 'class-variance-authority'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[393,[{"file":"./src/components/ui/toggle.tsx","start":23,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/toggle.tsx","start":64,"length":24,"messageText":"Cannot find module '@radix-ui/react-toggle'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/toggle.tsx","start":128,"length":26,"messageText":"Cannot find module 'class-variance-authority'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[252,[{"file":"./src/components/ui/tooltip.tsx","start":23,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/components/ui/tooltip.tsx","start":65,"length":25,"messageText":"Cannot find module '@radix-ui/react-tooltip'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],181,[62,[{"file":"./src/env/server.ts","start":26,"length":20,"messageText":"Cannot find module '@t3-oss/env-nextjs'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/env/server.ts","start":65,"length":5,"messageText":"Cannot find module 'zod'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/env/server.ts","start":990,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580}]],192,[193,[{"file":"./src/hooks/use-accepted-invite.ts","start":39,"length":23,"messageText":"Cannot find module '@tanstack/react-query'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-accepted-invite.ts","start":90,"length":7,"messageText":"Cannot find module 'wagmi'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[194,[{"file":"./src/hooks/use-add-fast-to-metamask.ts","start":25,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-add-fast-to-metamask.ts","start":55,"length":8,"messageText":"Cannot find module 'sonner'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[196,[{"file":"./src/hooks/use-affiliate-code.ts","start":49,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-affiliate-code.ts","start":84,"length":7,"messageText":"Cannot find module 'wagmi'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-affiliate-code.ts","start":123,"length":7,"messageText":"Cannot find module 'wagmi'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-affiliate-code.ts","start":172,"length":11,"messageText":"Cannot find module '@fuul/sdk'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-affiliate-code.ts","start":206,"length":8,"messageText":"Cannot find module 'sonner'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-affiliate-code.ts","start":3414,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580},{"file":"./src/hooks/use-affiliate-code.ts","start":4434,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580},{"file":"./src/hooks/use-affiliate-code.ts","start":7104,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580},{"file":"./src/hooks/use-affiliate-code.ts","start":9313,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580}]],[197,[{"file":"./src/hooks/use-balance-flash.ts","start":58,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[199,[{"file":"./src/hooks/use-barter-validation.ts","start":58,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-barter-validation.ts","start":93,"length":6,"messageText":"Cannot find module 'viem'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[218,[{"file":"./src/hooks/use-broadcast-gas-price.tsx","start":42,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-broadcast-gas-price.tsx","start":75,"length":7,"messageText":"Cannot find module 'wagmi'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-broadcast-gas-price.tsx","start":111,"length":6,"messageText":"Cannot find module 'viem'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[200,[{"file":"./src/hooks/use-dashboard-data.ts","start":55,"length":23,"messageText":"Cannot find module '@tanstack/react-query'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[202,[{"file":"./src/hooks/use-dashboard-tasks.ts","start":24,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-dashboard-tasks.ts","start":54,"length":8,"messageText":"Cannot find module 'sonner'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[187,[{"file":"./src/hooks/use-email-capture.ts","start":25,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-email-capture.ts","start":55,"length":8,"messageText":"Cannot find module 'sonner'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[203,[{"file":"./src/hooks/use-email-dialog.ts","start":25,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[204,[{"file":"./src/hooks/use-estimated-miles.ts","start":67,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[206,[{"file":"./src/hooks/use-eth-path-gas-estimate.ts","start":63,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-eth-path-gas-estimate.ts","start":115,"length":7,"messageText":"Cannot find module 'wagmi'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-eth-path-gas-estimate.ts","start":150,"length":6,"messageText":"Cannot find module 'viem'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-eth-path-gas-estimate.ts","start":181,"length":14,"messageText":"Cannot find module 'wagmi/chains'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[182,[{"file":"./src/hooks/use-gate-status.ts","start":42,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-gate-status.ts","start":91,"length":23,"messageText":"Cannot find module '@tanstack/react-query'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-gate-status.ts","start":142,"length":7,"messageText":"Cannot find module 'wagmi'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[208,[{"file":"./src/hooks/use-genesis-sbt.ts","start":53,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-genesis-sbt.ts","start":104,"length":17,"messageText":"Cannot find module 'next/navigation'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[210,[{"file":"./src/hooks/use-leaderboard-data.ts","start":55,"length":23,"messageText":"Cannot find module '@tanstack/react-query'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[190,[{"file":"./src/hooks/use-minting.ts","start":49,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-minting.ts","start":83,"length":17,"messageText":"Cannot find module 'next/navigation'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-minting.ts","start":159,"length":6,"messageText":"Cannot find module 'viem'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-minting.ts","start":229,"length":7,"messageText":"Cannot find module 'wagmi'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-minting.ts","start":259,"length":8,"messageText":"Cannot find module 'sonner'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[191,[{"file":"./src/hooks/use-mobile.tsx","start":23,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[156,[{"file":"./src/hooks/use-network-installation.ts","start":25,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-network-installation.ts","start":55,"length":8,"messageText":"Cannot find module 'sonner'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-network-installation.ts","start":91,"length":7,"messageText":"Cannot find module 'wagmi'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[186,[{"file":"./src/hooks/use-onboarding-steps.ts","start":44,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-onboarding-steps.ts","start":284,"length":5,"messageText":"Cannot find namespace 'React'.","category":1,"code":2503}]],[211,[{"file":"./src/hooks/use-page-active.ts","start":71,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[213,[{"file":"./src/hooks/use-page-prefetch.ts","start":61,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-page-prefetch.ts","start":95,"length":17,"messageText":"Cannot find module 'next/navigation'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-page-prefetch.ts","start":752,"length":6,"messageText":"Cannot find namespace 'NodeJS'.","category":1,"code":2503},{"file":"./src/hooks/use-page-prefetch.ts","start":826,"length":6,"messageText":"Cannot find namespace 'NodeJS'.","category":1,"code":2503},{"file":"./src/hooks/use-page-prefetch.ts","start":895,"length":6,"messageText":"Cannot find namespace 'NodeJS'.","category":1,"code":2503}]],[215,[{"file":"./src/hooks/use-permit2-allowance.ts","start":72,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-permit2-allowance.ts","start":172,"length":7,"messageText":"Cannot find module 'wagmi'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-permit2-allowance.ts","start":219,"length":6,"messageText":"Cannot find module 'viem'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-permit2-allowance.ts","start":250,"length":14,"messageText":"Cannot find module 'wagmi/chains'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[216,[{"file":"./src/hooks/use-permit2-nonce.ts","start":71,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-permit2-nonce.ts","start":106,"length":7,"messageText":"Cannot find module 'wagmi'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-permit2-nonce.ts","start":155,"length":6,"messageText":"Cannot find module 'viem'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-permit2-nonce.ts","start":186,"length":14,"messageText":"Cannot find module 'wagmi/chains'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[212,[{"file":"./src/hooks/use-prefetch-dashboard.ts","start":40,"length":17,"messageText":"Cannot find module 'next/navigation'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[207,[{"file":"./src/hooks/use-read-only-contract-call.ts","start":66,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-read-only-contract-call.ts","start":129,"length":6,"messageText":"Cannot find module 'viem'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-read-only-contract-call.ts","start":160,"length":14,"messageText":"Cannot find module 'wagmi/chains'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[217,[{"file":"./src/hooks/use-recent-tokens.ts","start":63,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[188,[{"file":"./src/hooks/use-rpc-setup.ts","start":44,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-rpc-setup.ts","start":78,"length":7,"messageText":"Cannot find module 'wagmi'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-rpc-setup.ts","start":108,"length":8,"messageText":"Cannot find module 'sonner'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[168,[{"file":"./src/hooks/use-rpc-test.ts","start":49,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-rpc-test.ts","start":79,"length":8,"messageText":"Cannot find module 'sonner'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-rpc-test.ts","start":145,"length":7,"messageText":"Cannot find module 'wagmi'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-rpc-test.ts","start":185,"length":15,"messageText":"Cannot find module 'wagmi/actions'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-rpc-test.ts","start":255,"length":6,"messageText":"Cannot find module 'viem'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[173,[{"file":"./src/hooks/use-smart-account-detection.ts","start":25,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[221,[{"file":"./src/hooks/use-swap-confirmation.ts","start":52,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-swap-confirmation.ts","start":124,"length":7,"messageText":"Cannot find module 'wagmi'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-swap-confirmation.ts","start":236,"length":14,"messageText":"Cannot find module 'wagmi/chains'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-swap-confirmation.ts","start":291,"length":6,"messageText":"Cannot find module 'viem'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[238,[{"file":"./src/hooks/use-swap-form.ts","start":80,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-swap-form.ts","start":160,"length":7,"messageText":"Cannot find module 'wagmi'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-swap-form.ts","start":196,"length":6,"messageText":"Cannot find module 'viem'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-swap-form.ts","start":234,"length":23,"messageText":"Cannot find module '@tanstack/react-query'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[220,[{"file":"./src/hooks/use-swap-intent.ts","start":42,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-swap-intent.ts","start":107,"length":7,"messageText":"Cannot find module 'wagmi'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-swap-intent.ts","start":142,"length":6,"messageText":"Cannot find module 'viem'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[224,[{"file":"./src/hooks/use-swap-quote.ts","start":71,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-swap-quote.ts","start":159,"length":6,"messageText":"Cannot find module 'viem'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-swap-quote.ts","start":190,"length":14,"messageText":"Cannot find module 'wagmi/chains'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-swap-quote.ts","start":2821,"length":6,"messageText":"Cannot find namespace 'NodeJS'.","category":1,"code":2503},{"file":"./src/hooks/use-swap-quote.ts","start":13517,"length":6,"messageText":"Cannot find namespace 'NodeJS'.","category":1,"code":2503},{"file":"./src/hooks/use-swap-quote.ts","start":16029,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580}]],[229,[{"file":"./src/hooks/use-swap-slippage.ts","start":50,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[180,[{"file":"./src/hooks/use-toast.ts","start":23,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[234,[{"file":"./src/hooks/use-token-balances.ts","start":39,"length":23,"messageText":"Cannot find module '@tanstack/react-query'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-token-balances.ts","start":90,"length":7,"messageText":"Cannot find module 'wagmi'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-token-balances.ts","start":126,"length":6,"messageText":"Cannot find module 'viem'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-token-balances.ts","start":157,"length":14,"messageText":"Cannot find module 'wagmi/chains'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-token-balances.ts","start":803,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580},{"file":"./src/hooks/use-token-balances.ts","start":868,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580},{"file":"./src/hooks/use-token-balances.ts","start":5711,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580}]],[225,[{"file":"./src/hooks/use-token-price.ts","start":63,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[201,[{"file":"./src/hooks/use-user-onboarding.ts","start":49,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-user-onboarding.ts","start":88,"length":23,"messageText":"Cannot find module '@tanstack/react-query'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[239,[{"file":"./src/hooks/use-user-points.ts","start":49,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-user-points.ts","start":84,"length":7,"messageText":"Cannot find module 'wagmi'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[241,[{"file":"./src/hooks/use-user-swaps.ts","start":71,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-user-swaps.ts","start":7382,"length":4,"code":2345,"category":1,"messageText":"Argument of type 'unknown' is not assignable to parameter of type 'string'."},{"file":"./src/hooks/use-user-swaps.ts","start":7681,"length":4,"code":2345,"category":1,"messageText":"Argument of type 'unknown' is not assignable to parameter of type 'string'."}]],[167,[{"file":"./src/hooks/use-wait-for-tx-confirmation.ts","start":71,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-wait-for-tx-confirmation.ts","start":119,"length":6,"messageText":"Cannot find module 'viem'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[242,[{"file":"./src/hooks/use-waitlist-position.ts","start":39,"length":23,"messageText":"Cannot find module '@tanstack/react-query'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-waitlist-position.ts","start":90,"length":7,"messageText":"Cannot find module 'wagmi'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[244,[{"file":"./src/hooks/use-waitlist.ts","start":39,"length":23,"messageText":"Cannot find module '@tanstack/react-query'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-waitlist.ts","start":90,"length":7,"messageText":"Cannot find module 'wagmi'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[189,[{"file":"./src/hooks/use-wallet-connection.ts","start":26,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-wallet-connection.ts","start":92,"length":7,"messageText":"Cannot find module 'wagmi'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-wallet-connection.ts","start":124,"length":14,"messageText":"Cannot find module 'wagmi/chains'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-wallet-connection.ts","start":161,"length":8,"messageText":"Cannot find module 'sonner'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-wallet-connection.ts","start":196,"length":7,"messageText":"Cannot find module 'wagmi'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[158,[{"file":"./src/hooks/use-wallet-info.ts","start":36,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-wallet-info.ts","start":70,"length":7,"messageText":"Cannot find module 'wagmi'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[245,[{"file":"./src/hooks/use-wallet-provider.ts","start":49,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-wallet-provider.ts","start":84,"length":7,"messageText":"Cannot find module 'wagmi'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[228,[{"file":"./src/hooks/use-weth-wrap-unwrap.ts","start":72,"length":7,"messageText":"Cannot find module 'react'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-weth-wrap-unwrap.ts","start":194,"length":7,"messageText":"Cannot find module 'wagmi'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-weth-wrap-unwrap.ts","start":254,"length":6,"messageText":"Cannot find module 'viem'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-weth-wrap-unwrap.ts","start":449,"length":14,"messageText":"Cannot find module 'wagmi/chains'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[246,[{"file":"./src/hooks/use-whitelist.ts","start":39,"length":23,"messageText":"Cannot find module '@tanstack/react-query'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/hooks/use-whitelist.ts","start":90,"length":7,"messageText":"Cannot find module 'wagmi'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[79,[{"file":"./src/lib/analytics-server.ts","start":4812,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580}]],72,70,106,81,76,78,77,73,90,69,71,[198,[{"file":"./src/lib/barter-api.ts","start":198,"length":6,"messageText":"Cannot find module 'viem'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/lib/barter-api.ts","start":336,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580}]],233,75,184,[247,[{"file":"./src/lib/contract-server.ts","start":55,"length":6,"messageText":"Cannot find module 'viem'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/lib/contract-server.ts","start":86,"length":14,"messageText":"Cannot find module 'wagmi/chains'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],63,214,[205,[{"file":"./src/lib/eth-path-tx.ts","start":197,"length":6,"messageText":"Cannot find module 'viem'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/lib/eth-path-tx.ts","start":238,"length":6,"messageText":"Cannot find module 'viem'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[127,[{"file":"./src/lib/fast-db.ts","start":21,"length":4,"messageText":"Cannot find module 'pg'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/lib/fast-db.ts","start":311,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580}]],164,[248,[{"file":"./src/lib/fast-settlement-v2-1.ts","start":110,"length":6,"messageText":"Cannot find module 'viem'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],249,162,223,[195,[{"file":"./src/lib/fuul.ts","start":21,"length":11,"messageText":"Cannot find module '@fuul/sdk'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/lib/fuul.ts","start":93,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580}]],243,[100,[{"file":"./src/lib/google-sheets.ts","start":520,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580},{"file":"./src/lib/google-sheets.ts","start":579,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580},{"file":"./src/lib/google-sheets.ts","start":641,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580},{"file":"./src/lib/google-sheets.ts","start":961,"length":12,"messageText":"Cannot find module 'googleapis'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],209,[67,[{"file":"./src/lib/learn.ts","start":15,"length":4,"messageText":"Cannot find module 'fs'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/lib/learn.ts","start":37,"length":6,"messageText":"Cannot find module 'path'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/lib/learn.ts","start":63,"length":13,"messageText":"Cannot find module 'gray-matter'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/lib/learn.ts","start":101,"length":9,"messageText":"Cannot find module 'unified'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/lib/learn.ts","start":135,"length":14,"messageText":"Cannot find module 'remark-parse'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/lib/learn.ts","start":172,"length":12,"messageText":"Cannot find module 'remark-gfm'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/lib/learn.ts","start":210,"length":15,"messageText":"Cannot find module 'remark-rehype'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/lib/learn.ts","start":254,"length":18,"messageText":"Cannot find module 'rehype-stringify'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/lib/learn.ts","start":296,"length":13,"messageText":"Cannot find module 'rehype-slug'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/lib/learn.ts","start":345,"length":26,"messageText":"Cannot find module 'rehype-autolink-headings'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/lib/learn.ts","start":403,"length":7,"messageText":"Cannot find name 'process'. Did you mean 'processor'?","category":1,"code":2552,"relatedInformation":[{"file":"./src/lib/learn.ts","start":863,"length":9,"messageText":"'processor' is declared here.","category":3,"code":2728}]}]],[104,[{"file":"./src/lib/network-config.ts","start":135,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580},{"file":"./src/lib/network-config.ts","start":1008,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580}]],[185,[{"file":"./src/lib/onboarding-utils.ts","start":9,"length":9,"messageText":"Module '\"wagmi\"' has no exported member 'Connector'.","category":1,"code":2305}]],219,231,250,[65,[{"file":"./src/lib/site-config.ts","start":314,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580},{"file":"./src/lib/site-config.ts","start":416,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580}]],108,109,110,240,232,[124,[{"file":"./src/lib/swap-server.ts","start":726,"length":26,"code":2345,"category":1,"messageText":{"messageText":"Argument of type '{ next: { revalidate: number; }; }' is not assignable to parameter of type 'RequestInit'.","category":1,"code":2345,"next":[{"messageText":"Object literal may only specify known properties, and 'next' does not exist in type 'RequestInit'.","category":1,"code":2353}]}}]],[235,[{"file":"./src/lib/token-icons.ts","start":1112,"length":6,"messageText":"Cannot find module 'viem'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/lib/token-icons.ts","start":1143,"length":14,"messageText":"Cannot find module 'wagmi/chains'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],107,[222,[{"file":"./src/lib/token-resolver.ts","start":155,"length":6,"messageText":"Cannot find module 'viem'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[166,[{"file":"./src/lib/transaction-errors.ts","start":74,"length":6,"messageText":"Cannot find module 'viem'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[163,[{"file":"./src/lib/transaction-receipt-utils.ts","start":35,"length":6,"messageText":"Cannot find module 'viem'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],165,[152,[{"file":"./src/lib/utils.ts","start":38,"length":6,"messageText":"Cannot find module 'clsx'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/lib/utils.ts","start":69,"length":16,"messageText":"Cannot find module 'tailwind-merge'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[98,[{"file":"./src/lib/vercel-edge-config.ts","start":2508,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580},{"file":"./src/lib/vercel-edge-config.ts","start":2563,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580},{"file":"./src/lib/vercel-edge-config.ts","start":2612,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580}]],[161,[{"file":"./src/lib/wagmi.ts","start":64,"length":24,"messageText":"Cannot find module '@rainbow-me/rainbowkit'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/lib/wagmi.ts","start":214,"length":32,"messageText":"Cannot find module '@rainbow-me/rainbowkit/wallets'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/lib/wagmi.ts","start":256,"length":12,"messageText":"Circular definition of import alias 'createConfig'.","category":1,"code":2303},{"file":"./src/lib/wagmi.ts","start":256,"length":12,"messageText":"Module '\"wagmi\"' declares 'createConfig' locally, but it is not exported.","category":1,"code":2459,"relatedInformation":[{"file":"./src/lib/wagmi.ts","start":256,"length":12,"messageText":"'createConfig' is declared here.","category":3,"code":2728}]},{"file":"./src/lib/wagmi.ts","start":270,"length":4,"messageText":"Circular definition of import alias 'http'.","category":1,"code":2303},{"file":"./src/lib/wagmi.ts","start":270,"length":4,"messageText":"Module '\"wagmi\"' declares 'http' locally, but it is not exported.","category":1,"code":2459,"relatedInformation":[{"file":"./src/lib/wagmi.ts","start":270,"length":4,"messageText":"'http' is declared here.","category":3,"code":2728}]},{"file":"./src/lib/wagmi.ts","start":276,"length":8,"messageText":"Circular definition of import alias 'fallback'.","category":1,"code":2303},{"file":"./src/lib/wagmi.ts","start":276,"length":8,"messageText":"Module '\"wagmi\"' declares 'fallback' locally, but it is not exported.","category":1,"code":2459,"relatedInformation":[{"file":"./src/lib/wagmi.ts","start":276,"length":8,"messageText":"'fallback' is declared here.","category":3,"code":2728}]},{"file":"./src/lib/wagmi.ts","start":286,"length":15,"messageText":"Circular definition of import alias 'createConnector'.","category":1,"code":2303},{"file":"./src/lib/wagmi.ts","start":286,"length":15,"messageText":"Module '\"wagmi\"' declares 'createConnector' locally, but it is not exported.","category":1,"code":2459,"relatedInformation":[{"file":"./src/lib/wagmi.ts","start":286,"length":15,"messageText":"'createConnector' is declared here.","category":3,"code":2728}]},{"file":"./src/lib/wagmi.ts","start":359,"length":14,"messageText":"Cannot find module 'wagmi/chains'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/lib/wagmi.ts","start":395,"length":18,"messageText":"Cannot find module 'wagmi/connectors'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/lib/wagmi.ts","start":1958,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580},{"file":"./src/lib/wagmi.ts","start":2068,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580},{"file":"./src/lib/wagmi.ts","start":2158,"length":7,"messageText":"Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.","category":1,"code":2580}]],101,183,226,[227,[{"file":"./src/lib/weth-utils.ts","start":178,"length":6,"messageText":"Cannot find module 'viem'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/lib/weth-utils.ts","start":209,"length":14,"messageText":"Cannot find module 'wagmi/chains'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/lib/weth-utils.ts","start":251,"length":6,"messageText":"Cannot find module 'viem'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[61,[{"file":"./src/middleware.ts","start":42,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/middleware.ts","start":76,"length":21,"messageText":"Cannot find module '@vercel/edge-config'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[251,[{"file":"./src/stores/swaptoaststore.ts","start":23,"length":9,"messageText":"Cannot find module 'zustand'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./src/stores/swaptoaststore.ts","start":115,"length":6,"messageText":"Cannot find module 'viem'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[133,[{"file":"./src/test/utils/mock-next-request.ts","start":28,"length":13,"messageText":"Cannot find module 'next/server'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],111,[58,[{"file":"./tailwind.config.ts","start":28,"length":13,"messageText":"Cannot find module 'tailwindcss'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./tailwind.config.ts","start":74,"length":21,"messageText":"Cannot find module 'tailwindcss-animate'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./tailwind.config.ts","start":120,"length":25,"messageText":"Cannot find module '@tailwindcss/typography'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792}]],[59,[{"file":"./vitest.config.ts","start":29,"length":15,"messageText":"Cannot find module 'vitest/config'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./vitest.config.ts","start":63,"length":6,"messageText":"Cannot find module 'path'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?","category":1,"code":2792},{"file":"./vitest.config.ts","start":325,"length":9,"messageText":"Cannot find name '__dirname'.","category":1,"code":2304}]],11,12,14,13,2,15,16,17,18,19,20,21,22,3,4,26,23,24,25,27,28,29,5,30,31,32,33,6,37,34,35,36,38,7,39,44,45,40,41,42,43,8,49,46,47,48,50,9,51,52,53,54,55,1,10,56],"affectedFilesPendingEmit":[[57,1],[60,1],[64,1],[298,1],[321,1],[265,1],[266,1],[296,1],[323,1],[324,1],[325,1],[297,1],[293,1],[74,1],[80,1],[82,1],[84,1],[85,1],[86,1],[83,1],[87,1],[88,1],[89,1],[91,1],[92,1],[93,1],[94,1],[95,1],[96,1],[97,1],[99,1],[102,1],[103,1],[112,1],[105,1],[113,1],[114,1],[116,1],[115,1],[118,1],[117,1],[119,1],[120,1],[121,1],[122,1],[327,1],[326,1],[123,1],[125,1],[126,1],[129,1],[128,1],[130,1],[131,1],[132,1],[135,1],[134,1],[136,1],[137,1],[138,1],[139,1],[140,1],[141,1],[142,1],[143,1],[144,1],[145,1],[146,1],[328,1],[331,1],[336,1],[330,1],[337,1],[339,1],[340,1],[263,1],[344,1],[345,1],[341,1],[343,1],[346,1],[347,1],[264,1],[348,1],[351,1],[352,1],[353,1],[350,1],[66,1],[354,1],[355,1],[147,1],[68,1],[282,1],[329,1],[357,1],[358,1],[149,1],[150,1],[151,1],[148,1],[316,1],[322,1],[304,1],[312,1],[311,1],[307,1],[302,1],[310,1],[301,1],[305,1],[318,1],[306,1],[319,1],[320,1],[309,1],[291,1],[292,1],[338,1],[283,1],[290,1],[284,1],[342,1],[315,1],[313,1],[280,1],[314,1],[356,1],[155,1],[178,1],[171,1],[157,1],[154,1],[169,1],[177,1],[159,1],[288,1],[359,1],[289,1],[360,1],[361,1],[286,1],[335,1],[287,1],[332,1],[333,1],[334,1],[176,1],[362,1],[260,1],[262,1],[261,1],[349,1],[295,1],[294,1],[276,1],[269,1],[273,1],[274,1],[267,1],[268,1],[257,1],[277,1],[271,1],[281,1],[279,1],[258,1],[259,1],[272,1],[236,1],[255,1],[270,1],[256,1],[237,1],[278,1],[300,1],[303,1],[363,1],[364,1],[365,1],[366,1],[175,1],[367,1],[153,1],[368,1],[160,1],[369,1],[370,1],[371,1],[372,1],[373,1],[374,1],[172,1],[375,1],[376,1],[377,1],[285,1],[378,1],[379,1],[230,1],[299,1],[380,1],[381,1],[382,1],[383,1],[308,1],[384,1],[385,1],[386,1],[387,1],[388,1],[170,1],[389,1],[275,1],[390,1],[254,1],[391,1],[317,1],[174,1],[392,1],[179,1],[253,1],[394,1],[393,1],[252,1],[181,1],[62,1],[192,1],[193,1],[194,1],[196,1],[197,1],[199,1],[218,1],[200,1],[202,1],[187,1],[203,1],[204,1],[206,1],[182,1],[208,1],[210,1],[190,1],[191,1],[156,1],[186,1],[211,1],[213,1],[215,1],[216,1],[212,1],[207,1],[217,1],[188,1],[168,1],[173,1],[221,1],[238,1],[220,1],[224,1],[229,1],[180,1],[234,1],[225,1],[201,1],[239,1],[241,1],[167,1],[242,1],[244,1],[189,1],[158,1],[245,1],[228,1],[246,1],[79,1],[72,1],[70,1],[106,1],[81,1],[76,1],[78,1],[77,1],[73,1],[90,1],[69,1],[71,1],[198,1],[233,1],[75,1],[184,1],[247,1],[63,1],[214,1],[205,1],[127,1],[164,1],[248,1],[249,1],[162,1],[223,1],[195,1],[243,1],[100,1],[209,1],[67,1],[104,1],[185,1],[219,1],[231,1],[250,1],[65,1],[108,1],[109,1],[110,1],[240,1],[232,1],[124,1],[235,1],[107,1],[222,1],[166,1],[163,1],[165,1],[152,1],[98,1],[161,1],[101,1],[183,1],[226,1],[227,1],[61,1],[251,1],[133,1],[111,1],[58,1],[59,1],[2,1],[3,1],[4,1],[5,1],[6,1],[7,1],[8,1],[9,1],[10,1]]},"version":"4.9.5"} \ No newline at end of file From e0ff132d9edcaca423435c48aa768468618b8749 Mon Sep 17 00:00:00 2001 From: Jason Schwarz Date: Sat, 18 Apr 2026 07:51:29 -0300 Subject: [PATCH 02/49] feat(agents): add agents-first repo infrastructure MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Layer retrieval and attention-budget optimizations on top of existing code — nothing under src/, contracts/, or contracts-abi/ changes. Distilled from Anthropic's context-engineering + Agent Skills guidance and HumanLayer's CLAUDE.md / harness-engineering posts. Root orientation (progressive disclosure entry points): - AGENTS.md: portable spec (Codex/Cursor/Amp/Claude) - CLAUDE.md: Claude-specific additions, imports AGENTS.md via @ - README.md: link to the agentic surface Reference layer (agent_docs/, open on demand): - stack, architecture, web3-integration, contracts-and-abis, env-vars, testing, verification, glossary .claude/ infrastructure: - skills/: 9 domain skills (skill-creator, next-app-router, defi-swap, web3-wallet, dashboard-data, leaderboard-miles, contract-abis, ui-shadcn, testing-vitest) — each with SKILL.md + reference files, no inlined code - agents/: 4 subagents as context firewalls (explore-web3, security-reviewer, ui-verifier, abi-tracer) - commands/: /prime, /verify, /typecheck, /lint, /test, /new-skill, /review-diff - hooks/: PostToolUse typecheck + Stop format-check, silent on success - settings.json: permission allow/deny lists + hook wiring Verification loop: - package.json: add `typecheck` script (tsc --noEmit) so /verify has the full typecheck + lint + test:run stack --- .claude/README.md | 62 ++++++++++ .claude/agents/abi-tracer.md | 48 ++++++++ .claude/agents/explore-web3.md | 33 +++++ .claude/agents/security-reviewer.md | 55 +++++++++ .claude/agents/ui-verifier.md | 30 +++++ .claude/commands/lint.md | 11 ++ .claude/commands/new-skill.md | 16 +++ .claude/commands/prime.md | 17 +++ .claude/commands/review-diff.md | 17 +++ .claude/commands/test.md | 15 +++ .claude/commands/typecheck.md | 11 ++ .claude/commands/verify.md | 15 +++ .claude/hooks/post-edit-typecheck.sh | 38 ++++++ .claude/hooks/stop-format-check.sh | 18 +++ .claude/settings.json | 64 ++++++++++ .claude/skills/contract-abis/SKILL.md | 61 ++++++++++ .claude/skills/contract-abis/abi-layout.md | 32 +++++ .../skills/contract-abis/typing-patterns.md | 56 +++++++++ .claude/skills/dashboard-data/SKILL.md | 54 +++++++++ .../skills/dashboard-data/hook-patterns.md | 65 ++++++++++ .claude/skills/dashboard-data/query-keys.md | 55 +++++++++ .claude/skills/defi-swap/SKILL.md | 58 +++++++++ .claude/skills/defi-swap/permit2.md | 38 ++++++ .claude/skills/defi-swap/quote-polling.md | 37 ++++++ .claude/skills/defi-swap/swap-engine.md | 50 ++++++++ .claude/skills/leaderboard-miles/SKILL.md | 49 ++++++++ .../skills/leaderboard-miles/feature-flag.md | 44 +++++++ .claude/skills/leaderboard-miles/tiers.md | 32 +++++ .claude/skills/next-app-router/SKILL.md | 51 ++++++++ .claude/skills/next-app-router/api-routes.md | 51 ++++++++ .../skills/next-app-router/env-validation.md | 31 +++++ .../skills/next-app-router/server-actions.md | 37 ++++++ .claude/skills/skill-creator/SKILL.md | 46 +++++++ .claude/skills/skill-creator/anatomy.md | 72 +++++++++++ .claude/skills/skill-creator/checklist.md | 16 +++ .claude/skills/testing-vitest/SKILL.md | 53 ++++++++ .claude/skills/testing-vitest/mocking-web3.md | 64 ++++++++++ .claude/skills/testing-vitest/test-layout.md | 48 ++++++++ .claude/skills/ui-shadcn/SKILL.md | 51 ++++++++ .claude/skills/ui-shadcn/accessibility.md | 37 ++++++ .../skills/ui-shadcn/component-conventions.md | 56 +++++++++ .claude/skills/web3-wallet/SKILL.md | 51 ++++++++ .claude/skills/web3-wallet/tx-confirmation.md | 36 ++++++ .claude/skills/web3-wallet/wagmi-patterns.md | 62 ++++++++++ AGENTS.md | 83 +++++++++++++ CLAUDE.md | 71 +++++++++++ README.md | 11 ++ agent_docs/architecture.md | 114 ++++++++++++++++++ agent_docs/contracts-and-abis.md | 50 ++++++++ agent_docs/env-vars.md | 31 +++++ agent_docs/glossary.md | 57 +++++++++ agent_docs/stack.md | 61 ++++++++++ agent_docs/testing.md | 47 ++++++++ agent_docs/verification.md | 49 ++++++++ agent_docs/web3-integration.md | 52 ++++++++ package.json | 1 + 56 files changed, 2470 insertions(+) create mode 100644 .claude/README.md create mode 100644 .claude/agents/abi-tracer.md create mode 100644 .claude/agents/explore-web3.md create mode 100644 .claude/agents/security-reviewer.md create mode 100644 .claude/agents/ui-verifier.md create mode 100644 .claude/commands/lint.md create mode 100644 .claude/commands/new-skill.md create mode 100644 .claude/commands/prime.md create mode 100644 .claude/commands/review-diff.md create mode 100644 .claude/commands/test.md create mode 100644 .claude/commands/typecheck.md create mode 100644 .claude/commands/verify.md create mode 100755 .claude/hooks/post-edit-typecheck.sh create mode 100755 .claude/hooks/stop-format-check.sh create mode 100644 .claude/settings.json create mode 100644 .claude/skills/contract-abis/SKILL.md create mode 100644 .claude/skills/contract-abis/abi-layout.md create mode 100644 .claude/skills/contract-abis/typing-patterns.md create mode 100644 .claude/skills/dashboard-data/SKILL.md create mode 100644 .claude/skills/dashboard-data/hook-patterns.md create mode 100644 .claude/skills/dashboard-data/query-keys.md create mode 100644 .claude/skills/defi-swap/SKILL.md create mode 100644 .claude/skills/defi-swap/permit2.md create mode 100644 .claude/skills/defi-swap/quote-polling.md create mode 100644 .claude/skills/defi-swap/swap-engine.md create mode 100644 .claude/skills/leaderboard-miles/SKILL.md create mode 100644 .claude/skills/leaderboard-miles/feature-flag.md create mode 100644 .claude/skills/leaderboard-miles/tiers.md create mode 100644 .claude/skills/next-app-router/SKILL.md create mode 100644 .claude/skills/next-app-router/api-routes.md create mode 100644 .claude/skills/next-app-router/env-validation.md create mode 100644 .claude/skills/next-app-router/server-actions.md create mode 100644 .claude/skills/skill-creator/SKILL.md create mode 100644 .claude/skills/skill-creator/anatomy.md create mode 100644 .claude/skills/skill-creator/checklist.md create mode 100644 .claude/skills/testing-vitest/SKILL.md create mode 100644 .claude/skills/testing-vitest/mocking-web3.md create mode 100644 .claude/skills/testing-vitest/test-layout.md create mode 100644 .claude/skills/ui-shadcn/SKILL.md create mode 100644 .claude/skills/ui-shadcn/accessibility.md create mode 100644 .claude/skills/ui-shadcn/component-conventions.md create mode 100644 .claude/skills/web3-wallet/SKILL.md create mode 100644 .claude/skills/web3-wallet/tx-confirmation.md create mode 100644 .claude/skills/web3-wallet/wagmi-patterns.md create mode 100644 AGENTS.md create mode 100644 CLAUDE.md create mode 100644 agent_docs/architecture.md create mode 100644 agent_docs/contracts-and-abis.md create mode 100644 agent_docs/env-vars.md create mode 100644 agent_docs/glossary.md create mode 100644 agent_docs/stack.md create mode 100644 agent_docs/testing.md create mode 100644 agent_docs/verification.md create mode 100644 agent_docs/web3-integration.md diff --git a/.claude/README.md b/.claude/README.md new file mode 100644 index 00000000..31f0946c --- /dev/null +++ b/.claude/README.md @@ -0,0 +1,62 @@ +# `.claude/` — agent infrastructure map + +This directory configures Claude Code for the Fast Protocol App. Nothing here is load-bearing for the app itself — it's a retrieval and attention-budget optimization layer. + +## Layout + +``` +.claude/ +├── README.md # You are here +├── settings.json # Hooks + permission allow/deny lists +├── skills/ # Domain skills (progressive disclosure) +│ ├── skill-creator/ +│ ├── next-app-router/ +│ ├── defi-swap/ +│ ├── web3-wallet/ +│ ├── dashboard-data/ +│ ├── leaderboard-miles/ +│ ├── contract-abis/ +│ ├── ui-shadcn/ +│ └── testing-vitest/ +├── agents/ # Subagent definitions (context firewalls) +│ ├── explore-web3.md +│ ├── security-reviewer.md +│ ├── ui-verifier.md +│ └── abi-tracer.md +├── commands/ # Slash commands +│ ├── prime.md +│ ├── verify.md +│ ├── typecheck.md +│ ├── lint.md +│ ├── test.md +│ ├── new-skill.md +│ └── review-diff.md +└── hooks/ # Shell scripts invoked by settings.json hooks + ├── post-edit-typecheck.sh + └── stop-format-check.sh +``` + +## Design principles (from the research corpus) + +1. **Progressive disclosure.** SKILL.md metadata is always loaded; body loads when triggered; reference files load when explicitly needed. +2. **Silent success, loud failure.** Hooks print nothing when clean. +3. **Pointers over copies.** All content cites `src/path/file.ts:42`; nothing is inlined. +4. **Subagents as firewalls.** Reading many files happens in a subagent, not the parent context. +5. **Verification is a first-class primitive.** `/verify` is the single most important command here. + +## Editing + +- Adding a skill → use `/new-skill `, which invokes `skill-creator`. +- Adding a hook → edit `settings.json` + drop a script in `hooks/`; keep it silent-on-success. +- Adding a subagent → drop a new `.md` under `agents/` with `name`/`description`/`tools`/`model` frontmatter. +- Adding a command → drop a new `.md` under `commands/`; body is the prompt. + +Changes here should be reviewed for **budget impact** — every added skill/tool consumes system-prompt tokens for every future session. + +## Local overrides + +`.claude/settings.local.json` is gitignored. Use it for personal preferences (extra permissions, model overrides). Do not put team-shared config there. + +## Plugins & MCP servers + +MCP servers are user-level, not repo-level. This repo does not require any. If you connect one for work here (e.g., Linear), prune unused tools — tool descriptions are a tax on every turn. See the "instruction budget" section of the plan at `/Users/jasonschwarz/.claude/plans/inherited-herding-penguin.md`. diff --git a/.claude/agents/abi-tracer.md b/.claude/agents/abi-tracer.md new file mode 100644 index 00000000..b70b677f --- /dev/null +++ b/.claude/agents/abi-tracer.md @@ -0,0 +1,48 @@ +--- +name: abi-tracer +description: Given a contract name, ABI function, or address, return every call site across the app grouped by layer (hook / component / server / lib). Read-only research agent for contract refactors and ABI upgrades. +tools: Read, Grep, Glob +model: sonnet +--- + +You are a read-only code-graph agent specialized in contract / ABI tracing. + +## Goal + +Given a query like "find all call sites for `Settlement.deposit`" or "where is the Permit2 address used", return a grouped list of call sites. + +## Workflow + +1. Start at the ABI binding (e.g., `src/lib/fast-settlement-v3-abi.ts`, `src/lib/weth-abi.ts`, `src/lib/erc20-abi.ts`, `src/lib/contract-config.tsx`). +2. `Grep` for the function name or address token across `src/`. +3. Group results by layer: + - **Hooks** (`src/hooks/`) + - **Components** (`src/components/`) + - **Server routes / actions** (`src/app/api/`, `src/actions/`) + - **Lib helpers** (`src/lib/`) +4. For each call site, note `file:line` and the enclosing function name. + +## Output + +``` +Contract: +Function: +Address config: src/lib/contract-config.tsx: + +Call sites: + hooks: + src/hooks/use-foo.ts:42 (inside useFoo → useWriteContract) + ... + components: + ... + server: + ... + lib: + ... +``` + +## Rules + +- Do not open files you don't need. Grep first. +- If the function name is common (e.g., `deposit`), also check import paths to filter out same-named functions in other ABIs. +- Note ambiguity explicitly — if `deposit` appears in both `WETH_ABI` and `SomethingElseABI`, split them. diff --git a/.claude/agents/explore-web3.md b/.claude/agents/explore-web3.md new file mode 100644 index 00000000..5a2ef1ff --- /dev/null +++ b/.claude/agents/explore-web3.md @@ -0,0 +1,33 @@ +--- +name: explore-web3 +description: Research-only subagent for tracing web3 call sites, hook composition, or contract usage across the codebase. Delegate here when the answer requires reading many files and you want to keep the parent context clean. +tools: Read, Grep, Glob, Bash +model: sonnet +--- + +You are a read-only research agent scoped to this Next.js + wagmi + viem repo. You return **condensed findings with `file:line` citations** — never raw dumps. + +## Goal +Answer the parent agent's question about how web3 state, contracts, or hooks are wired in this codebase. + +## Rules +- Read-only. You may not Edit, Write, or run destructive Bash. +- Prefer `Grep` / `Glob` over reading whole files. Only open a file when you need the exact lines. +- When you do read a file, note only the relevant lines and cite them. +- Cap your investigation at ~15 files read. If you need more, return what you have and note the remaining scope. + +## Output format +Return a structured summary: + +1. **TL;DR** — one sentence answering the question. +2. **Key files** — bulleted list of `path:line` with a one-line note each. +3. **Call graph** (if relevant) — A → B → C with paths. +4. **Open questions** — anything you can't answer from the code alone. + +Do not paste code bodies. Do not summarize things the parent can look up in `agent_docs/architecture.md`. + +## Typical tasks +- "Find every call site for ``" +- "Trace the swap flow from input to on-chain submission" +- "List all hooks that invalidate query key X" +- "Find where env var Y is consumed" diff --git a/.claude/agents/security-reviewer.md b/.claude/agents/security-reviewer.md new file mode 100644 index 00000000..273f0eab --- /dev/null +++ b/.claude/agents/security-reviewer.md @@ -0,0 +1,55 @@ +--- +name: security-reviewer +description: Security-focused reviewer for web3 + Next.js changes in this repo. Delegate when reviewing a diff, PR, or set of files for security issues. Reviews are read-only; no code edits. +tools: Read, Grep, Glob, Bash +model: opus +--- + +You are a senior security engineer reviewing code in a Next.js 15 + wagmi/viem DeFi application. You do not write or edit code — you produce a review. + +## Focus areas (in priority order) + +1. **Secrets leakage** + - Server env vars (`env.*` via `@/env/server`) reaching a `"use client"` file + - `NEXT_PUBLIC_` vars holding anything that looks like a real secret + - `console.log` / analytics / error reporting carrying signed payloads, private keys, seed phrases, auth tokens + - Raw API keys in commits + +2. **Signing and transaction safety** + - Permit2: deadline presence, nonce freshness, spender validation, amount bounds + - Slippage bounds respected in swap flow (see `src/lib/swap-constants.ts`, `quote-guard.ts`) + - No "unlimited" token approvals + - Tx errors normalized via `src/lib/transaction-errors.ts` — no raw RPC errors surfaced + +3. **Server-side** + - Server actions and API routes validate input with Zod before side effects + - No `process.env` reads (only `@/env/server`) + - Cron routes gated with a bearer token + - No SSRF-inviting fetches (user-supplied URLs passed to `fetch` server-side) + - No SQL injection via `pg` (prepared statements / parameterized queries) + +4. **Client-side** + - No `dangerouslySetInnerHTML` without sanitization + - No reflected URL params rendered without escaping + - No postMessage / window.ethereum direct access + - localStorage not holding secrets + +5. **Dependency surface** + - New deps added? Check they're reputable, pinned, and not duplicating existing functionality. + +## Output + +Return a bulleted list grouped by severity: + +- **High** (fix before merge) +- **Medium** (fix soon) +- **Low / nit** (worth noting) +- **Out of scope / clear** (explicit all-clears are useful for reviewer confidence) + +Each finding: `path:line` + one-sentence description + suggested fix. + +## Rules + +- Do not edit code. Your output is the review. +- Do not re-verify things handled elsewhere (lint, typecheck) unless you find a specific gap. +- Be explicit about what you did **not** check. diff --git a/.claude/agents/ui-verifier.md b/.claude/agents/ui-verifier.md new file mode 100644 index 00000000..8d058fdc --- /dev/null +++ b/.claude/agents/ui-verifier.md @@ -0,0 +1,30 @@ +--- +name: ui-verifier +description: Boots the dev server and verifies UI changes by loading routes, optionally taking screenshots or driving the page. Use when a UI change needs visual confirmation beyond typecheck/lint/tests. +tools: Read, Bash, Grep, Glob +model: sonnet +--- + +You are a UI verification agent. Your job is to prove that a rendered page matches intent — not to edit code. + +## Workflow + +1. Ensure nothing else is on port 3000: `lsof -i :3000 || true`. +2. Start the dev server in the background: `npm run dev &` (or use existing Bash background feature). +3. Poll `curl -sf http://localhost:3000/` until HTTP 200 (or fail after ~60s). +4. For each route under review, `curl http://localhost:3000/` and check for expected markers in the HTML. +5. If the Claude-in-Chrome extension is available, drive the page and report visual state. +6. Stop the dev server when done (`kill %1` or equivalent). + +## Output + +- **Routes checked** — list with status (200 / 404 / 500) and any content-match result. +- **Observations** — anything surprising (missing provider, hydration warning, console error). +- **Can't verify** — explicit list of things you couldn't check (no browser, no auth, etc.). + +## Rules + +- Do not edit code. If you find a bug, report it — the parent fixes. +- Do not leave the dev server running. Clean up before returning. +- Do not fabricate screenshots. If the tooling isn't available, say so. +- Treat console errors as signal, not noise — include them in the report. diff --git a/.claude/commands/lint.md b/.claude/commands/lint.md new file mode 100644 index 00000000..71d1f0aa --- /dev/null +++ b/.claude/commands/lint.md @@ -0,0 +1,11 @@ +--- +description: Run ESLint (next lint). +--- + +Run: + +```bash +npm run lint +``` + +On success, print "lint: ok". On failure, list the rule + file + line for each violation. `eslint-plugin-only-warn` means most violations print as warnings — still surface them. diff --git a/.claude/commands/new-skill.md b/.claude/commands/new-skill.md new file mode 100644 index 00000000..ef414a17 --- /dev/null +++ b/.claude/commands/new-skill.md @@ -0,0 +1,16 @@ +--- +description: Scaffold a new skill in .claude/skills/ following the skill-creator conventions. Pass the skill name as an argument (kebab-case). +--- + +Scaffold a new skill named `$ARGUMENTS`. + +1. Load `.claude/skills/skill-creator/SKILL.md` and its `anatomy.md` / `checklist.md`. +2. Create `.claude/skills/$ARGUMENTS/SKILL.md` with the frontmatter template, with `name` matching the directory name and a **placeholder** description the user must fill in. +3. Leave the body as a template using the section order from `anatomy.md`. +4. Print the checklist from `.claude/skills/skill-creator/checklist.md` and ask the user for: + - the real `description` (the trigger) + - the key files this skill should point at + - any sibling reference files to scaffold +5. Do not commit. The user reviews and edits before merging. + +If the directory already exists, stop and ask the user whether to replace or edit. diff --git a/.claude/commands/prime.md b/.claude/commands/prime.md new file mode 100644 index 00000000..9aad5ac5 --- /dev/null +++ b/.claude/commands/prime.md @@ -0,0 +1,17 @@ +--- +description: Prime a fresh session with the project mental model. Reads the orientation files deterministically. +--- + +Read these files in order and summarize back to the user in 5 bullets what this project is, what matters, and how to verify work: + +1. `CLAUDE.md` +2. `AGENTS.md` +3. `agent_docs/stack.md` +4. `agent_docs/architecture.md` +5. `agent_docs/verification.md` + +Do **not** read skills, agent definitions, or the `docs/` folder — those are Tier-2/3 and load on demand. + +Then list the available slash commands (`/verify`, `/typecheck`, `/lint`, `/test`, `/new-skill`, `/review-diff`) and skills by name (from `.claude/skills/`). Do not load their bodies. + +End with: "Ready. What's the task?" diff --git a/.claude/commands/review-diff.md b/.claude/commands/review-diff.md new file mode 100644 index 00000000..ddf17441 --- /dev/null +++ b/.claude/commands/review-diff.md @@ -0,0 +1,17 @@ +--- +description: Review the current branch's diff against main using the security-reviewer subagent. Read-only. +--- + +1. Show a brief summary of what's changed: + ```bash + git fetch origin main --quiet + git diff --stat origin/main...HEAD + ``` + +2. Invoke the `security-reviewer` subagent with this prompt: + + > Review the diff of the current branch (`git diff origin/main...HEAD`) for security issues. Focus on the priority list in `.claude/agents/security-reviewer.md`. Return findings grouped by severity with `file:line` citations. + +3. Relay the subagent's findings to the user verbatim (do not re-summarize). + +4. Do not edit any code. This command is read-only review. diff --git a/.claude/commands/test.md b/.claude/commands/test.md new file mode 100644 index 00000000..2d111d0e --- /dev/null +++ b/.claude/commands/test.md @@ -0,0 +1,15 @@ +--- +description: Run the Vitest suite in single-pass mode. Never use watch mode from an agent. +--- + +Run: + +```bash +npm run test:run +``` + +On success, print "tests: ok" plus the pass count. On failure, print only the failing test names + the error messages (not full stack traces — those flood context). + +If the user asks for a specific file, append it: `npm run test:run -- `. + +Do **not** run `npm run test` (watch mode) — it never exits. diff --git a/.claude/commands/typecheck.md b/.claude/commands/typecheck.md new file mode 100644 index 00000000..e45c3ab9 --- /dev/null +++ b/.claude/commands/typecheck.md @@ -0,0 +1,11 @@ +--- +description: Run TypeScript typecheck (tsc --noEmit). +--- + +Run: + +```bash +npm run typecheck +``` + +On success, print "typecheck: ok". On failure, print the compiler errors and stop — do not attempt fixes without user direction. diff --git a/.claude/commands/verify.md b/.claude/commands/verify.md new file mode 100644 index 00000000..88cc7158 --- /dev/null +++ b/.claude/commands/verify.md @@ -0,0 +1,15 @@ +--- +description: Run the full verification stack — typecheck, lint, tests — and report results. +--- + +Run these in order. Stop on the first failure and print its output. On success of all three, print "verify: ok". + +```bash +npm run typecheck +npm run lint +npm run test:run +``` + +If any step fails, do not attempt to fix it inline — report the failure and wait for instruction. + +Do not run `npm run build` unless the user explicitly asks. It's slow and the other checks usually catch regressions. diff --git a/.claude/hooks/post-edit-typecheck.sh b/.claude/hooks/post-edit-typecheck.sh new file mode 100755 index 00000000..187316e3 --- /dev/null +++ b/.claude/hooks/post-edit-typecheck.sh @@ -0,0 +1,38 @@ +#!/usr/bin/env bash +# PostToolUse hook: after Edit/Write/MultiEdit on a TypeScript file, run typecheck. +# Silent on success, surfaces errors and exits 2 on failure (so Claude sees them). +# +# Claude Code passes hook input on stdin as JSON. We read tool_input.file_path +# to decide whether this edit touched TypeScript. If jq is unavailable, fall +# back to matching raw stdin. + +set -u +INPUT="$(cat || true)" + +path="" +if command -v jq >/dev/null 2>&1; then + path="$(printf '%s' "$INPUT" | jq -r '.tool_input.file_path // empty' 2>/dev/null || true)" +fi + +# Match .ts/.tsx only; skip .d.ts since they're generated. +if [[ -z "$path" ]]; then + if ! printf '%s' "$INPUT" | grep -qE '\.tsx?"'; then + exit 0 + fi +else + case "$path" in + *.ts|*.tsx) ;; + *) exit 0 ;; + esac +fi + +# Run typecheck from the repo root. +cd "$(git rev-parse --show-toplevel 2>/dev/null || echo .)" || exit 0 + +if output="$(npx --no-install tsc --noEmit 2>&1)"; then + exit 0 +fi + +# Failure: print errors to stderr and exit 2 so Claude receives them. +printf 'typecheck failed:\n%s\n' "$output" >&2 +exit 2 diff --git a/.claude/hooks/stop-format-check.sh b/.claude/hooks/stop-format-check.sh new file mode 100755 index 00000000..711f0a4d --- /dev/null +++ b/.claude/hooks/stop-format-check.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env bash +# Stop hook: when Claude finishes a turn, verify formatting is clean. +# Silent on success; lists offending files and exits 2 on failure. + +set -u +cd "$(git rev-parse --show-toplevel 2>/dev/null || echo .)" || exit 0 + +# Only run if package.json has a format:check script (it does in this repo). +if ! grep -q '"format:check"' package.json 2>/dev/null; then + exit 0 +fi + +if output="$(npm run --silent format:check 2>&1)"; then + exit 0 +fi + +printf 'format check failed (run `npm run format` to fix):\n%s\n' "$output" >&2 +exit 2 diff --git a/.claude/settings.json b/.claude/settings.json new file mode 100644 index 00000000..c6feef1f --- /dev/null +++ b/.claude/settings.json @@ -0,0 +1,64 @@ +{ + "$schema": "https://json.schemastore.org/claude-code-settings.json", + "permissions": { + "allow": [ + "Bash(npm run lint)", + "Bash(npm run lint:*)", + "Bash(npm run test)", + "Bash(npm run test:run)", + "Bash(npm run test:coverage)", + "Bash(npm run typecheck)", + "Bash(npm run format)", + "Bash(npm run format:check)", + "Bash(npx tsc --noEmit)", + "Bash(npx tsc --noEmit:*)", + "Bash(git status)", + "Bash(git diff:*)", + "Bash(git log:*)", + "Bash(git show:*)", + "Bash(git branch:*)", + "Bash(ls:*)", + "Bash(cat:*)", + "Bash(node -v)", + "Bash(npm -v)", + "Bash(.claude/hooks/*.sh)" + ], + "deny": [ + "Bash(rm -rf:*)", + "Bash(git push --force:*)", + "Bash(git push -f:*)", + "Bash(git reset --hard:*)", + "Write(./.env)", + "Write(./.env.local)", + "Write(./.env.production)", + "Write(./.env.development)", + "Edit(./.env)", + "Edit(./.env.local)", + "Edit(./.env.production)", + "Edit(./.env.development)" + ] + }, + "hooks": { + "PostToolUse": [ + { + "matcher": "Edit|Write|MultiEdit", + "hooks": [ + { + "type": "command", + "command": ".claude/hooks/post-edit-typecheck.sh" + } + ] + } + ], + "Stop": [ + { + "hooks": [ + { + "type": "command", + "command": ".claude/hooks/stop-format-check.sh" + } + ] + } + ] + } +} diff --git a/.claude/skills/contract-abis/SKILL.md b/.claude/skills/contract-abis/SKILL.md new file mode 100644 index 00000000..80d0fc1f --- /dev/null +++ b/.claude/skills/contract-abis/SKILL.md @@ -0,0 +1,61 @@ +--- +name: contract-abis +description: Use when working with the ABIs in contracts-abi/, the typed bindings in src/lib/*-abi.ts and src/lib/fast-settlement-*.ts, or when tracing contract calls across the app. Use also when an ABI changes upstream and the app needs to sync. +--- + +# Contract ABIs + +How the app consumes Fast Protocol contract ABIs and keeps typed bindings in sync. + +## When to use + +- An ABI changed in `contracts-abi/abi/` +- A new contract method needs to be called from the app +- Tracing "where do we call function X" across hooks and components +- Updating `src/lib/contract-config.tsx` + +## Key files + +- ABI source: `contracts-abi/abi/` (JSON) +- Typed bindings (hand-maintained, const-asserted): + - `src/lib/fast-settlement-v2-1.ts` + - `src/lib/fast-settlement-v3-abi.ts` + - `src/lib/weth-abi.ts` + - `src/lib/erc20-abi.ts` +- Address + ABI composition: `src/lib/contract-config.tsx` +- Server-side helpers: `src/lib/contract-server.ts` + +## References + +- ABI directory layout: [`abi-layout.md`](./abi-layout.md) +- Typing patterns (viem `const` ABIs): [`typing-patterns.md`](./typing-patterns.md) +- How contracts & abis relate: `agent_docs/contracts-and-abis.md` + +## Workflow + +### When an ABI changes + +1. Drop the new JSON into `contracts-abi/abi/`. +2. Update the corresponding `*-abi.ts` in `src/lib/` (or the settlement file) — keep the `as const` assertion. +3. Use the `abi-tracer` subagent to find call sites: `Ask abi-tracer: "find every call site for function "`. +4. Update callers. +5. Run `/verify`. The compiler will complain about arg/return shape mismatches — fix them, don't cast-away. + +### When adding a new method call + +1. Ensure the method exists in the `*-abi.ts` binding (if not, add it from the JSON). +2. Use wagmi's `useReadContract` / `useWriteContract` with the `abi` and `functionName` typed against the const ABI. +3. Add the address to `src/lib/contract-config.tsx` if it's a new contract. + +## Guardrails + +- **Never cast an ABI to `any`.** viem's type inference depends on the const shape. +- **Never duplicate an ABI inline** in a hook. Import from `src/lib/*-abi.ts`. +- **Do not assume v2.1 and v3 are interchangeable.** They have different method surfaces; the config resolves the target. +- **Addresses belong in config**, never in a component or hook. +- **Do not edit `contracts-abi/clients/`** — those are Go clients for other services; not the web app. + +## Verification + +- `/verify` +- `npm run build` — catches ABI typing regressions across the server/client boundary. diff --git a/.claude/skills/contract-abis/abi-layout.md b/.claude/skills/contract-abis/abi-layout.md new file mode 100644 index 00000000..c09799bf --- /dev/null +++ b/.claude/skills/contract-abis/abi-layout.md @@ -0,0 +1,32 @@ +# `contracts-abi/` layout + +``` +contracts-abi/ +├── abi/ ← JSON ABIs — authoritative for the web app +├── clients/ ← Go clients — NOT for web consumption +├── go.mod / go.sum +└── script.sh ← ABI generation script (Go-side) +``` + +## `abi/` — what the web app consumes + +JSON files, one per contract interface. The web app does not read JSON directly; typed bindings in `src/lib/*-abi.ts` are hand-maintained to mirror them (`as const` for viem's type inference). + +## `clients/` — off-limits for the web app + +Generated Go bindings used by backend services. Do not import, regenerate, or modify these from the Next.js codebase. + +## Regenerating clients + +If you need to regenerate Go clients, run `contracts-abi/script.sh` from that directory — outside the scope of web-app agent work. + +## Version skew + +Tables to keep aligned when an ABI changes: + +| Layer | File(s) | +|---|---| +| Raw JSON | `contracts-abi/abi/.json` | +| TS binding | `src/lib/-abi.ts` or `fast-settlement-*.ts` | +| Address | `src/lib/contract-config.tsx` | +| Call sites | hooks, components, server helpers (use `abi-tracer`) | diff --git a/.claude/skills/contract-abis/typing-patterns.md b/.claude/skills/contract-abis/typing-patterns.md new file mode 100644 index 00000000..6feb984e --- /dev/null +++ b/.claude/skills/contract-abis/typing-patterns.md @@ -0,0 +1,56 @@ +# Typing patterns (viem + wagmi) + +viem infers types from `as const` ABIs. Losing the const assertion breaks inference and falls back to `any`. + +## Pattern: typed ABI + +```ts +// src/lib/weth-abi.ts +export const WETH_ABI = [ + { + type: 'function', + name: 'deposit', + stateMutability: 'payable', + inputs: [], + outputs: [], + }, + // ... +] as const +``` + +`as const` is non-negotiable. Without it, `functionName` is `string` and args become `unknown[]`. + +## Pattern: using with wagmi + +```ts +import { WETH_ABI } from '@/lib/weth-abi' + +const { writeContractAsync } = useWriteContract() +await writeContractAsync({ + abi: WETH_ABI, + address: WETH_ADDRESS, + functionName: 'deposit', // autocompletes + args: [], // typed from ABI + value: parseEther('1'), // payable methods +}) +``` + +## Pattern: subset ABI + +If you only need one method from a larger interface, inline the method in a const and use it — do not flatten the whole ABI: + +```ts +const DEPOSIT_ABI = [ + { type: 'function', name: 'deposit', stateMutability: 'payable', inputs: [], outputs: [] }, +] as const +``` + +## Anti-patterns + +- `abi: WETH_ABI as Abi` — throws away inference. Don't cast. +- Spreading ABIs (`[...ABI_A, ...ABI_B]`) inline — loses const-ness unless wrapped in a new `as const`. +- Using `ethers`'s `Contract` class for new code — prefer viem + wagmi. `ethers` is present only because some legacy paths use it. + +## Multiple contract versions + +`fast-settlement-v2-1.ts` and `fast-settlement-v3-abi.ts` are separate files on purpose — they have diverging method surfaces. `src/lib/contract-config.tsx` picks the version for the current deployment. Never merge them. diff --git a/.claude/skills/dashboard-data/SKILL.md b/.claude/skills/dashboard-data/SKILL.md new file mode 100644 index 00000000..07e5899c --- /dev/null +++ b/.claude/skills/dashboard-data/SKILL.md @@ -0,0 +1,54 @@ +--- +name: dashboard-data +description: Use when adding or modifying hooks under src/hooks/, particularly dashboard/user-data hooks and anything using TanStack Query. Covers query-key conventions, prefetching (use-page-prefetch, use-prefetch-dashboard), and where to put shared helpers. +--- + +# Dashboard data (hooks & TanStack Query) + +How this repo models server state. Follow existing patterns; do not introduce Redux / SWR / Jotai. + +## When to use + +- Adding or editing a hook in `src/hooks/` +- Introducing a new TanStack Query query or mutation +- Changing prefetching behavior on any route +- Debugging stale or flickering dashboard data + +## Key files + +- Barrel: `src/hooks/index.ts` +- Dashboard surface: `src/hooks/use-dashboard-data.ts`, `use-prefetch-dashboard.ts`, `use-dashboard-tasks.ts` +- User state: `src/hooks/use-user-points.ts`, `use-user-swaps.ts` +- Prefetch helper: `src/hooks/use-page-prefetch.ts` +- Query client: mounted in `src/components/providers.tsx` + +## References + +- Hook patterns: [`hook-patterns.md`](./hook-patterns.md) +- Query keys: [`query-keys.md`](./query-keys.md) + +## Workflow + +1. Check `src/hooks/index.ts` for an existing hook before creating a new one. +2. For a new query: + - Name: `use-[-action]`. Filenames in kebab-case. + - Query key: stable array, starts with the domain prefix (see `query-keys.md`). + - `queryFn` is pure — no side effects, returns raw data. + - `select` for derived state, not transforms that should happen in the component. + - `staleTime` / `gcTime` chosen for the data's freshness requirements. +3. For server writes, use mutations with `onSuccess` invalidation of affected query keys. +4. If the hook reads wallet state, gate with `enabled: Boolean(address)`. +5. Add the export to `src/hooks/index.ts`. + +## Guardrails + +- Never fire a query in render without `enabled: ...` when it depends on wallet / auth state. +- Never share a query key between different data shapes — use distinct prefixes. +- Never put mutable refs in query keys — keys must serialize deterministically. +- Avoid `refetchInterval` unless the data is genuinely time-sensitive. Prefer event-driven invalidation. +- Do not add a new `QueryClient` — there's one, in `providers.tsx`. + +## Verification + +- `/verify` +- Inspect TanStack Query devtools (if enabled in dev) — look for unexpected retries, stale caches, duplicate keys. diff --git a/.claude/skills/dashboard-data/hook-patterns.md b/.claude/skills/dashboard-data/hook-patterns.md new file mode 100644 index 00000000..0bb87983 --- /dev/null +++ b/.claude/skills/dashboard-data/hook-patterns.md @@ -0,0 +1,65 @@ +# Hook patterns + +## Shape of a data hook + +```ts +// src/hooks/use-example.ts +import { useQuery } from '@tanstack/react-query' +import { useAccount } from 'wagmi' + +export function useExample() { + const { address } = useAccount() + return useQuery({ + queryKey: ['example', address], // stable, address-scoped + queryFn: () => fetchExample(address!), // pure + enabled: Boolean(address), // don't fire without deps + staleTime: 30_000, // tune per data + }) +} +``` + +## Shape of a mutation hook + +```ts +// src/hooks/use-example-mutation.ts +import { useMutation, useQueryClient } from '@tanstack/react-query' + +export function useExampleMutation() { + const qc = useQueryClient() + return useMutation({ + mutationFn: (input: Input) => postExample(input), + onSuccess: () => { + qc.invalidateQueries({ queryKey: ['example'] }) + }, + }) +} +``` + +## Composition hooks (hooks that compose other hooks) + +Many swap hooks compose multiple primitives. Rules: + +- The outer hook is the orchestrator; inner hooks fire independently. +- Return a discriminated union for state: `{ status: 'idle' } | { status: 'loading' } | ...`, not loose booleans. +- Isolate side effects in `useEffect`; never fire a side effect in the render path. + +## Reading wagmi inside a hook + +- Import `useAccount`, `useChainId`, `useBalance`, etc. — don't read from a context. +- Gate downstream queries on `isConnected` or `Boolean(address)`. + +## Prefetching + +For routes with predictable next-steps (dashboard → swap, etc.): + +```ts +// use-page-prefetch / use-prefetch-dashboard patterns +const qc = useQueryClient() +qc.prefetchQuery({ queryKey: [...], queryFn: ... }) +``` + +Prefetch on hover or on route-change intent — not on every render. + +## Hooks that aren't data hooks + +Utility hooks (`use-mobile`, `use-page-active`, `use-toast`) don't use TanStack Query. Keep them small, pure, and export a stable API. diff --git a/.claude/skills/dashboard-data/query-keys.md b/.claude/skills/dashboard-data/query-keys.md new file mode 100644 index 00000000..6ede84dd --- /dev/null +++ b/.claude/skills/dashboard-data/query-keys.md @@ -0,0 +1,55 @@ +# Query keys + +## Convention + +Every TanStack Query key is an array starting with a domain-scoped string: + +```ts +['swap', 'quote', { fromToken, toToken, amount, chainId }] +['dashboard', 'points', address] +['leaderboard', 'tier', 'gold', chainId] +['miles', 'estimated', address] +['tokens', 'balances', address, chainId] +['barter', 'supported-tokens'] +['fuul', 'miles-leaderboard'] +``` + +Rules: + +1. **First element** = domain name, matching the hook filename prefix where possible. +2. **Second element** = sub-noun or verb. +3. **Remaining elements** = dependencies, in stable order. +4. Use **objects** only when you have 3+ related params; otherwise list them. +5. Never include functions, Dates (stringify to ISO), or non-stable refs. + +## Invalidation patterns + +```ts +// Invalidate a whole domain +qc.invalidateQueries({ queryKey: ['dashboard'] }) + +// Invalidate one specific query +qc.invalidateQueries({ queryKey: ['dashboard', 'points', address] }) + +// Predicate-based +qc.invalidateQueries({ predicate: (q) => q.queryKey[0] === 'dashboard' }) +``` + +## Shared key factory (recommended) + +When a domain has many queries, define a factory: + +```ts +// src/lib/query-keys.ts (add if/when needed) +export const dashboardKeys = { + all: ['dashboard'] as const, + points: (address: string) => ['dashboard', 'points', address] as const, + swaps: (address: string) => ['dashboard', 'swaps', address] as const, +} +``` + +This prevents key drift across hooks. Do not create this pre-emptively — add it when you find yourself repeating keys in three+ places. + +## When you break the convention + +Rare, but if an external SDK (Fuul, Barter) returns data under its own key space and you want cache sharing, document the exception at the top of the hook file. diff --git a/.claude/skills/defi-swap/SKILL.md b/.claude/skills/defi-swap/SKILL.md new file mode 100644 index 00000000..a0cc70b5 --- /dev/null +++ b/.claude/skills/defi-swap/SKILL.md @@ -0,0 +1,58 @@ +--- +name: defi-swap +description: Use when editing the swap flow — quoting, slippage, permit2, WETH wrap/unwrap, ETH-path tx construction, Fast RPC quote polling, or anything under src/components/swap or src/hooks/use-swap-*. Also for tx-confirmation UX and preconfirm handling. +--- + +# DeFi swap + +The swap engine is the critical path of this app. Changes here can move user funds — be exact. + +## When to use + +- Editing any file in `src/components/swap/**` +- Editing any hook matching `src/hooks/use-swap-*.ts` or `use-permit2-*`, `use-weth-wrap-unwrap` +- Editing `src/lib/swap-logic/`, `swap-constants.ts`, `swap-events.ts`, `swap-server.ts`, `quote-guard.ts` +- Changing slippage behavior, permit2 deadlines, or WETH conversions + +## Key files + +- Engine: `src/lib/swap-logic/token-list.ts`, `src/lib/swap-server.ts`, `src/lib/swap-constants.ts`, `src/lib/swap-events.ts` +- Hooks: `src/hooks/use-swap-form.ts`, `use-swap-quote.ts`, `use-swap-intent.ts`, `use-swap-slippage.ts`, `use-swap-confirmation.ts` +- Guards: `src/lib/quote-guard.ts`, `src/hooks/use-quote-guard-config.ts` +- UI: `src/components/swap/SwapInterface.tsx`, `SwapForm.tsx`, `SellCard.tsx`, `BuyCard.tsx`, `ActionButton.tsx`, `TransactionSettings.tsx` +- Tx construction: `src/lib/eth-path-tx.ts`, `src/hooks/use-eth-path-gas-estimate.ts` +- State: `src/stores/swapToastStore.ts`, `src/components/swap/SwapToast*.tsx` +- Types: `src/types/swap.ts` + +## References + +- Engine mechanics: [`swap-engine.md`](./swap-engine.md) +- Permit2: [`permit2.md`](./permit2.md) +- Quote polling: [`quote-polling.md`](./quote-polling.md) +- Human deep-dive: `docs/swap-interface.md` +- Tx confirmation flow: `docs/tx-confirmation-flow.md` +- Quote freshness: `docs/quote-polling-idle-detection.md` + +## Workflow + +1. Read `docs/swap-interface.md` first if you're unfamiliar with the flow. +2. Identify which stage of the flow the change sits in: form input → quote → intent → permit2 approval → confirmation → preconfirm → settlement. +3. Trace existing hook composition before adding a new hook — the flow is chained intentionally. +4. Mirror existing patterns for error handling (see `src/lib/transaction-errors.ts`). +5. Run `npm run test:run` — swap logic has tests in `src/lib/__tests__/`. +6. Verify in dev: run through the swap flow manually, watch the swap-toast events. + +## Guardrails + +- **Never loosen slippage bounds** without explicit user request. Default constraints are in `src/lib/swap-constants.ts`. +- **Respect permit2 deadlines.** See [permit2.md](./permit2.md). +- **Do not skip `quote-guard`** for "simplicity." Stale quotes = user loss. +- **Do not log signed payloads** anywhere — analytics, console, errors. +- **Preserve existing error-normalization** in `src/lib/transaction-errors.ts`. Surfacing raw provider errors to users is a regression. +- **Test ETH-path and ERC20-path separately.** `use-eth-path-gas-estimate` and the regular path diverge. + +## Verification + +- `/verify` for types + lint + tests. +- Manual: run `npm run dev`, perform a real swap on a testnet, watch the toast sequence. +- Edge cases to touch: slippage at limit, permit2 expiring mid-flow, WETH → ETH unwrap, ETH → WETH wrap, network switch mid-quote. diff --git a/.claude/skills/defi-swap/permit2.md b/.claude/skills/defi-swap/permit2.md new file mode 100644 index 00000000..2f01802a --- /dev/null +++ b/.claude/skills/defi-swap/permit2.md @@ -0,0 +1,38 @@ +# Permit2 + +Uniswap's signature-based approval standard. One signed permit authorizes many future transfers to a spender until the deadline expires or the nonce is invalidated. + +## Why this matters + +- Cheaper: one permit signature replaces per-swap `approve` transactions. +- Safer: deadlines limit exposure if a signature leaks. +- Correctness-critical: a wrong nonce or expired deadline silently fails the swap at settlement. + +## Files + +- `src/lib/permit2-utils.ts` — signature construction, typed-data helpers +- `src/hooks/use-permit2-allowance.ts` — checks whether a permit is needed +- `src/hooks/use-permit2-nonce.ts` — fetches the next nonce + +## Invariants + +1. **Deadline ≠ optional.** Always set a bounded deadline (typically minutes, not hours). The guard logic compares against chain time. +2. **Nonce freshness.** Always fetch nonce as close to signing as possible. A cached nonce causes silent failures. +3. **Spender address** must match the settlement contract the app is targeting (see `src/lib/contract-config.tsx`). Cross-contract permits are not interchangeable. +4. **Signature is not a transaction.** Never log, transmit, or persist it beyond the swap-execution path. Drop it from state as soon as the tx is submitted. +5. **Amount vs max-amount.** The app generally signs the exact amount for the current swap. Do not introduce "unlimited" permits without an explicit product decision. + +## When permit2 changes + +If `src/lib/contract-config.tsx` or the Permit2 address changes: + +1. Update `permit2-utils.ts` typed data. +2. Update allowance hook if the interface diverged. +3. Run all swap tests. +4. Manually test a signed swap on testnet before merging. + +## Anti-patterns + +- Do not bypass `use-permit2-allowance` — the "if I just sign every time" pattern leaks signatures and wastes UX. +- Do not hardcode `MaxUint256` deadlines. +- Do not share nonces across different spenders. diff --git a/.claude/skills/defi-swap/quote-polling.md b/.claude/skills/defi-swap/quote-polling.md new file mode 100644 index 00000000..66ff7255 --- /dev/null +++ b/.claude/skills/defi-swap/quote-polling.md @@ -0,0 +1,37 @@ +# Quote polling & idle detection + +Quotes are perishable. Poll, but gate polling on user presence and stale detection. + +## Source docs + +`docs/quote-polling-idle-detection.md` is the human-facing deep-dive — read it first for rationale. + +## Files + +- `src/hooks/use-swap-quote.ts` — the polling hook +- `src/hooks/use-quote-guard-config.ts` — runtime polling config +- `src/hooks/use-page-active.ts` — page-visibility / idle detection +- `src/lib/quote-guard.ts` — staleness evaluation + +## Design + +1. Poll interval is adaptive. When the page is hidden or the user is idle, the interval backs off. +2. Every quote carries a timestamp and expected validity window. +3. Before showing a quote or enabling the action button, `quote-guard.ts` checks: + - Is the quote fresher than the max-age? + - Has the input/output amount deviated beyond the configured threshold since the quote was issued? + - Are slippage bounds still satisfied? +4. Stale → quote is discarded, action button disabled, UI re-fetches. + +## Touching the polling interval + +Be cautious. Too fast = RPC load + rate limits. Too slow = stale quotes, user friction. + +- Prefer tuning thresholds in `use-quote-guard-config.ts` (runtime-configurable) over hardcoded intervals. +- Changes here affect real user cost — test with a throttled network and an idle tab. + +## Anti-patterns + +- Don't disable the guard "to get a test to pass" — rewrite the test. +- Don't poll when the tab is hidden at the same rate as when visible. +- Don't silently refresh the quote mid-sign — the user is looking at a specific number; jumping it is worse than failing the swap. diff --git a/.claude/skills/defi-swap/swap-engine.md b/.claude/skills/defi-swap/swap-engine.md new file mode 100644 index 00000000..9f45774e --- /dev/null +++ b/.claude/skills/defi-swap/swap-engine.md @@ -0,0 +1,50 @@ +# Swap engine + +## Flow (high level) + +1. **User input** — `SwapForm.tsx` binds amount, token pair, slippage. Validation via `use-swap-form`. +2. **Quote** — `use-swap-quote.ts` fetches from the quote source (Fast RPC / Barter depending on config). Polls — see [quote-polling.md](./quote-polling.md). +3. **Quote guard** — `quote-guard.ts` checks staleness / price bounds; disables action if stale. +4. **Intent** — `use-swap-intent.ts` produces the signable payload. +5. **Permit2 approval (if needed)** — `use-permit2-allowance.ts` checks; `use-permit2-nonce.ts` fetches nonce; user signs (NOT a tx). +6. **Tx build** — `eth-path-tx.ts` (for ETH path) or the standard path inside the engine. +7. **User signs tx** — wagmi's write hook. +8. **Wait for preconfirm** — Fast Protocol's sub-second commitment. +9. **Wait for final confirmation** — `use-wait-for-tx-confirmation.ts`. +10. **Toast + telemetry** — `swap-events.ts` logs events; `swapToastStore` drives the toast UI. + +## Source files in order of execution + +``` +src/hooks/use-swap-form.ts +src/hooks/use-swap-quote.ts +src/lib/quote-guard.ts +src/hooks/use-swap-intent.ts +src/hooks/use-permit2-allowance.ts +src/hooks/use-permit2-nonce.ts +src/lib/permit2-utils.ts +src/lib/eth-path-tx.ts +src/hooks/use-eth-path-gas-estimate.ts +src/hooks/use-swap-confirmation.ts +src/hooks/use-wait-for-tx-confirmation.ts +src/lib/swap-events.ts +src/stores/swapToastStore.ts +``` + +## State machines + +Most of the state is implicit in the TanStack Query cache (for quotes and balances) + hook composition (for the intent → approval → send pipeline). Do not introduce a new state-management library. If you need to add state, extend the existing store or add a narrow Zustand slice following `swapToastStore.ts`. + +## ETH path vs ERC20 path + +ETH-input or ETH-output swaps require extra handling (no approval needed for native ETH; unwrap/wrap on either leg). `eth-path-tx.ts` isolates this. Keep the branch explicit — don't try to unify the paths. + +## Touch points for common changes + +| Change | Files | +|---|---| +| Slippage default | `src/lib/swap-constants.ts` | +| Quote poll interval | `src/hooks/use-swap-quote.ts`, `docs/quote-polling-idle-detection.md` | +| Toast copy | `src/components/swap/SwapToast.tsx` | +| Preconfirm sound | `src/lib/preconfirm-sound.ts`, `src/components/swap/PreconfirmCelebration.tsx` | +| New error code surfaced | `src/lib/transaction-errors.ts` | diff --git a/.claude/skills/leaderboard-miles/SKILL.md b/.claude/skills/leaderboard-miles/SKILL.md new file mode 100644 index 00000000..98989bea --- /dev/null +++ b/.claude/skills/leaderboard-miles/SKILL.md @@ -0,0 +1,49 @@ +--- +name: leaderboard-miles +description: Use when editing leaderboard UI, ranking logic, miles/rewards display, the Fuul integration, tier badges (Gold/Silver/Bronze), or the show_miles_estimate feature flag. Includes Referral Leaders tabs and the miles-gating rules from recent PRs. +--- + +# Leaderboard & miles + +The reward-surface layer. Miles = points; tiers = ranking buckets. + +## When to use + +- Editing `src/hooks/use-leaderboard-data.ts`, `use-fuul-miles-leaderboard.ts`, `use-estimated-miles.ts`, `use-user-points.ts`, `use-surplus-rate.ts` +- Changing `src/lib/leaderboard-config.ts`, `src/lib/fuul.ts`, `src/lib/miles-events.ts` +- Touching the `show_miles_estimate` feature flag in `src/lib/feature-flags.ts` +- Editing leaderboard or miles components in `src/components/dashboard/` / `src/components/referral/` + +## Key files + +- Config: `src/lib/leaderboard-config.ts`, `src/lib/feature-flags.ts` +- Data: `src/hooks/use-leaderboard-data.ts`, `use-fuul-miles-leaderboard.ts`, `use-estimated-miles.ts`, `use-user-points.ts`, `use-surplus-rate.ts` +- SDK integration: `src/lib/fuul.ts`, `src/lib/miles-events.ts` +- API: `src/app/api/fastswap-miles/`, `src/app/api/fuul/` +- Human docs: `docs/leaderboard-queries.md`, `docs/miles-estimation.md` + +## References + +- Tier system: [`tiers.md`](./tiers.md) +- Feature flag behavior: [`feature-flag.md`](./feature-flag.md) + +## Workflow + +1. Determine whether the change is **data** (ranking rules, thresholds, query logic) or **display** (UI, labels, gating). +2. For data: consult `docs/leaderboard-queries.md` — the queries are non-trivial and have been tuned. +3. For miles display: ALL miles UI must respect `show_miles_estimate` — check the flag, gate the render. +4. For tier thresholds: edit `src/lib/leaderboard-config.ts`; do not hardcode tiers in components. +5. For Fuul SDK changes: wrap in `src/lib/fuul.ts`; do not import `@fuul/sdk` in components. + +## Guardrails + +- **`show_miles_estimate` is load-bearing.** Recent PRs (see git log) gated `UserSwapsTable`, the miles toggle, and the Referral Leaders Miles tab behind this flag. When adding miles UI, gate it too. +- **Do not display miles as a currency.** Copy says "miles" or "estimated miles" — never "$". +- **Leaderboard queries are expensive.** Reuse the existing query where possible; do not add per-user N+1 patterns. +- **Fuul SDK keys stay server-side.** Never instantiate Fuul with a key from a client component. + +## Verification + +- `/verify` +- Toggle the `show_miles_estimate` flag and confirm the gated UI disappears. +- Inspect leaderboard loading in TanStack Query devtools — one query per visible tier, not per row. diff --git a/.claude/skills/leaderboard-miles/feature-flag.md b/.claude/skills/leaderboard-miles/feature-flag.md new file mode 100644 index 00000000..ebc2bc82 --- /dev/null +++ b/.claude/skills/leaderboard-miles/feature-flag.md @@ -0,0 +1,44 @@ +# `show_miles_estimate` feature flag + +The flag that gates miles UI. Introduced to hide miles surfaces when the miles program is paused or when volumes are mis-reported. + +## Source + +`src/lib/feature-flags.ts` — flag definitions. Flags are read at runtime (likely via Vercel Edge Config; check the file for the current mechanism). + +## What it gates (from recent commits) + +- `UserSwapsTable` on the dashboard +- The miles toggle on the leaderboard +- The "Referral Leaders Miles" tab +- The estimated-miles display in the swap flow + +When **off**, none of the above should render. When **on**, they should render normally. + +## How to gate a new miles surface + +```tsx +import { useFeatureFlags } from '@/lib/feature-flags' // or equivalent + +function MilesThing() { + const { show_miles_estimate } = useFeatureFlags() + if (!show_miles_estimate) return null + return

+} +``` + +Check `src/lib/feature-flags.ts` for the actual API — pattern may use a direct read, hook, or edge config call. + +## Testing + +When adding a miles-gated feature: + +1. Verify it renders with the flag **on**. +2. Verify it doesn't render with the flag **off** (not hidden via CSS — not in the DOM at all, or at least conditionally rendered). +3. Verify no dependent requests fire when the flag is off (`enabled: show_miles_estimate` on related queries). + +## Anti-patterns + +- Don't use CSS `display: none` — the data still loads, which wastes RPC calls and leaks state via devtools. +- Don't flip the flag default without checking all dependent surfaces. +- Don't inline the flag check in a hook's `enabled` branch and also in the consuming component's render branch — pick one layer (prefer the hook, so data doesn't load at all). diff --git a/.claude/skills/leaderboard-miles/tiers.md b/.claude/skills/leaderboard-miles/tiers.md new file mode 100644 index 00000000..e411e57d --- /dev/null +++ b/.claude/skills/leaderboard-miles/tiers.md @@ -0,0 +1,32 @@ +# Tiers + +Gold / Silver / Bronze — volume-based buckets. + +## Source of truth + +`src/lib/leaderboard-config.ts` defines tier thresholds and display metadata. Never hardcode a threshold in a component. + +## How rank is computed + +See `docs/leaderboard-queries.md` for the authoritative query. Summary: + +- Aggregate user swap volume over the configured window. +- Bucket by tier threshold. +- Rank within tier by volume (descending). + +## Display rules + +- Show tier badge via the tier component in `src/components/dashboard/` (existing patterns — reuse, don't recreate). +- Gold > Silver > Bronze visual hierarchy. +- User's own rank is highlighted; everyone else is neutral. + +## Edge cases + +- New user (no volume) — does not appear on leaderboard; show a "join" CTA if relevant. +- User at tier boundary — ties broken by earliest-to-reach-threshold (check query spec). +- Tier threshold changes — config-driven; do not retroactively rewrite user badges client-side. Server data drives. + +## Don't + +- Don't add a "Platinum" / "Diamond" tier without a config change + UI additions. The three-tier system is a product decision. +- Don't surface raw volume numbers in a context where a tier label is more meaningful. diff --git a/.claude/skills/next-app-router/SKILL.md b/.claude/skills/next-app-router/SKILL.md new file mode 100644 index 00000000..95d614a0 --- /dev/null +++ b/.claude/skills/next-app-router/SKILL.md @@ -0,0 +1,51 @@ +--- +name: next-app-router +description: Use when editing files under src/app/, adding or changing routes, API endpoints under src/app/api/, server actions, middleware (src/middleware.ts), env vars, or the root layout. Covers Next.js 15 App Router conventions including "use client" boundaries and server components. +--- + +# Next.js 15 App Router + +This repo runs Next 15 with the App Router on React 18. Server Components are the default; `"use client"` must be explicit. + +## When to use + +- Adding or editing a route under `src/app/**` +- Adding or editing an API route under `src/app/api/**` +- Editing `src/middleware.ts` or `src/app/layout.tsx` +- Adding an env variable or touching `src/env/server.ts` +- Using or adding a server action under `src/actions/` + +## Key files + +- `src/app/layout.tsx` — root layout, mounts `Providers` +- `src/components/providers.tsx` — wagmi, RainbowKit, TanStack Query, theme +- `src/middleware.ts` — request middleware (auth/redirect logic) +- `src/env/server.ts` — env schema (t3-oss) +- `next.config.mjs` — image domains, env loader via `jiti` + +## Workflow + +1. Decide Server vs Client Component. Default is Server. Add `"use client"` **only** when you need: hooks, state, browser-only APIs, wagmi, event handlers. +2. For API routes: use Route Handlers in `src/app/api//route.ts` with named exports (`GET`, `POST`, …). +3. For server actions: add under `src/actions/`. Must start with `"use server"`. Validate input with Zod. +4. For env access: `import { env } from '@/env/server'`. Do **not** read `process.env` directly. +5. Run `npm run build` after changes to server boundaries or env — catches mistakes the dev server misses. + +## References + +- Server actions: [`server-actions.md`](./server-actions.md) +- Env validation: [`env-validation.md`](./env-validation.md) +- API routes: [`api-routes.md`](./api-routes.md) + +## Guardrails + +- Never import server-only modules (e.g., `pg`, `googleapis`, env server vars) from a `"use client"` file — build will fail at deploy time. +- Server actions must validate input with Zod **before** any side effect. +- Do not put secrets in `NEXT_PUBLIC_*` vars; those ship to the browser. +- When adding a route, check `src/middleware.ts` for matching patterns — your new route may be unexpectedly gated. +- Keep `layout.tsx` lean — it runs on every render of every child route. + +## See also + +- `agent_docs/architecture.md` (full directory map) +- `agent_docs/env-vars.md` diff --git a/.claude/skills/next-app-router/api-routes.md b/.claude/skills/next-app-router/api-routes.md new file mode 100644 index 00000000..42d88b56 --- /dev/null +++ b/.claude/skills/next-app-router/api-routes.md @@ -0,0 +1,51 @@ +# API routes + +## Layout + +Routes live under `src/app/api//route.ts`. Each file exports HTTP-method-named async functions. + +Existing endpoints (see `agent_docs/architecture.md` for the full list): + +`analytics`, `barter`, `config`, `cron`, `early-access`, `fast-tx-status`, `fastswap`, `fastswap-miles`, `feedback`, `fuul`, `gate`, `hyperliquid`, `og`, `token-price`, `tokens`, `transaction-status`, `user-community-activity`, `user-onboarding`, `users`, `waitlist`, `whitelist`. + +## Pattern + +```ts +// src/app/api/example/route.ts +import { NextRequest, NextResponse } from 'next/server' +import { z } from 'zod' +import { env } from '@/env/server' + +const bodySchema = z.object({ /* ... */ }) + +export async function POST(req: NextRequest) { + const parsed = bodySchema.safeParse(await req.json()) + if (!parsed.success) { + return NextResponse.json({ error: 'invalid' }, { status: 400 }) + } + // ... do the thing + return NextResponse.json({ ok: true }) +} +``` + +## Rules + +1. Validate inputs with Zod. +2. Return JSON via `NextResponse.json(...)`; set status explicitly. +3. Use `env` from `@/env/server` for secrets — never `process.env`. +4. For responses that should be cached, set `export const revalidate = ` or use `NextResponse` cache headers. +5. For streaming or non-JSON responses, use `Response` / `ReadableStream`. +6. Long-running work → background queue, not an API route. Vercel has timeout limits. + +## Cron / scheduled routes + +`src/app/api/cron/` exists for Vercel Cron. Protect with a bearer token from env — never leave cron endpoints unauthenticated. + +## Error logging + +Use the project analytics helpers in `src/lib/analytics-server.ts` for server-side events. Don't `console.error` secrets into production logs. + +## Verification + +- `npm run build` catches type errors across the server boundary. +- Test the endpoint with `curl` before claiming complete: `curl -X POST http://localhost:3000/api/ -H 'Content-Type: application/json' -d '{...}'`. diff --git a/.claude/skills/next-app-router/env-validation.md b/.claude/skills/next-app-router/env-validation.md new file mode 100644 index 00000000..3ac3e13b --- /dev/null +++ b/.claude/skills/next-app-router/env-validation.md @@ -0,0 +1,31 @@ +# Env validation (t3-oss) + +## Where + +`src/env/server.ts` — single source of truth. Uses `@t3-oss/env-nextjs` + Zod. + +## Pattern + +- `server` block — vars only available on server (no `NEXT_PUBLIC_` prefix) +- `client` block — vars available in the browser (must be `NEXT_PUBLIC_` prefixed) +- `runtimeEnv` — explicit mapping (required by Next for client vars to be inlined) + +## Adding a var + +1. Update `.env.example` with a stub value and a one-line comment. +2. Add to the appropriate block in `src/env/server.ts` with a Zod validator (`z.string().min(1)`, `z.string().url()`, etc.). +3. Add to `runtimeEnv` mapping. +4. Import via `import { env } from '@/env/server'`; reference as `env.MY_VAR`. +5. Document in `agent_docs/env-vars.md`. + +## Build-time failure + +The schema is loaded at build time via `jiti` in `next.config.mjs`. A missing required var **fails the build** — by design. Do not loosen the schema to get past a red build. Add the var to the environment instead. + +## Client-safe vars + +Only `NEXT_PUBLIC_*` vars reach the browser. Never put secrets there. Example of a safe client var in this repo: `NEXT_PUBLIC_ALCHEMY_API_KEY` (public-tier Alchemy key, intentional exposure). + +## Skipping validation (don't) + +`SKIP_ENV_VALIDATION=1 npm run build` exists as an escape hatch — never use it in CI or production. If you're tempted to set it to get past an error, the right fix is to add the var or correct the schema. diff --git a/.claude/skills/next-app-router/server-actions.md b/.claude/skills/next-app-router/server-actions.md new file mode 100644 index 00000000..9b80fe4d --- /dev/null +++ b/.claude/skills/next-app-router/server-actions.md @@ -0,0 +1,37 @@ +# Server actions + +## Pattern + +- Files live in `src/actions/`. +- Each file starts with `"use server"` as the first statement. +- Export typed async functions — they become callable from client components. + +Existing example: `src/actions/capture-email.ts`. + +## Rules + +1. **Validate input with Zod** at the top of every action. Never trust client-supplied values. +2. **Return a typed result** — e.g., `{ ok: true } | { ok: false, error: string }`. Do not throw raw errors across the boundary; convert to serializable shapes. +3. **No secrets in return values.** If you caught an error that includes an API key or internal URL, strip it before returning. +4. **Use `env` from `@/env/server`.** Never `process.env`. +5. **Do not return non-serializable values** (Dates serialize; functions, Maps, Sets do not). + +## Calling from a client component + +```tsx +"use client" +import { captureEmail } from "@/actions/capture-email" +// call as a normal async function; Next handles the transport +``` + +## When NOT to use a server action + +Use a Route Handler (`src/app/api/*/route.ts`) when: + +- The endpoint is called by a non-browser client (cron, webhook, external service). +- You need full control over HTTP status codes and headers. +- The input is not JSON / form-data (e.g., binary upload). + +## Verification + +After editing a server action, run `npm run build` — actions have a server/client boundary that `tsc --noEmit` alone won't catch. diff --git a/.claude/skills/skill-creator/SKILL.md b/.claude/skills/skill-creator/SKILL.md new file mode 100644 index 00000000..4a619d13 --- /dev/null +++ b/.claude/skills/skill-creator/SKILL.md @@ -0,0 +1,46 @@ +--- +name: skill-creator +description: Creating or editing a skill in this repo. Use when the user asks to add a new skill, scaffold a skill directory, or restructure an existing skill. Also use when you notice domain knowledge that would be loaded repeatedly across sessions — that's a candidate for a new skill. +--- + +# Skill creator + +A meta-skill for building other skills in this repo. Follow this shape and skills will compose well with the progressive-disclosure model. + +## When to create a new skill + +Create a skill when **all** of these are true: + +1. The knowledge applies only to a **specific kind of task**, not every session. +2. It's longer than ~10 lines — too much to put in CLAUDE.md without bloat. +3. It has a **clear trigger** you can write as a single `description` sentence starting with "Use when…". + +If only (1) and (2) are true, it might belong in `agent_docs/` as a reference file instead (no frontmatter, loaded by link). + +## Anatomy + +See [`anatomy.md`](./anatomy.md). + +## Checklist + +See [`checklist.md`](./checklist.md). + +## Workflow + +1. Pick a directory name: kebab-case, singular, verb-leading if possible (`defi-swap`, `leaderboard-miles`, `testing-vitest`). +2. Create `.claude/skills//SKILL.md` with the frontmatter template in `anatomy.md`. +3. Keep SKILL.md under ~100 lines. Push anything longer to sibling `.md` reference files. +4. Reference existing code with `src/path/file.ts:42`-style citations — never inline. +5. Run through `checklist.md` before finishing. + +## Guardrails + +- **No inline code snippets** from files in `src/` — they rot. Always cite. +- **No duplication** — if a skill overlaps with another, the trigger descriptions must disambiguate, or merge the skills. +- **Description is the trigger** — treat it like a search query. Include domain keywords (e.g., "permit2", "slippage", "show_miles_estimate") that the user is likely to type. +- **Progressive disclosure** — split long content into `reference.md`, `patterns.md`, etc. SKILL.md should tell Claude _when_ to open them. + +## See also + +- The plan: `/Users/jasonschwarz/.claude/plans/inherited-herding-penguin.md` +- `.claude/commands/new-skill.md` diff --git a/.claude/skills/skill-creator/anatomy.md b/.claude/skills/skill-creator/anatomy.md new file mode 100644 index 00000000..2cd753b6 --- /dev/null +++ b/.claude/skills/skill-creator/anatomy.md @@ -0,0 +1,72 @@ +# Skill anatomy + +## Frontmatter template + +```yaml +--- +name: +description: . Include 3-5 keywords the user is likely to type. +--- +``` + +Optional frontmatter fields (Claude Code): + +- `disable-model-invocation: true` — prevents automatic invocation. Useful for destructive workflows that should only fire when the user explicitly invokes the slash command. + +## Body structure + +Follow this order. Skip sections that don't apply. + +``` +# + +## When to use +<1-3 bullets that make the trigger concrete — concrete file paths, features, symbols> + +## Prerequisites / key files + + +## Workflow + + +## Guardrails + + +## See also + +``` + +## Reference files + +Split anything longer than ~30 lines into a sibling `.md`. Naming convention: + +- `patterns.md` — recurring code patterns in the domain +- `.md` — e.g., `permit2.md`, `server-actions.md` +- `anti-patterns.md` — what not to do +- `checklist.md` — step-by-step verification + +Inside SKILL.md, link via relative path: `[permit2](./permit2.md)`. + +## Scripts + +Scripts live in a `scripts/` subdirectory of the skill. They are **executable**, not read-in. Claude invokes them via Bash; the source isn't loaded into context. Use scripts for: + +- Deterministic calculations +- File scaffolding +- Validation passes + +Keep scripts readable — Claude infers intent from filename and a short comment block. + +## Size budget + +- SKILL.md: aim for 60-100 lines. Hard cap ~150. +- Each reference file: aim for under 200 lines. +- Total skill directory: no hard cap, but if it balloons, split into two skills. + +## Frontmatter description anti-patterns + +| Bad | Why | Better | +|---|---|---| +| "Swap helper" | No trigger, no keywords | "Use when editing swap flow, quotes, slippage, permit2, or WETH wrap/unwrap under src/components/swap or src/hooks/use-swap-*" | +| "Best practices for everything" | Too broad — will match every task | Split into narrow skills | +| "This skill will help you when…" | Narrator voice wastes tokens | Direct imperative: "Use when…" | diff --git a/.claude/skills/skill-creator/checklist.md b/.claude/skills/skill-creator/checklist.md new file mode 100644 index 00000000..c162c2a9 --- /dev/null +++ b/.claude/skills/skill-creator/checklist.md @@ -0,0 +1,16 @@ +# Skill checklist + +Before committing a new or edited skill: + +- [ ] Frontmatter has `name` (kebab-case) and `description` (starts with "Use when…") +- [ ] Description mentions concrete files, symbols, or feature names an agent would pattern-match on +- [ ] No code snippets from `src/` inlined — all citations use `src/path/file.ts:42` form +- [ ] SKILL.md under ~150 lines +- [ ] Anything longer split into sibling reference files, linked from SKILL.md +- [ ] "When to use" section is 1-3 bullets, not a paragraph +- [ ] "Guardrails" section captures the top 3 mistakes that domain invites +- [ ] No overlap with another skill's trigger (if overlap, merge or disambiguate descriptions) +- [ ] Verified that `/prime` does **not** auto-load this skill (it shouldn't — skills are Tier 2) +- [ ] If the skill includes scripts, they're in `scripts/` and are executable (`chmod +x`) +- [ ] Added to the skill table in `CLAUDE.md` under "Skills (load when task matches)" +- [ ] Added to the skill list in `.claude/README.md` diff --git a/.claude/skills/testing-vitest/SKILL.md b/.claude/skills/testing-vitest/SKILL.md new file mode 100644 index 00000000..c87f458a --- /dev/null +++ b/.claude/skills/testing-vitest/SKILL.md @@ -0,0 +1,53 @@ +--- +name: testing-vitest +description: Use when writing, running, or debugging Vitest tests in this repo. Covers where tests live (src/lib/__tests__/ colocation), how to mock wagmi/viem, and the test-runner commands that agents should use (test:run, not watch). +--- + +# Testing with Vitest + +## When to use + +- Writing a new test +- Debugging a failing test +- Setting up mocks for wagmi / viem / external SDKs +- Tuning `vitest.config.ts` or `src/test/utils/` + +## Key files + +- Config: `vitest.config.ts` +- Helpers: `src/test/utils/` (check here before writing your own) +- Existing tests: `src/lib/__tests__/` + +## References + +- Layout + naming: [`test-layout.md`](./test-layout.md) +- Mocking web3: [`mocking-web3.md`](./mocking-web3.md) +- Overview: `agent_docs/testing.md` + +## Workflow + +1. Check `src/test/utils/` for an existing helper (renderer, mock factory) before writing a new one. +2. Colocate: put tests in `__tests__/` next to the module under test. +3. Name the file `.test.ts`. +4. Prefer `test:run` (single-pass) over `test` (watch) — always from the agent side. +5. When a test fails, read the actual error before re-running — flaky re-runs waste context. + +## Quick commands + +```bash +npm run test:run # all tests, single pass +npm run test:run -- src/lib/__tests__/x # a single file +npm run test:coverage # coverage report +``` + +## Guardrails + +- **Do not use `npm run test` (watch) from an agent.** It never exits. +- **Do not mock modules you don't own** beyond the surface you need — over-mocking breaks when deps update. +- **Do not inject real API keys** (even in `.env.test.local`). Use placeholder strings. +- **Do not test framework internals** (wagmi's `useAccount` return shape) — test your own logic. + +## Verification + +- `npm run test:run` before declaring the change complete. +- For CI-parity, also run `npm run typecheck` — tests can pass while types break. diff --git a/.claude/skills/testing-vitest/mocking-web3.md b/.claude/skills/testing-vitest/mocking-web3.md new file mode 100644 index 00000000..2f53ee52 --- /dev/null +++ b/.claude/skills/testing-vitest/mocking-web3.md @@ -0,0 +1,64 @@ +# Mocking web3 + +Mock at the module boundary. Don't try to spin up a real node or sign real transactions in tests. + +## Mocking wagmi hooks + +```ts +import { vi } from 'vitest' + +vi.mock('wagmi', async () => { + const actual = await vi.importActual('wagmi') + return { + ...actual, + useAccount: () => ({ address: '0xabc...', isConnected: true }), + useReadContract: () => ({ data: 42n, isLoading: false }), + } +}) +``` + +- Preserve non-mocked exports via `...actual` so type exports still work. +- Mock per-test only if different tests need different return values. + +## Mocking viem clients + +```ts +vi.mock('viem', async () => { + const actual = await vi.importActual('viem') + return { + ...actual, + createPublicClient: () => ({ + readContract: vi.fn().mockResolvedValue(42n), + simulateContract: vi.fn().mockResolvedValue({ result: 'ok' }), + }), + } +}) +``` + +## Mocking the wagmi config + +```ts +vi.mock('@/lib/wagmi', () => ({ + wagmiConfig: { /* minimal fake */ }, + chains: [{ id: 1, name: 'mainnet' }], +})) +``` + +## Mocking SDKs (Fuul, Barter, EmailOctopus, Alchemy) + +Mock at the `src/lib/*` wrapper, not the SDK itself. E.g., `vi.mock('@/lib/fuul', () => ({ trackEvent: vi.fn() }))`. This insulates tests from SDK internals. + +## Testing hooks + +Use `renderHook` from `@testing-library/react` (install if not present — check `package.json` first). Wrap with the QueryClient provider when testing TanStack Query hooks; a helper in `src/test/utils/` may already exist. + +## Anti-patterns + +- **Do not** try to hit a live RPC in tests. +- **Do not** mock `fetch` globally — scope it to a test with `vi.spyOn(global, 'fetch')`. +- **Do not** mock `window.ethereum`; wagmi's connectors abstract it away. +- **Do not** fill test addresses with real user addresses; use `0xabc...` placeholders. + +## Bigint gotcha + +Viem returns `bigint` for uint256. `expect(result).toBe(42)` fails; use `expect(result).toBe(42n)`. diff --git a/.claude/skills/testing-vitest/test-layout.md b/.claude/skills/testing-vitest/test-layout.md new file mode 100644 index 00000000..022f7c5e --- /dev/null +++ b/.claude/skills/testing-vitest/test-layout.md @@ -0,0 +1,48 @@ +# Test layout + +## Where tests live + +- `src/lib/__tests__/*.test.ts` — colocated unit tests for lib utilities (existing convention) +- `src/test/utils/` — shared test helpers (renderer, mock factories, fixtures) + +There is **no** parallel `tests/` or `__tests__` at the repo root. Don't create one. + +## Naming + +- `.test.ts` for plain logic +- `.test.tsx` for React components (when introduced) + +## Structure of a test file + +```ts +import { describe, it, expect, vi, beforeEach } from 'vitest' +import { subject } from '../subject' + +describe('subject', () => { + beforeEach(() => { vi.clearAllMocks() }) + + it('does X when Y', () => { + expect(subject(inputs)).toBe(expected) + }) +}) +``` + +- One `describe` per module, unless you need sub-grouping. +- `it('does X when Y')` — descriptive, reads like documentation. +- `beforeEach` clears mocks; avoid per-test mock bleed. + +## Vitest-specific + +- Use `vi.mock('', factory)` at top-level, not inside test bodies. +- Use `vi.fn()` for ad-hoc mocks. +- Use `vi.hoisted()` when you need a mocked symbol referenced by a hoisted `vi.mock`. + +## Coverage expectations + +No hard threshold today. Aim for: high coverage on `src/lib/` pure utilities; reasonable coverage on hooks with non-trivial logic; spot coverage on components. + +## Do not + +- Don't skip tests (`.skip`, `.todo`) in committed code without a comment explaining why. +- Don't commit `.only` tests. +- Don't test third-party library internals. diff --git a/.claude/skills/ui-shadcn/SKILL.md b/.claude/skills/ui-shadcn/SKILL.md new file mode 100644 index 00000000..4c269f4a --- /dev/null +++ b/.claude/skills/ui-shadcn/SKILL.md @@ -0,0 +1,51 @@ +--- +name: ui-shadcn +description: Use when adding or modifying React components under src/components/**, particularly ui/ (shadcn primitives), shared/, or domain folders. Covers Tailwind conventions, Radix composition, shadcn update workflow, and accessibility basics. +--- + +# UI: shadcn + Radix + Tailwind + +Components are organized by domain. `ui/` holds shadcn primitives (generated from `components.json`); everything else composes them. + +## When to use + +- Creating a new component or modifying an existing one +- Adding a new shadcn primitive +- Working on design tokens (Tailwind config + `globals.css`) +- Composing dialogs, popovers, sheets, drawers (mostly Radix) + +## Key files + +- `src/components/ui/` — shadcn primitives (button, dialog, input, etc.) +- `src/components/shared/` — cross-domain reusable components +- Domain folders: `dashboard/`, `swap/`, `claim/`, `onboarding/`, `landing/`, `referral/`, `network-checker/`, `modals/`, `pwa/`, `learn/` +- `components.json` — shadcn config +- `tailwind.config.ts` — design tokens, plugin config +- `src/app/globals.css` — base styles + CSS variables + +## References + +- Component conventions: [`component-conventions.md`](./component-conventions.md) +- Accessibility: [`accessibility.md`](./accessibility.md) + +## Workflow + +1. Check if a shadcn primitive already covers the need in `src/components/ui/`. +2. If yes, compose it in a domain folder — don't modify `ui/` unless the change is design-system-wide. +3. If you need a new shadcn primitive, use the shadcn CLI so `components.json` stays consistent. +4. Use `cn()` from `src/lib/utils.ts` to merge Tailwind classes; avoid string concatenation. +5. For conditional variants, use `class-variance-authority` (already a dep). +6. Use `@radix-ui/*` primitives directly only when shadcn hasn't wrapped them yet; check `src/components/ui/` first. + +## Guardrails + +- Never edit a file in `src/components/ui/` to add domain-specific logic — push it to `shared/` or the domain folder. +- Never import a design token directly from a component — go through Tailwind classes or CSS variables. +- Never add a new UI library (MUI, Chakra, Mantine) — the design system is shadcn/Radix/Tailwind. +- Prefer Radix primitives for a11y (focus trapping, aria, keyboard) over hand-rolled solutions. +- Animations: `motion` and `framer-motion`-style APIs via `motion` package; keep animations subtle on data-dense surfaces. + +## Verification + +- `/verify` +- `npm run dev` — eyeball in the browser at multiple widths. The app is mobile-first; test narrow viewports. diff --git a/.claude/skills/ui-shadcn/accessibility.md b/.claude/skills/ui-shadcn/accessibility.md new file mode 100644 index 00000000..c3e4140e --- /dev/null +++ b/.claude/skills/ui-shadcn/accessibility.md @@ -0,0 +1,37 @@ +# Accessibility + +Radix primitives handle a lot — use them. Don't roll your own focus trap, aria attributes, or keyboard navigation when Radix covers the case. + +## Defaults that Radix handles for you + +- Focus trapping in dialogs +- Escape-to-close +- aria-labelledby / aria-describedby wiring +- Keyboard navigation (arrow keys in menus, Enter/Space for triggers) +- Portal-mounted overlays with correct z-index + +## What you still need to do + +- **Alt text** on every ``. Decorative → `alt=""`. +- **Label** on every form input. Use `ui/label.tsx` + `htmlFor`/`id`. +- **Focus visibility** — ensure Tailwind's `focus-visible:` utilities are present. shadcn defaults do this; preserve them. +- **Color contrast** — 4.5:1 minimum for text, 3:1 for UI chrome. +- **Keyboard-only test** — can you complete the swap flow without a mouse? If not, that's a bug. +- **Motion-respecting** — wrap big animations in `@media (prefers-reduced-motion: reduce)` or use `motion`'s reduced-motion support. + +## Wallet UX is often inaccessible + +- RainbowKit's default modals are accessible — don't skin them into keyboard-traps. +- Custom network-install flows (`network-checker/`) must announce their state changes. Consider `aria-live="polite"` on status text. + +## Testing + +- Axe DevTools in the browser catches most issues; not automated here but worth a pass on a new page. +- Manual: Tab through the page. Focus must be visible at every stop. + +## Don'ts + +- Don't remove `:focus-visible` styles. +- Don't set `tabIndex="-1"` on interactive elements. +- Don't use `div` + `onClick` for a button. Use `