From 7ee732d38ad90c31ba562f37bc5a21876ef1b667 Mon Sep 17 00:00:00 2001 From: nsjames Date: Thu, 27 Nov 2025 09:22:10 -0500 Subject: [PATCH 01/14] optimized tokenapi quickstart --- nginx.conf | 1 + website/bun.lock | 2946 +++++++++++++++++ website/src/components/CodeTabs.tsx | 38 + website/src/layout/Layout.tsx | 3 + website/src/pages/ar/token-api/_meta.js | 6 +- .../src/pages/ar/token-api/endpoints/_meta.js | 4 + .../{ => endpoints}/endpoint-pricing.mdx | 0 .../token-api/endpoints/endpoint-support.msx | 0 .../ar/token-api/guides/_meta-titles.json | 4 + .../src/pages/ar/token-api/guides/_meta.js | 4 + website/src/pages/ar/token-api/guides/gpt.mdx | 121 + .../token-api/{ => guides}/upgrade-to-v1.mdx | 122 +- .../pages/ar/token-api/svm-tokens/_meta.js | 2 +- website/src/pages/cs/token-api/_meta.js | 6 +- .../src/pages/cs/token-api/endpoints/_meta.js | 4 + .../{ => endpoints}/endpoint-pricing.mdx | 0 .../token-api/endpoints/endpoint-support.msx | 0 .../cs/token-api/guides/_meta-titles.json | 4 + .../src/pages/cs/token-api/guides/_meta.js | 4 + website/src/pages/cs/token-api/guides/gpt.mdx | 121 + .../token-api/{ => guides}/upgrade-to-v1.mdx | 122 +- .../pages/cs/token-api/svm-tokens/_meta.js | 2 +- website/src/pages/de/token-api/_meta.js | 6 +- .../src/pages/de/token-api/endpoints/_meta.js | 4 + .../{ => endpoints}/endpoint-pricing.mdx | 0 .../token-api/endpoints/endpoint-support.msx | 0 .../de/token-api/guides/_meta-titles.json | 4 + .../src/pages/de/token-api/guides/_meta.js | 4 + website/src/pages/de/token-api/guides/gpt.mdx | 121 + .../token-api/{ => guides}/upgrade-to-v1.mdx | 122 +- .../pages/de/token-api/svm-tokens/_meta.js | 2 +- .../src/pages/en/token-api/_meta-titles.json | 3 +- website/src/pages/en/token-api/_meta.js | 6 +- .../src/pages/en/token-api/endpoints/_meta.js | 4 + .../pricing.mdx} | 1 + .../pages/en/token-api/endpoints/support.mdx | 24 + .../src/pages/en/token-api/quick-start.mdx | 199 +- .../pages/en/token-api/svm-tokens/_meta.js | 2 +- website/src/pages/es/token-api/_meta.js | 6 +- .../src/pages/es/token-api/endpoints/_meta.js | 4 + .../{ => endpoints}/endpoint-pricing.mdx | 0 .../token-api/endpoints/endpoint-support.msx | 0 .../es/token-api/guides/_meta-titles.json | 4 + .../src/pages/es/token-api/guides/_meta.js | 4 + website/src/pages/es/token-api/guides/gpt.mdx | 121 + .../token-api/{ => guides}/upgrade-to-v1.mdx | 122 +- .../pages/es/token-api/svm-tokens/_meta.js | 2 +- website/src/pages/fr/token-api/_meta.js | 6 +- .../src/pages/fr/token-api/endpoints/_meta.js | 4 + .../{ => endpoints}/endpoint-pricing.mdx | 0 .../token-api/endpoints/endpoint-support.msx | 0 .../fr/token-api/guides/_meta-titles.json | 4 + .../src/pages/fr/token-api/guides/_meta.js | 4 + website/src/pages/fr/token-api/guides/gpt.mdx | 121 + .../fr/token-api/guides/upgrade-to-v1.mdx | 346 ++ .../pages/fr/token-api/svm-tokens/_meta.js | 2 +- .../src/pages/fr/token-api/upgrade-to-v1.mdx | 254 -- website/src/pages/hi/token-api/_meta.js | 6 +- .../src/pages/hi/token-api/endpoints/_meta.js | 4 + .../{ => endpoints}/endpoint-pricing.mdx | 0 .../token-api/endpoints/endpoint-support.msx | 0 .../hi/token-api/guides/_meta-titles.json | 4 + .../src/pages/hi/token-api/guides/_meta.js | 4 + website/src/pages/hi/token-api/guides/gpt.mdx | 121 + .../hi/token-api/guides/upgrade-to-v1.mdx | 346 ++ .../pages/hi/token-api/svm-tokens/_meta.js | 2 +- .../src/pages/hi/token-api/upgrade-to-v1.mdx | 254 -- website/src/pages/it/token-api/_meta.js | 6 +- .../src/pages/it/token-api/endpoints/_meta.js | 4 + .../{ => endpoints}/endpoint-pricing.mdx | 0 .../token-api/endpoints/endpoint-support.msx | 0 .../it/token-api/guides/_meta-titles.json | 4 + .../src/pages/it/token-api/guides/_meta.js | 4 + website/src/pages/it/token-api/guides/gpt.mdx | 121 + .../it/token-api/guides/upgrade-to-v1.mdx | 346 ++ .../pages/it/token-api/svm-tokens/_meta.js | 2 +- .../src/pages/it/token-api/upgrade-to-v1.mdx | 254 -- website/src/pages/ja/token-api/_meta.js | 6 +- .../src/pages/ja/token-api/endpoints/_meta.js | 4 + .../{ => endpoints}/endpoint-pricing.mdx | 0 .../token-api/endpoints/endpoint-support.msx | 0 .../ja/token-api/guides/_meta-titles.json | 4 + .../src/pages/ja/token-api/guides/_meta.js | 4 + website/src/pages/ja/token-api/guides/gpt.mdx | 121 + .../ja/token-api/guides/upgrade-to-v1.mdx | 346 ++ .../pages/ja/token-api/svm-tokens/_meta.js | 2 +- .../src/pages/ja/token-api/upgrade-to-v1.mdx | 254 -- website/src/pages/ko/token-api/_meta.js | 6 +- .../src/pages/ko/token-api/endpoints/_meta.js | 4 + .../{ => endpoints}/endpoint-pricing.mdx | 0 .../token-api/endpoints/endpoint-support.msx | 0 .../ko/token-api/guides/_meta-titles.json | 4 + .../src/pages/ko/token-api/guides/_meta.js | 4 + website/src/pages/ko/token-api/guides/gpt.mdx | 121 + .../ko/token-api/guides/upgrade-to-v1.mdx | 346 ++ .../pages/ko/token-api/svm-tokens/_meta.js | 2 +- .../src/pages/ko/token-api/upgrade-to-v1.mdx | 254 -- website/src/pages/mr/token-api/_meta.js | 6 +- .../src/pages/mr/token-api/endpoints/_meta.js | 4 + .../{ => endpoints}/endpoint-pricing.mdx | 0 .../token-api/endpoints/endpoint-support.msx | 0 .../mr/token-api/guides/_meta-titles.json | 4 + .../src/pages/mr/token-api/guides/_meta.js | 4 + website/src/pages/mr/token-api/guides/gpt.mdx | 121 + .../mr/token-api/guides/upgrade-to-v1.mdx | 346 ++ .../pages/mr/token-api/svm-tokens/_meta.js | 2 +- .../src/pages/mr/token-api/upgrade-to-v1.mdx | 254 -- website/src/pages/nl/token-api/_meta.js | 6 +- .../src/pages/nl/token-api/endpoints/_meta.js | 4 + .../{ => endpoints}/endpoint-pricing.mdx | 0 .../token-api/endpoints/endpoint-support.msx | 0 .../nl/token-api/guides/_meta-titles.json | 4 + .../src/pages/nl/token-api/guides/_meta.js | 4 + website/src/pages/nl/token-api/guides/gpt.mdx | 121 + .../nl/token-api/guides/upgrade-to-v1.mdx | 346 ++ .../pages/nl/token-api/svm-tokens/_meta.js | 2 +- .../src/pages/nl/token-api/upgrade-to-v1.mdx | 254 -- website/src/pages/pl/token-api/_meta.js | 6 +- .../src/pages/pl/token-api/endpoints/_meta.js | 4 + .../{ => endpoints}/endpoint-pricing.mdx | 0 .../token-api/endpoints/endpoint-support.msx | 0 .../pl/token-api/guides/_meta-titles.json | 4 + .../src/pages/pl/token-api/guides/_meta.js | 4 + website/src/pages/pl/token-api/guides/gpt.mdx | 121 + .../pl/token-api/guides/upgrade-to-v1.mdx | 346 ++ .../pages/pl/token-api/svm-tokens/_meta.js | 2 +- .../src/pages/pl/token-api/upgrade-to-v1.mdx | 254 -- website/src/pages/pt/token-api/_meta.js | 6 +- .../src/pages/pt/token-api/endpoints/_meta.js | 4 + .../{ => endpoints}/endpoint-pricing.mdx | 0 .../token-api/endpoints/endpoint-support.msx | 0 .../pt/token-api/guides/_meta-titles.json | 4 + .../src/pages/pt/token-api/guides/_meta.js | 4 + website/src/pages/pt/token-api/guides/gpt.mdx | 121 + .../pt/token-api/guides/upgrade-to-v1.mdx | 346 ++ .../pages/pt/token-api/svm-tokens/_meta.js | 2 +- .../src/pages/pt/token-api/upgrade-to-v1.mdx | 254 -- website/src/pages/ro/token-api/_meta.js | 6 +- .../src/pages/ro/token-api/endpoints/_meta.js | 4 + .../{ => endpoints}/endpoint-pricing.mdx | 0 .../token-api/endpoints/endpoint-support.msx | 0 .../ro/token-api/guides/_meta-titles.json | 4 + .../src/pages/ro/token-api/guides/_meta.js | 4 + website/src/pages/ro/token-api/guides/gpt.mdx | 121 + .../ro/token-api/guides/upgrade-to-v1.mdx | 346 ++ .../pages/ro/token-api/svm-tokens/_meta.js | 2 +- .../src/pages/ro/token-api/upgrade-to-v1.mdx | 254 -- website/src/pages/ru/token-api/_meta.js | 6 +- .../src/pages/ru/token-api/endpoints/_meta.js | 4 + .../{ => endpoints}/endpoint-pricing.mdx | 0 .../token-api/endpoints/endpoint-support.msx | 0 .../ru/token-api/guides/_meta-titles.json | 4 + .../src/pages/ru/token-api/guides/_meta.js | 4 + website/src/pages/ru/token-api/guides/gpt.mdx | 121 + .../ru/token-api/guides/upgrade-to-v1.mdx | 346 ++ .../pages/ru/token-api/svm-tokens/_meta.js | 2 +- .../src/pages/ru/token-api/upgrade-to-v1.mdx | 254 -- website/src/pages/sv/token-api/_meta.js | 6 +- .../src/pages/sv/token-api/endpoints/_meta.js | 4 + .../{ => endpoints}/endpoint-pricing.mdx | 0 .../token-api/endpoints/endpoint-support.msx | 0 .../sv/token-api/guides/_meta-titles.json | 4 + .../src/pages/sv/token-api/guides/_meta.js | 4 + website/src/pages/sv/token-api/guides/gpt.mdx | 121 + .../sv/token-api/guides/upgrade-to-v1.mdx | 346 ++ .../pages/sv/token-api/svm-tokens/_meta.js | 2 +- .../src/pages/sv/token-api/upgrade-to-v1.mdx | 254 -- website/src/pages/tr/token-api/_meta.js | 6 +- .../src/pages/tr/token-api/endpoints/_meta.js | 4 + .../{ => endpoints}/endpoint-pricing.mdx | 0 .../token-api/endpoints/endpoint-support.msx | 0 .../tr/token-api/guides/_meta-titles.json | 4 + .../src/pages/tr/token-api/guides/_meta.js | 4 + website/src/pages/tr/token-api/guides/gpt.mdx | 121 + .../tr/token-api/guides/upgrade-to-v1.mdx | 346 ++ .../pages/tr/token-api/svm-tokens/_meta.js | 2 +- .../src/pages/tr/token-api/upgrade-to-v1.mdx | 254 -- website/src/pages/uk/token-api/_meta.js | 6 +- .../src/pages/uk/token-api/endpoints/_meta.js | 4 + .../{ => endpoints}/endpoint-pricing.mdx | 0 .../token-api/endpoints/endpoint-support.msx | 0 .../uk/token-api/guides/_meta-titles.json | 4 + .../src/pages/uk/token-api/guides/_meta.js | 4 + website/src/pages/uk/token-api/guides/gpt.mdx | 121 + .../uk/token-api/guides/upgrade-to-v1.mdx | 346 ++ .../pages/uk/token-api/svm-tokens/_meta.js | 2 +- .../src/pages/uk/token-api/upgrade-to-v1.mdx | 254 -- website/src/pages/ur/token-api/_meta.js | 6 +- .../src/pages/ur/token-api/endpoints/_meta.js | 4 + .../{ => endpoints}/endpoint-pricing.mdx | 0 .../token-api/endpoints/endpoint-support.msx | 0 .../ur/token-api/guides/_meta-titles.json | 4 + .../src/pages/ur/token-api/guides/_meta.js | 4 + website/src/pages/ur/token-api/guides/gpt.mdx | 121 + .../ur/token-api/guides/upgrade-to-v1.mdx | 346 ++ .../pages/ur/token-api/svm-tokens/_meta.js | 2 +- .../src/pages/ur/token-api/upgrade-to-v1.mdx | 254 -- website/src/pages/vi/token-api/_meta.js | 6 +- .../src/pages/vi/token-api/endpoints/_meta.js | 4 + .../{ => endpoints}/endpoint-pricing.mdx | 0 .../token-api/endpoints/endpoint-support.msx | 0 .../vi/token-api/guides/_meta-titles.json | 4 + .../src/pages/vi/token-api/guides/_meta.js | 4 + website/src/pages/vi/token-api/guides/gpt.mdx | 121 + .../vi/token-api/guides/upgrade-to-v1.mdx | 346 ++ .../pages/vi/token-api/svm-tokens/_meta.js | 2 +- .../src/pages/vi/token-api/upgrade-to-v1.mdx | 254 -- website/src/pages/zh/token-api/_meta.js | 6 +- .../src/pages/zh/token-api/endpoints/_meta.js | 4 + .../{ => endpoints}/endpoint-pricing.mdx | 0 .../token-api/endpoints/endpoint-support.msx | 0 .../zh/token-api/guides/_meta-titles.json | 4 + .../src/pages/zh/token-api/guides/_meta.js | 4 + website/src/pages/zh/token-api/guides/gpt.mdx | 121 + .../zh/token-api/guides/upgrade-to-v1.mdx | 346 ++ .../pages/zh/token-api/svm-tokens/_meta.js | 2 +- .../src/pages/zh/token-api/upgrade-to-v1.mdx | 254 -- 217 files changed, 12315 insertions(+), 4561 deletions(-) create mode 100644 website/bun.lock create mode 100644 website/src/components/CodeTabs.tsx create mode 100644 website/src/pages/ar/token-api/endpoints/_meta.js rename website/src/pages/ar/token-api/{ => endpoints}/endpoint-pricing.mdx (100%) create mode 100644 website/src/pages/ar/token-api/endpoints/endpoint-support.msx create mode 100644 website/src/pages/ar/token-api/guides/_meta-titles.json create mode 100644 website/src/pages/ar/token-api/guides/_meta.js create mode 100644 website/src/pages/ar/token-api/guides/gpt.mdx rename website/src/pages/ar/token-api/{ => guides}/upgrade-to-v1.mdx (74%) create mode 100644 website/src/pages/cs/token-api/endpoints/_meta.js rename website/src/pages/cs/token-api/{ => endpoints}/endpoint-pricing.mdx (100%) create mode 100644 website/src/pages/cs/token-api/endpoints/endpoint-support.msx create mode 100644 website/src/pages/cs/token-api/guides/_meta-titles.json create mode 100644 website/src/pages/cs/token-api/guides/_meta.js create mode 100644 website/src/pages/cs/token-api/guides/gpt.mdx rename website/src/pages/cs/token-api/{ => guides}/upgrade-to-v1.mdx (74%) create mode 100644 website/src/pages/de/token-api/endpoints/_meta.js rename website/src/pages/de/token-api/{ => endpoints}/endpoint-pricing.mdx (100%) create mode 100644 website/src/pages/de/token-api/endpoints/endpoint-support.msx create mode 100644 website/src/pages/de/token-api/guides/_meta-titles.json create mode 100644 website/src/pages/de/token-api/guides/_meta.js create mode 100644 website/src/pages/de/token-api/guides/gpt.mdx rename website/src/pages/de/token-api/{ => guides}/upgrade-to-v1.mdx (74%) create mode 100644 website/src/pages/en/token-api/endpoints/_meta.js rename website/src/pages/en/token-api/{endpoint-pricing.mdx => endpoints/pricing.mdx} (99%) create mode 100644 website/src/pages/en/token-api/endpoints/support.mdx create mode 100644 website/src/pages/es/token-api/endpoints/_meta.js rename website/src/pages/es/token-api/{ => endpoints}/endpoint-pricing.mdx (100%) create mode 100644 website/src/pages/es/token-api/endpoints/endpoint-support.msx create mode 100644 website/src/pages/es/token-api/guides/_meta-titles.json create mode 100644 website/src/pages/es/token-api/guides/_meta.js create mode 100644 website/src/pages/es/token-api/guides/gpt.mdx rename website/src/pages/es/token-api/{ => guides}/upgrade-to-v1.mdx (74%) create mode 100644 website/src/pages/fr/token-api/endpoints/_meta.js rename website/src/pages/fr/token-api/{ => endpoints}/endpoint-pricing.mdx (100%) create mode 100644 website/src/pages/fr/token-api/endpoints/endpoint-support.msx create mode 100644 website/src/pages/fr/token-api/guides/_meta-titles.json create mode 100644 website/src/pages/fr/token-api/guides/_meta.js create mode 100644 website/src/pages/fr/token-api/guides/gpt.mdx create mode 100644 website/src/pages/fr/token-api/guides/upgrade-to-v1.mdx delete mode 100644 website/src/pages/fr/token-api/upgrade-to-v1.mdx create mode 100644 website/src/pages/hi/token-api/endpoints/_meta.js rename website/src/pages/hi/token-api/{ => endpoints}/endpoint-pricing.mdx (100%) create mode 100644 website/src/pages/hi/token-api/endpoints/endpoint-support.msx create mode 100644 website/src/pages/hi/token-api/guides/_meta-titles.json create mode 100644 website/src/pages/hi/token-api/guides/_meta.js create mode 100644 website/src/pages/hi/token-api/guides/gpt.mdx create mode 100644 website/src/pages/hi/token-api/guides/upgrade-to-v1.mdx delete mode 100644 website/src/pages/hi/token-api/upgrade-to-v1.mdx create mode 100644 website/src/pages/it/token-api/endpoints/_meta.js rename website/src/pages/it/token-api/{ => endpoints}/endpoint-pricing.mdx (100%) create mode 100644 website/src/pages/it/token-api/endpoints/endpoint-support.msx create mode 100644 website/src/pages/it/token-api/guides/_meta-titles.json create mode 100644 website/src/pages/it/token-api/guides/_meta.js create mode 100644 website/src/pages/it/token-api/guides/gpt.mdx create mode 100644 website/src/pages/it/token-api/guides/upgrade-to-v1.mdx delete mode 100644 website/src/pages/it/token-api/upgrade-to-v1.mdx create mode 100644 website/src/pages/ja/token-api/endpoints/_meta.js rename website/src/pages/ja/token-api/{ => endpoints}/endpoint-pricing.mdx (100%) create mode 100644 website/src/pages/ja/token-api/endpoints/endpoint-support.msx create mode 100644 website/src/pages/ja/token-api/guides/_meta-titles.json create mode 100644 website/src/pages/ja/token-api/guides/_meta.js create mode 100644 website/src/pages/ja/token-api/guides/gpt.mdx create mode 100644 website/src/pages/ja/token-api/guides/upgrade-to-v1.mdx delete mode 100644 website/src/pages/ja/token-api/upgrade-to-v1.mdx create mode 100644 website/src/pages/ko/token-api/endpoints/_meta.js rename website/src/pages/ko/token-api/{ => endpoints}/endpoint-pricing.mdx (100%) create mode 100644 website/src/pages/ko/token-api/endpoints/endpoint-support.msx create mode 100644 website/src/pages/ko/token-api/guides/_meta-titles.json create mode 100644 website/src/pages/ko/token-api/guides/_meta.js create mode 100644 website/src/pages/ko/token-api/guides/gpt.mdx create mode 100644 website/src/pages/ko/token-api/guides/upgrade-to-v1.mdx delete mode 100644 website/src/pages/ko/token-api/upgrade-to-v1.mdx create mode 100644 website/src/pages/mr/token-api/endpoints/_meta.js rename website/src/pages/mr/token-api/{ => endpoints}/endpoint-pricing.mdx (100%) create mode 100644 website/src/pages/mr/token-api/endpoints/endpoint-support.msx create mode 100644 website/src/pages/mr/token-api/guides/_meta-titles.json create mode 100644 website/src/pages/mr/token-api/guides/_meta.js create mode 100644 website/src/pages/mr/token-api/guides/gpt.mdx create mode 100644 website/src/pages/mr/token-api/guides/upgrade-to-v1.mdx delete mode 100644 website/src/pages/mr/token-api/upgrade-to-v1.mdx create mode 100644 website/src/pages/nl/token-api/endpoints/_meta.js rename website/src/pages/nl/token-api/{ => endpoints}/endpoint-pricing.mdx (100%) create mode 100644 website/src/pages/nl/token-api/endpoints/endpoint-support.msx create mode 100644 website/src/pages/nl/token-api/guides/_meta-titles.json create mode 100644 website/src/pages/nl/token-api/guides/_meta.js create mode 100644 website/src/pages/nl/token-api/guides/gpt.mdx create mode 100644 website/src/pages/nl/token-api/guides/upgrade-to-v1.mdx delete mode 100644 website/src/pages/nl/token-api/upgrade-to-v1.mdx create mode 100644 website/src/pages/pl/token-api/endpoints/_meta.js rename website/src/pages/pl/token-api/{ => endpoints}/endpoint-pricing.mdx (100%) create mode 100644 website/src/pages/pl/token-api/endpoints/endpoint-support.msx create mode 100644 website/src/pages/pl/token-api/guides/_meta-titles.json create mode 100644 website/src/pages/pl/token-api/guides/_meta.js create mode 100644 website/src/pages/pl/token-api/guides/gpt.mdx create mode 100644 website/src/pages/pl/token-api/guides/upgrade-to-v1.mdx delete mode 100644 website/src/pages/pl/token-api/upgrade-to-v1.mdx create mode 100644 website/src/pages/pt/token-api/endpoints/_meta.js rename website/src/pages/pt/token-api/{ => endpoints}/endpoint-pricing.mdx (100%) create mode 100644 website/src/pages/pt/token-api/endpoints/endpoint-support.msx create mode 100644 website/src/pages/pt/token-api/guides/_meta-titles.json create mode 100644 website/src/pages/pt/token-api/guides/_meta.js create mode 100644 website/src/pages/pt/token-api/guides/gpt.mdx create mode 100644 website/src/pages/pt/token-api/guides/upgrade-to-v1.mdx delete mode 100644 website/src/pages/pt/token-api/upgrade-to-v1.mdx create mode 100644 website/src/pages/ro/token-api/endpoints/_meta.js rename website/src/pages/ro/token-api/{ => endpoints}/endpoint-pricing.mdx (100%) create mode 100644 website/src/pages/ro/token-api/endpoints/endpoint-support.msx create mode 100644 website/src/pages/ro/token-api/guides/_meta-titles.json create mode 100644 website/src/pages/ro/token-api/guides/_meta.js create mode 100644 website/src/pages/ro/token-api/guides/gpt.mdx create mode 100644 website/src/pages/ro/token-api/guides/upgrade-to-v1.mdx delete mode 100644 website/src/pages/ro/token-api/upgrade-to-v1.mdx create mode 100644 website/src/pages/ru/token-api/endpoints/_meta.js rename website/src/pages/ru/token-api/{ => endpoints}/endpoint-pricing.mdx (100%) create mode 100644 website/src/pages/ru/token-api/endpoints/endpoint-support.msx create mode 100644 website/src/pages/ru/token-api/guides/_meta-titles.json create mode 100644 website/src/pages/ru/token-api/guides/_meta.js create mode 100644 website/src/pages/ru/token-api/guides/gpt.mdx create mode 100644 website/src/pages/ru/token-api/guides/upgrade-to-v1.mdx delete mode 100644 website/src/pages/ru/token-api/upgrade-to-v1.mdx create mode 100644 website/src/pages/sv/token-api/endpoints/_meta.js rename website/src/pages/sv/token-api/{ => endpoints}/endpoint-pricing.mdx (100%) create mode 100644 website/src/pages/sv/token-api/endpoints/endpoint-support.msx create mode 100644 website/src/pages/sv/token-api/guides/_meta-titles.json create mode 100644 website/src/pages/sv/token-api/guides/_meta.js create mode 100644 website/src/pages/sv/token-api/guides/gpt.mdx create mode 100644 website/src/pages/sv/token-api/guides/upgrade-to-v1.mdx delete mode 100644 website/src/pages/sv/token-api/upgrade-to-v1.mdx create mode 100644 website/src/pages/tr/token-api/endpoints/_meta.js rename website/src/pages/tr/token-api/{ => endpoints}/endpoint-pricing.mdx (100%) create mode 100644 website/src/pages/tr/token-api/endpoints/endpoint-support.msx create mode 100644 website/src/pages/tr/token-api/guides/_meta-titles.json create mode 100644 website/src/pages/tr/token-api/guides/_meta.js create mode 100644 website/src/pages/tr/token-api/guides/gpt.mdx create mode 100644 website/src/pages/tr/token-api/guides/upgrade-to-v1.mdx delete mode 100644 website/src/pages/tr/token-api/upgrade-to-v1.mdx create mode 100644 website/src/pages/uk/token-api/endpoints/_meta.js rename website/src/pages/uk/token-api/{ => endpoints}/endpoint-pricing.mdx (100%) create mode 100644 website/src/pages/uk/token-api/endpoints/endpoint-support.msx create mode 100644 website/src/pages/uk/token-api/guides/_meta-titles.json create mode 100644 website/src/pages/uk/token-api/guides/_meta.js create mode 100644 website/src/pages/uk/token-api/guides/gpt.mdx create mode 100644 website/src/pages/uk/token-api/guides/upgrade-to-v1.mdx delete mode 100644 website/src/pages/uk/token-api/upgrade-to-v1.mdx create mode 100644 website/src/pages/ur/token-api/endpoints/_meta.js rename website/src/pages/ur/token-api/{ => endpoints}/endpoint-pricing.mdx (100%) create mode 100644 website/src/pages/ur/token-api/endpoints/endpoint-support.msx create mode 100644 website/src/pages/ur/token-api/guides/_meta-titles.json create mode 100644 website/src/pages/ur/token-api/guides/_meta.js create mode 100644 website/src/pages/ur/token-api/guides/gpt.mdx create mode 100644 website/src/pages/ur/token-api/guides/upgrade-to-v1.mdx delete mode 100644 website/src/pages/ur/token-api/upgrade-to-v1.mdx create mode 100644 website/src/pages/vi/token-api/endpoints/_meta.js rename website/src/pages/vi/token-api/{ => endpoints}/endpoint-pricing.mdx (100%) create mode 100644 website/src/pages/vi/token-api/endpoints/endpoint-support.msx create mode 100644 website/src/pages/vi/token-api/guides/_meta-titles.json create mode 100644 website/src/pages/vi/token-api/guides/_meta.js create mode 100644 website/src/pages/vi/token-api/guides/gpt.mdx create mode 100644 website/src/pages/vi/token-api/guides/upgrade-to-v1.mdx delete mode 100644 website/src/pages/vi/token-api/upgrade-to-v1.mdx create mode 100644 website/src/pages/zh/token-api/endpoints/_meta.js rename website/src/pages/zh/token-api/{ => endpoints}/endpoint-pricing.mdx (100%) create mode 100644 website/src/pages/zh/token-api/endpoints/endpoint-support.msx create mode 100644 website/src/pages/zh/token-api/guides/_meta-titles.json create mode 100644 website/src/pages/zh/token-api/guides/_meta.js create mode 100644 website/src/pages/zh/token-api/guides/gpt.mdx create mode 100644 website/src/pages/zh/token-api/guides/upgrade-to-v1.mdx delete mode 100644 website/src/pages/zh/token-api/upgrade-to-v1.mdx diff --git a/nginx.conf b/nginx.conf index 577930b78772..dcd96f3bc584 100644 --- a/nginx.conf +++ b/nginx.conf @@ -169,6 +169,7 @@ http { rewrite ^/docs/([a-zA-Z][a-zA-Z])/token-api/mcp/cline/$ $scheme://$http_host/docs/$1/ai-suite/token-api-mcp/ permanent; rewrite ^/docs/([a-zA-Z][a-zA-Z])/token-api/mcp/cline/$ $scheme://$http_host/docs/$1/ai-suite/token-api-mcp/ permanent; rewrite ^/docs/([a-zA-Z][a-zA-Z])/token-api/mcp/cline/$ $scheme://$http_host/docs/$1/ai-suite/token-api-mcp/ permanent; + rewrite ^/docs/([a-zA-Z][a-zA-Z])/token-api/endpoint-pricing/$ $scheme://$http_host/docs/$1/token-api/endpoints/pricing/ permanent; # Temporary redirects (302) rewrite ^/docs/en/querying/graph-client/$ $scheme://$http_host/docs/en/subgraphs/querying/graph-client/README/ redirect; rewrite ^/docs/en/developing/graph-ts/$ $scheme://$http_host/docs/en/subgraphs/developing/creating/graph-ts/README/ redirect; diff --git a/website/bun.lock b/website/bun.lock new file mode 100644 index 000000000000..9a3bf41821e2 --- /dev/null +++ b/website/bun.lock @@ -0,0 +1,2946 @@ +{ + "lockfileVersion": 1, + "workspaces": { + "": { + "name": "@graphprotocol/docs", + "dependencies": { + "@docsearch/react": "^3.9.0", + "@edgeandnode/common": "^7.0.4", + "@edgeandnode/gds": "^6.7.8", + "@edgeandnode/go": "^10.3.12", + "@emotion/react": "^11.14.0", + "@graphprotocol/contracts": "^7.3.0", + "@pinax/graph-networks-registry": "^0.7.1", + "@react-hookz/web": "^25.2.0", + "@readme/httpsnippet": "^11.0.0", + "@readme/openapi-parser": "^4.1.2", + "fetch-har": "^11.1.1", + "hast": "^1.0.0", + "hast-util-whitespace": "^3.0.0", + "lodash": "^4.17.21", + "mdast-util-mdx-jsx": "^3.2.0", + "mdast-util-to-hast": "^13.2.0", + "mixpanel-browser": "^2.72.0", + "motion": "^12.23.24", + "next": "^14.2.33", + "next-seo": "^6.8.0", + "next-sitemap": "^4.2.3", + "nextra": "^3.3.1", + "openapi-types": "^12.1.3", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "react-ga4": "^2.1.0", + "react-intersection-observer": "^9.16.0", + "react-markdown": "^10.1.0", + "rehype-mdx-code-props": "^3.0.1", + "rehype-raw": "^7.0.0", + "remark-gfm": "^4.0.1", + "theme-ui": "^0.17.2", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.3", + "zod": "^3.25.76", + }, + "devDependencies": { + "@types/hast": "^3.0.4", + "@types/lodash": "^4.17.20", + "@types/mdast": "^4.0.4", + "@types/mixpanel-browser": "^2.66.0", + "@types/node": "^22.19.1", + "@types/react": "^18.3.27", + "@types/react-dom": "^18.3.7", + "@types/vfile": "^4.0.0", + "autoprefixer": "^10.4.22", + "fast-xml-parser": "^5.3.2", + "postcss": "^8.5.6", + "tailwindcss": "^3.4.18", + "tsup": "^8.5.1", + "tsx": "4.20.4", + }, + }, + }, + "packages": { + "@adraffy/ens-normalize": ["@adraffy/ens-normalize@1.10.1", "", {}, "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw=="], + + "@algolia/abtesting": ["@algolia/abtesting@1.11.0", "", { "dependencies": { "@algolia/client-common": "5.45.0", "@algolia/requester-browser-xhr": "5.45.0", "@algolia/requester-fetch": "5.45.0", "@algolia/requester-node-http": "5.45.0" } }, "sha512-a7oQ8dwiyoyVmzLY0FcuBqyqcNSq78qlcOtHmNBumRlHCSnXDcuoYGBGPN1F6n8JoGhviDDsIaF/oQrzTzs6Lg=="], + + "@algolia/autocomplete-core": ["@algolia/autocomplete-core@1.17.9", "", { "dependencies": { "@algolia/autocomplete-plugin-algolia-insights": "1.17.9", "@algolia/autocomplete-shared": "1.17.9" } }, "sha512-O7BxrpLDPJWWHv/DLA9DRFWs+iY1uOJZkqUwjS5HSZAGcl0hIVCQ97LTLewiZmZ402JYUrun+8NqFP+hCknlbQ=="], + + "@algolia/autocomplete-plugin-algolia-insights": ["@algolia/autocomplete-plugin-algolia-insights@1.17.9", "", { "dependencies": { "@algolia/autocomplete-shared": "1.17.9" }, "peerDependencies": { "search-insights": ">= 1 < 3" } }, "sha512-u1fEHkCbWF92DBeB/KHeMacsjsoI0wFhjZtlCq2ddZbAehshbZST6Hs0Avkc0s+4UyBGbMDnSuXHLuvRWK5iDQ=="], + + "@algolia/autocomplete-preset-algolia": ["@algolia/autocomplete-preset-algolia@1.17.9", "", { "dependencies": { "@algolia/autocomplete-shared": "1.17.9" }, "peerDependencies": { "@algolia/client-search": ">= 4.9.1 < 6", "algoliasearch": ">= 4.9.1 < 6" } }, "sha512-Na1OuceSJeg8j7ZWn5ssMu/Ax3amtOwk76u4h5J4eK2Nx2KB5qt0Z4cOapCsxot9VcEN11ADV5aUSlQF4RhGjQ=="], + + "@algolia/autocomplete-shared": ["@algolia/autocomplete-shared@1.17.9", "", { "peerDependencies": { "@algolia/client-search": ">= 4.9.1 < 6", "algoliasearch": ">= 4.9.1 < 6" } }, "sha512-iDf05JDQ7I0b7JEA/9IektxN/80a2MZ1ToohfmNS3rfeuQnIKI3IJlIafD0xu4StbtQTghx9T3Maa97ytkXenQ=="], + + "@algolia/client-abtesting": ["@algolia/client-abtesting@5.45.0", "", { "dependencies": { "@algolia/client-common": "5.45.0", "@algolia/requester-browser-xhr": "5.45.0", "@algolia/requester-fetch": "5.45.0", "@algolia/requester-node-http": "5.45.0" } }, "sha512-WTW0VZA8xHMbzuQD5b3f41ovKZ0MNTIXkWfm0F2PU+XGcLxmxX15UqODzF2sWab0vSbi3URM1xLhJx+bXbd1eQ=="], + + "@algolia/client-analytics": ["@algolia/client-analytics@5.45.0", "", { "dependencies": { "@algolia/client-common": "5.45.0", "@algolia/requester-browser-xhr": "5.45.0", "@algolia/requester-fetch": "5.45.0", "@algolia/requester-node-http": "5.45.0" } }, "sha512-I3g7VtvG/QJOH3tQO7E7zWTwBfK/nIQXShFLR8RvPgWburZ626JNj332M3wHCYcaAMivN9WJG66S2JNXhm6+Xg=="], + + "@algolia/client-common": ["@algolia/client-common@5.45.0", "", {}, "sha512-/nTqm1tLiPtbUr+8kHKyFiCOfhRfgC+JxLvOCq471gFZZOlsh6VtFRiKI60/zGmHTojFC6B0mD80PB7KeK94og=="], + + "@algolia/client-insights": ["@algolia/client-insights@5.45.0", "", { "dependencies": { "@algolia/client-common": "5.45.0", "@algolia/requester-browser-xhr": "5.45.0", "@algolia/requester-fetch": "5.45.0", "@algolia/requester-node-http": "5.45.0" } }, "sha512-suQTx/1bRL1g/K2hRtbK3ANmbzaZCi13487sxxmqok+alBDKKw0/TI73ZiHjjFXM2NV52inwwcmW4fUR45206Q=="], + + "@algolia/client-personalization": ["@algolia/client-personalization@5.45.0", "", { "dependencies": { "@algolia/client-common": "5.45.0", "@algolia/requester-browser-xhr": "5.45.0", "@algolia/requester-fetch": "5.45.0", "@algolia/requester-node-http": "5.45.0" } }, "sha512-CId/dbjpzI3eoUhPU6rt/z4GrRsDesqFISEMOwrqWNSrf4FJhiUIzN42Ac+Gzg69uC0RnzRYy60K1y4Na5VSMw=="], + + "@algolia/client-query-suggestions": ["@algolia/client-query-suggestions@5.45.0", "", { "dependencies": { "@algolia/client-common": "5.45.0", "@algolia/requester-browser-xhr": "5.45.0", "@algolia/requester-fetch": "5.45.0", "@algolia/requester-node-http": "5.45.0" } }, "sha512-tjbBKfA8fjAiFtvl9g/MpIPiD6pf3fj7rirVfh1eMIUi8ybHP4ovDzIaE216vHuRXoePQVCkMd2CokKvYq1CLw=="], + + "@algolia/client-search": ["@algolia/client-search@5.45.0", "", { "dependencies": { "@algolia/client-common": "5.45.0", "@algolia/requester-browser-xhr": "5.45.0", "@algolia/requester-fetch": "5.45.0", "@algolia/requester-node-http": "5.45.0" } }, "sha512-nxuCid+Nszs4xqwIMDw11pRJPes2c+Th1yup/+LtpjFH8QWXkr3SirNYSD3OXAeM060HgWWPLA8/Fxk+vwxQOA=="], + + "@algolia/ingestion": ["@algolia/ingestion@1.45.0", "", { "dependencies": { "@algolia/client-common": "5.45.0", "@algolia/requester-browser-xhr": "5.45.0", "@algolia/requester-fetch": "5.45.0", "@algolia/requester-node-http": "5.45.0" } }, "sha512-t+1doBzhkQTeOOjLHMlm4slmXBhvgtEGQhOmNpMPTnIgWOyZyESWdm+XD984qM4Ej1i9FRh8VttOGrdGnAjAng=="], + + "@algolia/monitoring": ["@algolia/monitoring@1.45.0", "", { "dependencies": { "@algolia/client-common": "5.45.0", "@algolia/requester-browser-xhr": "5.45.0", "@algolia/requester-fetch": "5.45.0", "@algolia/requester-node-http": "5.45.0" } }, "sha512-IaX3ZX1A/0wlgWZue+1BNWlq5xtJgsRo7uUk/aSiYD7lPbJ7dFuZ+yTLFLKgbl4O0QcyHTj1/mSBj9ryF1Lizg=="], + + "@algolia/recommend": ["@algolia/recommend@5.45.0", "", { "dependencies": { "@algolia/client-common": "5.45.0", "@algolia/requester-browser-xhr": "5.45.0", "@algolia/requester-fetch": "5.45.0", "@algolia/requester-node-http": "5.45.0" } }, "sha512-1jeMLoOhkgezCCPsOqkScwYzAAc1Jr5T2hisZl0s32D94ZV7d1OHozBukgOjf8Dw+6Hgi6j52jlAdUWTtkX9Mg=="], + + "@algolia/requester-browser-xhr": ["@algolia/requester-browser-xhr@5.45.0", "", { "dependencies": { "@algolia/client-common": "5.45.0" } }, "sha512-46FIoUkQ9N7wq4/YkHS5/W9Yjm4Ab+q5kfbahdyMpkBPJ7IBlwuNEGnWUZIQ6JfUZuJVojRujPRHMihX4awUMg=="], + + "@algolia/requester-fetch": ["@algolia/requester-fetch@5.45.0", "", { "dependencies": { "@algolia/client-common": "5.45.0" } }, "sha512-XFTSAtCwy4HdBhSReN2rhSyH/nZOM3q3qe5ERG2FLbYId62heIlJBGVyAPRbltRwNlotlydbvSJ+SQ0ruWC2cw=="], + + "@algolia/requester-node-http": ["@algolia/requester-node-http@5.45.0", "", { "dependencies": { "@algolia/client-common": "5.45.0" } }, "sha512-8mTg6lHx5i44raCU52APsu0EqMsdm4+7Hch/e4ZsYZw0hzwkuaMFh826ngnkYf9XOl58nHoou63aZ874m8AbpQ=="], + + "@alloc/quick-lru": ["@alloc/quick-lru@5.2.0", "", {}, "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw=="], + + "@antfu/install-pkg": ["@antfu/install-pkg@1.1.0", "", { "dependencies": { "package-manager-detector": "^1.3.0", "tinyexec": "^1.0.1" } }, "sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ=="], + + "@antfu/utils": ["@antfu/utils@9.3.0", "", {}, "sha512-9hFT4RauhcUzqOE4f1+frMKLZrgNog5b06I7VmZQV1BkvwvqrbC8EBZf3L1eEL2AKb6rNKjER0sEvJiSP1FXEA=="], + + "@apidevtools/json-schema-ref-parser": ["@apidevtools/json-schema-ref-parser@13.0.5", "", { "dependencies": { "@types/json-schema": "^7.0.15", "js-yaml": "^4.1.0" } }, "sha512-xfh4xVJD62gG6spIc7lwxoWT+l16nZu1ELyU8FkjaP/oD2yP09EvLAU6KhtudN9aML2Khhs9pY6Slr7KGTES3w=="], + + "@asamuzakjp/css-color": ["@asamuzakjp/css-color@3.2.0", "", { "dependencies": { "@csstools/css-calc": "^2.1.3", "@csstools/css-color-parser": "^3.0.9", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3", "lru-cache": "^10.4.3" } }, "sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw=="], + + "@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="], + + "@babel/generator": ["@babel/generator@7.28.5", "", { "dependencies": { "@babel/parser": "^7.28.5", "@babel/types": "^7.28.5", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ=="], + + "@babel/helper-globals": ["@babel/helper-globals@7.28.0", "", {}, "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw=="], + + "@babel/helper-module-imports": ["@babel/helper-module-imports@7.27.1", "", { "dependencies": { "@babel/traverse": "^7.27.1", "@babel/types": "^7.27.1" } }, "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w=="], + + "@babel/helper-string-parser": ["@babel/helper-string-parser@7.27.1", "", {}, "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA=="], + + "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.28.5", "", {}, "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q=="], + + "@babel/parser": ["@babel/parser@7.28.5", "", { "dependencies": { "@babel/types": "^7.28.5" }, "bin": "./bin/babel-parser.js" }, "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ=="], + + "@babel/runtime": ["@babel/runtime@7.28.4", "", {}, "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ=="], + + "@babel/template": ["@babel/template@7.27.2", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/parser": "^7.27.2", "@babel/types": "^7.27.1" } }, "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw=="], + + "@babel/traverse": ["@babel/traverse@7.28.5", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", "@babel/helper-globals": "^7.28.0", "@babel/parser": "^7.28.5", "@babel/template": "^7.27.2", "@babel/types": "^7.28.5", "debug": "^4.3.1" } }, "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ=="], + + "@babel/types": ["@babel/types@7.28.5", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA=="], + + "@base-ui-components/react": ["@base-ui-components/react@1.0.0-alpha.7", "", { "dependencies": { "@babel/runtime": "^7.26.10", "@floating-ui/react": "^0.27.5", "@floating-ui/utils": "^0.2.9", "@react-aria/overlays": "^3.26.1", "prop-types": "^15.8.1", "use-sync-external-store": "^1.4.0" }, "peerDependencies": { "@types/react": "^17 || ^18 || ^19", "react": "^17 || ^18 || ^19", "react-dom": "^17 || ^18 || ^19" }, "optionalPeers": ["@types/react"] }, "sha512-M4MxUvwAfERYSMqrUmTSf4J5yHXXGHqXw5wE7WLz8eCIhFmVWog4j5hYRU6QZ0VhqlyVPhs9KqSnts+FFyPmew=="], + + "@braintree/sanitize-url": ["@braintree/sanitize-url@7.1.1", "", {}, "sha512-i1L7noDNxtFyL5DmZafWy1wRVhGehQmzZaz1HiN5e7iylJMSZR7ekOV7NsIqa5qBldlLrsKv4HbgFUVlQrz8Mw=="], + + "@bramus/style-observer": ["@bramus/style-observer@2.0.2", "", {}, "sha512-oRKamZ9Z637pAZgNGJIbNGiFoYQSeA47PpU4K8hXZq9lQcPu35BCqMG9d9J/ab2CB/0XlXq6ToMnVhHF8mLNqg=="], + + "@chevrotain/cst-dts-gen": ["@chevrotain/cst-dts-gen@11.0.3", "", { "dependencies": { "@chevrotain/gast": "11.0.3", "@chevrotain/types": "11.0.3", "lodash-es": "4.17.21" } }, "sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ=="], + + "@chevrotain/gast": ["@chevrotain/gast@11.0.3", "", { "dependencies": { "@chevrotain/types": "11.0.3", "lodash-es": "4.17.21" } }, "sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q=="], + + "@chevrotain/regexp-to-ast": ["@chevrotain/regexp-to-ast@11.0.3", "", {}, "sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA=="], + + "@chevrotain/types": ["@chevrotain/types@11.0.3", "", {}, "sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ=="], + + "@chevrotain/utils": ["@chevrotain/utils@11.0.3", "", {}, "sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ=="], + + "@corex/deepmerge": ["@corex/deepmerge@4.0.43", "", {}, "sha512-N8uEMrMPL0cu/bdboEWpQYb/0i2K5Qn8eCsxzOmxSggJbbQte7ljMRoXm917AbntqTGOzdTu+vP3KOOzoC70HQ=="], + + "@csstools/color-helpers": ["@csstools/color-helpers@5.1.0", "", {}, "sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA=="], + + "@csstools/css-calc": ["@csstools/css-calc@2.1.4", "", { "peerDependencies": { "@csstools/css-parser-algorithms": "^3.0.5", "@csstools/css-tokenizer": "^3.0.4" } }, "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ=="], + + "@csstools/css-color-parser": ["@csstools/css-color-parser@3.1.0", "", { "dependencies": { "@csstools/color-helpers": "^5.1.0", "@csstools/css-calc": "^2.1.4" }, "peerDependencies": { "@csstools/css-parser-algorithms": "^3.0.5", "@csstools/css-tokenizer": "^3.0.4" } }, "sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA=="], + + "@csstools/css-parser-algorithms": ["@csstools/css-parser-algorithms@3.0.5", "", { "peerDependencies": { "@csstools/css-tokenizer": "^3.0.4" } }, "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ=="], + + "@csstools/css-tokenizer": ["@csstools/css-tokenizer@3.0.4", "", {}, "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw=="], + + "@docsearch/css": ["@docsearch/css@3.9.0", "", {}, "sha512-cQbnVbq0rrBwNAKegIac/t6a8nWoUAn8frnkLFW6YARaRmAQr5/Eoe6Ln2fqkUCZ40KpdrKbpSAmgrkviOxuWA=="], + + "@docsearch/react": ["@docsearch/react@3.9.0", "", { "dependencies": { "@algolia/autocomplete-core": "1.17.9", "@algolia/autocomplete-preset-algolia": "1.17.9", "@docsearch/css": "3.9.0", "algoliasearch": "^5.14.2" }, "peerDependencies": { "@types/react": ">= 16.8.0 < 20.0.0", "react": ">= 16.8.0 < 20.0.0", "react-dom": ">= 16.8.0 < 20.0.0", "search-insights": ">= 1 < 3" }, "optionalPeers": ["@types/react", "react", "react-dom", "search-insights"] }, "sha512-mb5FOZYZIkRQ6s/NWnM98k879vu5pscWqTLubLFBO87igYYT4VzVazh4h5o/zCvTIZgEt3PvsCOMOswOUo9yHQ=="], + + "@edgeandnode/common": ["@edgeandnode/common@7.0.4", "", { "dependencies": { "@ethersproject/providers": "^5.8.0", "@pinax/graph-networks-registry": "^0.6.7", "@uniswap/sdk-core": "^7.7.2", "@uniswap/v3-core": "^1.0.1", "@uniswap/v3-sdk": "^3.25.2", "dataloader": "^2.2.3", "dayjs": "^1.11.13", "decimal.js": "^10.5.0", "ethers": "^5.8.0", "graphql": "^16.10.0", "graphql-tag": "^2.12.6", "numeral": "^2.0.6", "pluralize": "^8.0.0" } }, "sha512-R5i6tPnmUY00nbaWKvrLlfToFciJSm7Kk5boql16f+NzZnvsk6+SxFWi7b/hmQfEbaXm74isD/yfVcLPX6h+Aw=="], + + "@edgeandnode/ens": ["@edgeandnode/ens@2.3.1", "", { "dependencies": { "@ensdomains/ensjs": "^4.0.2", "graphql": "^16.11.0", "graphql-request": "^7.2.0", "zod": "^4.1.11" }, "peerDependencies": { "viem": "^2.37" } }, "sha512-NGwFZ+Imnea8ao7m4vHywZDbcqGXzij8+PCPS5t9t1elWfykkDf6lUP8xopcYkJkYjD9hgUydmlZ0BYH6nrKTQ=="], + + "@edgeandnode/gds": ["@edgeandnode/gds@6.7.8", "", { "dependencies": { "@base-ui-components/react": "1.0.0-alpha.7", "@bramus/style-observer": "^2.0.2", "@edgeandnode/common": "^7.0.4", "@figma/code-connect": "^1.3.2", "@floating-ui/react-dom": "^2.1.2", "@headlessui/react": "^2.2.1", "@phosphor-icons/react": "^2.1.7", "@radix-ui/react-accordion": "^1.2.3", "@radix-ui/react-alert-dialog": "^1.1.6", "@radix-ui/react-dialog": "^1.1.6", "@radix-ui/react-direction": "^1.1.0", "@radix-ui/react-dropdown-menu": "^2.1.6", "@radix-ui/react-label": "^2.1.2", "@radix-ui/react-popover": "^1.1.6", "@radix-ui/react-slider": "^1.2.3", "@radix-ui/react-slot": "^1.1.2", "@radix-ui/react-switch": "^1.1.3", "@radix-ui/react-toast": "^1.2.6", "@radix-ui/react-tooltip": "^1.1.8", "@react-aria/utils": "^3.28.1", "@react-hookz/web": "^25.1.0", "@tailwindcss/container-queries": "^0.1.1", "@tanem/react-nprogress": "^5.0.55", "@theme-ui/css": "^0.17.2", "@theme-ui/match-media": "^0.17.2", "@web3icons/react": "^4.0.28", "@xstate/react": "^3.2.2", "color": "^5.0.0", "escape-string-regexp": "^5.0.0", "ethers": "^5.8.0", "lodash": "^4.17.21", "md5": "^2.3.0", "motion": "^12.6.3", "numeral": "^2.0.6", "prism-react-renderer": "^2.4.1", "prismjs": "^1.30.0", "react-aria": "^3.38.1", "react-device-detect": "^2.2.3", "react-dropzone": "^14.3.8", "react-ga4": "^2.1.0", "react-image-crop": "^11.0.7", "react-keyed-flatten-children": "^5.0.0", "react-transition-group": "^4.4.5", "react-virtuoso": "^4.12.6", "recharts": "^2.15.2", "shiki": "^3.2.1", "tailwindcss": "^3.4.17", "typy": "^3.3.0", "universal-cookie": "^7.2.2", "xstate": "^4.38.3" }, "peerDependencies": { "@emotion/react": "^11", "dayjs": "^1.11", "next": ">=13", "react": "^18", "react-dom": "^18", "theme-ui": ">=0.16" }, "optionalPeers": ["next"] }, "sha512-2tqMNFAIT5tW2SMxjWGci9bQcLyvzOSeHs9RL6iSe6keTVHfnQCyefnQ58FjCEOhwv32Ki3dulN2xM6TGR6++A=="], + + "@edgeandnode/go": ["@edgeandnode/go@10.3.12", "", { "dependencies": { "@graphql-typed-document-node/core": "^3.2.0", "@radix-ui/react-collapsible": "^1.1.3", "@radix-ui/react-dialog": "^1.1.6", "@radix-ui/react-navigation-menu": "^1.2.5", "@radix-ui/react-portal": "^1.1.4", "@react-aria/utils": "^3.28.1", "@theme-ui/css": "^0.17.2", "@web3icons/react": "^4.0.28", "escape-string-regexp": "^5.0.0", "motion": "^12.6.3", "tailwindcss": "^3.4.17" }, "peerDependencies": { "@edgeandnode/common": "^7.0.4", "@edgeandnode/ens": "^2.3.1", "@edgeandnode/gds": "^6.7.8", "@emotion/react": "^11", "@tanstack/react-query": "^5", "graphql": ">=16.9", "graphql-request": ">=7", "next": ">=13", "react": "^18", "react-dom": "^18", "theme-ui": ">=0.16" }, "optionalPeers": ["next"] }, "sha512-6B+Fo9TNYxqdrJ/cmsn9arhcxCTyz9rUPaXsw9dxDjJB5KMciIFphj5RH3BGzF27kJEydDHEaqLKQmyUsWEQeg=="], + + "@emotion/babel-plugin": ["@emotion/babel-plugin@11.13.5", "", { "dependencies": { "@babel/helper-module-imports": "^7.16.7", "@babel/runtime": "^7.18.3", "@emotion/hash": "^0.9.2", "@emotion/memoize": "^0.9.0", "@emotion/serialize": "^1.3.3", "babel-plugin-macros": "^3.1.0", "convert-source-map": "^1.5.0", "escape-string-regexp": "^4.0.0", "find-root": "^1.1.0", "source-map": "^0.5.7", "stylis": "4.2.0" } }, "sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ=="], + + "@emotion/cache": ["@emotion/cache@11.14.0", "", { "dependencies": { "@emotion/memoize": "^0.9.0", "@emotion/sheet": "^1.4.0", "@emotion/utils": "^1.4.2", "@emotion/weak-memoize": "^0.4.0", "stylis": "4.2.0" } }, "sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA=="], + + "@emotion/hash": ["@emotion/hash@0.9.2", "", {}, "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g=="], + + "@emotion/is-prop-valid": ["@emotion/is-prop-valid@0.8.8", "", { "dependencies": { "@emotion/memoize": "0.7.4" } }, "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA=="], + + "@emotion/memoize": ["@emotion/memoize@0.9.0", "", {}, "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ=="], + + "@emotion/react": ["@emotion/react@11.14.0", "", { "dependencies": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.13.5", "@emotion/cache": "^11.14.0", "@emotion/serialize": "^1.3.3", "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0", "@emotion/utils": "^1.4.2", "@emotion/weak-memoize": "^0.4.0", "hoist-non-react-statics": "^3.3.1" }, "peerDependencies": { "react": ">=16.8.0" } }, "sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA=="], + + "@emotion/serialize": ["@emotion/serialize@1.3.3", "", { "dependencies": { "@emotion/hash": "^0.9.2", "@emotion/memoize": "^0.9.0", "@emotion/unitless": "^0.10.0", "@emotion/utils": "^1.4.2", "csstype": "^3.0.2" } }, "sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA=="], + + "@emotion/sheet": ["@emotion/sheet@1.4.0", "", {}, "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg=="], + + "@emotion/unitless": ["@emotion/unitless@0.10.0", "", {}, "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg=="], + + "@emotion/use-insertion-effect-with-fallbacks": ["@emotion/use-insertion-effect-with-fallbacks@1.2.0", "", { "peerDependencies": { "react": ">=16.8.0" } }, "sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg=="], + + "@emotion/utils": ["@emotion/utils@1.4.2", "", {}, "sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA=="], + + "@emotion/weak-memoize": ["@emotion/weak-memoize@0.4.0", "", {}, "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg=="], + + "@ensdomains/address-encoder": ["@ensdomains/address-encoder@1.1.3", "", { "dependencies": { "@noble/curves": "^1.2.0", "@noble/hashes": "^1.3.2", "@scure/base": "^1.1.5" } }, "sha512-QS4ax0YkA8tsbQcWgBNmLLtb3aG0jsOQtED9SRyX9Ixflt1jDMuC/0i3ONMnNJNG5HTIko0Te4Y1JIGXjNcnUg=="], + + "@ensdomains/content-hash": ["@ensdomains/content-hash@3.1.0-rc.1", "", { "dependencies": { "@ensdomains/address-encoder": "1.0.0-rc.3", "@noble/curves": "^1.2.0", "@scure/base": "^1.1.5" } }, "sha512-OzdkXgdFmduzcJKU4KRkkJkQHnm5p7m7FkX8k+bHOEoOIzc0ueGT/Jay4nnb60wNk1wSHRmzY+hHBMpFDiGReg=="], + + "@ensdomains/dnsprovejs": ["@ensdomains/dnsprovejs@0.5.2", "", { "dependencies": { "@noble/hashes": "^1.3.2", "dns-packet": "^5.6.1", "typescript-logging": "^1.0.1" } }, "sha512-lSuYnUvUV+kBviQ82XUldtpiE0lA4gWrCilsoCWbTKtc/fH6re9NaTkhbPEy/7OF96MMAG1BDnuoTsfSMAzFBg=="], + + "@ensdomains/ensjs": ["@ensdomains/ensjs@4.2.0", "", { "dependencies": { "@adraffy/ens-normalize": "1.10.1", "@ensdomains/address-encoder": "1.1.3", "@ensdomains/content-hash": "3.1.0-rc.1", "@ensdomains/dnsprovejs": "^0.5.2", "abitype": "^1.0.0", "dns-packet": "^5.3.1", "graphql": "^16.11.0", "graphql-request": "7.1.2", "pako": "^2.1.0", "ts-pattern": "^5.4.0" }, "peerDependencies": { "viem": "^2.9.2" } }, "sha512-6E8LnKCJ45HySx8PSlepL8VfHJg0PgQRmP1xM8Snu9IcOkSpwI1LEiGOUYfEHX/I7yEglGSYMyGgeiqk0LeCcw=="], + + "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.27.0", "", { "os": "aix", "cpu": "ppc64" }, "sha512-KuZrd2hRjz01y5JK9mEBSD3Vj3mbCvemhT466rSuJYeE/hjuBrHfjjcjMdTm/sz7au+++sdbJZJmuBwQLuw68A=="], + + "@esbuild/android-arm": ["@esbuild/android-arm@0.27.0", "", { "os": "android", "cpu": "arm" }, "sha512-j67aezrPNYWJEOHUNLPj9maeJte7uSMM6gMoxfPC9hOg8N02JuQi/T7ewumf4tNvJadFkvLZMlAq73b9uwdMyQ=="], + + "@esbuild/android-arm64": ["@esbuild/android-arm64@0.27.0", "", { "os": "android", "cpu": "arm64" }, "sha512-CC3vt4+1xZrs97/PKDkl0yN7w8edvU2vZvAFGD16n9F0Cvniy5qvzRXjfO1l94efczkkQE6g1x0i73Qf5uthOQ=="], + + "@esbuild/android-x64": ["@esbuild/android-x64@0.27.0", "", { "os": "android", "cpu": "x64" }, "sha512-wurMkF1nmQajBO1+0CJmcN17U4BP6GqNSROP8t0X/Jiw2ltYGLHpEksp9MpoBqkrFR3kv2/te6Sha26k3+yZ9Q=="], + + "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.27.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-uJOQKYCcHhg07DL7i8MzjvS2LaP7W7Pn/7uA0B5S1EnqAirJtbyw4yC5jQ5qcFjHK9l6o/MX9QisBg12kNkdHg=="], + + "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.27.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-8mG6arH3yB/4ZXiEnXof5MK72dE6zM9cDvUcPtxhUZsDjESl9JipZYW60C3JGreKCEP+p8P/72r69m4AZGJd5g=="], + + "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.27.0", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-9FHtyO988CwNMMOE3YIeci+UV+x5Zy8fI2qHNpsEtSF83YPBmE8UWmfYAQg6Ux7Gsmd4FejZqnEUZCMGaNQHQw=="], + + "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.27.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-zCMeMXI4HS/tXvJz8vWGexpZj2YVtRAihHLk1imZj4efx1BQzN76YFeKqlDr3bUWI26wHwLWPd3rwh6pe4EV7g=="], + + "@esbuild/linux-arm": ["@esbuild/linux-arm@0.27.0", "", { "os": "linux", "cpu": "arm" }, "sha512-t76XLQDpxgmq2cNXKTVEB7O7YMb42atj2Re2Haf45HkaUpjM2J0UuJZDuaGbPbamzZ7bawyGFUkodL+zcE+jvQ=="], + + "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.27.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-AS18v0V+vZiLJyi/4LphvBE+OIX682Pu7ZYNsdUHyUKSoRwdnOsMf6FDekwoAFKej14WAkOef3zAORJgAtXnlQ=="], + + "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.27.0", "", { "os": "linux", "cpu": "ia32" }, "sha512-Mz1jxqm/kfgKkc/KLHC5qIujMvnnarD9ra1cEcrs7qshTUSksPihGrWHVG5+osAIQ68577Zpww7SGapmzSt4Nw=="], + + "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.27.0", "", { "os": "linux", "cpu": "none" }, "sha512-QbEREjdJeIreIAbdG2hLU1yXm1uu+LTdzoq1KCo4G4pFOLlvIspBm36QrQOar9LFduavoWX2msNFAAAY9j4BDg=="], + + "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.27.0", "", { "os": "linux", "cpu": "none" }, "sha512-sJz3zRNe4tO2wxvDpH/HYJilb6+2YJxo/ZNbVdtFiKDufzWq4JmKAiHy9iGoLjAV7r/W32VgaHGkk35cUXlNOg=="], + + "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.27.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-z9N10FBD0DCS2dmSABDBb5TLAyF1/ydVb+N4pi88T45efQ/w4ohr/F/QYCkxDPnkhkp6AIpIcQKQ8F0ANoA2JA=="], + + "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.27.0", "", { "os": "linux", "cpu": "none" }, "sha512-pQdyAIZ0BWIC5GyvVFn5awDiO14TkT/19FTmFcPdDec94KJ1uZcmFs21Fo8auMXzD4Tt+diXu1LW1gHus9fhFQ=="], + + "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.27.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-hPlRWR4eIDDEci953RI1BLZitgi5uqcsjKMxwYfmi4LcwyWo2IcRP+lThVnKjNtk90pLS8nKdroXYOqW+QQH+w=="], + + "@esbuild/linux-x64": ["@esbuild/linux-x64@0.27.0", "", { "os": "linux", "cpu": "x64" }, "sha512-1hBWx4OUJE2cab++aVZ7pObD6s+DK4mPGpemtnAORBvb5l/g5xFGk0vc0PjSkrDs0XaXj9yyob3d14XqvnQ4gw=="], + + "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.27.0", "", { "os": "none", "cpu": "arm64" }, "sha512-6m0sfQfxfQfy1qRuecMkJlf1cIzTOgyaeXaiVaaki8/v+WB+U4hc6ik15ZW6TAllRlg/WuQXxWj1jx6C+dfy3w=="], + + "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.27.0", "", { "os": "none", "cpu": "x64" }, "sha512-xbbOdfn06FtcJ9d0ShxxvSn2iUsGd/lgPIO2V3VZIPDbEaIj1/3nBBe1AwuEZKXVXkMmpr6LUAgMkLD/4D2PPA=="], + + "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.27.0", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-fWgqR8uNbCQ/GGv0yhzttj6sU/9Z5/Sv/VGU3F5OuXK6J6SlriONKrQ7tNlwBrJZXRYk5jUhuWvF7GYzGguBZQ=="], + + "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.27.0", "", { "os": "openbsd", "cpu": "x64" }, "sha512-aCwlRdSNMNxkGGqQajMUza6uXzR/U0dIl1QmLjPtRbLOx3Gy3otfFu/VjATy4yQzo9yFDGTxYDo1FfAD9oRD2A=="], + + "@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.27.0", "", { "os": "none", "cpu": "arm64" }, "sha512-nyvsBccxNAsNYz2jVFYwEGuRRomqZ149A39SHWk4hV0jWxKM0hjBPm3AmdxcbHiFLbBSwG6SbpIcUbXjgyECfA=="], + + "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.27.0", "", { "os": "sunos", "cpu": "x64" }, "sha512-Q1KY1iJafM+UX6CFEL+F4HRTgygmEW568YMqDA5UV97AuZSm21b7SXIrRJDwXWPzr8MGr75fUZPV67FdtMHlHA=="], + + "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.27.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-W1eyGNi6d+8kOmZIwi/EDjrL9nxQIQ0MiGqe/AWc6+IaHloxHSGoeRgDRKHFISThLmsewZ5nHFvGFWdBYlgKPg=="], + + "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.27.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-30z1aKL9h22kQhilnYkORFYt+3wp7yZsHWus+wSKAJR8JtdfI76LJ4SBdMsCopTR3z/ORqVu5L1vtnHZWVj4cQ=="], + + "@esbuild/win32-x64": ["@esbuild/win32-x64@0.27.0", "", { "os": "win32", "cpu": "x64" }, "sha512-aIitBcjQeyOhMTImhLZmtxfdOcuNRpwlPNmlFKPcHQYPhEssw75Cl1TSXJXpMkzaua9FUetx/4OQKq7eJul5Cg=="], + + "@ethereumjs/rlp": ["@ethereumjs/rlp@5.0.2", "", { "bin": { "rlp": "bin/rlp.cjs" } }, "sha512-DziebCdg4JpGlEqEdGgXmjqcFoJi+JGulUXwEjsZGAscAQ7MyD/7LE/GVCP29vEQxKc7AAwjT3A2ywHp2xfoCA=="], + + "@ethereumjs/util": ["@ethereumjs/util@9.1.0", "", { "dependencies": { "@ethereumjs/rlp": "^5.0.2", "ethereum-cryptography": "^2.2.1" } }, "sha512-XBEKsYqLGXLah9PNJbgdkigthkG7TAGvlD/sH12beMXEyHDyigfcbdvHhmLyDWgDyOJn4QwiQUaF7yeuhnjdog=="], + + "@ethersproject/abi": ["@ethersproject/abi@5.8.0", "", { "dependencies": { "@ethersproject/address": "^5.8.0", "@ethersproject/bignumber": "^5.8.0", "@ethersproject/bytes": "^5.8.0", "@ethersproject/constants": "^5.8.0", "@ethersproject/hash": "^5.8.0", "@ethersproject/keccak256": "^5.8.0", "@ethersproject/logger": "^5.8.0", "@ethersproject/properties": "^5.8.0", "@ethersproject/strings": "^5.8.0" } }, "sha512-b9YS/43ObplgyV6SlyQsG53/vkSal0MNA1fskSC4mbnCMi8R+NkcH8K9FPYNESf6jUefBUniE4SOKms0E/KK1Q=="], + + "@ethersproject/abstract-provider": ["@ethersproject/abstract-provider@5.8.0", "", { "dependencies": { "@ethersproject/bignumber": "^5.8.0", "@ethersproject/bytes": "^5.8.0", "@ethersproject/logger": "^5.8.0", "@ethersproject/networks": "^5.8.0", "@ethersproject/properties": "^5.8.0", "@ethersproject/transactions": "^5.8.0", "@ethersproject/web": "^5.8.0" } }, "sha512-wC9SFcmh4UK0oKuLJQItoQdzS/qZ51EJegK6EmAWlh+OptpQ/npECOR3QqECd8iGHC0RJb4WKbVdSfif4ammrg=="], + + "@ethersproject/abstract-signer": ["@ethersproject/abstract-signer@5.8.0", "", { "dependencies": { "@ethersproject/abstract-provider": "^5.8.0", "@ethersproject/bignumber": "^5.8.0", "@ethersproject/bytes": "^5.8.0", "@ethersproject/logger": "^5.8.0", "@ethersproject/properties": "^5.8.0" } }, "sha512-N0XhZTswXcmIZQdYtUnd79VJzvEwXQw6PK0dTl9VoYrEBxxCPXqS0Eod7q5TNKRxe1/5WUMuR0u0nqTF/avdCA=="], + + "@ethersproject/address": ["@ethersproject/address@5.8.0", "", { "dependencies": { "@ethersproject/bignumber": "^5.8.0", "@ethersproject/bytes": "^5.8.0", "@ethersproject/keccak256": "^5.8.0", "@ethersproject/logger": "^5.8.0", "@ethersproject/rlp": "^5.8.0" } }, "sha512-GhH/abcC46LJwshoN+uBNoKVFPxUuZm6dA257z0vZkKmU1+t8xTn8oK7B9qrj8W2rFRMch4gbJl6PmVxjxBEBA=="], + + "@ethersproject/base64": ["@ethersproject/base64@5.8.0", "", { "dependencies": { "@ethersproject/bytes": "^5.8.0" } }, "sha512-lN0oIwfkYj9LbPx4xEkie6rAMJtySbpOAFXSDVQaBnAzYfB4X2Qr+FXJGxMoc3Bxp2Sm8OwvzMrywxyw0gLjIQ=="], + + "@ethersproject/basex": ["@ethersproject/basex@5.8.0", "", { "dependencies": { "@ethersproject/bytes": "^5.8.0", "@ethersproject/properties": "^5.8.0" } }, "sha512-PIgTszMlDRmNwW9nhS6iqtVfdTAKosA7llYXNmGPw4YAI1PUyMv28988wAb41/gHF/WqGdoLv0erHaRcHRKW2Q=="], + + "@ethersproject/bignumber": ["@ethersproject/bignumber@5.8.0", "", { "dependencies": { "@ethersproject/bytes": "^5.8.0", "@ethersproject/logger": "^5.8.0", "bn.js": "^5.2.1" } }, "sha512-ZyaT24bHaSeJon2tGPKIiHszWjD/54Sz8t57Toch475lCLljC6MgPmxk7Gtzz+ddNN5LuHea9qhAe0x3D+uYPA=="], + + "@ethersproject/bytes": ["@ethersproject/bytes@5.8.0", "", { "dependencies": { "@ethersproject/logger": "^5.8.0" } }, "sha512-vTkeohgJVCPVHu5c25XWaWQOZ4v+DkGoC42/TS2ond+PARCxTJvgTFUNDZovyQ/uAQ4EcpqqowKydcdmRKjg7A=="], + + "@ethersproject/constants": ["@ethersproject/constants@5.8.0", "", { "dependencies": { "@ethersproject/bignumber": "^5.8.0" } }, "sha512-wigX4lrf5Vu+axVTIvNsuL6YrV4O5AXl5ubcURKMEME5TnWBouUh0CDTWxZ2GpnRn1kcCgE7l8O5+VbV9QTTcg=="], + + "@ethersproject/contracts": ["@ethersproject/contracts@5.8.0", "", { "dependencies": { "@ethersproject/abi": "^5.8.0", "@ethersproject/abstract-provider": "^5.8.0", "@ethersproject/abstract-signer": "^5.8.0", "@ethersproject/address": "^5.8.0", "@ethersproject/bignumber": "^5.8.0", "@ethersproject/bytes": "^5.8.0", "@ethersproject/constants": "^5.8.0", "@ethersproject/logger": "^5.8.0", "@ethersproject/properties": "^5.8.0", "@ethersproject/transactions": "^5.8.0" } }, "sha512-0eFjGz9GtuAi6MZwhb4uvUM216F38xiuR0yYCjKJpNfSEy4HUM8hvqqBj9Jmm0IUz8l0xKEhWwLIhPgxNY0yvQ=="], + + "@ethersproject/hash": ["@ethersproject/hash@5.8.0", "", { "dependencies": { "@ethersproject/abstract-signer": "^5.8.0", "@ethersproject/address": "^5.8.0", "@ethersproject/base64": "^5.8.0", "@ethersproject/bignumber": "^5.8.0", "@ethersproject/bytes": "^5.8.0", "@ethersproject/keccak256": "^5.8.0", "@ethersproject/logger": "^5.8.0", "@ethersproject/properties": "^5.8.0", "@ethersproject/strings": "^5.8.0" } }, "sha512-ac/lBcTbEWW/VGJij0CNSw/wPcw9bSRgCB0AIBz8CvED/jfvDoV9hsIIiWfvWmFEi8RcXtlNwp2jv6ozWOsooA=="], + + "@ethersproject/hdnode": ["@ethersproject/hdnode@5.8.0", "", { "dependencies": { "@ethersproject/abstract-signer": "^5.8.0", "@ethersproject/basex": "^5.8.0", "@ethersproject/bignumber": "^5.8.0", "@ethersproject/bytes": "^5.8.0", "@ethersproject/logger": "^5.8.0", "@ethersproject/pbkdf2": "^5.8.0", "@ethersproject/properties": "^5.8.0", "@ethersproject/sha2": "^5.8.0", "@ethersproject/signing-key": "^5.8.0", "@ethersproject/strings": "^5.8.0", "@ethersproject/transactions": "^5.8.0", "@ethersproject/wordlists": "^5.8.0" } }, "sha512-4bK1VF6E83/3/Im0ERnnUeWOY3P1BZml4ZD3wcH8Ys0/d1h1xaFt6Zc+Dh9zXf9TapGro0T4wvO71UTCp3/uoA=="], + + "@ethersproject/json-wallets": ["@ethersproject/json-wallets@5.8.0", "", { "dependencies": { "@ethersproject/abstract-signer": "^5.8.0", "@ethersproject/address": "^5.8.0", "@ethersproject/bytes": "^5.8.0", "@ethersproject/hdnode": "^5.8.0", "@ethersproject/keccak256": "^5.8.0", "@ethersproject/logger": "^5.8.0", "@ethersproject/pbkdf2": "^5.8.0", "@ethersproject/properties": "^5.8.0", "@ethersproject/random": "^5.8.0", "@ethersproject/strings": "^5.8.0", "@ethersproject/transactions": "^5.8.0", "aes-js": "3.0.0", "scrypt-js": "3.0.1" } }, "sha512-HxblNck8FVUtNxS3VTEYJAcwiKYsBIF77W15HufqlBF9gGfhmYOJtYZp8fSDZtn9y5EaXTE87zDwzxRoTFk11w=="], + + "@ethersproject/keccak256": ["@ethersproject/keccak256@5.7.0", "", { "dependencies": { "@ethersproject/bytes": "^5.7.0", "js-sha3": "0.8.0" } }, "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg=="], + + "@ethersproject/logger": ["@ethersproject/logger@5.8.0", "", {}, "sha512-Qe6knGmY+zPPWTC+wQrpitodgBfH7XoceCGL5bJVejmH+yCS3R8jJm8iiWuvWbG76RUmyEG53oqv6GMVWqunjA=="], + + "@ethersproject/networks": ["@ethersproject/networks@5.8.0", "", { "dependencies": { "@ethersproject/logger": "^5.8.0" } }, "sha512-egPJh3aPVAzbHwq8DD7Po53J4OUSsA1MjQp8Vf/OZPav5rlmWUaFLiq8cvQiGK0Z5K6LYzm29+VA/p4RL1FzNg=="], + + "@ethersproject/pbkdf2": ["@ethersproject/pbkdf2@5.8.0", "", { "dependencies": { "@ethersproject/bytes": "^5.8.0", "@ethersproject/sha2": "^5.8.0" } }, "sha512-wuHiv97BrzCmfEaPbUFpMjlVg/IDkZThp9Ri88BpjRleg4iePJaj2SW8AIyE8cXn5V1tuAaMj6lzvsGJkGWskg=="], + + "@ethersproject/properties": ["@ethersproject/properties@5.8.0", "", { "dependencies": { "@ethersproject/logger": "^5.8.0" } }, "sha512-PYuiEoQ+FMaZZNGrStmN7+lWjlsoufGIHdww7454FIaGdbe/p5rnaCXTr5MtBYl3NkeoVhHZuyzChPeGeKIpQw=="], + + "@ethersproject/providers": ["@ethersproject/providers@5.8.0", "", { "dependencies": { "@ethersproject/abstract-provider": "^5.8.0", "@ethersproject/abstract-signer": "^5.8.0", "@ethersproject/address": "^5.8.0", "@ethersproject/base64": "^5.8.0", "@ethersproject/basex": "^5.8.0", "@ethersproject/bignumber": "^5.8.0", "@ethersproject/bytes": "^5.8.0", "@ethersproject/constants": "^5.8.0", "@ethersproject/hash": "^5.8.0", "@ethersproject/logger": "^5.8.0", "@ethersproject/networks": "^5.8.0", "@ethersproject/properties": "^5.8.0", "@ethersproject/random": "^5.8.0", "@ethersproject/rlp": "^5.8.0", "@ethersproject/sha2": "^5.8.0", "@ethersproject/strings": "^5.8.0", "@ethersproject/transactions": "^5.8.0", "@ethersproject/web": "^5.8.0", "bech32": "1.1.4", "ws": "8.18.0" } }, "sha512-3Il3oTzEx3o6kzcg9ZzbE+oCZYyY+3Zh83sKkn4s1DZfTUjIegHnN2Cm0kbn9YFy45FDVcuCLLONhU7ny0SsCw=="], + + "@ethersproject/random": ["@ethersproject/random@5.8.0", "", { "dependencies": { "@ethersproject/bytes": "^5.8.0", "@ethersproject/logger": "^5.8.0" } }, "sha512-E4I5TDl7SVqyg4/kkA/qTfuLWAQGXmSOgYyO01So8hLfwgKvYK5snIlzxJMk72IFdG/7oh8yuSqY2KX7MMwg+A=="], + + "@ethersproject/rlp": ["@ethersproject/rlp@5.8.0", "", { "dependencies": { "@ethersproject/bytes": "^5.8.0", "@ethersproject/logger": "^5.8.0" } }, "sha512-LqZgAznqDbiEunaUvykH2JAoXTT9NV0Atqk8rQN9nx9SEgThA/WMx5DnW8a9FOufo//6FZOCHZ+XiClzgbqV9Q=="], + + "@ethersproject/sha2": ["@ethersproject/sha2@5.8.0", "", { "dependencies": { "@ethersproject/bytes": "^5.8.0", "@ethersproject/logger": "^5.8.0", "hash.js": "1.1.7" } }, "sha512-dDOUrXr9wF/YFltgTBYS0tKslPEKr6AekjqDW2dbn1L1xmjGR+9GiKu4ajxovnrDbwxAKdHjW8jNcwfz8PAz4A=="], + + "@ethersproject/signing-key": ["@ethersproject/signing-key@5.8.0", "", { "dependencies": { "@ethersproject/bytes": "^5.8.0", "@ethersproject/logger": "^5.8.0", "@ethersproject/properties": "^5.8.0", "bn.js": "^5.2.1", "elliptic": "6.6.1", "hash.js": "1.1.7" } }, "sha512-LrPW2ZxoigFi6U6aVkFN/fa9Yx/+4AtIUe4/HACTvKJdhm0eeb107EVCIQcrLZkxaSIgc/eCrX8Q1GtbH+9n3w=="], + + "@ethersproject/solidity": ["@ethersproject/solidity@5.8.0", "", { "dependencies": { "@ethersproject/bignumber": "^5.8.0", "@ethersproject/bytes": "^5.8.0", "@ethersproject/keccak256": "^5.8.0", "@ethersproject/logger": "^5.8.0", "@ethersproject/sha2": "^5.8.0", "@ethersproject/strings": "^5.8.0" } }, "sha512-4CxFeCgmIWamOHwYN9d+QWGxye9qQLilpgTU0XhYs1OahkclF+ewO+3V1U0mvpiuQxm5EHHmv8f7ClVII8EHsA=="], + + "@ethersproject/strings": ["@ethersproject/strings@5.8.0", "", { "dependencies": { "@ethersproject/bytes": "^5.8.0", "@ethersproject/constants": "^5.8.0", "@ethersproject/logger": "^5.8.0" } }, "sha512-qWEAk0MAvl0LszjdfnZ2uC8xbR2wdv4cDabyHiBh3Cldq/T8dPH3V4BbBsAYJUeonwD+8afVXld274Ls+Y1xXg=="], + + "@ethersproject/transactions": ["@ethersproject/transactions@5.8.0", "", { "dependencies": { "@ethersproject/address": "^5.8.0", "@ethersproject/bignumber": "^5.8.0", "@ethersproject/bytes": "^5.8.0", "@ethersproject/constants": "^5.8.0", "@ethersproject/keccak256": "^5.8.0", "@ethersproject/logger": "^5.8.0", "@ethersproject/properties": "^5.8.0", "@ethersproject/rlp": "^5.8.0", "@ethersproject/signing-key": "^5.8.0" } }, "sha512-UglxSDjByHG0TuU17bDfCemZ3AnKO2vYrL5/2n2oXvKzvb7Cz+W9gOWXKARjp2URVwcWlQlPOEQyAviKwT4AHg=="], + + "@ethersproject/units": ["@ethersproject/units@5.8.0", "", { "dependencies": { "@ethersproject/bignumber": "^5.8.0", "@ethersproject/constants": "^5.8.0", "@ethersproject/logger": "^5.8.0" } }, "sha512-lxq0CAnc5kMGIiWW4Mr041VT8IhNM+Pn5T3haO74XZWFulk7wH1Gv64HqE96hT4a7iiNMdOCFEBgaxWuk8ETKQ=="], + + "@ethersproject/wallet": ["@ethersproject/wallet@5.8.0", "", { "dependencies": { "@ethersproject/abstract-provider": "^5.8.0", "@ethersproject/abstract-signer": "^5.8.0", "@ethersproject/address": "^5.8.0", "@ethersproject/bignumber": "^5.8.0", "@ethersproject/bytes": "^5.8.0", "@ethersproject/hash": "^5.8.0", "@ethersproject/hdnode": "^5.8.0", "@ethersproject/json-wallets": "^5.8.0", "@ethersproject/keccak256": "^5.8.0", "@ethersproject/logger": "^5.8.0", "@ethersproject/properties": "^5.8.0", "@ethersproject/random": "^5.8.0", "@ethersproject/signing-key": "^5.8.0", "@ethersproject/transactions": "^5.8.0", "@ethersproject/wordlists": "^5.8.0" } }, "sha512-G+jnzmgg6UxurVKRKvw27h0kvG75YKXZKdlLYmAHeF32TGUzHkOFd7Zn6QHOTYRFWnfjtSSFjBowKo7vfrXzPA=="], + + "@ethersproject/web": ["@ethersproject/web@5.8.0", "", { "dependencies": { "@ethersproject/base64": "^5.8.0", "@ethersproject/bytes": "^5.8.0", "@ethersproject/logger": "^5.8.0", "@ethersproject/properties": "^5.8.0", "@ethersproject/strings": "^5.8.0" } }, "sha512-j7+Ksi/9KfGviws6Qtf9Q7KCqRhpwrYKQPs+JBA/rKVFF/yaWLHJEH3zfVP2plVu+eys0d2DlFmhoQJayFewcw=="], + + "@ethersproject/wordlists": ["@ethersproject/wordlists@5.8.0", "", { "dependencies": { "@ethersproject/bytes": "^5.8.0", "@ethersproject/hash": "^5.8.0", "@ethersproject/logger": "^5.8.0", "@ethersproject/properties": "^5.8.0", "@ethersproject/strings": "^5.8.0" } }, "sha512-2df9bbXicZws2Sb5S6ET493uJ0Z84Fjr3pC4tu/qlnZERibZCeUVuqdtt+7Tv9xxhUxHoIekIA7avrKUWHrezg=="], + + "@fastify/busboy": ["@fastify/busboy@2.1.1", "", {}, "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA=="], + + "@figma/code-connect": ["@figma/code-connect@1.3.11", "", { "dependencies": { "boxen": "5.1.1", "chalk": "^4.1.2", "commander": "^11.1.0", "compare-versions": "^6.1.0", "cross-spawn": "^7.0.3", "dotenv": "^16.3.1", "fast-fuzzy": "^1.12.0", "find-up": "^5.0.0", "glob": "^11.0.4", "jsdom": "^24.1.1", "lodash": "4.17.21", "minimatch": "^9.0.3", "ora": "^5.4.1", "parse5": "^7.1.2", "prettier": "^2.8.8", "prompts": "^2.4.2", "strip-ansi": "^6.0.0", "ts-morph": "^27.0.0", "typescript": "5.9.3", "undici": "^5.29.0", "zod": "3.25.58", "zod-validation-error": "^3.2.0" }, "bin": { "figma": "bin/figma" } }, "sha512-JhQwWGX8Jr6aGGUsQlX4Wuq2RKEym7es6QUXzvQkZM5ZiYAHhOpqbsTSSH+w771UTi2nQahTbQsHkxlFX5MTJg=="], + + "@floating-ui/core": ["@floating-ui/core@1.7.3", "", { "dependencies": { "@floating-ui/utils": "^0.2.10" } }, "sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w=="], + + "@floating-ui/dom": ["@floating-ui/dom@1.7.4", "", { "dependencies": { "@floating-ui/core": "^1.7.3", "@floating-ui/utils": "^0.2.10" } }, "sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA=="], + + "@floating-ui/react": ["@floating-ui/react@0.27.16", "", { "dependencies": { "@floating-ui/react-dom": "^2.1.6", "@floating-ui/utils": "^0.2.10", "tabbable": "^6.0.0" }, "peerDependencies": { "react": ">=17.0.0", "react-dom": ">=17.0.0" } }, "sha512-9O8N4SeG2z++TSM8QA/KTeKFBVCNEz/AGS7gWPJf6KFRzmRWixFRnCnkPHRDwSVZW6QPDO6uT0P2SpWNKCc9/g=="], + + "@floating-ui/react-dom": ["@floating-ui/react-dom@2.1.6", "", { "dependencies": { "@floating-ui/dom": "^1.7.4" }, "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw=="], + + "@floating-ui/utils": ["@floating-ui/utils@0.2.10", "", {}, "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ=="], + + "@formatjs/ecma402-abstract": ["@formatjs/ecma402-abstract@2.3.6", "", { "dependencies": { "@formatjs/fast-memoize": "2.2.7", "@formatjs/intl-localematcher": "0.6.2", "decimal.js": "^10.4.3", "tslib": "^2.8.0" } }, "sha512-HJnTFeRM2kVFVr5gr5kH1XP6K0JcJtE7Lzvtr3FS/so5f1kpsqqqxy5JF+FRaO6H2qmcMfAUIox7AJteieRtVw=="], + + "@formatjs/fast-memoize": ["@formatjs/fast-memoize@2.2.7", "", { "dependencies": { "tslib": "^2.8.0" } }, "sha512-Yabmi9nSvyOMrlSeGGWDiH7rf3a7sIwplbvo/dlz9WCIjzIQAfy1RMf4S0X3yG724n5Ghu2GmEl5NJIV6O9sZQ=="], + + "@formatjs/icu-messageformat-parser": ["@formatjs/icu-messageformat-parser@2.11.4", "", { "dependencies": { "@formatjs/ecma402-abstract": "2.3.6", "@formatjs/icu-skeleton-parser": "1.8.16", "tslib": "^2.8.0" } }, "sha512-7kR78cRrPNB4fjGFZg3Rmj5aah8rQj9KPzuLsmcSn4ipLXQvC04keycTI1F7kJYDwIXtT2+7IDEto842CfZBtw=="], + + "@formatjs/icu-skeleton-parser": ["@formatjs/icu-skeleton-parser@1.8.16", "", { "dependencies": { "@formatjs/ecma402-abstract": "2.3.6", "tslib": "^2.8.0" } }, "sha512-H13E9Xl+PxBd8D5/6TVUluSpxGNvFSlN/b3coUp0e0JpuWXXnQDiavIpY3NnvSp4xhEMoXyyBvVfdFX8jglOHQ=="], + + "@formatjs/intl-localematcher": ["@formatjs/intl-localematcher@0.5.10", "", { "dependencies": { "tslib": "2" } }, "sha512-af3qATX+m4Rnd9+wHcjJ4w2ijq+rAVP3CCinJQvFv1kgSu1W6jypUmvleJxcewdxmutM8dmIRZFxO/IQBZmP2Q=="], + + "@graphprotocol/contracts": ["@graphprotocol/contracts@7.3.0", "", {}, "sha512-uEjgrBN4WCkJhSrUi5O64cNbU5OWI7iwy/03Er9n+J7o3WEspizpLJvSGXql8E0XtI0ygBaHBTwJfPo7SUphkg=="], + + "@graphql-typed-document-node/core": ["@graphql-typed-document-node/core@3.2.0", "", { "peerDependencies": { "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ=="], + + "@headlessui/react": ["@headlessui/react@2.2.9", "", { "dependencies": { "@floating-ui/react": "^0.26.16", "@react-aria/focus": "^3.20.2", "@react-aria/interactions": "^3.25.0", "@tanstack/react-virtual": "^3.13.9", "use-sync-external-store": "^1.5.0" }, "peerDependencies": { "react": "^18 || ^19 || ^19.0.0-rc", "react-dom": "^18 || ^19 || ^19.0.0-rc" } }, "sha512-Mb+Un58gwBn0/yWZfyrCh0TJyurtT+dETj7YHleylHk5od3dv2XqETPGWMyQ5/7sYN7oWdyM1u9MvC0OC8UmzQ=="], + + "@humanwhocodes/momoa": ["@humanwhocodes/momoa@2.0.4", "", {}, "sha512-RE815I4arJFtt+FVeU1Tgp9/Xvecacji8w/V6XtXsWWH/wz/eNkNbhb+ny/+PlVZjV0rxQpRSQKNKE3lcktHEA=="], + + "@iconify/types": ["@iconify/types@2.0.0", "", {}, "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg=="], + + "@iconify/utils": ["@iconify/utils@3.0.2", "", { "dependencies": { "@antfu/install-pkg": "^1.1.0", "@antfu/utils": "^9.2.0", "@iconify/types": "^2.0.0", "debug": "^4.4.1", "globals": "^15.15.0", "kolorist": "^1.8.0", "local-pkg": "^1.1.1", "mlly": "^1.7.4" } }, "sha512-EfJS0rLfVuRuJRn4psJHtK2A9TqVnkxPpHY6lYHiB9+8eSuudsxbwMiavocG45ujOo6FJ+CIRlRnlOGinzkaGQ=="], + + "@internationalized/date": ["@internationalized/date@3.10.0", "", { "dependencies": { "@swc/helpers": "^0.5.0" } }, "sha512-oxDR/NTEJ1k+UFVQElaNIk65E/Z83HK1z1WI3lQyhTtnNg4R5oVXaPzK3jcpKG8UHKDVuDQHzn+wsxSz8RP3aw=="], + + "@internationalized/message": ["@internationalized/message@3.1.8", "", { "dependencies": { "@swc/helpers": "^0.5.0", "intl-messageformat": "^10.1.0" } }, "sha512-Rwk3j/TlYZhn3HQ6PyXUV0XP9Uv42jqZGNegt0BXlxjE6G3+LwHjbQZAGHhCnCPdaA6Tvd3ma/7QzLlLkJxAWA=="], + + "@internationalized/number": ["@internationalized/number@3.6.5", "", { "dependencies": { "@swc/helpers": "^0.5.0" } }, "sha512-6hY4Kl4HPBvtfS62asS/R22JzNNy8vi/Ssev7x6EobfCp+9QIB2hKvI2EtbdJ0VSQacxVNtqhE/NmF/NZ0gm6g=="], + + "@internationalized/string": ["@internationalized/string@3.2.7", "", { "dependencies": { "@swc/helpers": "^0.5.0" } }, "sha512-D4OHBjrinH+PFZPvfCXvG28n2LSykWcJ7GIioQL+ok0LON15SdfoUssoHzzOUmVZLbRoREsQXVzA6r8JKsbP6A=="], + + "@isaacs/balanced-match": ["@isaacs/balanced-match@4.0.1", "", {}, "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ=="], + + "@isaacs/brace-expansion": ["@isaacs/brace-expansion@5.0.0", "", { "dependencies": { "@isaacs/balanced-match": "^4.0.1" } }, "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA=="], + + "@isaacs/cliui": ["@isaacs/cliui@8.0.2", "", { "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", "strip-ansi": "^7.0.1", "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", "wrap-ansi": "^8.1.0", "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" } }, "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA=="], + + "@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.13", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA=="], + + "@jridgewell/resolve-uri": ["@jridgewell/resolve-uri@3.1.2", "", {}, "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="], + + "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.5", "", {}, "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="], + + "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.31", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw=="], + + "@leichtgewicht/ip-codec": ["@leichtgewicht/ip-codec@2.0.5", "", {}, "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw=="], + + "@mdx-js/mdx": ["@mdx-js/mdx@3.1.1", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdx": "^2.0.0", "acorn": "^8.0.0", "collapse-white-space": "^2.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "estree-util-scope": "^1.0.0", "estree-walker": "^3.0.0", "hast-util-to-jsx-runtime": "^2.0.0", "markdown-extensions": "^2.0.0", "recma-build-jsx": "^1.0.0", "recma-jsx": "^1.0.0", "recma-stringify": "^1.0.0", "rehype-recma": "^1.0.0", "remark-mdx": "^3.0.0", "remark-parse": "^11.0.0", "remark-rehype": "^11.0.0", "source-map": "^0.7.0", "unified": "^11.0.0", "unist-util-position-from-estree": "^2.0.0", "unist-util-stringify-position": "^4.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.0" } }, "sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ=="], + + "@mdx-js/react": ["@mdx-js/react@3.1.1", "", { "dependencies": { "@types/mdx": "^2.0.0" }, "peerDependencies": { "@types/react": ">=16", "react": ">=16" } }, "sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw=="], + + "@mermaid-js/parser": ["@mermaid-js/parser@0.6.3", "", { "dependencies": { "langium": "3.3.1" } }, "sha512-lnjOhe7zyHjc+If7yT4zoedx2vo4sHaTmtkl1+or8BRTnCtDmcTpAjpzDSfCZrshM5bCoz0GyidzadJAH1xobA=="], + + "@mixpanel/rrdom": ["@mixpanel/rrdom@2.0.0-alpha.18.2", "", { "dependencies": { "@mixpanel/rrweb-snapshot": "^2.0.0-alpha.18" } }, "sha512-vX/tbnS14ZzzatC7vOyvAm9tOLU8tof0BuppBlphzEx1YHTSw8DQiAmyAc0AmXidchLV0W+cUHV/WsehPLh2hQ=="], + + "@mixpanel/rrweb": ["@mixpanel/rrweb@2.0.0-alpha.18.2", "", { "dependencies": { "@mixpanel/rrdom": "^2.0.0-alpha.18", "@mixpanel/rrweb-snapshot": "^2.0.0-alpha.18", "@mixpanel/rrweb-types": "^2.0.0-alpha.18", "@mixpanel/rrweb-utils": "^2.0.0-alpha.18", "@types/css-font-loading-module": "0.0.7", "@xstate/fsm": "^1.4.0", "base64-arraybuffer": "^1.0.1", "mitt": "^3.0.0" } }, "sha512-J3dVTEu6Z4p8di7y9KKvUooNuBjX97DdG6XGWoPEPi07A9512h9M8MEtvlY3mK0PGfuC0Mz5Pv/Ws6gjGYfKQg=="], + + "@mixpanel/rrweb-plugin-console-record": ["@mixpanel/rrweb-plugin-console-record@2.0.0-alpha.18.2", "", { "peerDependencies": { "@mixpanel/rrweb": "^2.0.0-alpha.18", "@mixpanel/rrweb-utils": "^2.0.0-alpha.18" } }, "sha512-Xkwh2gSdLqHRkWSXv8CPVCPQj5L85KnWc5DZQ0CXNRFgm2hTl5/YP6zfUubVs2JVXZHGcSGU+g7JVO2WcFJyyg=="], + + "@mixpanel/rrweb-snapshot": ["@mixpanel/rrweb-snapshot@2.0.0-alpha.18.2", "", { "dependencies": { "postcss": "^8.4.38" } }, "sha512-2kSnjZZ3QZ9zOz/isOt8s54mXUUDgXk/u0eEi/rE0xBWDeuA0NHrBcqiMc+w4F/yWWUpo5F5zcuPeYpc6ufAsw=="], + + "@mixpanel/rrweb-types": ["@mixpanel/rrweb-types@2.0.0-alpha.18.2", "", {}, "sha512-ucIYe1mfJ2UksvXW+d3bOySTB2/0yUSqQJlUydvbBz6OO2Bhq3nJHyLXV9ExkgUMZm1ZyDcvvmNUd1+5tAXlpA=="], + + "@mixpanel/rrweb-utils": ["@mixpanel/rrweb-utils@2.0.0-alpha.18.2", "", {}, "sha512-OomKIB6GTx5xvCLJ7iic2khT/t/tnCJUex13aEqsbSqIT/UzUUsqf+LTrgUK5ex+f6odmkCNjre2y5jvpNqn+g=="], + + "@napi-rs/simple-git": ["@napi-rs/simple-git@0.1.22", "", { "optionalDependencies": { "@napi-rs/simple-git-android-arm-eabi": "0.1.22", "@napi-rs/simple-git-android-arm64": "0.1.22", "@napi-rs/simple-git-darwin-arm64": "0.1.22", "@napi-rs/simple-git-darwin-x64": "0.1.22", "@napi-rs/simple-git-freebsd-x64": "0.1.22", "@napi-rs/simple-git-linux-arm-gnueabihf": "0.1.22", "@napi-rs/simple-git-linux-arm64-gnu": "0.1.22", "@napi-rs/simple-git-linux-arm64-musl": "0.1.22", "@napi-rs/simple-git-linux-ppc64-gnu": "0.1.22", "@napi-rs/simple-git-linux-s390x-gnu": "0.1.22", "@napi-rs/simple-git-linux-x64-gnu": "0.1.22", "@napi-rs/simple-git-linux-x64-musl": "0.1.22", "@napi-rs/simple-git-win32-arm64-msvc": "0.1.22", "@napi-rs/simple-git-win32-ia32-msvc": "0.1.22", "@napi-rs/simple-git-win32-x64-msvc": "0.1.22" } }, "sha512-bMVoAKhpjTOPHkW/lprDPwv5aD4R4C3Irt8vn+SKA9wudLe9COLxOhurrKRsxmZccUbWXRF7vukNeGUAj5P8kA=="], + + "@napi-rs/simple-git-android-arm-eabi": ["@napi-rs/simple-git-android-arm-eabi@0.1.22", "", { "os": "android", "cpu": "arm" }, "sha512-JQZdnDNm8o43A5GOzwN/0Tz3CDBQtBUNqzVwEopm32uayjdjxev1Csp1JeaqF3v9djLDIvsSE39ecsN2LhCKKQ=="], + + "@napi-rs/simple-git-android-arm64": ["@napi-rs/simple-git-android-arm64@0.1.22", "", { "os": "android", "cpu": "arm64" }, "sha512-46OZ0SkhnvM+fapWjzg/eqbJvClxynUpWYyYBn4jAj7GQs1/Yyc8431spzDmkA8mL0M7Xo8SmbkzTDE7WwYAfg=="], + + "@napi-rs/simple-git-darwin-arm64": ["@napi-rs/simple-git-darwin-arm64@0.1.22", "", { "os": "darwin", "cpu": "arm64" }, "sha512-zH3h0C8Mkn9//MajPI6kHnttywjsBmZ37fhLX/Fiw5XKu84eHA6dRyVtMzoZxj6s+bjNTgaMgMUucxPn9ktxTQ=="], + + "@napi-rs/simple-git-darwin-x64": ["@napi-rs/simple-git-darwin-x64@0.1.22", "", { "os": "darwin", "cpu": "x64" }, "sha512-GZN7lRAkGKB6PJxWsoyeYJhh85oOOjVNyl+/uipNX8bR+mFDCqRsCE3rRCFGV9WrZUHXkcuRL2laIRn7lLi3ag=="], + + "@napi-rs/simple-git-freebsd-x64": ["@napi-rs/simple-git-freebsd-x64@0.1.22", "", { "os": "freebsd", "cpu": "x64" }, "sha512-xyqX1C5I0WBrUgZONxHjZH5a4LqQ9oki3SKFAVpercVYAcx3pq6BkZy1YUOP4qx78WxU1CCNfHBN7V+XO7D99A=="], + + "@napi-rs/simple-git-linux-arm-gnueabihf": ["@napi-rs/simple-git-linux-arm-gnueabihf@0.1.22", "", { "os": "linux", "cpu": "arm" }, "sha512-4LOtbp9ll93B9fxRvXiUJd1/RM3uafMJE7dGBZGKWBMGM76+BAcCEUv2BY85EfsU/IgopXI6n09TycRfPWOjxA=="], + + "@napi-rs/simple-git-linux-arm64-gnu": ["@napi-rs/simple-git-linux-arm64-gnu@0.1.22", "", { "os": "linux", "cpu": "arm64" }, "sha512-GVOjP/JjCzbQ0kSqao7ctC/1sodVtv5VF57rW9BFpo2y6tEYPCqHnkQkTpieuwMNe+TVOhBUC1+wH0d9/knIHg=="], + + "@napi-rs/simple-git-linux-arm64-musl": ["@napi-rs/simple-git-linux-arm64-musl@0.1.22", "", { "os": "linux", "cpu": "arm64" }, "sha512-MOs7fPyJiU/wqOpKzAOmOpxJ/TZfP4JwmvPad/cXTOWYwwyppMlXFRms3i98EU3HOazI/wMU2Ksfda3+TBluWA=="], + + "@napi-rs/simple-git-linux-ppc64-gnu": ["@napi-rs/simple-git-linux-ppc64-gnu@0.1.22", "", { "os": "linux", "cpu": "ppc64" }, "sha512-L59dR30VBShRUIZ5/cQHU25upNgKS0AMQ7537J6LCIUEFwwXrKORZKJ8ceR+s3Sr/4jempWVvMdjEpFDE4HYww=="], + + "@napi-rs/simple-git-linux-s390x-gnu": ["@napi-rs/simple-git-linux-s390x-gnu@0.1.22", "", { "os": "linux", "cpu": "s390x" }, "sha512-4FHkPlCSIZUGC6HiADffbe6NVoTBMd65pIwcd40IDbtFKOgFMBA+pWRqKiQ21FERGH16Zed7XHJJoY3jpOqtmQ=="], + + "@napi-rs/simple-git-linux-x64-gnu": ["@napi-rs/simple-git-linux-x64-gnu@0.1.22", "", { "os": "linux", "cpu": "x64" }, "sha512-Ei1tM5Ho/dwknF3pOzqkNW9Iv8oFzRxE8uOhrITcdlpxRxVrBVptUF6/0WPdvd7R9747D/q61QG/AVyWsWLFKw=="], + + "@napi-rs/simple-git-linux-x64-musl": ["@napi-rs/simple-git-linux-x64-musl@0.1.22", "", { "os": "linux", "cpu": "x64" }, "sha512-zRYxg7it0p3rLyEJYoCoL2PQJNgArVLyNavHW03TFUAYkYi5bxQ/UFNVpgxMaXohr5yu7qCBqeo9j4DWeysalg=="], + + "@napi-rs/simple-git-win32-arm64-msvc": ["@napi-rs/simple-git-win32-arm64-msvc@0.1.22", "", { "os": "win32", "cpu": "arm64" }, "sha512-XGFR1fj+Y9cWACcovV2Ey/R2xQOZKs8t+7KHPerYdJ4PtjVzGznI4c2EBHXtdOIYvkw7tL5rZ7FN1HJKdD5Quw=="], + + "@napi-rs/simple-git-win32-ia32-msvc": ["@napi-rs/simple-git-win32-ia32-msvc@0.1.22", "", { "os": "win32", "cpu": "ia32" }, "sha512-Gqr9Y0gs6hcNBA1IXBpoqTFnnIoHuZGhrYqaZzEvGMLrTrpbXrXVEtX3DAAD2RLc1b87CPcJ49a7sre3PU3Rfw=="], + + "@napi-rs/simple-git-win32-x64-msvc": ["@napi-rs/simple-git-win32-x64-msvc@0.1.22", "", { "os": "win32", "cpu": "x64" }, "sha512-hQjcreHmUcpw4UrtkOron1/TQObfe484lxiXFLLUj7aWnnnOVs1mnXq5/Bo9+3NYZldFpFRJPdPBeHCisXkKJg=="], + + "@next/env": ["@next/env@14.2.33", "", {}, "sha512-CgVHNZ1fRIlxkLhIX22flAZI/HmpDaZ8vwyJ/B0SDPTBuLZ1PJ+DWMjCHhqnExfmSQzA/PbZi8OAc7PAq2w9IA=="], + + "@next/swc-darwin-arm64": ["@next/swc-darwin-arm64@14.2.33", "", { "os": "darwin", "cpu": "arm64" }, "sha512-HqYnb6pxlsshoSTubdXKu15g3iivcbsMXg4bYpjL2iS/V6aQot+iyF4BUc2qA/J/n55YtvE4PHMKWBKGCF/+wA=="], + + "@next/swc-darwin-x64": ["@next/swc-darwin-x64@14.2.33", "", { "os": "darwin", "cpu": "x64" }, "sha512-8HGBeAE5rX3jzKvF593XTTFg3gxeU4f+UWnswa6JPhzaR6+zblO5+fjltJWIZc4aUalqTclvN2QtTC37LxvZAA=="], + + "@next/swc-linux-arm64-gnu": ["@next/swc-linux-arm64-gnu@14.2.33", "", { "os": "linux", "cpu": "arm64" }, "sha512-JXMBka6lNNmqbkvcTtaX8Gu5by9547bukHQvPoLe9VRBx1gHwzf5tdt4AaezW85HAB3pikcvyqBToRTDA4DeLw=="], + + "@next/swc-linux-arm64-musl": ["@next/swc-linux-arm64-musl@14.2.33", "", { "os": "linux", "cpu": "arm64" }, "sha512-Bm+QulsAItD/x6Ih8wGIMfRJy4G73tu1HJsrccPW6AfqdZd0Sfm5Imhgkgq2+kly065rYMnCOxTBvmvFY1BKfg=="], + + "@next/swc-linux-x64-gnu": ["@next/swc-linux-x64-gnu@14.2.33", "", { "os": "linux", "cpu": "x64" }, "sha512-FnFn+ZBgsVMbGDsTqo8zsnRzydvsGV8vfiWwUo1LD8FTmPTdV+otGSWKc4LJec0oSexFnCYVO4hX8P8qQKaSlg=="], + + "@next/swc-linux-x64-musl": ["@next/swc-linux-x64-musl@14.2.33", "", { "os": "linux", "cpu": "x64" }, "sha512-345tsIWMzoXaQndUTDv1qypDRiebFxGYx9pYkhwY4hBRaOLt8UGfiWKr9FSSHs25dFIf8ZqIFaPdy5MljdoawA=="], + + "@next/swc-win32-arm64-msvc": ["@next/swc-win32-arm64-msvc@14.2.33", "", { "os": "win32", "cpu": "arm64" }, "sha512-nscpt0G6UCTkrT2ppnJnFsYbPDQwmum4GNXYTeoTIdsmMydSKFz9Iny2jpaRupTb+Wl298+Rh82WKzt9LCcqSQ=="], + + "@next/swc-win32-ia32-msvc": ["@next/swc-win32-ia32-msvc@14.2.33", "", { "os": "win32", "cpu": "ia32" }, "sha512-pc9LpGNKhJ0dXQhZ5QMmYxtARwwmWLpeocFmVG5Z0DzWq5Uf0izcI8tLc+qOpqxO1PWqZ5A7J1blrUIKrIFc7Q=="], + + "@next/swc-win32-x64-msvc": ["@next/swc-win32-x64-msvc@14.2.33", "", { "os": "win32", "cpu": "x64" }, "sha512-nOjfZMy8B94MdisuzZo9/57xuFVLHJaDj5e/xrduJp9CV2/HrfxTRH2fbyLe+K9QT41WBLUd4iXX3R7jBp0EUg=="], + + "@noble/ciphers": ["@noble/ciphers@1.3.0", "", {}, "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw=="], + + "@noble/curves": ["@noble/curves@1.9.1", "", { "dependencies": { "@noble/hashes": "1.8.0" } }, "sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA=="], + + "@noble/hashes": ["@noble/hashes@1.8.0", "", {}, "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A=="], + + "@noble/secp256k1": ["@noble/secp256k1@1.7.1", "", {}, "sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw=="], + + "@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="], + + "@nodelib/fs.stat": ["@nodelib/fs.stat@2.0.5", "", {}, "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="], + + "@nodelib/fs.walk": ["@nodelib/fs.walk@1.2.8", "", { "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg=="], + + "@nomicfoundation/edr": ["@nomicfoundation/edr@0.12.0-next.16", "", { "dependencies": { "@nomicfoundation/edr-darwin-arm64": "0.12.0-next.16", "@nomicfoundation/edr-darwin-x64": "0.12.0-next.16", "@nomicfoundation/edr-linux-arm64-gnu": "0.12.0-next.16", "@nomicfoundation/edr-linux-arm64-musl": "0.12.0-next.16", "@nomicfoundation/edr-linux-x64-gnu": "0.12.0-next.16", "@nomicfoundation/edr-linux-x64-musl": "0.12.0-next.16", "@nomicfoundation/edr-win32-x64-msvc": "0.12.0-next.16" } }, "sha512-bBL/nHmQwL1WCveALwg01VhJcpVVklJyunG1d/bhJbHgbjzAn6kohVJc7A6gFZegw+Rx38vdxpBkeCDjAEprzw=="], + + "@nomicfoundation/edr-darwin-arm64": ["@nomicfoundation/edr-darwin-arm64@0.12.0-next.16", "", {}, "sha512-no/8BPVBzVxDGGbDba0zsAxQmVNIq6SLjKzzhCxVKt4tatArXa6+24mr4jXJEmhVBvTNpQsNBO+MMpuEDVaTzQ=="], + + "@nomicfoundation/edr-darwin-x64": ["@nomicfoundation/edr-darwin-x64@0.12.0-next.16", "", {}, "sha512-tf36YbcC6po3XYRbi+v0gjwzqg1MvyRqVUujNMXPHgjNWATXNRNOLyjwt2qDn+RD15qtzk70SHVnz9n9mPWzwg=="], + + "@nomicfoundation/edr-linux-arm64-gnu": ["@nomicfoundation/edr-linux-arm64-gnu@0.12.0-next.16", "", {}, "sha512-Kr6t9icKSaKtPVbb0TjUcbn3XHqXOGIn+KjKKSSpm6542OkL0HyOi06amh6/8CNke9Gf6Lwion8UJ0aGQhnFwA=="], + + "@nomicfoundation/edr-linux-arm64-musl": ["@nomicfoundation/edr-linux-arm64-musl@0.12.0-next.16", "", {}, "sha512-HaStgfxctSg5PYF+6ooDICL1O59KrgM4XEUsIqoRrjrQax9HnMBXcB8eAj+0O52FWiO9FlchBni2dzh4RjQR2g=="], + + "@nomicfoundation/edr-linux-x64-gnu": ["@nomicfoundation/edr-linux-x64-gnu@0.12.0-next.16", "", {}, "sha512-8JPTxEZkwOPTgnN4uTWut9ze9R8rp7+T4IfmsKK9i+lDtdbJIxkrFY275YHG2BEYLd7Y5jTa/I4nC74ZpTAvpA=="], + + "@nomicfoundation/edr-linux-x64-musl": ["@nomicfoundation/edr-linux-x64-musl@0.12.0-next.16", "", {}, "sha512-KugTrq3iHukbG64DuCYg8uPgiBtrrtX4oZSLba5sjocp0Ul6WWI1FeP1Qule+vClUrHSpJ+wR1G6SE7G0lyS/Q=="], + + "@nomicfoundation/edr-win32-x64-msvc": ["@nomicfoundation/edr-win32-x64-msvc@0.12.0-next.16", "", {}, "sha512-Idy0ZjurxElfSmepUKXh6QdptLbW5vUNeIaydvqNogWoTbkJIM6miqZd9lXUy1TYxY7G4Rx5O50c52xc4pFwXQ=="], + + "@nomicfoundation/solidity-analyzer": ["@nomicfoundation/solidity-analyzer@0.1.2", "", { "optionalDependencies": { "@nomicfoundation/solidity-analyzer-darwin-arm64": "0.1.2", "@nomicfoundation/solidity-analyzer-darwin-x64": "0.1.2", "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": "0.1.2", "@nomicfoundation/solidity-analyzer-linux-arm64-musl": "0.1.2", "@nomicfoundation/solidity-analyzer-linux-x64-gnu": "0.1.2", "@nomicfoundation/solidity-analyzer-linux-x64-musl": "0.1.2", "@nomicfoundation/solidity-analyzer-win32-x64-msvc": "0.1.2" } }, "sha512-q4n32/FNKIhQ3zQGGw5CvPF6GTvDCpYwIf7bEY/dZTZbgfDsHyjJwURxUJf3VQuuJj+fDIFl4+KkBVbw4Ef6jA=="], + + "@nomicfoundation/solidity-analyzer-darwin-arm64": ["@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.2", "", {}, "sha512-JaqcWPDZENCvm++lFFGjrDd8mxtf+CtLd2MiXvMNTBD33dContTZ9TWETwNFwg7JTJT5Q9HEecH7FA+HTSsIUw=="], + + "@nomicfoundation/solidity-analyzer-darwin-x64": ["@nomicfoundation/solidity-analyzer-darwin-x64@0.1.2", "", {}, "sha512-fZNmVztrSXC03e9RONBT+CiksSeYcxI1wlzqyr0L7hsQlK1fzV+f04g2JtQ1c/Fe74ZwdV6aQBdd6Uwl1052sw=="], + + "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": ["@nomicfoundation/solidity-analyzer-linux-arm64-gnu@0.1.2", "", {}, "sha512-3d54oc+9ZVBuB6nbp8wHylk4xh0N0Gc+bk+/uJae+rUgbOBwQSfuGIbAZt1wBXs5REkSmynEGcqx6DutoK0tPA=="], + + "@nomicfoundation/solidity-analyzer-linux-arm64-musl": ["@nomicfoundation/solidity-analyzer-linux-arm64-musl@0.1.2", "", {}, "sha512-iDJfR2qf55vgsg7BtJa7iPiFAsYf2d0Tv/0B+vhtnI16+wfQeTbP7teookbGvAo0eJo7aLLm0xfS/GTkvHIucA=="], + + "@nomicfoundation/solidity-analyzer-linux-x64-gnu": ["@nomicfoundation/solidity-analyzer-linux-x64-gnu@0.1.2", "", {}, "sha512-9dlHMAt5/2cpWyuJ9fQNOUXFB/vgSFORg1jpjX1Mh9hJ/MfZXlDdHQ+DpFCs32Zk5pxRBb07yGvSHk9/fezL+g=="], + + "@nomicfoundation/solidity-analyzer-linux-x64-musl": ["@nomicfoundation/solidity-analyzer-linux-x64-musl@0.1.2", "", {}, "sha512-GzzVeeJob3lfrSlDKQw2bRJ8rBf6mEYaWY+gW0JnTDHINA0s2gPR4km5RLIj1xeZZOYz4zRw+AEeYgLRqB2NXg=="], + + "@nomicfoundation/solidity-analyzer-win32-x64-msvc": ["@nomicfoundation/solidity-analyzer-win32-x64-msvc@0.1.2", "", {}, "sha512-Fdjli4DCcFHb4Zgsz0uEJXZ2K7VEO+w5KVv7HmT7WO10iODdU9csC2az4jrhEsRtiR9Gfd74FlG0NYlw1BMdyA=="], + + "@openzeppelin/contracts": ["@openzeppelin/contracts@3.4.2-solc-0.7", "", {}, "sha512-W6QmqgkADuFcTLzHL8vVoNBtkwjvQRpYIAom7KiUNoLKghyx3FgH0GBjt8NRvigV1ZmMOBllvE1By1C+bi8WpA=="], + + "@phosphor-icons/react": ["@phosphor-icons/react@2.1.10", "", { "peerDependencies": { "react": ">= 16.8", "react-dom": ">= 16.8" } }, "sha512-vt8Tvq8GLjheAZZYa+YG/pW7HDbov8El/MANW8pOAz4eGxrwhnbfrQZq0Cp4q8zBEu8NIhHdnr+r8thnfRSNYA=="], + + "@pinax/graph-networks-registry": ["@pinax/graph-networks-registry@0.7.1", "", {}, "sha512-Gn2kXRiEd5COAaMY/aDCRO0V+zfb1uQKCu5HFPoWka+EsZW27AlTINA7JctYYYEMuCbjMia5FBOzskjgEvj6LA=="], + + "@radix-ui/number": ["@radix-ui/number@1.1.1", "", {}, "sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g=="], + + "@radix-ui/primitive": ["@radix-ui/primitive@1.1.3", "", {}, "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg=="], + + "@radix-ui/react-accordion": ["@radix-ui/react-accordion@1.2.12", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collapsible": "1.1.12", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-T4nygeh9YE9dLRPhAHSeOZi7HBXo+0kYIPJXayZfvWOWA0+n3dESrZbjfDPUABkUNym6Hd+f2IR113To8D2GPA=="], + + "@radix-ui/react-alert-dialog": ["@radix-ui/react-alert-dialog@1.1.15", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-dialog": "1.1.15", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-oTVLkEw5GpdRe29BqJ0LSDFWI3qu0vR1M0mUkOQWDIUnY/QIkLpgDMWuKxP94c2NAC2LGcgVhG1ImF3jkZ5wXw=="], + + "@radix-ui/react-arrow": ["@radix-ui/react-arrow@1.1.7", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w=="], + + "@radix-ui/react-collapsible": ["@radix-ui/react-collapsible@1.1.12", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Uu+mSh4agx2ib1uIGPP4/CKNULyajb3p92LsVXmH2EHVMTfZWpll88XJ0j4W0z3f8NK1eYl1+Mf/szHPmcHzyA=="], + + "@radix-ui/react-collection": ["@radix-ui/react-collection@1.1.7", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw=="], + + "@radix-ui/react-compose-refs": ["@radix-ui/react-compose-refs@1.1.2", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg=="], + + "@radix-ui/react-context": ["@radix-ui/react-context@1.1.2", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA=="], + + "@radix-ui/react-dialog": ["@radix-ui/react-dialog@1.1.15", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-focus-guards": "1.1.3", "@radix-ui/react-focus-scope": "1.1.7", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-portal": "1.1.9", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.3", "@radix-ui/react-use-controllable-state": "1.2.2", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.6.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw=="], + + "@radix-ui/react-direction": ["@radix-ui/react-direction@1.1.1", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw=="], + + "@radix-ui/react-dismissable-layer": ["@radix-ui/react-dismissable-layer@1.1.11", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-escape-keydown": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg=="], + + "@radix-ui/react-dropdown-menu": ["@radix-ui/react-dropdown-menu@2.1.16", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-menu": "2.1.16", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-1PLGQEynI/3OX/ftV54COn+3Sud/Mn8vALg2rWnBLnRaGtJDduNW/22XjlGgPdpcIbiQxjKtb7BkcjP00nqfJw=="], + + "@radix-ui/react-focus-guards": ["@radix-ui/react-focus-guards@1.1.3", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw=="], + + "@radix-ui/react-focus-scope": ["@radix-ui/react-focus-scope@1.1.7", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw=="], + + "@radix-ui/react-id": ["@radix-ui/react-id@1.1.1", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg=="], + + "@radix-ui/react-label": ["@radix-ui/react-label@2.1.8", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-FmXs37I6hSBVDlO4y764TNz1rLgKwjJMQ0EGte6F3Cb3f4bIuHB/iLa/8I9VKkmOy+gNHq8rql3j686ACVV21A=="], + + "@radix-ui/react-menu": ["@radix-ui/react-menu@2.1.16", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-focus-guards": "1.1.3", "@radix-ui/react-focus-scope": "1.1.7", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-popper": "1.2.8", "@radix-ui/react-portal": "1.1.9", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-roving-focus": "1.1.11", "@radix-ui/react-slot": "1.2.3", "@radix-ui/react-use-callback-ref": "1.1.1", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.6.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-72F2T+PLlphrqLcAotYPp0uJMr5SjP5SL01wfEspJbru5Zs5vQaSHb4VB3ZMJPimgHHCHG7gMOeOB9H3Hdmtxg=="], + + "@radix-ui/react-navigation-menu": ["@radix-ui/react-navigation-menu@1.2.14", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-use-layout-effect": "1.1.1", "@radix-ui/react-use-previous": "1.1.1", "@radix-ui/react-visually-hidden": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-YB9mTFQvCOAQMHU+C/jVl96WmuWeltyUEpRJJky51huhds5W2FQr1J8D/16sQlf0ozxkPK8uF3niQMdUwZPv5w=="], + + "@radix-ui/react-popover": ["@radix-ui/react-popover@1.1.15", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-focus-guards": "1.1.3", "@radix-ui/react-focus-scope": "1.1.7", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-popper": "1.2.8", "@radix-ui/react-portal": "1.1.9", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.3", "@radix-ui/react-use-controllable-state": "1.2.2", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.6.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-kr0X2+6Yy/vJzLYJUPCZEc8SfQcf+1COFoAqauJm74umQhta9M7lNJHP7QQS3vkvcGLQUbWpMzwrXYwrYztHKA=="], + + "@radix-ui/react-popper": ["@radix-ui/react-popper@1.2.8", "", { "dependencies": { "@floating-ui/react-dom": "^2.0.0", "@radix-ui/react-arrow": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-layout-effect": "1.1.1", "@radix-ui/react-use-rect": "1.1.1", "@radix-ui/react-use-size": "1.1.1", "@radix-ui/rect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw=="], + + "@radix-ui/react-portal": ["@radix-ui/react-portal@1.1.10", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.4", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-4kY9IVa6+9nJPsYmngK5Uk2kUmZnv7ChhHAFeQ5oaj8jrR1bIi3xww8nH71pz1/Ve4d/cXO3YxT8eikt1B0a8w=="], + + "@radix-ui/react-presence": ["@radix-ui/react-presence@1.1.5", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ=="], + + "@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], + + "@radix-ui/react-roving-focus": ["@radix-ui/react-roving-focus@1.1.11", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA=="], + + "@radix-ui/react-slider": ["@radix-ui/react-slider@1.3.6", "", { "dependencies": { "@radix-ui/number": "1.1.1", "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-use-layout-effect": "1.1.1", "@radix-ui/react-use-previous": "1.1.1", "@radix-ui/react-use-size": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-JPYb1GuM1bxfjMRlNLE+BcmBC8onfCi60Blk7OBqi2MLTFdS+8401U4uFjnwkOr49BLmXxLC6JHkvAsx5OJvHw=="], + + "@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.4", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA=="], + + "@radix-ui/react-switch": ["@radix-ui/react-switch@1.2.6", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-use-previous": "1.1.1", "@radix-ui/react-use-size": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-bByzr1+ep1zk4VubeEVViV592vu2lHE2BZY5OnzehZqOOgogN80+mNtCqPkhn2gklJqOpxWgPoYTSnhBCqpOXQ=="], + + "@radix-ui/react-toast": ["@radix-ui/react-toast@1.2.15", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-portal": "1.1.9", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-use-layout-effect": "1.1.1", "@radix-ui/react-visually-hidden": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-3OSz3TacUWy4WtOXV38DggwxoqJK4+eDkNMl5Z/MJZaoUPaP4/9lf81xXMe1I2ReTAptverZUpbPY4wWwWyL5g=="], + + "@radix-ui/react-tooltip": ["@radix-ui/react-tooltip@1.2.8", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-popper": "1.2.8", "@radix-ui/react-portal": "1.1.9", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.3", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-visually-hidden": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-tY7sVt1yL9ozIxvmbtN5qtmH2krXcBCfjEiCgKGLqunJHvgvZG2Pcl2oQ3kbcZARb1BGEHdkLzcYGO8ynVlieg=="], + + "@radix-ui/react-use-callback-ref": ["@radix-ui/react-use-callback-ref@1.1.1", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg=="], + + "@radix-ui/react-use-controllable-state": ["@radix-ui/react-use-controllable-state@1.2.2", "", { "dependencies": { "@radix-ui/react-use-effect-event": "0.0.2", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg=="], + + "@radix-ui/react-use-effect-event": ["@radix-ui/react-use-effect-event@0.0.2", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA=="], + + "@radix-ui/react-use-escape-keydown": ["@radix-ui/react-use-escape-keydown@1.1.1", "", { "dependencies": { "@radix-ui/react-use-callback-ref": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g=="], + + "@radix-ui/react-use-layout-effect": ["@radix-ui/react-use-layout-effect@1.1.1", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ=="], + + "@radix-ui/react-use-previous": ["@radix-ui/react-use-previous@1.1.1", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ=="], + + "@radix-ui/react-use-rect": ["@radix-ui/react-use-rect@1.1.1", "", { "dependencies": { "@radix-ui/rect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w=="], + + "@radix-ui/react-use-size": ["@radix-ui/react-use-size@1.1.1", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ=="], + + "@radix-ui/react-visually-hidden": ["@radix-ui/react-visually-hidden@1.2.3", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug=="], + + "@radix-ui/rect": ["@radix-ui/rect@1.1.1", "", {}, "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw=="], + + "@react-aria/breadcrumbs": ["@react-aria/breadcrumbs@3.5.29", "", { "dependencies": { "@react-aria/i18n": "^3.12.13", "@react-aria/link": "^3.8.6", "@react-aria/utils": "^3.31.0", "@react-types/breadcrumbs": "^3.7.17", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-rKS0dryllaZJqrr3f/EAf2liz8CBEfmL5XACj+Z1TAig6GIYe1QuA3BtkX0cV9OkMugXdX8e3cbA7nD10ORRqg=="], + + "@react-aria/button": ["@react-aria/button@3.14.2", "", { "dependencies": { "@react-aria/interactions": "^3.25.6", "@react-aria/toolbar": "3.0.0-beta.21", "@react-aria/utils": "^3.31.0", "@react-stately/toggle": "^3.9.2", "@react-types/button": "^3.14.1", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-VbLIA+Kd6f/MDjd+TJBUg2+vNDw66pnvsj2E4RLomjI9dfBuN7d+Yo2UnsqKVyhePjCUZ6xxa2yDuD63IOSIYA=="], + + "@react-aria/calendar": ["@react-aria/calendar@3.9.2", "", { "dependencies": { "@internationalized/date": "^3.10.0", "@react-aria/i18n": "^3.12.13", "@react-aria/interactions": "^3.25.6", "@react-aria/live-announcer": "^3.4.4", "@react-aria/utils": "^3.31.0", "@react-stately/calendar": "^3.9.0", "@react-types/button": "^3.14.1", "@react-types/calendar": "^3.8.0", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-uSLxLgOPRnEU4Jg59lAhUVA+uDx/55NBg4lpfsP2ynazyiJ5LCXmYceJi+VuOqMml7d9W0dB87OldOeLdIxYVA=="], + + "@react-aria/checkbox": ["@react-aria/checkbox@3.16.2", "", { "dependencies": { "@react-aria/form": "^3.1.2", "@react-aria/interactions": "^3.25.6", "@react-aria/label": "^3.7.22", "@react-aria/toggle": "^3.12.2", "@react-aria/utils": "^3.31.0", "@react-stately/checkbox": "^3.7.2", "@react-stately/form": "^3.2.2", "@react-stately/toggle": "^3.9.2", "@react-types/checkbox": "^3.10.2", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-29Mj9ZqXioJ0bcMnNGooHztnTau5pikZqX3qCRj5bYR3by/ZFFavYoMroh9F7s/MbFm/tsKX+Sf02lYFEdXRjA=="], + + "@react-aria/color": ["@react-aria/color@3.1.2", "", { "dependencies": { "@react-aria/i18n": "^3.12.13", "@react-aria/interactions": "^3.25.6", "@react-aria/numberfield": "^3.12.2", "@react-aria/slider": "^3.8.2", "@react-aria/spinbutton": "^3.6.19", "@react-aria/textfield": "^3.18.2", "@react-aria/utils": "^3.31.0", "@react-aria/visually-hidden": "^3.8.28", "@react-stately/color": "^3.9.2", "@react-stately/form": "^3.2.2", "@react-types/color": "^3.1.2", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-jCC+Q7rAQGLQBkHjkPAeDuGYuMbc4neifjlNRiyZ9as1z4gg63H8MteoWYYk6K4vCKKxSixgt8MfI29XWMOWPQ=="], + + "@react-aria/combobox": ["@react-aria/combobox@3.14.0", "", { "dependencies": { "@react-aria/focus": "^3.21.2", "@react-aria/i18n": "^3.12.13", "@react-aria/listbox": "^3.15.0", "@react-aria/live-announcer": "^3.4.4", "@react-aria/menu": "^3.19.3", "@react-aria/overlays": "^3.30.0", "@react-aria/selection": "^3.26.0", "@react-aria/textfield": "^3.18.2", "@react-aria/utils": "^3.31.0", "@react-stately/collections": "^3.12.8", "@react-stately/combobox": "^3.12.0", "@react-stately/form": "^3.2.2", "@react-types/button": "^3.14.1", "@react-types/combobox": "^3.13.9", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-z4ro0Hma//p4nL2IJx5iUa7NwxeXbzSoZ0se5uTYjG1rUUMszg+wqQh/AQoL+eiULn7rs18JY9wwNbVIkRNKWA=="], + + "@react-aria/datepicker": ["@react-aria/datepicker@3.15.2", "", { "dependencies": { "@internationalized/date": "^3.10.0", "@internationalized/number": "^3.6.5", "@internationalized/string": "^3.2.7", "@react-aria/focus": "^3.21.2", "@react-aria/form": "^3.1.2", "@react-aria/i18n": "^3.12.13", "@react-aria/interactions": "^3.25.6", "@react-aria/label": "^3.7.22", "@react-aria/spinbutton": "^3.6.19", "@react-aria/utils": "^3.31.0", "@react-stately/datepicker": "^3.15.2", "@react-stately/form": "^3.2.2", "@react-types/button": "^3.14.1", "@react-types/calendar": "^3.8.0", "@react-types/datepicker": "^3.13.2", "@react-types/dialog": "^3.5.22", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-th078hyNqPf4P2K10su/y32zPDjs3lOYVdHvsL9/+5K1dnTvLHCK5vgUyLuyn8FchhF7cmHV49D+LZVv65PEpQ=="], + + "@react-aria/dialog": ["@react-aria/dialog@3.5.31", "", { "dependencies": { "@react-aria/interactions": "^3.25.6", "@react-aria/overlays": "^3.30.0", "@react-aria/utils": "^3.31.0", "@react-types/dialog": "^3.5.22", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-inxQMyrzX0UBW9Mhraq0nZ4HjHdygQvllzloT1E/RlDd61lr3RbmJR6pLsrbKOTtSvDIBJpCso1xEdHCFNmA0Q=="], + + "@react-aria/disclosure": ["@react-aria/disclosure@3.1.0", "", { "dependencies": { "@react-aria/ssr": "^3.9.10", "@react-aria/utils": "^3.31.0", "@react-stately/disclosure": "^3.0.8", "@react-types/button": "^3.14.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-5996BeBpnj+yKXYysz+UuhFQxGFPvaZZ3zNBd052wz/i+TVFVGSqqYJ6cwZyO1AfBR8zOT0ZIiK4EC3ETwSvtQ=="], + + "@react-aria/dnd": ["@react-aria/dnd@3.11.3", "", { "dependencies": { "@internationalized/string": "^3.2.7", "@react-aria/i18n": "^3.12.13", "@react-aria/interactions": "^3.25.6", "@react-aria/live-announcer": "^3.4.4", "@react-aria/overlays": "^3.30.0", "@react-aria/utils": "^3.31.0", "@react-stately/collections": "^3.12.8", "@react-stately/dnd": "^3.7.1", "@react-types/button": "^3.14.1", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-MyTziciik1Owz3rqDghu0K3ZtTFvmj/R2ZsLDwbU9N4hKqGX/BKnrI8SytTn8RDqVv5LmA/GhApLngiupTAsXw=="], + + "@react-aria/focus": ["@react-aria/focus@3.21.2", "", { "dependencies": { "@react-aria/interactions": "^3.25.6", "@react-aria/utils": "^3.31.0", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0", "clsx": "^2.0.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-JWaCR7wJVggj+ldmM/cb/DXFg47CXR55lznJhZBh4XVqJjMKwaOOqpT5vNN7kpC1wUpXicGNuDnJDN1S/+6dhQ=="], + + "@react-aria/form": ["@react-aria/form@3.1.2", "", { "dependencies": { "@react-aria/interactions": "^3.25.6", "@react-aria/utils": "^3.31.0", "@react-stately/form": "^3.2.2", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-R3i7L7Ci61PqZQvOrnL9xJeWEbh28UkTVgkj72EvBBn39y4h7ReH++0stv7rRs8p5ozETSKezBbGfu4UsBewWw=="], + + "@react-aria/grid": ["@react-aria/grid@3.14.5", "", { "dependencies": { "@react-aria/focus": "^3.21.2", "@react-aria/i18n": "^3.12.13", "@react-aria/interactions": "^3.25.6", "@react-aria/live-announcer": "^3.4.4", "@react-aria/selection": "^3.26.0", "@react-aria/utils": "^3.31.0", "@react-stately/collections": "^3.12.8", "@react-stately/grid": "^3.11.6", "@react-stately/selection": "^3.20.6", "@react-types/checkbox": "^3.10.2", "@react-types/grid": "^3.3.6", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-XHw6rgjlTqc85e3zjsWo3U0EVwjN5MOYtrolCKc/lc2ItNdcY3OlMhpsU9+6jHwg/U3VCSWkGvwAz9hg7krd8Q=="], + + "@react-aria/gridlist": ["@react-aria/gridlist@3.14.1", "", { "dependencies": { "@react-aria/focus": "^3.21.2", "@react-aria/grid": "^3.14.5", "@react-aria/i18n": "^3.12.13", "@react-aria/interactions": "^3.25.6", "@react-aria/selection": "^3.26.0", "@react-aria/utils": "^3.31.0", "@react-stately/list": "^3.13.1", "@react-stately/tree": "^3.9.3", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-keS03Am07aOn7RuNaRsMOyh0jscyhDn95asCVy4lxhl9A9TFk1Jw0o2L6q6cWRj1gFiKeacj/otG5H8ZKQQ2Wg=="], + + "@react-aria/i18n": ["@react-aria/i18n@3.12.13", "", { "dependencies": { "@internationalized/date": "^3.10.0", "@internationalized/message": "^3.1.8", "@internationalized/number": "^3.6.5", "@internationalized/string": "^3.2.7", "@react-aria/ssr": "^3.9.10", "@react-aria/utils": "^3.31.0", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-YTM2BPg0v1RvmP8keHenJBmlx8FXUKsdYIEX7x6QWRd1hKlcDwphfjzvt0InX9wiLiPHsT5EoBTpuUk8SXc0Mg=="], + + "@react-aria/interactions": ["@react-aria/interactions@3.25.6", "", { "dependencies": { "@react-aria/ssr": "^3.9.10", "@react-aria/utils": "^3.31.0", "@react-stately/flags": "^3.1.2", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-5UgwZmohpixwNMVkMvn9K1ceJe6TzlRlAfuYoQDUuOkk62/JVJNDLAPKIf5YMRc7d2B0rmfgaZLMtbREb0Zvkw=="], + + "@react-aria/label": ["@react-aria/label@3.7.22", "", { "dependencies": { "@react-aria/utils": "^3.31.0", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-jLquJeA5ZNqDT64UpTc9XJ7kQYltUlNcgxZ37/v4mHe0UZ7QohCKdKQhXHONb0h2jjNUpp2HOZI8J9++jOpzxA=="], + + "@react-aria/landmark": ["@react-aria/landmark@3.0.7", "", { "dependencies": { "@react-aria/utils": "^3.31.0", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0", "use-sync-external-store": "^1.4.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-t8c610b8hPLS6Vwv+rbuSyljZosI1s5+Tosfa0Fk4q7d+Ex6Yj7hLfUFy59GxZAufhUYfGX396fT0gPqAbU1tg=="], + + "@react-aria/link": ["@react-aria/link@3.8.6", "", { "dependencies": { "@react-aria/interactions": "^3.25.6", "@react-aria/utils": "^3.31.0", "@react-types/link": "^3.6.5", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-7F7UDJnwbU9IjfoAdl6f3Hho5/WB7rwcydUOjUux0p7YVWh/fTjIFjfAGyIir7MJhPapun1D0t97QQ3+8jXVcg=="], + + "@react-aria/listbox": ["@react-aria/listbox@3.15.0", "", { "dependencies": { "@react-aria/interactions": "^3.25.6", "@react-aria/label": "^3.7.22", "@react-aria/selection": "^3.26.0", "@react-aria/utils": "^3.31.0", "@react-stately/collections": "^3.12.8", "@react-stately/list": "^3.13.1", "@react-types/listbox": "^3.7.4", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-Ub1Wu79R9sgxM7h4HeEdjOgOKDHwduvYcnDqsSddGXgpkL8ADjsy2YUQ0hHY5VnzA4BxK36bLp4mzSna8Qvj1w=="], + + "@react-aria/live-announcer": ["@react-aria/live-announcer@3.4.4", "", { "dependencies": { "@swc/helpers": "^0.5.0" } }, "sha512-PTTBIjNRnrdJOIRTDGNifY2d//kA7GUAwRFJNOEwSNG4FW+Bq9awqLiflw0JkpyB0VNIwou6lqKPHZVLsGWOXA=="], + + "@react-aria/menu": ["@react-aria/menu@3.19.3", "", { "dependencies": { "@react-aria/focus": "^3.21.2", "@react-aria/i18n": "^3.12.13", "@react-aria/interactions": "^3.25.6", "@react-aria/overlays": "^3.30.0", "@react-aria/selection": "^3.26.0", "@react-aria/utils": "^3.31.0", "@react-stately/collections": "^3.12.8", "@react-stately/menu": "^3.9.8", "@react-stately/selection": "^3.20.6", "@react-stately/tree": "^3.9.3", "@react-types/button": "^3.14.1", "@react-types/menu": "^3.10.5", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-52fh8y8b2776R2VrfZPpUBJYC9oTP7XDy+zZuZTxPEd7Ywk0JNUl5F92y6ru22yPkS13sdhrNM/Op+V/KulmAg=="], + + "@react-aria/meter": ["@react-aria/meter@3.4.27", "", { "dependencies": { "@react-aria/progress": "^3.4.27", "@react-types/meter": "^3.4.13", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-andOOdJkgRJF9vBi5VWRmFodK+GT+5X1lLeNUmb4qOX8/MVfX/RbK72LDeIhd7xC7rSCFHj3WvZ198rK4q0k3w=="], + + "@react-aria/numberfield": ["@react-aria/numberfield@3.12.2", "", { "dependencies": { "@react-aria/i18n": "^3.12.13", "@react-aria/interactions": "^3.25.6", "@react-aria/spinbutton": "^3.6.19", "@react-aria/textfield": "^3.18.2", "@react-aria/utils": "^3.31.0", "@react-stately/form": "^3.2.2", "@react-stately/numberfield": "^3.10.2", "@react-types/button": "^3.14.1", "@react-types/numberfield": "^3.8.15", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-M2b+z0HIXiXpGAWOQkO2kpIjaLNUXJ5Q3/GMa3Fkr+B1piFX0VuOynYrtddKVrmXCe+r5t+XcGb0KS29uqv7nQ=="], + + "@react-aria/overlays": ["@react-aria/overlays@3.30.0", "", { "dependencies": { "@react-aria/focus": "^3.21.2", "@react-aria/i18n": "^3.12.13", "@react-aria/interactions": "^3.25.6", "@react-aria/ssr": "^3.9.10", "@react-aria/utils": "^3.31.0", "@react-aria/visually-hidden": "^3.8.28", "@react-stately/overlays": "^3.6.20", "@react-types/button": "^3.14.1", "@react-types/overlays": "^3.9.2", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-UpjqSjYZx5FAhceWCRVsW6fX1sEwya1fQ/TKkL53FAlLFR8QKuoKqFlmiL43YUFTcGK3UdEOy3cWTleLQwdSmQ=="], + + "@react-aria/progress": ["@react-aria/progress@3.4.27", "", { "dependencies": { "@react-aria/i18n": "^3.12.13", "@react-aria/label": "^3.7.22", "@react-aria/utils": "^3.31.0", "@react-types/progress": "^3.5.16", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-0OA1shs1575g1zmO8+rWozdbTnxThFFhOfuoL1m7UV5Dley6FHpueoKB1ECv7B+Qm4dQt6DoEqLg7wsbbQDhmg=="], + + "@react-aria/radio": ["@react-aria/radio@3.12.2", "", { "dependencies": { "@react-aria/focus": "^3.21.2", "@react-aria/form": "^3.1.2", "@react-aria/i18n": "^3.12.13", "@react-aria/interactions": "^3.25.6", "@react-aria/label": "^3.7.22", "@react-aria/utils": "^3.31.0", "@react-stately/radio": "^3.11.2", "@react-types/radio": "^3.9.2", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-I11f6I90neCh56rT/6ieAs3XyDKvEfbj/QmbU5cX3p+SJpRRPN0vxQi5D1hkh0uxDpeClxygSr31NmZsd4sqfg=="], + + "@react-aria/searchfield": ["@react-aria/searchfield@3.8.9", "", { "dependencies": { "@react-aria/i18n": "^3.12.13", "@react-aria/textfield": "^3.18.2", "@react-aria/utils": "^3.31.0", "@react-stately/searchfield": "^3.5.16", "@react-types/button": "^3.14.1", "@react-types/searchfield": "^3.6.6", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-Yt2pj8Wb5/XsUr2T0DQqFv+DlFpzzWIWnNr9cJATUcWV/xw6ok7YFEg9+7EHtBmsCQxFFJtock1QfZzBw6qLtQ=="], + + "@react-aria/select": ["@react-aria/select@3.17.0", "", { "dependencies": { "@react-aria/form": "^3.1.2", "@react-aria/i18n": "^3.12.13", "@react-aria/interactions": "^3.25.6", "@react-aria/label": "^3.7.22", "@react-aria/listbox": "^3.15.0", "@react-aria/menu": "^3.19.3", "@react-aria/selection": "^3.26.0", "@react-aria/utils": "^3.31.0", "@react-aria/visually-hidden": "^3.8.28", "@react-stately/select": "^3.8.0", "@react-types/button": "^3.14.1", "@react-types/select": "^3.11.0", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-q5ZuyAn5jSOeI0Ys99951TaGcF4O7u1SSBVxPMwVVXOU8ZhToCNx+WG3n/JDYHEjqdo7sbsVRaPA7LkBzBGf5w=="], + + "@react-aria/selection": ["@react-aria/selection@3.26.0", "", { "dependencies": { "@react-aria/focus": "^3.21.2", "@react-aria/i18n": "^3.12.13", "@react-aria/interactions": "^3.25.6", "@react-aria/utils": "^3.31.0", "@react-stately/selection": "^3.20.6", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-ZBH3EfWZ+RfhTj01dH8L17uT7iNbXWS8u77/fUpHgtrm0pwNVhx0TYVnLU1YpazQ/3WVpvWhmBB8sWwD1FlD/g=="], + + "@react-aria/separator": ["@react-aria/separator@3.4.13", "", { "dependencies": { "@react-aria/utils": "^3.31.0", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-0NlcrdBfQbcjWEXdHl3+uSY1272n2ljT1gWL2RIf6aQsQWTZ0gz0rTgRHy0MTXN+y+tICItUERJT4vmTLtIzVg=="], + + "@react-aria/slider": ["@react-aria/slider@3.8.2", "", { "dependencies": { "@react-aria/i18n": "^3.12.13", "@react-aria/interactions": "^3.25.6", "@react-aria/label": "^3.7.22", "@react-aria/utils": "^3.31.0", "@react-stately/slider": "^3.7.2", "@react-types/shared": "^3.32.1", "@react-types/slider": "^3.8.2", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-6KyUGaVzRE4xAz1LKHbNh1q5wzxe58pdTHFSnxNe6nk1SCoHw7NfI4h2s2m6LgJ0megFxsT0Ir8aHaFyyxmbgg=="], + + "@react-aria/spinbutton": ["@react-aria/spinbutton@3.6.19", "", { "dependencies": { "@react-aria/i18n": "^3.12.13", "@react-aria/live-announcer": "^3.4.4", "@react-aria/utils": "^3.31.0", "@react-types/button": "^3.14.1", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-xOIXegDpts9t3RSHdIN0iYQpdts0FZ3LbpYJIYVvdEHo9OpDS+ElnDzCGtwZLguvZlwc5s1LAKuKopDUsAEMkw=="], + + "@react-aria/ssr": ["@react-aria/ssr@3.9.10", "", { "dependencies": { "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-hvTm77Pf+pMBhuBm760Li0BVIO38jv1IBws1xFm1NoL26PU+fe+FMW5+VZWyANR6nYL65joaJKZqOdTQMkO9IQ=="], + + "@react-aria/switch": ["@react-aria/switch@3.7.8", "", { "dependencies": { "@react-aria/toggle": "^3.12.2", "@react-stately/toggle": "^3.9.2", "@react-types/shared": "^3.32.1", "@react-types/switch": "^3.5.15", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-AfsUq1/YiuoprhcBUD9vDPyWaigAwctQNW1fMb8dROL+i/12B+Zekj8Ml+jbU69/kIVtfL0Jl7/0Bo9KK3X0xQ=="], + + "@react-aria/table": ["@react-aria/table@3.17.8", "", { "dependencies": { "@react-aria/focus": "^3.21.2", "@react-aria/grid": "^3.14.5", "@react-aria/i18n": "^3.12.13", "@react-aria/interactions": "^3.25.6", "@react-aria/live-announcer": "^3.4.4", "@react-aria/utils": "^3.31.0", "@react-aria/visually-hidden": "^3.8.28", "@react-stately/collections": "^3.12.8", "@react-stately/flags": "^3.1.2", "@react-stately/table": "^3.15.1", "@react-types/checkbox": "^3.10.2", "@react-types/grid": "^3.3.6", "@react-types/shared": "^3.32.1", "@react-types/table": "^3.13.4", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-bXiZoxTMbsqUJsYDhHPzKc3jw0HFJ/xMsJ49a0f7mp5r9zACxNLeIU0wJ4Uvx37dnYOHKzGliG+rj5l4sph7MA=="], + + "@react-aria/tabs": ["@react-aria/tabs@3.10.8", "", { "dependencies": { "@react-aria/focus": "^3.21.2", "@react-aria/i18n": "^3.12.13", "@react-aria/selection": "^3.26.0", "@react-aria/utils": "^3.31.0", "@react-stately/tabs": "^3.8.6", "@react-types/shared": "^3.32.1", "@react-types/tabs": "^3.3.19", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-sPPJyTyoAqsBh76JinBAxStOcbjZvyWFYKpJ9Uqw+XT0ObshAPPFSGeh8DiQemPs02RwJdrfARPMhyqiX8t59A=="], + + "@react-aria/tag": ["@react-aria/tag@3.7.2", "", { "dependencies": { "@react-aria/gridlist": "^3.14.1", "@react-aria/i18n": "^3.12.13", "@react-aria/interactions": "^3.25.6", "@react-aria/label": "^3.7.22", "@react-aria/selection": "^3.26.0", "@react-aria/utils": "^3.31.0", "@react-stately/list": "^3.13.1", "@react-types/button": "^3.14.1", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-JV679P5r4DftbqyNBRt7Nw9mP7dxaKPfikjyQuvUoEOa06wBLbM/hU9RJUPRvqK+Un6lgBDAmXD9NNf4N2xpdw=="], + + "@react-aria/textfield": ["@react-aria/textfield@3.18.2", "", { "dependencies": { "@react-aria/form": "^3.1.2", "@react-aria/interactions": "^3.25.6", "@react-aria/label": "^3.7.22", "@react-aria/utils": "^3.31.0", "@react-stately/form": "^3.2.2", "@react-stately/utils": "^3.10.8", "@react-types/shared": "^3.32.1", "@react-types/textfield": "^3.12.6", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-G+lM8VYSor6g9Yptc6hLZ6BF+0cq0pYol1z6wdQUQgJN8tg4HPtzq75lsZtlCSIznL3amgRAxJtd0dUrsAnvaQ=="], + + "@react-aria/toast": ["@react-aria/toast@3.0.8", "", { "dependencies": { "@react-aria/i18n": "^3.12.13", "@react-aria/interactions": "^3.25.6", "@react-aria/landmark": "^3.0.7", "@react-aria/utils": "^3.31.0", "@react-stately/toast": "^3.1.2", "@react-types/button": "^3.14.1", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-rfJIms6AkMyQ7ZgKrMZgGfPwGcB/t1JoEwbc1PAmXcAvFI/hzF6YF7ZFDXiq38ucFsP9PnHmbXIzM9w4ccl18A=="], + + "@react-aria/toggle": ["@react-aria/toggle@3.12.2", "", { "dependencies": { "@react-aria/interactions": "^3.25.6", "@react-aria/utils": "^3.31.0", "@react-stately/toggle": "^3.9.2", "@react-types/checkbox": "^3.10.2", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-g25XLYqJuJpt0/YoYz2Rab8ax+hBfbssllcEFh0v0jiwfk2gwTWfRU9KAZUvxIqbV8Nm8EBmrYychDpDcvW1kw=="], + + "@react-aria/toolbar": ["@react-aria/toolbar@3.0.0-beta.21", "", { "dependencies": { "@react-aria/focus": "^3.21.2", "@react-aria/i18n": "^3.12.13", "@react-aria/utils": "^3.31.0", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-yRCk/GD8g+BhdDgxd3I0a0c8Ni4Wyo6ERzfSoBkPkwQ4X2E2nkopmraM9D0fXw4UcIr4bnmvADzkHXtBN0XrBg=="], + + "@react-aria/tooltip": ["@react-aria/tooltip@3.8.8", "", { "dependencies": { "@react-aria/interactions": "^3.25.6", "@react-aria/utils": "^3.31.0", "@react-stately/tooltip": "^3.5.8", "@react-types/shared": "^3.32.1", "@react-types/tooltip": "^3.4.21", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-CmHUqtXtFWmG4AHMEr9hIVex+oscK6xcM2V47gq9ijNInxe3M6UBu/dBdkgGP/jYv9N7tzCAjTR8nNIHQXwvWw=="], + + "@react-aria/tree": ["@react-aria/tree@3.1.4", "", { "dependencies": { "@react-aria/gridlist": "^3.14.1", "@react-aria/i18n": "^3.12.13", "@react-aria/selection": "^3.26.0", "@react-aria/utils": "^3.31.0", "@react-stately/tree": "^3.9.3", "@react-types/button": "^3.14.1", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-6pbFeN0dAsCOrFGUKU39CNjft20zCAjLfMqfkRWisL+JkUHI2nq6odUJF5jJTsU1C+1951+3oFOmVxPX+K+akQ=="], + + "@react-aria/utils": ["@react-aria/utils@3.31.0", "", { "dependencies": { "@react-aria/ssr": "^3.9.10", "@react-stately/flags": "^3.1.2", "@react-stately/utils": "^3.10.8", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0", "clsx": "^2.0.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-ABOzCsZrWzf78ysswmguJbx3McQUja7yeGj6/vZo4JVsZNlxAN+E9rs381ExBRI0KzVo6iBTeX5De8eMZPJXig=="], + + "@react-aria/visually-hidden": ["@react-aria/visually-hidden@3.8.28", "", { "dependencies": { "@react-aria/interactions": "^3.25.6", "@react-aria/utils": "^3.31.0", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-KRRjbVVob2CeBidF24dzufMxBveEUtUu7IM+hpdZKB+gxVROoh4XRLPv9SFmaH89Z7D9To3QoykVZoWD0lan6Q=="], + + "@react-hookz/web": ["@react-hookz/web@25.2.0", "", { "dependencies": { "@ver0/deep-equal": "^1.0.0" }, "peerDependencies": { "js-cookie": "^3.0.5", "react": "^16.8 || ^17 || ^18 || ^19", "react-dom": "^16.8 || ^17 || ^18 || ^19" }, "optionalPeers": ["js-cookie"] }, "sha512-60iU7lGnZOjdkNVpu/8xNEnTPVQQ5ckauIEvsh9S+58v2j/mY1lhgNas+w+9UF8VoUhWC4/cpaxT64EUC6DgsQ=="], + + "@react-stately/calendar": ["@react-stately/calendar@3.9.0", "", { "dependencies": { "@internationalized/date": "^3.10.0", "@react-stately/utils": "^3.10.8", "@react-types/calendar": "^3.8.0", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-U5Nf2kx9gDhJRxdDUm5gjfyUlt/uUfOvM1vDW2UA62cA6+2k2cavMLc2wNlXOb/twFtl6p0joYKHG7T4xnEFkg=="], + + "@react-stately/checkbox": ["@react-stately/checkbox@3.7.2", "", { "dependencies": { "@react-stately/form": "^3.2.2", "@react-stately/utils": "^3.10.8", "@react-types/checkbox": "^3.10.2", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-j1ycUVz5JmqhaL6mDZgDNZqBilOB8PBW096sDPFaTtuYreDx2HOd1igxiIvwlvPESZwsJP7FVM3mYnaoXtpKPA=="], + + "@react-stately/collections": ["@react-stately/collections@3.12.8", "", { "dependencies": { "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-AceJYLLXt1Y2XIcOPi6LEJSs4G/ubeYW3LqOCQbhfIgMaNqKfQMIfagDnPeJX9FVmPFSlgoCBxb1pTJW2vjCAQ=="], + + "@react-stately/color": ["@react-stately/color@3.9.2", "", { "dependencies": { "@internationalized/number": "^3.6.5", "@internationalized/string": "^3.2.7", "@react-stately/form": "^3.2.2", "@react-stately/numberfield": "^3.10.2", "@react-stately/slider": "^3.7.2", "@react-stately/utils": "^3.10.8", "@react-types/color": "^3.1.2", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-F+6Do8W3yu/4n7MpzZtbXwVukcLTFYYDIUtpoR+Jl52UmAr9Hf1CQgkyTI2azv1ZMzj1mVrTBhpBL0q27kFZig=="], + + "@react-stately/combobox": ["@react-stately/combobox@3.12.0", "", { "dependencies": { "@react-stately/collections": "^3.12.8", "@react-stately/form": "^3.2.2", "@react-stately/list": "^3.13.1", "@react-stately/overlays": "^3.6.20", "@react-stately/utils": "^3.10.8", "@react-types/combobox": "^3.13.9", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-A6q9R/7cEa/qoQsBkdslXWvD7ztNLLQ9AhBhVN9QvzrmrH5B4ymUwcTU8lWl22ykH7RRwfonLeLXJL4C+/L2oQ=="], + + "@react-stately/datepicker": ["@react-stately/datepicker@3.15.2", "", { "dependencies": { "@internationalized/date": "^3.10.0", "@internationalized/string": "^3.2.7", "@react-stately/form": "^3.2.2", "@react-stately/overlays": "^3.6.20", "@react-stately/utils": "^3.10.8", "@react-types/datepicker": "^3.13.2", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-S5GL+W37chvV8knv9v0JRv0L6hKo732qqabCCHXzOpYxkLIkV4f/y3cHdEzFWzpZ0O0Gkg7WgeYo160xOdBKYg=="], + + "@react-stately/disclosure": ["@react-stately/disclosure@3.0.8", "", { "dependencies": { "@react-stately/utils": "^3.10.8", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-/Ce/Z76y85eSBZiemfU/uEyXkBBa1RdfLRaKD13rnfUV7/nS3ae1VtNlsXgmwQjWv2pmAiSuEKYMbZfVL7q/lQ=="], + + "@react-stately/dnd": ["@react-stately/dnd@3.7.1", "", { "dependencies": { "@react-stately/selection": "^3.20.6", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-O1JBJ4HI1rVNKuoa5NXiC5FCrCEkr9KVBoKNlTZU8/cnQselhbEsUfMglAakO2EuwIaM1tIXoNF5J/N5P+6lTA=="], + + "@react-stately/flags": ["@react-stately/flags@3.1.2", "", { "dependencies": { "@swc/helpers": "^0.5.0" } }, "sha512-2HjFcZx1MyQXoPqcBGALwWWmgFVUk2TuKVIQxCbRq7fPyWXIl6VHcakCLurdtYC2Iks7zizvz0Idv48MQ38DWg=="], + + "@react-stately/form": ["@react-stately/form@3.2.2", "", { "dependencies": { "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-soAheOd7oaTO6eNs6LXnfn0tTqvOoe3zN9FvtIhhrErKz9XPc5sUmh3QWwR45+zKbitOi1HOjfA/gifKhZcfWw=="], + + "@react-stately/grid": ["@react-stately/grid@3.11.6", "", { "dependencies": { "@react-stately/collections": "^3.12.8", "@react-stately/selection": "^3.20.6", "@react-types/grid": "^3.3.6", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-vWPAkzpeTIsrurHfMubzMuqEw7vKzFhIJeEK5sEcLunyr1rlADwTzeWrHNbPMl66NAIAi70Dr1yNq+kahQyvMA=="], + + "@react-stately/list": ["@react-stately/list@3.13.1", "", { "dependencies": { "@react-stately/collections": "^3.12.8", "@react-stately/selection": "^3.20.6", "@react-stately/utils": "^3.10.8", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-eHaoauh21twbcl0kkwULhVJ+CzYcy1jUjMikNVMHOQdhr4WIBdExf7PmSgKHKqsSPhpGg6IpTCY2dUX3RycjDg=="], + + "@react-stately/menu": ["@react-stately/menu@3.9.8", "", { "dependencies": { "@react-stately/overlays": "^3.6.20", "@react-types/menu": "^3.10.5", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-bo0NOhofnTHLESiYfsSSw6gyXiPVJJ0UlN2igUXtJk5PmyhWjFzUzTzcnd7B028OB0si9w3LIWM3stqz5271Eg=="], + + "@react-stately/numberfield": ["@react-stately/numberfield@3.10.2", "", { "dependencies": { "@internationalized/number": "^3.6.5", "@react-stately/form": "^3.2.2", "@react-stately/utils": "^3.10.8", "@react-types/numberfield": "^3.8.15", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-jlKVFYaH3RX5KvQ7a+SAMQuPccZCzxLkeYkBE64u1Zvi7YhJ8hkTMHG/fmZMbk1rHlseE2wfBdk0Rlya3MvoNQ=="], + + "@react-stately/overlays": ["@react-stately/overlays@3.6.20", "", { "dependencies": { "@react-stately/utils": "^3.10.8", "@react-types/overlays": "^3.9.2", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-YAIe+uI8GUXX8F/0Pzr53YeC5c/bjqbzDFlV8NKfdlCPa6+Jp4B/IlYVjIooBj9+94QvbQdjylegvYWK/iPwlg=="], + + "@react-stately/radio": ["@react-stately/radio@3.11.2", "", { "dependencies": { "@react-stately/form": "^3.2.2", "@react-stately/utils": "^3.10.8", "@react-types/radio": "^3.9.2", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-UM7L6AW+k8edhSBUEPZAqiWNRNadfOKK7BrCXyBiG79zTz0zPcXRR+N+gzkDn7EMSawDeyK1SHYUuoSltTactg=="], + + "@react-stately/searchfield": ["@react-stately/searchfield@3.5.16", "", { "dependencies": { "@react-stately/utils": "^3.10.8", "@react-types/searchfield": "^3.6.6", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-MRfqT1lZ24r94GuFNcGJXsfijZoWjSMySCT60T6NXtbOzVPuAF3K+pL70Rayq/EWLJjS2NPHND11VTs0VdcE0Q=="], + + "@react-stately/select": ["@react-stately/select@3.8.0", "", { "dependencies": { "@react-stately/form": "^3.2.2", "@react-stately/list": "^3.13.1", "@react-stately/overlays": "^3.6.20", "@react-stately/utils": "^3.10.8", "@react-types/select": "^3.11.0", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-A721nlt0DSCDit0wKvhcrXFTG5Vv1qkEVkeKvobmETZy6piKvwh0aaN8iQno5AFuZaj1iOZeNjZ/20TsDJR/4A=="], + + "@react-stately/selection": ["@react-stately/selection@3.20.6", "", { "dependencies": { "@react-stately/collections": "^3.12.8", "@react-stately/utils": "^3.10.8", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-a0bjuP2pJYPKEiedz2Us1W1aSz0iHRuyeQEdBOyL6Z6VUa6hIMq9H60kvseir2T85cOa4QggizuRV7mcO6bU5w=="], + + "@react-stately/slider": ["@react-stately/slider@3.7.2", "", { "dependencies": { "@react-stately/utils": "^3.10.8", "@react-types/shared": "^3.32.1", "@react-types/slider": "^3.8.2", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-EVBHUdUYwj++XqAEiQg2fGi8Reccznba0uyQ3gPejF0pAc390Q/J5aqiTEDfiCM7uJ6WHxTM6lcCqHQBISk2dQ=="], + + "@react-stately/table": ["@react-stately/table@3.15.1", "", { "dependencies": { "@react-stately/collections": "^3.12.8", "@react-stately/flags": "^3.1.2", "@react-stately/grid": "^3.11.6", "@react-stately/selection": "^3.20.6", "@react-stately/utils": "^3.10.8", "@react-types/grid": "^3.3.6", "@react-types/shared": "^3.32.1", "@react-types/table": "^3.13.4", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-MhMAgE/LgAzHcAn1P3p/nQErzJ6DiixSJ1AOt2JlnAKEb5YJg4ATKWCb2IjBLwywt9ZCzfm3KMUzkctZqAoxwA=="], + + "@react-stately/tabs": ["@react-stately/tabs@3.8.6", "", { "dependencies": { "@react-stately/list": "^3.13.1", "@react-types/shared": "^3.32.1", "@react-types/tabs": "^3.3.19", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-9RYxmgjVIxUpIsGKPIF7uRoHWOEz8muwaYiStCVeyiYBPmarvZoIYtTXcwSMN/vEs7heVN5uGCL6/bfdY4+WiA=="], + + "@react-stately/toast": ["@react-stately/toast@3.1.2", "", { "dependencies": { "@swc/helpers": "^0.5.0", "use-sync-external-store": "^1.4.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-HiInm7bck32khFBHZThTQaAF6e6/qm57F4mYRWdTq8IVeGDzpkbUYibnLxRhk0UZ5ybc6me+nqqPkG/lVmM42Q=="], + + "@react-stately/toggle": ["@react-stately/toggle@3.9.2", "", { "dependencies": { "@react-stately/utils": "^3.10.8", "@react-types/checkbox": "^3.10.2", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-dOxs9wrVXHUmA7lc8l+N9NbTJMAaXcYsnNGsMwfXIXQ3rdq+IjWGNYJ52UmNQyRYFcg0jrzRrU16TyGbNjOdNQ=="], + + "@react-stately/tooltip": ["@react-stately/tooltip@3.5.8", "", { "dependencies": { "@react-stately/overlays": "^3.6.20", "@react-types/tooltip": "^3.4.21", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-gkcUx2ROhCiGNAYd2BaTejakXUUNLPnnoJ5+V/mN480pN+OrO8/2V9pqb/IQmpqxLsso93zkM3A4wFHHLBBmPQ=="], + + "@react-stately/tree": ["@react-stately/tree@3.9.3", "", { "dependencies": { "@react-stately/collections": "^3.12.8", "@react-stately/selection": "^3.20.6", "@react-stately/utils": "^3.10.8", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-ZngG79nLFxE/GYmpwX6E/Rma2MMkzdoJPRI3iWk3dgqnGMMzpPnUp/cvjDsU3UHF7xDVusC5BT6pjWN0uxCIFQ=="], + + "@react-stately/utils": ["@react-stately/utils@3.10.8", "", { "dependencies": { "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-SN3/h7SzRsusVQjQ4v10LaVsDc81jyyR0DD5HnsQitm/I5WDpaSr2nRHtyloPFU48jlql1XX/S04T2DLQM7Y3g=="], + + "@react-types/breadcrumbs": ["@react-types/breadcrumbs@3.7.17", "", { "dependencies": { "@react-types/link": "^3.6.5", "@react-types/shared": "^3.32.1" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-IhvVTcfli5o/UDlGACXxjlor2afGlMQA8pNR3faH0bBUay1Fmm3IWktVw9Xwmk+KraV2RTAg9e+E6p8DOQZfiw=="], + + "@react-types/button": ["@react-types/button@3.14.1", "", { "dependencies": { "@react-types/shared": "^3.32.1" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-D8C4IEwKB7zEtiWYVJ3WE/5HDcWlze9mLWQ5hfsBfpePyWCgO3bT/+wjb/7pJvcAocrkXo90QrMm85LcpBtrpg=="], + + "@react-types/calendar": ["@react-types/calendar@3.8.0", "", { "dependencies": { "@internationalized/date": "^3.10.0", "@react-types/shared": "^3.32.1" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-ZDZgfZgbz1ydWOFs1mH7QFfX3ioJrmb3Y/lkoubQE0HWXLZzyYNvhhKyFJRS1QJ40IofLSBHriwbQb/tsUnGlw=="], + + "@react-types/checkbox": ["@react-types/checkbox@3.10.2", "", { "dependencies": { "@react-types/shared": "^3.32.1" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-ktPkl6ZfIdGS1tIaGSU/2S5Agf2NvXI9qAgtdMDNva0oLyAZ4RLQb6WecPvofw1J7YKXu0VA5Mu7nlX+FM2weQ=="], + + "@react-types/color": ["@react-types/color@3.1.2", "", { "dependencies": { "@react-types/shared": "^3.32.1", "@react-types/slider": "^3.8.2" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-NP0TAY3j4tlMztOp/bBfMlPwC9AQKTjSiTFmc2oQNkx5M4sl3QpPqFPosdt7jZ8M4nItvfCWZrlZGjST4SB83A=="], + + "@react-types/combobox": ["@react-types/combobox@3.13.9", "", { "dependencies": { "@react-types/shared": "^3.32.1" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-G6GmLbzVkLW6VScxPAr/RtliEyPhBClfYaIllK1IZv+Z42SVnOpKzhnoe79BpmiFqy1AaC3+LjZX783mrsHCwA=="], + + "@react-types/datepicker": ["@react-types/datepicker@3.13.2", "", { "dependencies": { "@internationalized/date": "^3.10.0", "@react-types/calendar": "^3.8.0", "@react-types/overlays": "^3.9.2", "@react-types/shared": "^3.32.1" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-+M6UZxJnejYY8kz0spbY/hP08QJ5rsZ3aNarRQQHc48xV2oelFLX5MhAqizfLEsvyfb0JYrhWoh4z1xZtAmYCg=="], + + "@react-types/dialog": ["@react-types/dialog@3.5.22", "", { "dependencies": { "@react-types/overlays": "^3.9.2", "@react-types/shared": "^3.32.1" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-smSvzOcqKE196rWk0oqJDnz+ox5JM5+OT0PmmJXiUD4q7P5g32O6W5Bg7hMIFUI9clBtngo8kLaX2iMg+GqAzg=="], + + "@react-types/grid": ["@react-types/grid@3.3.6", "", { "dependencies": { "@react-types/shared": "^3.32.1" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-vIZJlYTii2n1We9nAugXwM2wpcpsC6JigJFBd6vGhStRdRWRoU4yv1Gc98Usbx0FQ/J7GLVIgeG8+1VMTKBdxw=="], + + "@react-types/link": ["@react-types/link@3.6.5", "", { "dependencies": { "@react-types/shared": "^3.32.1" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-+I2s3XWBEvLrzts0GnNeA84mUkwo+a7kLUWoaJkW0TOBDG7my95HFYxF9WnqKye7NgpOkCqz4s3oW96xPdIniQ=="], + + "@react-types/listbox": ["@react-types/listbox@3.7.4", "", { "dependencies": { "@react-types/shared": "^3.32.1" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-p4YEpTl/VQGrqVE8GIfqTS5LkT5jtjDTbVeZgrkPnX/fiPhsfbTPiZ6g0FNap4+aOGJFGEEZUv2q4vx+rCORww=="], + + "@react-types/menu": ["@react-types/menu@3.10.5", "", { "dependencies": { "@react-types/overlays": "^3.9.2", "@react-types/shared": "^3.32.1" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-HBTrKll2hm0VKJNM4ubIv1L9MNo8JuOnm2G3M+wXvb6EYIyDNxxJkhjsqsGpUXJdAOSkacHBDcNh2HsZABNX4A=="], + + "@react-types/meter": ["@react-types/meter@3.4.13", "", { "dependencies": { "@react-types/progress": "^3.5.16" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-EiarfbpHcvmeyXvXcr6XLaHkNHuGc4g7fBVEiDPwssFJKKfbUzqnnknDxPjyspqUVRcXC08CokS98J1jYobqDg=="], + + "@react-types/numberfield": ["@react-types/numberfield@3.8.15", "", { "dependencies": { "@react-types/shared": "^3.32.1" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-97r92D23GKCOjGIGMeW9nt+/KlfM3GeWH39Czcmd2/D5y3k6z4j0avbsfx2OttCtJszrnENjw3GraYGYI2KosQ=="], + + "@react-types/overlays": ["@react-types/overlays@3.9.2", "", { "dependencies": { "@react-types/shared": "^3.32.1" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-Q0cRPcBGzNGmC8dBuHyoPR7N3057KTS5g+vZfQ53k8WwmilXBtemFJPLsogJbspuewQ/QJ3o2HYsp2pne7/iNw=="], + + "@react-types/progress": ["@react-types/progress@3.5.16", "", { "dependencies": { "@react-types/shared": "^3.32.1" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-I9tSdCFfvQ7gHJtm90VAKgwdTWXQgVNvLRStEc0z9h+bXBxdvZb+QuiRPERChwFQ9VkK4p4rDqaFo69nDqWkpw=="], + + "@react-types/radio": ["@react-types/radio@3.9.2", "", { "dependencies": { "@react-types/shared": "^3.32.1" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-3UcJXu37JrTkRyP4GJPDBU7NmDTInrEdOe+bVzA1j4EegzdkJmLBkLg5cLDAbpiEHB+xIsvbJdx6dxeMuc+H3g=="], + + "@react-types/searchfield": ["@react-types/searchfield@3.6.6", "", { "dependencies": { "@react-types/shared": "^3.32.1", "@react-types/textfield": "^3.12.6" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-cl3itr/fk7wbIQc2Gz5Ie8aVeUmPjVX/mRGS5/EXlmzycAKNYTvqf2mlxwObLndtLISmt7IgNjRRhbUUDI8Ang=="], + + "@react-types/select": ["@react-types/select@3.11.0", "", { "dependencies": { "@react-types/shared": "^3.32.1" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-SzIsMFVPCbXE1Z1TLfpdfiwJ1xnIkcL1/CjGilmUKkNk5uT7rYX1xCJqWCjXI0vAU1xM4Qn+T3n8de4fw6HRBg=="], + + "@react-types/shared": ["@react-types/shared@3.32.1", "", { "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-famxyD5emrGGpFuUlgOP6fVW2h/ZaF405G5KDi3zPHzyjAWys/8W6NAVJtNbkCkhedmvL0xOhvt8feGXyXaw5w=="], + + "@react-types/slider": ["@react-types/slider@3.8.2", "", { "dependencies": { "@react-types/shared": "^3.32.1" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-MQYZP76OEOYe7/yA2To+Dl0LNb0cKKnvh5JtvNvDnAvEprn1RuLiay8Oi/rTtXmc2KmBa4VdTcsXsmkbbkeN2Q=="], + + "@react-types/switch": ["@react-types/switch@3.5.15", "", { "dependencies": { "@react-types/shared": "^3.32.1" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-r/ouGWQmIeHyYSP1e5luET+oiR7N7cLrAlWsrAfYRWHxqXOSNQloQnZJ3PLHrKFT02fsrQhx2rHaK2LfKeyN3A=="], + + "@react-types/table": ["@react-types/table@3.13.4", "", { "dependencies": { "@react-types/grid": "^3.3.6", "@react-types/shared": "^3.32.1" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-I/DYiZQl6aNbMmjk90J9SOhkzVDZvyA3Vn3wMWCiajkMNjvubFhTfda5DDf2SgFP5l0Yh6TGGH5XumRv9LqL5Q=="], + + "@react-types/tabs": ["@react-types/tabs@3.3.19", "", { "dependencies": { "@react-types/shared": "^3.32.1" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-fE+qI43yR5pAMpeqPxGqQq9jDHXEPqXskuxNHERMW0PYMdPyem2Cw6goc5F4qeZO3Hf6uPZgHkvJz2OAq7TbBw=="], + + "@react-types/textfield": ["@react-types/textfield@3.12.6", "", { "dependencies": { "@react-types/shared": "^3.32.1" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-hpEVKE+M3uUkTjw2WrX1NrH/B3rqDJFUa+ViNK2eVranLY4ZwFqbqaYXSzHupOF3ecSjJJv2C103JrwFvx6TPQ=="], + + "@react-types/tooltip": ["@react-types/tooltip@3.4.21", "", { "dependencies": { "@react-types/overlays": "^3.9.2", "@react-types/shared": "^3.32.1" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-ugGHOZU6WbOdeTdbjnaEc+Ms7/WhsUCg+T3PCOIeOT9FG02Ce189yJ/+hd7oqL/tVwIhEMYJIqSCgSELFox+QA=="], + + "@readme/better-ajv-errors": ["@readme/better-ajv-errors@2.4.0", "", { "dependencies": { "@babel/code-frame": "^7.22.5", "@babel/runtime": "^7.22.5", "@humanwhocodes/momoa": "^2.0.3", "jsonpointer": "^5.0.0", "leven": "^3.1.0", "picocolors": "^1.1.1" }, "peerDependencies": { "ajv": "4.11.8 - 8" } }, "sha512-9WODaOAKSl/mU+MYNZ2aHCrkoRSvmQ+1YkLj589OEqqjOAhbn8j7Z+ilYoiTu/he6X63/clsxxAB4qny9/dDzg=="], + + "@readme/data-urls": ["@readme/data-urls@3.0.1", "", {}, "sha512-N0JGQe7cmD3hqHwfsvkIsUOdUyUMVl3ezVFkMRuvYakNx47wGSkS83EiZR2gpidceOb9xZ3FVnst2D1sCqpRIg=="], + + "@readme/httpsnippet": ["@readme/httpsnippet@11.0.0", "", { "dependencies": { "qs": "^6.11.2", "stringify-object": "^3.3.0" } }, "sha512-XSyaAsJkZfmMO9R4WDlVJARZgd4wlImftSkMkKclidniXA1h6DTya9iTqJenQo9mHQLh3u6kAC3CDRaIV+LbLw=="], + + "@readme/openapi-parser": ["@readme/openapi-parser@4.1.2", "", { "dependencies": { "@apidevtools/json-schema-ref-parser": "^13.0.5", "@readme/better-ajv-errors": "^2.3.2", "@readme/openapi-schemas": "^3.1.0", "@types/json-schema": "^7.0.15", "ajv": "^8.12.0", "ajv-draft-04": "^1.0.0" }, "peerDependencies": { "openapi-types": ">=7" } }, "sha512-lAFH88r/CHs5VZDUocEda0OSMSQsr6801sziIjOKyVA+0hSFN+BPuelPF5XvkMROHecnPd+XEJN1iNQqCgER/g=="], + + "@readme/openapi-schemas": ["@readme/openapi-schemas@3.1.0", "", {}, "sha512-9FC/6ho8uFa8fV50+FPy/ngWN53jaUu4GRXlAjcxIRrzhltJnpKkBG2Tp0IDraFJeWrOpk84RJ9EMEEYzaI1Bw=="], + + "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.53.3", "", { "os": "android", "cpu": "arm" }, "sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w=="], + + "@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.53.3", "", { "os": "android", "cpu": "arm64" }, "sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w=="], + + "@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.53.3", "", { "os": "darwin", "cpu": "arm64" }, "sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA=="], + + "@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.53.3", "", { "os": "darwin", "cpu": "x64" }, "sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ=="], + + "@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.53.3", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w=="], + + "@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.53.3", "", { "os": "freebsd", "cpu": "x64" }, "sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q=="], + + "@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.53.3", "", { "os": "linux", "cpu": "arm" }, "sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw=="], + + "@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.53.3", "", { "os": "linux", "cpu": "arm" }, "sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg=="], + + "@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.53.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w=="], + + "@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.53.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A=="], + + "@rollup/rollup-linux-loong64-gnu": ["@rollup/rollup-linux-loong64-gnu@4.53.3", "", { "os": "linux", "cpu": "none" }, "sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g=="], + + "@rollup/rollup-linux-ppc64-gnu": ["@rollup/rollup-linux-ppc64-gnu@4.53.3", "", { "os": "linux", "cpu": "ppc64" }, "sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw=="], + + "@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.53.3", "", { "os": "linux", "cpu": "none" }, "sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g=="], + + "@rollup/rollup-linux-riscv64-musl": ["@rollup/rollup-linux-riscv64-musl@4.53.3", "", { "os": "linux", "cpu": "none" }, "sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A=="], + + "@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.53.3", "", { "os": "linux", "cpu": "s390x" }, "sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg=="], + + "@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.53.3", "", { "os": "linux", "cpu": "x64" }, "sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w=="], + + "@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.53.3", "", { "os": "linux", "cpu": "x64" }, "sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q=="], + + "@rollup/rollup-openharmony-arm64": ["@rollup/rollup-openharmony-arm64@4.53.3", "", { "os": "none", "cpu": "arm64" }, "sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw=="], + + "@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.53.3", "", { "os": "win32", "cpu": "arm64" }, "sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw=="], + + "@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.53.3", "", { "os": "win32", "cpu": "ia32" }, "sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA=="], + + "@rollup/rollup-win32-x64-gnu": ["@rollup/rollup-win32-x64-gnu@4.53.3", "", { "os": "win32", "cpu": "x64" }, "sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg=="], + + "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.53.3", "", { "os": "win32", "cpu": "x64" }, "sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ=="], + + "@scure/base": ["@scure/base@1.2.6", "", {}, "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg=="], + + "@scure/bip32": ["@scure/bip32@1.7.0", "", { "dependencies": { "@noble/curves": "~1.9.0", "@noble/hashes": "~1.8.0", "@scure/base": "~1.2.5" } }, "sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw=="], + + "@scure/bip39": ["@scure/bip39@1.6.0", "", { "dependencies": { "@noble/hashes": "~1.8.0", "@scure/base": "~1.2.5" } }, "sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A=="], + + "@sentry/core": ["@sentry/core@5.30.0", "", { "dependencies": { "@sentry/hub": "5.30.0", "@sentry/minimal": "5.30.0", "@sentry/types": "5.30.0", "@sentry/utils": "5.30.0", "tslib": "^1.9.3" } }, "sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg=="], + + "@sentry/hub": ["@sentry/hub@5.30.0", "", { "dependencies": { "@sentry/types": "5.30.0", "@sentry/utils": "5.30.0", "tslib": "^1.9.3" } }, "sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ=="], + + "@sentry/minimal": ["@sentry/minimal@5.30.0", "", { "dependencies": { "@sentry/hub": "5.30.0", "@sentry/types": "5.30.0", "tslib": "^1.9.3" } }, "sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw=="], + + "@sentry/node": ["@sentry/node@5.30.0", "", { "dependencies": { "@sentry/core": "5.30.0", "@sentry/hub": "5.30.0", "@sentry/tracing": "5.30.0", "@sentry/types": "5.30.0", "@sentry/utils": "5.30.0", "cookie": "^0.4.1", "https-proxy-agent": "^5.0.0", "lru_map": "^0.3.3", "tslib": "^1.9.3" } }, "sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg=="], + + "@sentry/tracing": ["@sentry/tracing@5.30.0", "", { "dependencies": { "@sentry/hub": "5.30.0", "@sentry/minimal": "5.30.0", "@sentry/types": "5.30.0", "@sentry/utils": "5.30.0", "tslib": "^1.9.3" } }, "sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw=="], + + "@sentry/types": ["@sentry/types@5.30.0", "", {}, "sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw=="], + + "@sentry/utils": ["@sentry/utils@5.30.0", "", { "dependencies": { "@sentry/types": "5.30.0", "tslib": "^1.9.3" } }, "sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww=="], + + "@shikijs/core": ["@shikijs/core@3.15.0", "", { "dependencies": { "@shikijs/types": "3.15.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" } }, "sha512-8TOG6yG557q+fMsSVa8nkEDOZNTSxjbbR8l6lF2gyr6Np+jrPlslqDxQkN6rMXCECQ3isNPZAGszAfYoJOPGlg=="], + + "@shikijs/engine-javascript": ["@shikijs/engine-javascript@3.15.0", "", { "dependencies": { "@shikijs/types": "3.15.0", "@shikijs/vscode-textmate": "^10.0.2", "oniguruma-to-es": "^4.3.3" } }, "sha512-ZedbOFpopibdLmvTz2sJPJgns8Xvyabe2QbmqMTz07kt1pTzfEvKZc5IqPVO/XFiEbbNyaOpjPBkkr1vlwS+qg=="], + + "@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@3.15.0", "", { "dependencies": { "@shikijs/types": "3.15.0", "@shikijs/vscode-textmate": "^10.0.2" } }, "sha512-HnqFsV11skAHvOArMZdLBZZApRSYS4LSztk2K3016Y9VCyZISnlYUYsL2hzlS7tPqKHvNqmI5JSUJZprXloMvA=="], + + "@shikijs/langs": ["@shikijs/langs@3.15.0", "", { "dependencies": { "@shikijs/types": "3.15.0" } }, "sha512-WpRvEFvkVvO65uKYW4Rzxs+IG0gToyM8SARQMtGGsH4GDMNZrr60qdggXrFOsdfOVssG/QQGEl3FnJ3EZ+8w8A=="], + + "@shikijs/themes": ["@shikijs/themes@3.15.0", "", { "dependencies": { "@shikijs/types": "3.15.0" } }, "sha512-8ow2zWb1IDvCKjYb0KiLNrK4offFdkfNVPXb1OZykpLCzRU6j+efkY+Y7VQjNlNFXonSw+4AOdGYtmqykDbRiQ=="], + + "@shikijs/twoslash": ["@shikijs/twoslash@1.29.2", "", { "dependencies": { "@shikijs/core": "1.29.2", "@shikijs/types": "1.29.2", "twoslash": "^0.2.12" } }, "sha512-2S04ppAEa477tiaLfGEn1QJWbZUmbk8UoPbAEw4PifsrxkBXtAtOflIZJNtuCwz8ptc/TPxy7CO7gW4Uoi6o/g=="], + + "@shikijs/types": ["@shikijs/types@3.15.0", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-BnP+y/EQnhihgHy4oIAN+6FFtmfTekwOLsQbRw9hOKwqgNy8Bdsjq8B05oAt/ZgvIWWFrshV71ytOrlPfYjIJw=="], + + "@shikijs/vscode-textmate": ["@shikijs/vscode-textmate@10.0.2", "", {}, "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg=="], + + "@styled-system/background": ["@styled-system/background@5.1.2", "", { "dependencies": { "@styled-system/core": "^5.1.2" } }, "sha512-jtwH2C/U6ssuGSvwTN3ri/IyjdHb8W9X/g8Y0JLcrH02G+BW3OS8kZdHphF1/YyRklnrKrBT2ngwGUK6aqqV3A=="], + + "@styled-system/border": ["@styled-system/border@5.1.5", "", { "dependencies": { "@styled-system/core": "^5.1.2" } }, "sha512-JvddhNrnhGigtzWRCVuAHepniyVi6hBlimxWDVAdcTuk7aRn9BYJUwfHslURtwYFsF5FoEs8Zmr1oZq2M1AP0A=="], + + "@styled-system/color": ["@styled-system/color@5.1.2", "", { "dependencies": { "@styled-system/core": "^5.1.2" } }, "sha512-1kCkeKDZkt4GYkuFNKc7vJQMcOmTl3bJY3YBUs7fCNM6mMYJeT1pViQ2LwBSBJytj3AB0o4IdLBoepgSgGl5MA=="], + + "@styled-system/core": ["@styled-system/core@5.1.2", "", { "dependencies": { "object-assign": "^4.1.1" } }, "sha512-XclBDdNIy7OPOsN4HBsawG2eiWfCcuFt6gxKn1x4QfMIgeO6TOlA2pZZ5GWZtIhCUqEPTgIBta6JXsGyCkLBYw=="], + + "@styled-system/css": ["@styled-system/css@5.1.5", "", {}, "sha512-XkORZdS5kypzcBotAMPBoeckDs9aSZVkvrAlq5K3xP8IMAUek+x2O4NtwoSgkYkWWzVBu6DGdFZLR790QWGG+A=="], + + "@styled-system/flexbox": ["@styled-system/flexbox@5.1.2", "", { "dependencies": { "@styled-system/core": "^5.1.2" } }, "sha512-6hHV52+eUk654Y1J2v77B8iLeBNtc+SA3R4necsu2VVinSD7+XY5PCCEzBFaWs42dtOEDIa2lMrgL0YBC01mDQ=="], + + "@styled-system/grid": ["@styled-system/grid@5.1.2", "", { "dependencies": { "@styled-system/core": "^5.1.2" } }, "sha512-K3YiV1KyHHzgdNuNlaw8oW2ktMuGga99o1e/NAfTEi5Zsa7JXxzwEnVSDSBdJC+z6R8WYTCYRQC6bkVFcvdTeg=="], + + "@styled-system/layout": ["@styled-system/layout@5.1.2", "", { "dependencies": { "@styled-system/core": "^5.1.2" } }, "sha512-wUhkMBqSeacPFhoE9S6UF3fsMEKFv91gF4AdDWp0Aym1yeMPpqz9l9qS/6vjSsDPF7zOb5cOKC3tcKKOMuDCPw=="], + + "@styled-system/position": ["@styled-system/position@5.1.2", "", { "dependencies": { "@styled-system/core": "^5.1.2" } }, "sha512-60IZfMXEOOZe3l1mCu6sj/2NAyUmES2kR9Kzp7s2D3P4qKsZWxD1Se1+wJvevb+1TP+ZMkGPEYYXRyU8M1aF5A=="], + + "@styled-system/shadow": ["@styled-system/shadow@5.1.2", "", { "dependencies": { "@styled-system/core": "^5.1.2" } }, "sha512-wqniqYb7XuZM7K7C0d1Euxc4eGtqEe/lvM0WjuAFsQVImiq6KGT7s7is+0bNI8O4Dwg27jyu4Lfqo/oIQXNzAg=="], + + "@styled-system/should-forward-prop": ["@styled-system/should-forward-prop@5.1.5", "", { "dependencies": { "@emotion/is-prop-valid": "^0.8.1", "@emotion/memoize": "^0.7.1", "styled-system": "^5.1.5" } }, "sha512-+rPRomgCGYnUIaFabDoOgpSDc4UUJ1KsmlnzcEp0tu5lFrBQKgZclSo18Z1URhaZm7a6agGtS5Xif7tuC2s52Q=="], + + "@styled-system/space": ["@styled-system/space@5.1.2", "", { "dependencies": { "@styled-system/core": "^5.1.2" } }, "sha512-+zzYpR8uvfhcAbaPXhH8QgDAV//flxqxSjHiS9cDFQQUSznXMQmxJegbhcdEF7/eNnJgHeIXv1jmny78kipgBA=="], + + "@styled-system/typography": ["@styled-system/typography@5.1.2", "", { "dependencies": { "@styled-system/core": "^5.1.2" } }, "sha512-BxbVUnN8N7hJ4aaPOd7wEsudeT7CxarR+2hns8XCX1zp0DFfbWw4xYa/olA0oQaqx7F1hzDg+eRaGzAJbF+jOg=="], + + "@styled-system/variant": ["@styled-system/variant@5.1.5", "", { "dependencies": { "@styled-system/core": "^5.1.2", "@styled-system/css": "^5.1.5" } }, "sha512-Yn8hXAFoWIro8+Q5J8YJd/mP85Teiut3fsGVR9CAxwgNfIAiqlYxsk5iHU7VHJks/0KjL4ATSjmbtCDC/4l1qw=="], + + "@swc/counter": ["@swc/counter@0.1.3", "", {}, "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ=="], + + "@swc/helpers": ["@swc/helpers@0.5.5", "", { "dependencies": { "@swc/counter": "^0.1.3", "tslib": "^2.4.0" } }, "sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A=="], + + "@tailwindcss/container-queries": ["@tailwindcss/container-queries@0.1.1", "", { "peerDependencies": { "tailwindcss": ">=3.2.0" } }, "sha512-p18dswChx6WnTSaJCSGx6lTmrGzNNvm2FtXmiO6AuA1V4U5REyoqwmT6kgAsIMdjo07QdAfYXHJ4hnMtfHzWgA=="], + + "@tanem/react-nprogress": ["@tanem/react-nprogress@5.0.56", "", { "dependencies": { "@babel/runtime": "^7.28.4", "hoist-non-react-statics": "^3.3.2" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-OI5rXB6jxC/RLJqnIuaKNXu3qQ6Lf3+g1HqkqGz01E25iV3pZFYBihMdGsEeg/4pAm0O7xo/umcAA3jsdeibHA=="], + + "@tanstack/query-core": ["@tanstack/query-core@5.90.11", "", {}, "sha512-f9z/nXhCgWDF4lHqgIE30jxLe4sYv15QodfdPDKYAk7nAEjNcndy4dHz3ezhdUaR23BpWa4I2EH4/DZ0//Uf8A=="], + + "@tanstack/react-query": ["@tanstack/react-query@5.90.11", "", { "dependencies": { "@tanstack/query-core": "5.90.11" }, "peerDependencies": { "react": "^18 || ^19" } }, "sha512-3uyzz01D1fkTLXuxF3JfoJoHQMU2fxsfJwE+6N5hHy0dVNoZOvwKP8Z2k7k1KDeD54N20apcJnG75TBAStIrBA=="], + + "@tanstack/react-virtual": ["@tanstack/react-virtual@3.13.12", "", { "dependencies": { "@tanstack/virtual-core": "3.13.12" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-Gd13QdxPSukP8ZrkbgS2RwoZseTTbQPLnQEn7HY/rqtM+8Zt95f7xKC7N0EsKs7aoz0WzZ+fditZux+F8EzYxA=="], + + "@tanstack/virtual-core": ["@tanstack/virtual-core@3.13.12", "", {}, "sha512-1YBOJfRHV4sXUmWsFSf5rQor4Ss82G8dQWLRbnk3GA4jeP8hQt1hxXh0tmflpC0dz3VgEv/1+qwPyLeWkQuPFA=="], + + "@theguild/remark-mermaid": ["@theguild/remark-mermaid@0.1.3", "", { "dependencies": { "mermaid": "^11.0.0", "unist-util-visit": "^5.0.0" }, "peerDependencies": { "react": "^18.2.0" } }, "sha512-2FjVlaaKXK7Zj7UJAgOVTyaahn/3/EAfqYhyXg0BfDBVUl+lXcoIWRaxzqfnDr2rv8ax6GsC5mNh6hAaT86PDw=="], + + "@theguild/remark-npm2yarn": ["@theguild/remark-npm2yarn@0.3.3", "", { "dependencies": { "npm-to-yarn": "^3.0.0", "unist-util-visit": "^5.0.0" } }, "sha512-ma6DvR03gdbvwqfKx1omqhg9May/VYGdMHvTzB4VuxkyS7KzfZ/lzrj43hmcsggpMje0x7SADA/pcMph0ejRnA=="], + + "@theme-ui/color-modes": ["@theme-ui/color-modes@0.17.2", "", { "dependencies": { "@theme-ui/core": "^0.17.2", "@theme-ui/css": "^0.17.2", "deepmerge": "^4.2.2" }, "peerDependencies": { "@emotion/react": "^11.13.3", "react": ">=18" } }, "sha512-VSycDWzmEPZwZyJGbA83yKPzjzWzE88FQPRKT3QMHsvoD5dUXlF5tFOg0gEPu2cMhKbSWLCFi/Rtj7ANJDSF/w=="], + + "@theme-ui/components": ["@theme-ui/components@0.17.2", "", { "dependencies": { "@styled-system/color": "^5.1.2", "@styled-system/should-forward-prop": "^5.1.2", "@styled-system/space": "^5.1.2", "@theme-ui/core": "^0.17.2", "@theme-ui/css": "^0.17.2", "@types/styled-system": "^5.1.13" }, "peerDependencies": { "@emotion/react": "^11.13.3", "@theme-ui/theme-provider": "^0.17.2", "react": ">=18" } }, "sha512-CJeflLU2P6g+B7xn0NsAaWBiRlN3BknYX8lozTBlRwg53sHlHsbQzumtVerlWUlIa+muMx8kCxJYypYBAiaHhg=="], + + "@theme-ui/core": ["@theme-ui/core@0.17.2", "", { "dependencies": { "@theme-ui/css": "^0.17.2", "deepmerge": "^4.2.2" }, "peerDependencies": { "@emotion/react": "^11.13.3", "react": ">=18" } }, "sha512-PMBaFCh/9HTlUZJFZRxZJoy+w/SVOJCr7v3s7XF5qyGcCuAB5tLv+fjcKpALaZ6QBT1SkHWd07AyTHrs0V2uRw=="], + + "@theme-ui/css": ["@theme-ui/css@0.17.2", "", { "dependencies": { "csstype": "^3.0.10" }, "peerDependencies": { "@emotion/react": "^11.11.1" } }, "sha512-sYeurC8WbZBLumt8qO7rM6ZDyvneMh6JojeZov3uwu4Ty2iis8rhqGGK8LD1SfwsWcV8pu3AivQ9xyvWZeaQrw=="], + + "@theme-ui/global": ["@theme-ui/global@0.17.2", "", { "dependencies": { "@theme-ui/core": "^0.17.2", "@theme-ui/css": "^0.17.2" }, "peerDependencies": { "@emotion/react": "^11.13.3", "react": ">=18" } }, "sha512-yH4Gv/ESDKlxDLz0u5lR3EWAZLfnb4T0Zn1d1LnO7mHv/9dVbF+MA/ogCWLi8Xvs5/u1+RMSJkPfHWfw+Xp5AQ=="], + + "@theme-ui/match-media": ["@theme-ui/match-media@0.17.2", "", { "peerDependencies": { "@theme-ui/core": "^0.17.2", "@theme-ui/css": "^0.17.2", "react": ">=18" } }, "sha512-kfCcSh35OQ/oPlKYnmipW3ZdgxgbNdejwjtYnKaQtGBQrE/Z/IiSg5MJuztI7w35dfOPtbbUZMTe8JMa34C/iA=="], + + "@theme-ui/theme-provider": ["@theme-ui/theme-provider@0.17.2", "", { "dependencies": { "@theme-ui/color-modes": "^0.17.2", "@theme-ui/core": "^0.17.2", "@theme-ui/css": "^0.17.2" }, "peerDependencies": { "@emotion/react": "^11.13.3", "react": ">=18" } }, "sha512-Y454eONQU42xHaA6oyWmc3+ViRnKjpi0SAh9zFcz+WmJ2SJVZQ4A8XWXnJHjpq38DFju/AyeEfI4puZRHTkgjQ=="], + + "@ts-morph/common": ["@ts-morph/common@0.28.1", "", { "dependencies": { "minimatch": "^10.0.1", "path-browserify": "^1.0.1", "tinyglobby": "^0.2.14" } }, "sha512-W74iWf7ILp1ZKNYXY5qbddNaml7e9Sedv5lvU1V8lftlitkc9Pq1A+jlH23ltDgWYeZFFEqGCD1Ies9hqu3O+g=="], + + "@types/cookie": ["@types/cookie@0.6.0", "", {}, "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA=="], + + "@types/css-font-loading-module": ["@types/css-font-loading-module@0.0.7", "", {}, "sha512-nl09VhutdjINdWyXxHWN/w9zlNCfr60JUqJbd24YXUuCwgeL0TpFSdElCwb6cxfB6ybE19Gjj4g0jsgkXxKv1Q=="], + + "@types/d3": ["@types/d3@7.4.3", "", { "dependencies": { "@types/d3-array": "*", "@types/d3-axis": "*", "@types/d3-brush": "*", "@types/d3-chord": "*", "@types/d3-color": "*", "@types/d3-contour": "*", "@types/d3-delaunay": "*", "@types/d3-dispatch": "*", "@types/d3-drag": "*", "@types/d3-dsv": "*", "@types/d3-ease": "*", "@types/d3-fetch": "*", "@types/d3-force": "*", "@types/d3-format": "*", "@types/d3-geo": "*", "@types/d3-hierarchy": "*", "@types/d3-interpolate": "*", "@types/d3-path": "*", "@types/d3-polygon": "*", "@types/d3-quadtree": "*", "@types/d3-random": "*", "@types/d3-scale": "*", "@types/d3-scale-chromatic": "*", "@types/d3-selection": "*", "@types/d3-shape": "*", "@types/d3-time": "*", "@types/d3-time-format": "*", "@types/d3-timer": "*", "@types/d3-transition": "*", "@types/d3-zoom": "*" } }, "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww=="], + + "@types/d3-array": ["@types/d3-array@3.2.2", "", {}, "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw=="], + + "@types/d3-axis": ["@types/d3-axis@3.0.6", "", { "dependencies": { "@types/d3-selection": "*" } }, "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw=="], + + "@types/d3-brush": ["@types/d3-brush@3.0.6", "", { "dependencies": { "@types/d3-selection": "*" } }, "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A=="], + + "@types/d3-chord": ["@types/d3-chord@3.0.6", "", {}, "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg=="], + + "@types/d3-color": ["@types/d3-color@3.1.3", "", {}, "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A=="], + + "@types/d3-contour": ["@types/d3-contour@3.0.6", "", { "dependencies": { "@types/d3-array": "*", "@types/geojson": "*" } }, "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg=="], + + "@types/d3-delaunay": ["@types/d3-delaunay@6.0.4", "", {}, "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw=="], + + "@types/d3-dispatch": ["@types/d3-dispatch@3.0.7", "", {}, "sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA=="], + + "@types/d3-drag": ["@types/d3-drag@3.0.7", "", { "dependencies": { "@types/d3-selection": "*" } }, "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ=="], + + "@types/d3-dsv": ["@types/d3-dsv@3.0.7", "", {}, "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g=="], + + "@types/d3-ease": ["@types/d3-ease@3.0.2", "", {}, "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA=="], + + "@types/d3-fetch": ["@types/d3-fetch@3.0.7", "", { "dependencies": { "@types/d3-dsv": "*" } }, "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA=="], + + "@types/d3-force": ["@types/d3-force@3.0.10", "", {}, "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw=="], + + "@types/d3-format": ["@types/d3-format@3.0.4", "", {}, "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g=="], + + "@types/d3-geo": ["@types/d3-geo@3.1.0", "", { "dependencies": { "@types/geojson": "*" } }, "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ=="], + + "@types/d3-hierarchy": ["@types/d3-hierarchy@3.1.7", "", {}, "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg=="], + + "@types/d3-interpolate": ["@types/d3-interpolate@3.0.4", "", { "dependencies": { "@types/d3-color": "*" } }, "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA=="], + + "@types/d3-path": ["@types/d3-path@3.1.1", "", {}, "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg=="], + + "@types/d3-polygon": ["@types/d3-polygon@3.0.2", "", {}, "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA=="], + + "@types/d3-quadtree": ["@types/d3-quadtree@3.0.6", "", {}, "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg=="], + + "@types/d3-random": ["@types/d3-random@3.0.3", "", {}, "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ=="], + + "@types/d3-scale": ["@types/d3-scale@4.0.9", "", { "dependencies": { "@types/d3-time": "*" } }, "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw=="], + + "@types/d3-scale-chromatic": ["@types/d3-scale-chromatic@3.1.0", "", {}, "sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ=="], + + "@types/d3-selection": ["@types/d3-selection@3.0.11", "", {}, "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w=="], + + "@types/d3-shape": ["@types/d3-shape@3.1.7", "", { "dependencies": { "@types/d3-path": "*" } }, "sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg=="], + + "@types/d3-time": ["@types/d3-time@3.0.4", "", {}, "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g=="], + + "@types/d3-time-format": ["@types/d3-time-format@4.0.3", "", {}, "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg=="], + + "@types/d3-timer": ["@types/d3-timer@3.0.2", "", {}, "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw=="], + + "@types/d3-transition": ["@types/d3-transition@3.0.9", "", { "dependencies": { "@types/d3-selection": "*" } }, "sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg=="], + + "@types/d3-zoom": ["@types/d3-zoom@3.0.8", "", { "dependencies": { "@types/d3-interpolate": "*", "@types/d3-selection": "*" } }, "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw=="], + + "@types/debug": ["@types/debug@4.1.12", "", { "dependencies": { "@types/ms": "*" } }, "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ=="], + + "@types/estree": ["@types/estree@1.0.8", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="], + + "@types/estree-jsx": ["@types/estree-jsx@1.0.5", "", { "dependencies": { "@types/estree": "*" } }, "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg=="], + + "@types/geojson": ["@types/geojson@7946.0.16", "", {}, "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg=="], + + "@types/har-format": ["@types/har-format@1.2.16", "", {}, "sha512-fluxdy7ryD3MV6h8pTfTYpy/xQzCFC7m89nOH9y94cNqJ1mDIDPut7MnRHI3F6qRmh/cT2fUjG1MLdCNb4hE9A=="], + + "@types/hast": ["@types/hast@3.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ=="], + + "@types/json-schema": ["@types/json-schema@7.0.15", "", {}, "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="], + + "@types/katex": ["@types/katex@0.16.7", "", {}, "sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ=="], + + "@types/lodash": ["@types/lodash@4.17.21", "", {}, "sha512-FOvQ0YPD5NOfPgMzJihoT+Za5pdkDJWcbpuj1DjaKZIr/gxodQjY/uWEFlTNqW2ugXHUiL8lRQgw63dzKHZdeQ=="], + + "@types/mdast": ["@types/mdast@4.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA=="], + + "@types/mdx": ["@types/mdx@2.0.13", "", {}, "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw=="], + + "@types/mixpanel-browser": ["@types/mixpanel-browser@2.66.0", "", { "dependencies": { "mixpanel-browser": "*" } }, "sha512-07zYZZ9ZVHc7R4ktM+3a2clZvKkj+EJcYZ/FevTs011Fr9tdp59lVgAskMf6ZQUp3lOHLqi7K3f+9QtmEsqh1w=="], + + "@types/ms": ["@types/ms@2.1.0", "", {}, "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA=="], + + "@types/nlcst": ["@types/nlcst@2.0.3", "", { "dependencies": { "@types/unist": "*" } }, "sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA=="], + + "@types/node": ["@types/node@22.19.1", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-LCCV0HdSZZZb34qifBsyWlUmok6W7ouER+oQIGBScS8EsZsQbrtFTUrDX4hOl+CS6p7cnNC4td+qrSVGSCTUfQ=="], + + "@types/parse-json": ["@types/parse-json@4.0.2", "", {}, "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw=="], + + "@types/prismjs": ["@types/prismjs@1.26.5", "", {}, "sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ=="], + + "@types/prop-types": ["@types/prop-types@15.7.15", "", {}, "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw=="], + + "@types/react": ["@types/react@18.3.27", "", { "dependencies": { "@types/prop-types": "*", "csstype": "^3.2.2" } }, "sha512-cisd7gxkzjBKU2GgdYrTdtQx1SORymWyaAFhaxQPK9bYO9ot3Y5OikQRvY0VYQtvwjeQnizCINJAenh/V7MK2w=="], + + "@types/react-dom": ["@types/react-dom@18.3.7", "", { "peerDependencies": { "@types/react": "^18.0.0" } }, "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ=="], + + "@types/styled-system": ["@types/styled-system@5.1.25", "", { "dependencies": { "csstype": "^3.2.2" } }, "sha512-B1oyjE4oeAbVnkigcB0WqU2gPFuTwLV/KkLa/uJZWFB9JWVKq1Fs0QwodZXZ9Sq6cb9ngY4kDqRY/dictIchjA=="], + + "@types/trusted-types": ["@types/trusted-types@2.0.7", "", {}, "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw=="], + + "@types/unist": ["@types/unist@3.0.3", "", {}, "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q=="], + + "@types/vfile": ["@types/vfile@4.0.0", "", { "dependencies": { "vfile": "*" } }, "sha512-eleP0/Cz8uVWxARDLi3Axq2+fDdN4ibAXoC6Pv8p6s7znXaUL7XvhgeIhjCiNMnvlLNP+tmCLd+RuCryGgmtEg=="], + + "@typescript/vfs": ["@typescript/vfs@1.6.2", "", { "dependencies": { "debug": "^4.1.1" }, "peerDependencies": { "typescript": "*" } }, "sha512-hoBwJwcbKHmvd2QVebiytN1aELvpk9B74B4L1mFm/XT1Q/VOYAWl2vQ9AWRFtQq8zmz6enTpfTV8WRc4ATjW/g=="], + + "@ungap/structured-clone": ["@ungap/structured-clone@1.3.0", "", {}, "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g=="], + + "@uniswap/lib": ["@uniswap/lib@4.0.1-alpha", "", {}, "sha512-f6UIliwBbRsgVLxIaBANF6w09tYqc6Y/qXdsrbEmXHyFA7ILiKrIwRFXe1yOg8M3cksgVsO9N7yuL2DdCGQKBA=="], + + "@uniswap/sdk-core": ["@uniswap/sdk-core@7.9.0", "", { "dependencies": { "@ethersproject/address": "^5.0.2", "@ethersproject/bytes": "^5.7.0", "@ethersproject/keccak256": "5.7.0", "@ethersproject/strings": "5.7.0", "big.js": "^5.2.2", "decimal.js-light": "^2.5.0", "jsbi": "^3.1.4", "tiny-invariant": "^1.1.0", "toformat": "^2.0.0" } }, "sha512-HHUFNK3LMi4KMQCAiHkdUyL62g/nrZLvNT44CY8RN4p8kWO6XYWzqdQt6OcjCsIbhMZ/Ifhe6Py5oOoccg/jUQ=="], + + "@uniswap/swap-router-contracts": ["@uniswap/swap-router-contracts@1.3.1", "", { "dependencies": { "@openzeppelin/contracts": "3.4.2-solc-0.7", "@uniswap/v2-core": "^1.0.1", "@uniswap/v3-core": "^1.0.0", "@uniswap/v3-periphery": "^1.4.4", "dotenv": "^14.2.0", "hardhat-watcher": "^2.1.1" } }, "sha512-mh/YNbwKb7Mut96VuEtL+Z5bRe0xVIbjjiryn+iMMrK2sFKhR4duk/86mEz0UO5gSx4pQIw9G5276P5heY/7Rg=="], + + "@uniswap/v2-core": ["@uniswap/v2-core@1.0.1", "", {}, "sha512-MtybtkUPSyysqLY2U210NBDeCHX+ltHt3oADGdjqoThZaFRDKwM6k1Nb3F0A3hk5hwuQvytFWhrWHOEq6nVJ8Q=="], + + "@uniswap/v3-core": ["@uniswap/v3-core@1.0.1", "", {}, "sha512-7pVk4hEm00j9tc71Y9+ssYpO6ytkeI0y7WE9P6UcmNzhxPePwyAxImuhVsTqWK9YFvzgtvzJHi64pBl4jUzKMQ=="], + + "@uniswap/v3-periphery": ["@uniswap/v3-periphery@1.4.4", "", { "dependencies": { "@openzeppelin/contracts": "3.4.2-solc-0.7", "@uniswap/lib": "^4.0.1-alpha", "@uniswap/v2-core": "^1.0.1", "@uniswap/v3-core": "^1.0.0", "base64-sol": "1.0.1" } }, "sha512-S4+m+wh8HbWSO3DKk4LwUCPZJTpCugIsHrWR86m/OrUyvSqGDTXKFfc2sMuGXCZrD1ZqO3rhQsKgdWg3Hbb2Kw=="], + + "@uniswap/v3-sdk": ["@uniswap/v3-sdk@3.26.0", "", { "dependencies": { "@ethersproject/abi": "^5.5.0", "@ethersproject/solidity": "^5.0.9", "@uniswap/sdk-core": "^7.8.0", "@uniswap/swap-router-contracts": "^1.3.0", "@uniswap/v3-periphery": "^1.1.1", "@uniswap/v3-staker": "1.0.0", "tiny-invariant": "^1.1.0", "tiny-warning": "^1.0.3" } }, "sha512-bcoWNE7ntNNTHMOnDPscIqtIN67fUyrbBKr6eswI2gD2wm5b0YYFBDeh+Qc5Q3117o9i8S7QdftqrU8YSMQUfQ=="], + + "@uniswap/v3-staker": ["@uniswap/v3-staker@1.0.0", "", { "dependencies": { "@openzeppelin/contracts": "3.4.1-solc-0.7-2", "@uniswap/v3-core": "1.0.0", "@uniswap/v3-periphery": "^1.0.1" } }, "sha512-JV0Qc46Px5alvg6YWd+UIaGH9lDuYG/Js7ngxPit1SPaIP30AlVer1UYB7BRYeUVVxE+byUyIeN5jeQ7LLDjIw=="], + + "@ver0/deep-equal": ["@ver0/deep-equal@1.0.1", "", {}, "sha512-XSvL5wKXBZIv7fflMqhQx936sRpEtzxeV25xAEt0rLLXzbF6RCQaRA1jrVIn8JCubMyn/y0TaidphUtilLzl1A=="], + + "@web3icons/common": ["@web3icons/common@0.11.31", "", { "peerDependencies": { "typescript": "^5.0.0" } }, "sha512-POTnYcB+yuKVY65C1+hSu5LViRgS1hs8njx6gFLKdjMquyNfWWvwQtKMDjz0Y509yiZDeT93QFV8U/clr1Jwcw=="], + + "@web3icons/react": ["@web3icons/react@4.1.1", "", { "dependencies": { "@web3icons/common": "0.11.31" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0" } }, "sha512-6vqi3w2J22WBJJG0EHS/6SauM72c9qyLwjy767FKdT6l60rPD43sBAxvE1fncOleiSlxNA/vY3L1c5kDTjmP+w=="], + + "@xmldom/xmldom": ["@xmldom/xmldom@0.9.8", "", {}, "sha512-p96FSY54r+WJ50FIOsCOjyj/wavs8921hG5+kVMmZgKcvIKxMXHTrjNJvRgWa/zuX3B6t2lijLNFaOyuxUH+2A=="], + + "@xstate/fsm": ["@xstate/fsm@1.6.5", "", {}, "sha512-b5o1I6aLNeYlU/3CPlj/Z91ybk1gUsKT+5NAJI+2W4UjvS5KLG28K9v5UvNoFVjHV8PajVZ00RH3vnjyQO7ZAw=="], + + "@xstate/react": ["@xstate/react@3.2.2", "", { "dependencies": { "use-isomorphic-layout-effect": "^1.1.2", "use-sync-external-store": "^1.0.0" }, "peerDependencies": { "@xstate/fsm": "^2.0.0", "react": "^16.8.0 || ^17.0.0 || ^18.0.0", "xstate": "^4.37.2" }, "optionalPeers": ["@xstate/fsm", "xstate"] }, "sha512-feghXWLedyq8JeL13yda3XnHPZKwYDN5HPBLykpLeuNpr9178tQd2/3d0NrH6gSd0sG5mLuLeuD+ck830fgzLQ=="], + + "abitype": ["abitype@1.1.0", "", { "peerDependencies": { "typescript": ">=5.0.4", "zod": "^3.22.0 || ^4.0.0" }, "optionalPeers": ["typescript", "zod"] }, "sha512-6Vh4HcRxNMLA0puzPjM5GBgT4aAcFGKZzSgAXvuZ27shJP6NEpielTuqbBmZILR5/xd0PizkBGy5hReKz9jl5A=="], + + "acorn": ["acorn@8.15.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg=="], + + "acorn-jsx": ["acorn-jsx@5.3.2", "", { "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="], + + "adm-zip": ["adm-zip@0.4.16", "", {}, "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg=="], + + "aes-js": ["aes-js@3.0.0", "", {}, "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw=="], + + "agent-base": ["agent-base@7.1.4", "", {}, "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ=="], + + "aggregate-error": ["aggregate-error@3.1.0", "", { "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" } }, "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA=="], + + "ajv": ["ajv@8.17.1", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g=="], + + "ajv-draft-04": ["ajv-draft-04@1.0.0", "", { "peerDependencies": { "ajv": "^8.5.0" }, "optionalPeers": ["ajv"] }, "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw=="], + + "algoliasearch": ["algoliasearch@5.45.0", "", { "dependencies": { "@algolia/abtesting": "1.11.0", "@algolia/client-abtesting": "5.45.0", "@algolia/client-analytics": "5.45.0", "@algolia/client-common": "5.45.0", "@algolia/client-insights": "5.45.0", "@algolia/client-personalization": "5.45.0", "@algolia/client-query-suggestions": "5.45.0", "@algolia/client-search": "5.45.0", "@algolia/ingestion": "1.45.0", "@algolia/monitoring": "1.45.0", "@algolia/recommend": "5.45.0", "@algolia/requester-browser-xhr": "5.45.0", "@algolia/requester-fetch": "5.45.0", "@algolia/requester-node-http": "5.45.0" } }, "sha512-wrj4FGr14heLOYkBKV3Fbq5ZBGuIFeDJkTilYq/G+hH1CSlQBtYvG2X1j67flwv0fUeQJwnWxxRIunSemAZirA=="], + + "ansi-align": ["ansi-align@3.0.1", "", { "dependencies": { "string-width": "^4.1.0" } }, "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w=="], + + "ansi-colors": ["ansi-colors@4.1.3", "", {}, "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw=="], + + "ansi-escapes": ["ansi-escapes@4.3.2", "", { "dependencies": { "type-fest": "^0.21.3" } }, "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ=="], + + "ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], + + "ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], + + "any-promise": ["any-promise@1.3.0", "", {}, "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A=="], + + "anymatch": ["anymatch@3.1.3", "", { "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" } }, "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw=="], + + "arg": ["arg@5.0.2", "", {}, "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg=="], + + "argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], + + "aria-hidden": ["aria-hidden@1.2.6", "", { "dependencies": { "tslib": "^2.0.0" } }, "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA=="], + + "array-iterate": ["array-iterate@2.0.1", "", {}, "sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg=="], + + "astring": ["astring@1.9.0", "", { "bin": { "astring": "bin/astring" } }, "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg=="], + + "asynckit": ["asynckit@0.4.0", "", {}, "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="], + + "attr-accept": ["attr-accept@2.2.5", "", {}, "sha512-0bDNnY/u6pPwHDMoF0FieU354oBi0a8rD9FcsLwzcGWbc8KS8KPIi7y+s13OlVY+gMWc/9xEMUgNE6Qm8ZllYQ=="], + + "autoprefixer": ["autoprefixer@10.4.22", "", { "dependencies": { "browserslist": "^4.27.0", "caniuse-lite": "^1.0.30001754", "fraction.js": "^5.3.4", "normalize-range": "^0.1.2", "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.1.0" }, "bin": { "autoprefixer": "bin/autoprefixer" } }, "sha512-ARe0v/t9gO28Bznv6GgqARmVqcWOV3mfgUPn9becPHMiD3o9BwlRgaeccZnwTpZ7Zwqrm+c1sUSsMxIzQzc8Xg=="], + + "babel-plugin-macros": ["babel-plugin-macros@3.1.0", "", { "dependencies": { "@babel/runtime": "^7.12.5", "cosmiconfig": "^7.0.0", "resolve": "^1.19.0" } }, "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg=="], + + "bail": ["bail@2.0.2", "", {}, "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw=="], + + "balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], + + "base64-arraybuffer": ["base64-arraybuffer@1.0.2", "", {}, "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ=="], + + "base64-js": ["base64-js@1.5.1", "", {}, "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="], + + "base64-sol": ["base64-sol@1.0.1", "", {}, "sha512-ld3cCNMeXt4uJXmLZBHFGMvVpK9KsLVEhPpFRXnvSVAqABKbuNZg/+dsq3NuM+wxFLb/UrVkz7m1ciWmkMfTbg=="], + + "baseline-browser-mapping": ["baseline-browser-mapping@2.8.31", "", { "bin": { "baseline-browser-mapping": "dist/cli.js" } }, "sha512-a28v2eWrrRWPpJSzxc+mKwm0ZtVx/G8SepdQZDArnXYU/XS+IF6mp8aB/4E+hH1tyGCoDo3KlUCdlSxGDsRkAw=="], + + "bech32": ["bech32@1.1.4", "", {}, "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ=="], + + "better-react-mathjax": ["better-react-mathjax@2.3.0", "", { "dependencies": { "mathjax-full": "^3.2.2" }, "peerDependencies": { "react": ">=16.8" } }, "sha512-K0ceQC+jQmB+NLDogO5HCpqmYf18AU2FxDbLdduYgkHYWZApFggkHE4dIaXCV1NqeoscESYXXo1GSkY6fA295w=="], + + "big.js": ["big.js@5.2.2", "", {}, "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ=="], + + "binary-extensions": ["binary-extensions@2.3.0", "", {}, "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw=="], + + "bl": ["bl@4.1.0", "", { "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", "readable-stream": "^3.4.0" } }, "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w=="], + + "bn.js": ["bn.js@5.2.2", "", {}, "sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw=="], + + "boxen": ["boxen@5.1.1", "", { "dependencies": { "ansi-align": "^3.0.0", "camelcase": "^6.2.0", "chalk": "^4.1.0", "cli-boxes": "^2.2.1", "string-width": "^4.2.2", "type-fest": "^0.20.2", "widest-line": "^3.1.0", "wrap-ansi": "^7.0.0" } }, "sha512-JtIQYts08AFAYGF4eSh3pUt3NQkYV/e75pRtQmAVTLNWR/1L7Bsswxlgzgk8nmLEM+gFszsIlA9BgD3XnSqp3g=="], + + "brace-expansion": ["brace-expansion@2.0.2", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ=="], + + "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="], + + "brorand": ["brorand@1.1.0", "", {}, "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w=="], + + "browser-stdout": ["browser-stdout@1.3.1", "", {}, "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw=="], + + "browserslist": ["browserslist@4.28.0", "", { "dependencies": { "baseline-browser-mapping": "^2.8.25", "caniuse-lite": "^1.0.30001754", "electron-to-chromium": "^1.5.249", "node-releases": "^2.0.27", "update-browserslist-db": "^1.1.4" }, "bin": { "browserslist": "cli.js" } }, "sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ=="], + + "buffer": ["buffer@5.7.1", "", { "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" } }, "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ=="], + + "buffer-from": ["buffer-from@1.1.2", "", {}, "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="], + + "bundle-require": ["bundle-require@5.1.0", "", { "dependencies": { "load-tsconfig": "^0.2.3" }, "peerDependencies": { "esbuild": ">=0.18" } }, "sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA=="], + + "busboy": ["busboy@1.6.0", "", { "dependencies": { "streamsearch": "^1.1.0" } }, "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA=="], + + "bytes": ["bytes@3.1.2", "", {}, "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="], + + "cac": ["cac@6.7.14", "", {}, "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ=="], + + "call-bind-apply-helpers": ["call-bind-apply-helpers@1.0.2", "", { "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" } }, "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ=="], + + "call-bound": ["call-bound@1.0.4", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "get-intrinsic": "^1.3.0" } }, "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg=="], + + "callsites": ["callsites@3.1.0", "", {}, "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="], + + "camelcase": ["camelcase@6.3.0", "", {}, "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA=="], + + "camelcase-css": ["camelcase-css@2.0.1", "", {}, "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA=="], + + "caniuse-lite": ["caniuse-lite@1.0.30001757", "", {}, "sha512-r0nnL/I28Zi/yjk1el6ilj27tKcdjLsNqAOZr0yVjWPrSQyHgKI2INaEWw21bAQSv2LXRt1XuCS/GomNpWOxsQ=="], + + "ccount": ["ccount@2.0.1", "", {}, "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg=="], + + "chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], + + "character-entities": ["character-entities@2.0.2", "", {}, "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ=="], + + "character-entities-html4": ["character-entities-html4@2.1.0", "", {}, "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA=="], + + "character-entities-legacy": ["character-entities-legacy@3.0.0", "", {}, "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ=="], + + "character-reference-invalid": ["character-reference-invalid@2.0.1", "", {}, "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw=="], + + "charenc": ["charenc@0.0.2", "", {}, "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA=="], + + "chevrotain": ["chevrotain@11.0.3", "", { "dependencies": { "@chevrotain/cst-dts-gen": "11.0.3", "@chevrotain/gast": "11.0.3", "@chevrotain/regexp-to-ast": "11.0.3", "@chevrotain/types": "11.0.3", "@chevrotain/utils": "11.0.3", "lodash-es": "4.17.21" } }, "sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw=="], + + "chevrotain-allstar": ["chevrotain-allstar@0.3.1", "", { "dependencies": { "lodash-es": "^4.17.21" }, "peerDependencies": { "chevrotain": "^11.0.0" } }, "sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw=="], + + "chokidar": ["chokidar@3.6.0", "", { "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" }, "optionalDependencies": { "fsevents": "~2.3.2" } }, "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw=="], + + "ci-info": ["ci-info@2.0.0", "", {}, "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ=="], + + "clean-stack": ["clean-stack@2.2.0", "", {}, "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A=="], + + "cli-boxes": ["cli-boxes@2.2.1", "", {}, "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw=="], + + "cli-cursor": ["cli-cursor@3.1.0", "", { "dependencies": { "restore-cursor": "^3.1.0" } }, "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw=="], + + "cli-spinners": ["cli-spinners@2.9.2", "", {}, "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg=="], + + "client-only": ["client-only@0.0.1", "", {}, "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA=="], + + "clipboardy": ["clipboardy@4.0.0", "", { "dependencies": { "execa": "^8.0.1", "is-wsl": "^3.1.0", "is64bit": "^2.0.0" } }, "sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w=="], + + "cliui": ["cliui@7.0.4", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", "wrap-ansi": "^7.0.0" } }, "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ=="], + + "clone": ["clone@1.0.4", "", {}, "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg=="], + + "clsx": ["clsx@2.1.1", "", {}, "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="], + + "code-block-writer": ["code-block-writer@13.0.3", "", {}, "sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg=="], + + "collapse-white-space": ["collapse-white-space@2.1.0", "", {}, "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw=="], + + "color": ["color@5.0.3", "", { "dependencies": { "color-convert": "^3.1.3", "color-string": "^2.1.3" } }, "sha512-ezmVcLR3xAVp8kYOm4GS45ZLLgIE6SPAFoduLr6hTDajwb3KZ2F46gulK3XpcwRFb5KKGCSezCBAY4Dw4HsyXA=="], + + "color-convert": ["color-convert@3.1.3", "", { "dependencies": { "color-name": "^2.0.0" } }, "sha512-fasDH2ont2GqF5HpyO4w0+BcewlhHEZOFn9c1ckZdHpJ56Qb7MHhH/IcJZbBGgvdtwdwNbLvxiBEdg336iA9Sg=="], + + "color-name": ["color-name@2.1.0", "", {}, "sha512-1bPaDNFm0axzE4MEAzKPuqKWeRaT43U/hyxKPBdqTfmPF+d6n7FSoTFxLVULUJOmiLp01KjhIPPH+HrXZJN4Rg=="], + + "color-string": ["color-string@2.1.4", "", { "dependencies": { "color-name": "^2.0.0" } }, "sha512-Bb6Cq8oq0IjDOe8wJmi4JeNn763Xs9cfrBcaylK1tPypWzyoy2G3l90v9k64kjphl/ZJjPIShFztenRomi8WTg=="], + + "combined-stream": ["combined-stream@1.0.8", "", { "dependencies": { "delayed-stream": "~1.0.0" } }, "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg=="], + + "comma-separated-tokens": ["comma-separated-tokens@2.0.3", "", {}, "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg=="], + + "command-exists": ["command-exists@1.2.9", "", {}, "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w=="], + + "commander": ["commander@4.1.1", "", {}, "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA=="], + + "compare-versions": ["compare-versions@6.1.1", "", {}, "sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg=="], + + "confbox": ["confbox@0.1.8", "", {}, "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w=="], + + "consola": ["consola@3.4.2", "", {}, "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA=="], + + "convert-source-map": ["convert-source-map@1.9.0", "", {}, "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A=="], + + "cookie": ["cookie@0.7.2", "", {}, "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w=="], + + "cose-base": ["cose-base@1.0.3", "", { "dependencies": { "layout-base": "^1.0.0" } }, "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg=="], + + "cosmiconfig": ["cosmiconfig@7.1.0", "", { "dependencies": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", "parse-json": "^5.0.0", "path-type": "^4.0.0", "yaml": "^1.10.0" } }, "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA=="], + + "cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="], + + "crypt": ["crypt@0.0.2", "", {}, "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow=="], + + "cssesc": ["cssesc@3.0.0", "", { "bin": { "cssesc": "bin/cssesc" } }, "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="], + + "cssstyle": ["cssstyle@4.6.0", "", { "dependencies": { "@asamuzakjp/css-color": "^3.2.0", "rrweb-cssom": "^0.8.0" } }, "sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg=="], + + "csstype": ["csstype@3.2.3", "", {}, "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ=="], + + "cytoscape": ["cytoscape@3.33.1", "", {}, "sha512-iJc4TwyANnOGR1OmWhsS9ayRS3s+XQ185FmuHObThD+5AeJCakAAbWv8KimMTt08xCCLNgneQwFp+JRJOr9qGQ=="], + + "cytoscape-cose-bilkent": ["cytoscape-cose-bilkent@4.1.0", "", { "dependencies": { "cose-base": "^1.0.0" }, "peerDependencies": { "cytoscape": "^3.2.0" } }, "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ=="], + + "cytoscape-fcose": ["cytoscape-fcose@2.2.0", "", { "dependencies": { "cose-base": "^2.2.0" }, "peerDependencies": { "cytoscape": "^3.2.0" } }, "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ=="], + + "d3": ["d3@7.9.0", "", { "dependencies": { "d3-array": "3", "d3-axis": "3", "d3-brush": "3", "d3-chord": "3", "d3-color": "3", "d3-contour": "4", "d3-delaunay": "6", "d3-dispatch": "3", "d3-drag": "3", "d3-dsv": "3", "d3-ease": "3", "d3-fetch": "3", "d3-force": "3", "d3-format": "3", "d3-geo": "3", "d3-hierarchy": "3", "d3-interpolate": "3", "d3-path": "3", "d3-polygon": "3", "d3-quadtree": "3", "d3-random": "3", "d3-scale": "4", "d3-scale-chromatic": "3", "d3-selection": "3", "d3-shape": "3", "d3-time": "3", "d3-time-format": "4", "d3-timer": "3", "d3-transition": "3", "d3-zoom": "3" } }, "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA=="], + + "d3-array": ["d3-array@3.2.4", "", { "dependencies": { "internmap": "1 - 2" } }, "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg=="], + + "d3-axis": ["d3-axis@3.0.0", "", {}, "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw=="], + + "d3-brush": ["d3-brush@3.0.0", "", { "dependencies": { "d3-dispatch": "1 - 3", "d3-drag": "2 - 3", "d3-interpolate": "1 - 3", "d3-selection": "3", "d3-transition": "3" } }, "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ=="], + + "d3-chord": ["d3-chord@3.0.1", "", { "dependencies": { "d3-path": "1 - 3" } }, "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g=="], + + "d3-color": ["d3-color@3.1.0", "", {}, "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA=="], + + "d3-contour": ["d3-contour@4.0.2", "", { "dependencies": { "d3-array": "^3.2.0" } }, "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA=="], + + "d3-delaunay": ["d3-delaunay@6.0.4", "", { "dependencies": { "delaunator": "5" } }, "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A=="], + + "d3-dispatch": ["d3-dispatch@3.0.1", "", {}, "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg=="], + + "d3-drag": ["d3-drag@3.0.0", "", { "dependencies": { "d3-dispatch": "1 - 3", "d3-selection": "3" } }, "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg=="], + + "d3-dsv": ["d3-dsv@3.0.1", "", { "dependencies": { "commander": "7", "iconv-lite": "0.6", "rw": "1" }, "bin": { "csv2json": "bin/dsv2json.js", "csv2tsv": "bin/dsv2dsv.js", "dsv2dsv": "bin/dsv2dsv.js", "dsv2json": "bin/dsv2json.js", "json2csv": "bin/json2dsv.js", "json2dsv": "bin/json2dsv.js", "json2tsv": "bin/json2dsv.js", "tsv2csv": "bin/dsv2dsv.js", "tsv2json": "bin/dsv2json.js" } }, "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q=="], + + "d3-ease": ["d3-ease@3.0.1", "", {}, "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w=="], + + "d3-fetch": ["d3-fetch@3.0.1", "", { "dependencies": { "d3-dsv": "1 - 3" } }, "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw=="], + + "d3-force": ["d3-force@3.0.0", "", { "dependencies": { "d3-dispatch": "1 - 3", "d3-quadtree": "1 - 3", "d3-timer": "1 - 3" } }, "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg=="], + + "d3-format": ["d3-format@3.1.0", "", {}, "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA=="], + + "d3-geo": ["d3-geo@3.1.1", "", { "dependencies": { "d3-array": "2.5.0 - 3" } }, "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q=="], + + "d3-hierarchy": ["d3-hierarchy@3.1.2", "", {}, "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA=="], + + "d3-interpolate": ["d3-interpolate@3.0.1", "", { "dependencies": { "d3-color": "1 - 3" } }, "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g=="], + + "d3-path": ["d3-path@3.1.0", "", {}, "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ=="], + + "d3-polygon": ["d3-polygon@3.0.1", "", {}, "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg=="], + + "d3-quadtree": ["d3-quadtree@3.0.1", "", {}, "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw=="], + + "d3-random": ["d3-random@3.0.1", "", {}, "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ=="], + + "d3-sankey": ["d3-sankey@0.12.3", "", { "dependencies": { "d3-array": "1 - 2", "d3-shape": "^1.2.0" } }, "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ=="], + + "d3-scale": ["d3-scale@4.0.2", "", { "dependencies": { "d3-array": "2.10.0 - 3", "d3-format": "1 - 3", "d3-interpolate": "1.2.0 - 3", "d3-time": "2.1.1 - 3", "d3-time-format": "2 - 4" } }, "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ=="], + + "d3-scale-chromatic": ["d3-scale-chromatic@3.1.0", "", { "dependencies": { "d3-color": "1 - 3", "d3-interpolate": "1 - 3" } }, "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ=="], + + "d3-selection": ["d3-selection@3.0.0", "", {}, "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ=="], + + "d3-shape": ["d3-shape@3.2.0", "", { "dependencies": { "d3-path": "^3.1.0" } }, "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA=="], + + "d3-time": ["d3-time@3.1.0", "", { "dependencies": { "d3-array": "2 - 3" } }, "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q=="], + + "d3-time-format": ["d3-time-format@4.1.0", "", { "dependencies": { "d3-time": "1 - 3" } }, "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg=="], + + "d3-timer": ["d3-timer@3.0.1", "", {}, "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA=="], + + "d3-transition": ["d3-transition@3.0.1", "", { "dependencies": { "d3-color": "1 - 3", "d3-dispatch": "1 - 3", "d3-ease": "1 - 3", "d3-interpolate": "1 - 3", "d3-timer": "1 - 3" }, "peerDependencies": { "d3-selection": "2 - 3" } }, "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w=="], + + "d3-zoom": ["d3-zoom@3.0.0", "", { "dependencies": { "d3-dispatch": "1 - 3", "d3-drag": "2 - 3", "d3-interpolate": "1 - 3", "d3-selection": "2 - 3", "d3-transition": "2 - 3" } }, "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw=="], + + "dagre-d3-es": ["dagre-d3-es@7.0.13", "", { "dependencies": { "d3": "^7.9.0", "lodash-es": "^4.17.21" } }, "sha512-efEhnxpSuwpYOKRm/L5KbqoZmNNukHa/Flty4Wp62JRvgH2ojwVgPgdYyr4twpieZnyRDdIH7PY2mopX26+j2Q=="], + + "data-urls": ["data-urls@5.0.0", "", { "dependencies": { "whatwg-mimetype": "^4.0.0", "whatwg-url": "^14.0.0" } }, "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg=="], + + "dataloader": ["dataloader@2.2.3", "", {}, "sha512-y2krtASINtPFS1rSDjacrFgn1dcUuoREVabwlOGOe4SdxenREqwjwjElAdwvbGM7kgZz9a3KVicWR7vcz8rnzA=="], + + "dayjs": ["dayjs@1.11.19", "", {}, "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw=="], + + "debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], + + "decamelize": ["decamelize@4.0.0", "", {}, "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ=="], + + "decimal.js": ["decimal.js@10.6.0", "", {}, "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg=="], + + "decimal.js-light": ["decimal.js-light@2.5.1", "", {}, "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg=="], + + "decode-named-character-reference": ["decode-named-character-reference@1.2.0", "", { "dependencies": { "character-entities": "^2.0.0" } }, "sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q=="], + + "deepmerge": ["deepmerge@4.3.1", "", {}, "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A=="], + + "defaults": ["defaults@1.0.4", "", { "dependencies": { "clone": "^1.0.2" } }, "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A=="], + + "delaunator": ["delaunator@5.0.1", "", { "dependencies": { "robust-predicates": "^3.0.2" } }, "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw=="], + + "delayed-stream": ["delayed-stream@1.0.0", "", {}, "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="], + + "depd": ["depd@2.0.0", "", {}, "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="], + + "dequal": ["dequal@2.0.3", "", {}, "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA=="], + + "detect-node-es": ["detect-node-es@1.1.0", "", {}, "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ=="], + + "devlop": ["devlop@1.1.0", "", { "dependencies": { "dequal": "^2.0.0" } }, "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA=="], + + "didyoumean": ["didyoumean@1.2.2", "", {}, "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw=="], + + "diff": ["diff@5.2.0", "", {}, "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A=="], + + "dlv": ["dlv@1.1.3", "", {}, "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA=="], + + "dns-packet": ["dns-packet@5.6.1", "", { "dependencies": { "@leichtgewicht/ip-codec": "^2.0.1" } }, "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw=="], + + "dom-helpers": ["dom-helpers@5.2.1", "", { "dependencies": { "@babel/runtime": "^7.8.7", "csstype": "^3.0.2" } }, "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA=="], + + "dompurify": ["dompurify@3.3.0", "", { "optionalDependencies": { "@types/trusted-types": "^2.0.7" } }, "sha512-r+f6MYR1gGN1eJv0TVQbhA7if/U7P87cdPl3HN5rikqaBSBxLiCb/b9O+2eG0cxz0ghyU+mU1QkbsOwERMYlWQ=="], + + "dotenv": ["dotenv@16.6.1", "", {}, "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow=="], + + "dunder-proto": ["dunder-proto@1.0.1", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" } }, "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A=="], + + "eastasianwidth": ["eastasianwidth@0.2.0", "", {}, "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="], + + "electron-to-chromium": ["electron-to-chromium@1.5.260", "", {}, "sha512-ov8rBoOBhVawpzdre+Cmz4FB+y66Eqrk6Gwqd8NGxuhv99GQ8XqMAr351KEkOt7gukXWDg6gJWEMKgL2RLMPtA=="], + + "elliptic": ["elliptic@6.6.1", "", { "dependencies": { "bn.js": "^4.11.9", "brorand": "^1.1.0", "hash.js": "^1.0.0", "hmac-drbg": "^1.0.1", "inherits": "^2.0.4", "minimalistic-assert": "^1.0.1", "minimalistic-crypto-utils": "^1.0.1" } }, "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g=="], + + "emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], + + "emoji-regex-xs": ["emoji-regex-xs@1.0.0", "", {}, "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg=="], + + "enquirer": ["enquirer@2.4.1", "", { "dependencies": { "ansi-colors": "^4.1.1", "strip-ansi": "^6.0.1" } }, "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ=="], + + "entities": ["entities@6.0.1", "", {}, "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g=="], + + "env-paths": ["env-paths@2.2.1", "", {}, "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A=="], + + "error-ex": ["error-ex@1.3.4", "", { "dependencies": { "is-arrayish": "^0.2.1" } }, "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ=="], + + "error-stack-parser": ["error-stack-parser@1.3.6", "", { "dependencies": { "stackframe": "^0.3.1" } }, "sha512-xhuSYd8wLgOXwNgjcPeXMPL/IiiA1Huck+OPvClpJViVNNlJVtM41o+1emp7bPvlCJwCatFX2DWc05/DgfbWzA=="], + + "es-define-property": ["es-define-property@1.0.1", "", {}, "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="], + + "es-errors": ["es-errors@1.3.0", "", {}, "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="], + + "es-object-atoms": ["es-object-atoms@1.1.1", "", { "dependencies": { "es-errors": "^1.3.0" } }, "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA=="], + + "es-set-tostringtag": ["es-set-tostringtag@2.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" } }, "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA=="], + + "esast-util-from-estree": ["esast-util-from-estree@2.0.0", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "devlop": "^1.0.0", "estree-util-visit": "^2.0.0", "unist-util-position-from-estree": "^2.0.0" } }, "sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ=="], + + "esast-util-from-js": ["esast-util-from-js@2.0.1", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "acorn": "^8.0.0", "esast-util-from-estree": "^2.0.0", "vfile-message": "^4.0.0" } }, "sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw=="], + + "esbuild": ["esbuild@0.27.0", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.27.0", "@esbuild/android-arm": "0.27.0", "@esbuild/android-arm64": "0.27.0", "@esbuild/android-x64": "0.27.0", "@esbuild/darwin-arm64": "0.27.0", "@esbuild/darwin-x64": "0.27.0", "@esbuild/freebsd-arm64": "0.27.0", "@esbuild/freebsd-x64": "0.27.0", "@esbuild/linux-arm": "0.27.0", "@esbuild/linux-arm64": "0.27.0", "@esbuild/linux-ia32": "0.27.0", "@esbuild/linux-loong64": "0.27.0", "@esbuild/linux-mips64el": "0.27.0", "@esbuild/linux-ppc64": "0.27.0", "@esbuild/linux-riscv64": "0.27.0", "@esbuild/linux-s390x": "0.27.0", "@esbuild/linux-x64": "0.27.0", "@esbuild/netbsd-arm64": "0.27.0", "@esbuild/netbsd-x64": "0.27.0", "@esbuild/openbsd-arm64": "0.27.0", "@esbuild/openbsd-x64": "0.27.0", "@esbuild/openharmony-arm64": "0.27.0", "@esbuild/sunos-x64": "0.27.0", "@esbuild/win32-arm64": "0.27.0", "@esbuild/win32-ia32": "0.27.0", "@esbuild/win32-x64": "0.27.0" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-jd0f4NHbD6cALCyGElNpGAOtWxSq46l9X/sWB0Nzd5er4Kz2YTm+Vl0qKFT9KUJvD8+fiO8AvoHhFvEatfVixA=="], + + "escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="], + + "escape-string-regexp": ["escape-string-regexp@5.0.0", "", {}, "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="], + + "esm": ["esm@3.2.25", "", {}, "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA=="], + + "esprima": ["esprima@4.0.1", "", { "bin": { "esparse": "./bin/esparse.js", "esvalidate": "./bin/esvalidate.js" } }, "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="], + + "estree-util-attach-comments": ["estree-util-attach-comments@3.0.0", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw=="], + + "estree-util-build-jsx": ["estree-util-build-jsx@3.0.1", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "estree-walker": "^3.0.0" } }, "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ=="], + + "estree-util-is-identifier-name": ["estree-util-is-identifier-name@3.0.0", "", {}, "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg=="], + + "estree-util-scope": ["estree-util-scope@1.0.0", "", { "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0" } }, "sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ=="], + + "estree-util-to-js": ["estree-util-to-js@2.0.0", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "astring": "^1.8.0", "source-map": "^0.7.0" } }, "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg=="], + + "estree-util-value-to-estree": ["estree-util-value-to-estree@3.5.0", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-aMV56R27Gv3QmfmF1MY12GWkGzzeAezAX+UplqHVASfjc9wNzI/X6hC0S9oxq61WT4aQesLGslWP9tKk6ghRZQ=="], + + "estree-util-visit": ["estree-util-visit@2.0.0", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/unist": "^3.0.0" } }, "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww=="], + + "estree-walker": ["estree-walker@3.0.3", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g=="], + + "ethereum-cryptography": ["ethereum-cryptography@1.2.0", "", { "dependencies": { "@noble/hashes": "1.2.0", "@noble/secp256k1": "1.7.1", "@scure/bip32": "1.1.5", "@scure/bip39": "1.1.1" } }, "sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw=="], + + "ethers": ["ethers@5.8.0", "", { "dependencies": { "@ethersproject/abi": "5.8.0", "@ethersproject/abstract-provider": "5.8.0", "@ethersproject/abstract-signer": "5.8.0", "@ethersproject/address": "5.8.0", "@ethersproject/base64": "5.8.0", "@ethersproject/basex": "5.8.0", "@ethersproject/bignumber": "5.8.0", "@ethersproject/bytes": "5.8.0", "@ethersproject/constants": "5.8.0", "@ethersproject/contracts": "5.8.0", "@ethersproject/hash": "5.8.0", "@ethersproject/hdnode": "5.8.0", "@ethersproject/json-wallets": "5.8.0", "@ethersproject/keccak256": "5.8.0", "@ethersproject/logger": "5.8.0", "@ethersproject/networks": "5.8.0", "@ethersproject/pbkdf2": "5.8.0", "@ethersproject/properties": "5.8.0", "@ethersproject/providers": "5.8.0", "@ethersproject/random": "5.8.0", "@ethersproject/rlp": "5.8.0", "@ethersproject/sha2": "5.8.0", "@ethersproject/signing-key": "5.8.0", "@ethersproject/solidity": "5.8.0", "@ethersproject/strings": "5.8.0", "@ethersproject/transactions": "5.8.0", "@ethersproject/units": "5.8.0", "@ethersproject/wallet": "5.8.0", "@ethersproject/web": "5.8.0", "@ethersproject/wordlists": "5.8.0" } }, "sha512-DUq+7fHrCg1aPDFCHx6UIPb3nmt2XMpM7Y/g2gLhsl3lIBqeAfOJIl1qEvRf2uq3BiKxmh6Fh5pfp2ieyek7Kg=="], + + "eventemitter3": ["eventemitter3@4.0.7", "", {}, "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw=="], + + "execa": ["execa@8.0.1", "", { "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^8.0.1", "human-signals": "^5.0.0", "is-stream": "^3.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^5.1.0", "onetime": "^6.0.0", "signal-exit": "^4.1.0", "strip-final-newline": "^3.0.0" } }, "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg=="], + + "exsolve": ["exsolve@1.0.8", "", {}, "sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA=="], + + "extend": ["extend@3.0.2", "", {}, "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="], + + "extend-shallow": ["extend-shallow@2.0.1", "", { "dependencies": { "is-extendable": "^0.1.0" } }, "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug=="], + + "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="], + + "fast-equals": ["fast-equals@5.3.3", "", {}, "sha512-/boTcHZeIAQ2r/tL11voclBHDeP9WPxLt+tyAbVSyyXuUFyh0Tne7gJZTqGbxnvj79TjLdCXLOY7UIPhyG5MTw=="], + + "fast-fuzzy": ["fast-fuzzy@1.12.0", "", { "dependencies": { "graphemesplit": "^2.4.1" } }, "sha512-sXxGgHS+ubYpsdLnvOvJ9w5GYYZrtL9mkosG3nfuD446ahvoWEsSKBP7ieGmWIKVLnaxRDgUJkZMdxRgA2Ni+Q=="], + + "fast-glob": ["fast-glob@3.3.3", "", { "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.8" } }, "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg=="], + + "fast-uri": ["fast-uri@3.1.0", "", {}, "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA=="], + + "fast-xml-parser": ["fast-xml-parser@5.3.2", "", { "dependencies": { "strnum": "^2.1.0" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-n8v8b6p4Z1sMgqRmqLJm3awW4NX7NkaKPfb3uJIBTSH7Pdvufi3PQ3/lJLQrvxcMYl7JI2jnDO90siPEpD8JBA=="], + + "fastq": ["fastq@1.19.1", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ=="], + + "fault": ["fault@2.0.1", "", { "dependencies": { "format": "^0.2.0" } }, "sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ=="], + + "fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="], + + "fetch-har": ["fetch-har@11.1.1", "", { "dependencies": { "@readme/data-urls": "^3.0.0", "@types/har-format": "^1.2.13" } }, "sha512-FXmC4o6bqnMJ/ru/F1R+ik7QqYq8aWx7NZk6Xx4iQ/4jiVb4N/HUtd3BDBP8RT+UXFEndei4diHVqUd4vwsKGA=="], + + "file-selector": ["file-selector@2.1.2", "", { "dependencies": { "tslib": "^2.7.0" } }, "sha512-QgXo+mXTe8ljeqUFaX3QVHc5osSItJ/Km+xpocx0aSqWGMSCf6qYs/VnzZgS864Pjn5iceMRFigeAV7AfTlaig=="], + + "fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="], + + "find-root": ["find-root@1.1.0", "", {}, "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng=="], + + "find-up": ["find-up@5.0.0", "", { "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" } }, "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="], + + "fix-dts-default-cjs-exports": ["fix-dts-default-cjs-exports@1.0.1", "", { "dependencies": { "magic-string": "^0.30.17", "mlly": "^1.7.4", "rollup": "^4.34.8" } }, "sha512-pVIECanWFC61Hzl2+oOCtoJ3F17kglZC/6N94eRWycFgBH35hHx0Li604ZIzhseh97mf2p0cv7vVrOZGoqhlEg=="], + + "flat": ["flat@5.0.2", "", { "bin": { "flat": "cli.js" } }, "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ=="], + + "follow-redirects": ["follow-redirects@1.15.11", "", {}, "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ=="], + + "foreground-child": ["foreground-child@3.3.1", "", { "dependencies": { "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" } }, "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw=="], + + "form-data": ["form-data@4.0.5", "", { "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", "hasown": "^2.0.2", "mime-types": "^2.1.12" } }, "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w=="], + + "format": ["format@0.2.2", "", {}, "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww=="], + + "fp-ts": ["fp-ts@1.19.3", "", {}, "sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg=="], + + "fraction.js": ["fraction.js@5.3.4", "", {}, "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ=="], + + "framer-motion": ["framer-motion@12.23.24", "", { "dependencies": { "motion-dom": "^12.23.23", "motion-utils": "^12.23.6", "tslib": "^2.4.0" }, "peerDependencies": { "@emotion/is-prop-valid": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/is-prop-valid", "react", "react-dom"] }, "sha512-HMi5HRoRCTou+3fb3h9oTLyJGBxHfW+HnNE25tAXOvVx/IvwMHK0cx7IR4a2ZU6sh3IX1Z+4ts32PcYBOqka8w=="], + + "fs-extra": ["fs-extra@7.0.1", "", { "dependencies": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", "universalify": "^0.1.0" } }, "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw=="], + + "fs.realpath": ["fs.realpath@1.0.0", "", {}, "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="], + + "fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="], + + "function-bind": ["function-bind@1.1.2", "", {}, "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="], + + "get-caller-file": ["get-caller-file@2.0.5", "", {}, "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="], + + "get-intrinsic": ["get-intrinsic@1.3.0", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "math-intrinsics": "^1.1.0" } }, "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ=="], + + "get-nonce": ["get-nonce@1.0.1", "", {}, "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q=="], + + "get-own-enumerable-property-symbols": ["get-own-enumerable-property-symbols@3.0.2", "", {}, "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g=="], + + "get-proto": ["get-proto@1.0.1", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" } }, "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g=="], + + "get-stream": ["get-stream@8.0.1", "", {}, "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA=="], + + "get-tsconfig": ["get-tsconfig@4.13.0", "", { "dependencies": { "resolve-pkg-maps": "^1.0.0" } }, "sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ=="], + + "github-slugger": ["github-slugger@2.0.0", "", {}, "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw=="], + + "glob": ["glob@11.1.0", "", { "dependencies": { "foreground-child": "^3.3.1", "jackspeak": "^4.1.1", "minimatch": "^10.1.1", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^2.0.0" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw=="], + + "glob-parent": ["glob-parent@6.0.2", "", { "dependencies": { "is-glob": "^4.0.3" } }, "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="], + + "globals": ["globals@15.15.0", "", {}, "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg=="], + + "gopd": ["gopd@1.2.0", "", {}, "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="], + + "graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="], + + "graphemesplit": ["graphemesplit@2.6.0", "", { "dependencies": { "js-base64": "^3.6.0", "unicode-trie": "^2.0.0" } }, "sha512-rG9w2wAfkpg0DILa1pjnjNfucng3usON360shisqIMUBw/87pojcBSrHmeE4UwryAuBih7g8m1oilf5/u8EWdQ=="], + + "graphql": ["graphql@16.12.0", "", {}, "sha512-DKKrynuQRne0PNpEbzuEdHlYOMksHSUI8Zc9Unei5gTsMNA2/vMpoMz/yKba50pejK56qj98qM0SjYxAKi13gQ=="], + + "graphql-request": ["graphql-request@7.3.5", "", { "dependencies": { "@graphql-typed-document-node/core": "^3.2.0" }, "peerDependencies": { "graphql": "14 - 16" } }, "sha512-yrikPPBQFrHTCEw+Nr89vcKkhSOaKk1a4i1aoK0q2pJp0TkkH+HxJXKeVDqzHSYAEoFoNqKmNuqda1tubgaGZQ=="], + + "graphql-tag": ["graphql-tag@2.12.6", "", { "dependencies": { "tslib": "^2.1.0" }, "peerDependencies": { "graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg=="], + + "gray-matter": ["gray-matter@4.0.3", "", { "dependencies": { "js-yaml": "^3.13.1", "kind-of": "^6.0.2", "section-matter": "^1.0.0", "strip-bom-string": "^1.0.0" } }, "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q=="], + + "hachure-fill": ["hachure-fill@0.5.2", "", {}, "sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg=="], + + "hardhat": ["hardhat@2.27.0", "", { "dependencies": { "@ethereumjs/util": "^9.1.0", "@ethersproject/abi": "^5.1.2", "@nomicfoundation/edr": "^0.12.0-next.7", "@nomicfoundation/solidity-analyzer": "^0.1.0", "@sentry/node": "^5.18.1", "adm-zip": "^0.4.16", "aggregate-error": "^3.0.0", "ansi-escapes": "^4.3.0", "boxen": "^5.1.2", "chokidar": "^4.0.0", "ci-info": "^2.0.0", "debug": "^4.1.1", "enquirer": "^2.3.0", "env-paths": "^2.2.0", "ethereum-cryptography": "^1.0.3", "find-up": "^5.0.0", "fp-ts": "1.19.3", "fs-extra": "^7.0.1", "immutable": "^4.0.0-rc.12", "io-ts": "1.10.4", "json-stream-stringify": "^3.1.4", "keccak": "^3.0.2", "lodash": "^4.17.11", "micro-eth-signer": "^0.14.0", "mnemonist": "^0.38.0", "mocha": "^10.0.0", "p-map": "^4.0.0", "picocolors": "^1.1.0", "raw-body": "^2.4.1", "resolve": "1.17.0", "semver": "^6.3.0", "solc": "0.8.26", "source-map-support": "^0.5.13", "stacktrace-parser": "^0.1.10", "tinyglobby": "^0.2.6", "tsort": "0.0.1", "undici": "^5.14.0", "uuid": "^8.3.2", "ws": "^7.4.6" }, "peerDependencies": { "ts-node": "*", "typescript": "*" }, "optionalPeers": ["ts-node", "typescript"], "bin": { "hardhat": "internal/cli/bootstrap.js" } }, "sha512-du7ecjx1/ueAUjvtZhVkJvWytPCjlagG3ZktYTphfzAbc1Flc6sRolw5mhKL/Loub1EIFRaflutM4bdB/YsUUw=="], + + "hardhat-watcher": ["hardhat-watcher@2.5.0", "", { "dependencies": { "chokidar": "^3.5.3" }, "peerDependencies": { "hardhat": "^2.0.0" } }, "sha512-Su2qcSMIo2YO2PrmJ0/tdkf+6pSt8zf9+4URR5edMVti6+ShI8T3xhPrwugdyTOFuyj8lKHrcTZNKUFYowYiyA=="], + + "has-flag": ["has-flag@4.0.0", "", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="], + + "has-symbols": ["has-symbols@1.1.0", "", {}, "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ=="], + + "has-tostringtag": ["has-tostringtag@1.0.2", "", { "dependencies": { "has-symbols": "^1.0.3" } }, "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw=="], + + "hash.js": ["hash.js@1.1.7", "", { "dependencies": { "inherits": "^2.0.3", "minimalistic-assert": "^1.0.1" } }, "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA=="], + + "hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="], + + "hast": ["hast@1.0.0", "", {}, "sha512-vFUqlRV5C+xqP76Wwq2SrM0kipnmpxJm7OfvVXpB35Fp+Fn4MV+ozr+JZr5qFvyR1q/U+Foim2x+3P+x9S1PLA=="], + + "hast-util-from-dom": ["hast-util-from-dom@5.0.1", "", { "dependencies": { "@types/hast": "^3.0.0", "hastscript": "^9.0.0", "web-namespaces": "^2.0.0" } }, "sha512-N+LqofjR2zuzTjCPzyDUdSshy4Ma6li7p/c3pA78uTwzFgENbgbUrm2ugwsOdcjI1muO+o6Dgzp9p8WHtn/39Q=="], + + "hast-util-from-html": ["hast-util-from-html@2.0.3", "", { "dependencies": { "@types/hast": "^3.0.0", "devlop": "^1.1.0", "hast-util-from-parse5": "^8.0.0", "parse5": "^7.0.0", "vfile": "^6.0.0", "vfile-message": "^4.0.0" } }, "sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw=="], + + "hast-util-from-html-isomorphic": ["hast-util-from-html-isomorphic@2.0.0", "", { "dependencies": { "@types/hast": "^3.0.0", "hast-util-from-dom": "^5.0.0", "hast-util-from-html": "^2.0.0", "unist-util-remove-position": "^5.0.0" } }, "sha512-zJfpXq44yff2hmE0XmwEOzdWin5xwH+QIhMLOScpX91e/NSGPsAzNCvLQDIEPyO2TXi+lBmU6hjLIhV8MwP2kw=="], + + "hast-util-from-parse5": ["hast-util-from-parse5@8.0.3", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "devlop": "^1.0.0", "hastscript": "^9.0.0", "property-information": "^7.0.0", "vfile": "^6.0.0", "vfile-location": "^5.0.0", "web-namespaces": "^2.0.0" } }, "sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg=="], + + "hast-util-is-element": ["hast-util-is-element@3.0.0", "", { "dependencies": { "@types/hast": "^3.0.0" } }, "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g=="], + + "hast-util-parse-selector": ["hast-util-parse-selector@4.0.0", "", { "dependencies": { "@types/hast": "^3.0.0" } }, "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A=="], + + "hast-util-properties-to-mdx-jsx-attributes": ["hast-util-properties-to-mdx-jsx-attributes@1.0.1", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", "estree-util-value-to-estree": "^3.0.0", "mdast-util-mdx-jsx": "^3.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "style-to-js": "^1.0.0" } }, "sha512-ZzxhjHZ+gyxaPIFp/nuRpVL4GIFoqzfH6vNgjaA3CuUAV6XCxYwAQfRczrZRkgL6msi6DdOl+/QEduOdzszvbg=="], + + "hast-util-raw": ["hast-util-raw@9.1.0", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "@ungap/structured-clone": "^1.0.0", "hast-util-from-parse5": "^8.0.0", "hast-util-to-parse5": "^8.0.0", "html-void-elements": "^3.0.0", "mdast-util-to-hast": "^13.0.0", "parse5": "^7.0.0", "unist-util-position": "^5.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.0", "web-namespaces": "^2.0.0", "zwitch": "^2.0.0" } }, "sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw=="], + + "hast-util-to-estree": ["hast-util-to-estree@3.1.3", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", "devlop": "^1.0.0", "estree-util-attach-comments": "^3.0.0", "estree-util-is-identifier-name": "^3.0.0", "hast-util-whitespace": "^3.0.0", "mdast-util-mdx-expression": "^2.0.0", "mdast-util-mdx-jsx": "^3.0.0", "mdast-util-mdxjs-esm": "^2.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "style-to-js": "^1.0.0", "unist-util-position": "^5.0.0", "zwitch": "^2.0.0" } }, "sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w=="], + + "hast-util-to-html": ["hast-util-to-html@9.0.5", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "ccount": "^2.0.0", "comma-separated-tokens": "^2.0.0", "hast-util-whitespace": "^3.0.0", "html-void-elements": "^3.0.0", "mdast-util-to-hast": "^13.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "stringify-entities": "^4.0.0", "zwitch": "^2.0.4" } }, "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw=="], + + "hast-util-to-jsx-runtime": ["hast-util-to-jsx-runtime@2.3.6", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "comma-separated-tokens": "^2.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "hast-util-whitespace": "^3.0.0", "mdast-util-mdx-expression": "^2.0.0", "mdast-util-mdx-jsx": "^3.0.0", "mdast-util-mdxjs-esm": "^2.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "style-to-js": "^1.0.0", "unist-util-position": "^5.0.0", "vfile-message": "^4.0.0" } }, "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg=="], + + "hast-util-to-parse5": ["hast-util-to-parse5@8.0.0", "", { "dependencies": { "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", "devlop": "^1.0.0", "property-information": "^6.0.0", "space-separated-tokens": "^2.0.0", "web-namespaces": "^2.0.0", "zwitch": "^2.0.0" } }, "sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw=="], + + "hast-util-to-string": ["hast-util-to-string@3.0.1", "", { "dependencies": { "@types/hast": "^3.0.0" } }, "sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A=="], + + "hast-util-to-text": ["hast-util-to-text@4.0.2", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "hast-util-is-element": "^3.0.0", "unist-util-find-after": "^5.0.0" } }, "sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A=="], + + "hast-util-whitespace": ["hast-util-whitespace@3.0.0", "", { "dependencies": { "@types/hast": "^3.0.0" } }, "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw=="], + + "hastscript": ["hastscript@9.0.1", "", { "dependencies": { "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", "hast-util-parse-selector": "^4.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0" } }, "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w=="], + + "he": ["he@1.2.0", "", { "bin": { "he": "bin/he" } }, "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw=="], + + "hmac-drbg": ["hmac-drbg@1.0.1", "", { "dependencies": { "hash.js": "^1.0.3", "minimalistic-assert": "^1.0.0", "minimalistic-crypto-utils": "^1.0.1" } }, "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg=="], + + "hoist-non-react-statics": ["hoist-non-react-statics@3.3.2", "", { "dependencies": { "react-is": "^16.7.0" } }, "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw=="], + + "html-encoding-sniffer": ["html-encoding-sniffer@4.0.0", "", { "dependencies": { "whatwg-encoding": "^3.1.1" } }, "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ=="], + + "html-url-attributes": ["html-url-attributes@3.0.1", "", {}, "sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ=="], + + "html-void-elements": ["html-void-elements@3.0.0", "", {}, "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg=="], + + "http-errors": ["http-errors@2.0.1", "", { "dependencies": { "depd": "~2.0.0", "inherits": "~2.0.4", "setprototypeof": "~1.2.0", "statuses": "~2.0.2", "toidentifier": "~1.0.1" } }, "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ=="], + + "http-proxy-agent": ["http-proxy-agent@7.0.2", "", { "dependencies": { "agent-base": "^7.1.0", "debug": "^4.3.4" } }, "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig=="], + + "https-proxy-agent": ["https-proxy-agent@7.0.6", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "4" } }, "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw=="], + + "human-signals": ["human-signals@5.0.0", "", {}, "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ=="], + + "iconv-lite": ["iconv-lite@0.6.3", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw=="], + + "ieee754": ["ieee754@1.2.1", "", {}, "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="], + + "immutable": ["immutable@4.3.7", "", {}, "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw=="], + + "import-fresh": ["import-fresh@3.3.1", "", { "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" } }, "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ=="], + + "indent-string": ["indent-string@4.0.0", "", {}, "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg=="], + + "inflight": ["inflight@1.0.6", "", { "dependencies": { "once": "^1.3.0", "wrappy": "1" } }, "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA=="], + + "inherits": ["inherits@2.0.4", "", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="], + + "inline-style-parser": ["inline-style-parser@0.2.7", "", {}, "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA=="], + + "internmap": ["internmap@2.0.3", "", {}, "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg=="], + + "intl-messageformat": ["intl-messageformat@10.7.18", "", { "dependencies": { "@formatjs/ecma402-abstract": "2.3.6", "@formatjs/fast-memoize": "2.2.7", "@formatjs/icu-messageformat-parser": "2.11.4", "tslib": "^2.8.0" } }, "sha512-m3Ofv/X/tV8Y3tHXLohcuVuhWKo7BBq62cqY15etqmLxg2DZ34AGGgQDeR+SCta2+zICb1NX83af0GJmbQ1++g=="], + + "io-ts": ["io-ts@1.10.4", "", { "dependencies": { "fp-ts": "^1.0.0" } }, "sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g=="], + + "is-alphabetical": ["is-alphabetical@2.0.1", "", {}, "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ=="], + + "is-alphanumerical": ["is-alphanumerical@2.0.1", "", { "dependencies": { "is-alphabetical": "^2.0.0", "is-decimal": "^2.0.0" } }, "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw=="], + + "is-arrayish": ["is-arrayish@0.2.1", "", {}, "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="], + + "is-binary-path": ["is-binary-path@2.1.0", "", { "dependencies": { "binary-extensions": "^2.0.0" } }, "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw=="], + + "is-buffer": ["is-buffer@1.1.6", "", {}, "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="], + + "is-core-module": ["is-core-module@2.16.1", "", { "dependencies": { "hasown": "^2.0.2" } }, "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w=="], + + "is-decimal": ["is-decimal@2.0.1", "", {}, "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A=="], + + "is-docker": ["is-docker@3.0.0", "", { "bin": { "is-docker": "cli.js" } }, "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ=="], + + "is-extendable": ["is-extendable@0.1.1", "", {}, "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw=="], + + "is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="], + + "is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="], + + "is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="], + + "is-hexadecimal": ["is-hexadecimal@2.0.1", "", {}, "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg=="], + + "is-inside-container": ["is-inside-container@1.0.0", "", { "dependencies": { "is-docker": "^3.0.0" }, "bin": { "is-inside-container": "cli.js" } }, "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA=="], + + "is-interactive": ["is-interactive@1.0.0", "", {}, "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w=="], + + "is-number": ["is-number@7.0.0", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="], + + "is-obj": ["is-obj@1.0.1", "", {}, "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg=="], + + "is-plain-obj": ["is-plain-obj@4.1.0", "", {}, "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg=="], + + "is-potential-custom-element-name": ["is-potential-custom-element-name@1.0.1", "", {}, "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ=="], + + "is-regexp": ["is-regexp@1.0.0", "", {}, "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA=="], + + "is-stream": ["is-stream@3.0.0", "", {}, "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA=="], + + "is-unicode-supported": ["is-unicode-supported@0.1.0", "", {}, "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw=="], + + "is-wsl": ["is-wsl@3.1.0", "", { "dependencies": { "is-inside-container": "^1.0.0" } }, "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw=="], + + "is64bit": ["is64bit@2.0.0", "", { "dependencies": { "system-architecture": "^0.1.0" } }, "sha512-jv+8jaWCl0g2lSBkNSVXdzfBA0npK1HGC2KtWM9FumFRoGS94g3NbCCLVnCYHLjp4GrW2KZeeSTMo5ddtznmGw=="], + + "isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], + + "isows": ["isows@1.0.7", "", { "peerDependencies": { "ws": "*" } }, "sha512-I1fSfDCZL5P0v33sVqeTDSpcstAg/N+wF5HS033mogOVIp4B+oHC7oOCsA3axAbBSGTJ8QubbNmnIRN/h8U7hg=="], + + "jackspeak": ["jackspeak@4.1.1", "", { "dependencies": { "@isaacs/cliui": "^8.0.2" } }, "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ=="], + + "jiti": ["jiti@1.21.7", "", { "bin": { "jiti": "bin/jiti.js" } }, "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A=="], + + "joycon": ["joycon@3.1.1", "", {}, "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw=="], + + "js-base64": ["js-base64@3.7.8", "", {}, "sha512-hNngCeKxIUQiEUN3GPJOkz4wF/YvdUdbNL9hsBcMQTkKzboD7T/q3OYOuuPZLUE6dBxSGpwhk5mwuDud7JVAow=="], + + "js-sha3": ["js-sha3@0.8.0", "", {}, "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q=="], + + "js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], + + "js-yaml": ["js-yaml@4.1.1", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA=="], + + "jsbi": ["jsbi@3.2.5", "", {}, "sha512-aBE4n43IPvjaddScbvWRA2YlTzKEynHzu7MqOyTipdHucf/VxS63ViCjxYRg86M8Rxwbt/GfzHl1kKERkt45fQ=="], + + "jsdom": ["jsdom@24.1.3", "", { "dependencies": { "cssstyle": "^4.0.1", "data-urls": "^5.0.0", "decimal.js": "^10.4.3", "form-data": "^4.0.0", "html-encoding-sniffer": "^4.0.0", "http-proxy-agent": "^7.0.2", "https-proxy-agent": "^7.0.5", "is-potential-custom-element-name": "^1.0.1", "nwsapi": "^2.2.12", "parse5": "^7.1.2", "rrweb-cssom": "^0.7.1", "saxes": "^6.0.0", "symbol-tree": "^3.2.4", "tough-cookie": "^4.1.4", "w3c-xmlserializer": "^5.0.0", "webidl-conversions": "^7.0.0", "whatwg-encoding": "^3.1.1", "whatwg-mimetype": "^4.0.0", "whatwg-url": "^14.0.0", "ws": "^8.18.0", "xml-name-validator": "^5.0.0" }, "peerDependencies": { "canvas": "^2.11.2" }, "optionalPeers": ["canvas"] }, "sha512-MyL55p3Ut3cXbeBEG7Hcv0mVM8pp8PBNWxRqchZnSfAiES1v1mRnMeFfaHWIPULpwsYfvO+ZmMZz5tGCnjzDUQ=="], + + "jsesc": ["jsesc@3.1.0", "", { "bin": { "jsesc": "bin/jsesc" } }, "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA=="], + + "json-parse-even-better-errors": ["json-parse-even-better-errors@2.3.1", "", {}, "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="], + + "json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="], + + "json-stream-stringify": ["json-stream-stringify@3.1.6", "", {}, "sha512-x7fpwxOkbhFCaJDJ8vb1fBY3DdSa4AlITaz+HHILQJzdPMnHEFjxPwVUi1ALIbcIxDE0PNe/0i7frnY8QnBQog=="], + + "jsonfile": ["jsonfile@4.0.0", "", { "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg=="], + + "jsonpointer": ["jsonpointer@5.0.1", "", {}, "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ=="], + + "katex": ["katex@0.16.25", "", { "dependencies": { "commander": "^8.3.0" }, "bin": { "katex": "cli.js" } }, "sha512-woHRUZ/iF23GBP1dkDQMh1QBad9dmr8/PAwNA54VrSOVYgI12MAcE14TqnDdQOdzyEonGzMepYnqBMYdsoAr8Q=="], + + "keccak": ["keccak@3.0.4", "", { "dependencies": { "node-addon-api": "^2.0.0", "node-gyp-build": "^4.2.0", "readable-stream": "^3.6.0" } }, "sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q=="], + + "khroma": ["khroma@2.1.0", "", {}, "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw=="], + + "kind-of": ["kind-of@6.0.3", "", {}, "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw=="], + + "kleur": ["kleur@3.0.3", "", {}, "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w=="], + + "kolorist": ["kolorist@1.8.0", "", {}, "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ=="], + + "langium": ["langium@3.3.1", "", { "dependencies": { "chevrotain": "~11.0.3", "chevrotain-allstar": "~0.3.0", "vscode-languageserver": "~9.0.1", "vscode-languageserver-textdocument": "~1.0.11", "vscode-uri": "~3.0.8" } }, "sha512-QJv/h939gDpvT+9SiLVlY7tZC3xB2qK57v0J04Sh9wpMb6MP1q8gB21L3WIo8T5P1MSMg3Ep14L7KkDCFG3y4w=="], + + "layout-base": ["layout-base@1.0.2", "", {}, "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg=="], + + "leven": ["leven@3.1.0", "", {}, "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A=="], + + "lilconfig": ["lilconfig@3.1.3", "", {}, "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw=="], + + "lines-and-columns": ["lines-and-columns@1.2.4", "", {}, "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="], + + "load-tsconfig": ["load-tsconfig@0.2.5", "", {}, "sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg=="], + + "local-pkg": ["local-pkg@1.1.2", "", { "dependencies": { "mlly": "^1.7.4", "pkg-types": "^2.3.0", "quansync": "^0.2.11" } }, "sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A=="], + + "locate-path": ["locate-path@6.0.0", "", { "dependencies": { "p-locate": "^5.0.0" } }, "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw=="], + + "lodash": ["lodash@4.17.21", "", {}, "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="], + + "lodash-es": ["lodash-es@4.17.21", "", {}, "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="], + + "log-symbols": ["log-symbols@4.1.0", "", { "dependencies": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" } }, "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg=="], + + "longest-streak": ["longest-streak@3.1.0", "", {}, "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g=="], + + "loose-envify": ["loose-envify@1.4.0", "", { "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, "bin": { "loose-envify": "cli.js" } }, "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q=="], + + "lru-cache": ["lru-cache@11.2.2", "", {}, "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg=="], + + "lru_map": ["lru_map@0.3.3", "", {}, "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ=="], + + "magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="], + + "markdown-extensions": ["markdown-extensions@2.0.0", "", {}, "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q=="], + + "markdown-table": ["markdown-table@3.0.4", "", {}, "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw=="], + + "marked": ["marked@16.4.2", "", { "bin": { "marked": "bin/marked.js" } }, "sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA=="], + + "math-intrinsics": ["math-intrinsics@1.1.0", "", {}, "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="], + + "mathjax-full": ["mathjax-full@3.2.2", "", { "dependencies": { "esm": "^3.2.25", "mhchemparser": "^4.1.0", "mj-context-menu": "^0.6.1", "speech-rule-engine": "^4.0.6" } }, "sha512-+LfG9Fik+OuI8SLwsiR02IVdjcnRCy5MufYLi0C3TdMT56L/pjB0alMVGgoWJF8pN9Rc7FESycZB9BMNWIid5w=="], + + "md5": ["md5@2.3.0", "", { "dependencies": { "charenc": "0.0.2", "crypt": "0.0.2", "is-buffer": "~1.1.6" } }, "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g=="], + + "mdast-util-find-and-replace": ["mdast-util-find-and-replace@3.0.2", "", { "dependencies": { "@types/mdast": "^4.0.0", "escape-string-regexp": "^5.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg=="], + + "mdast-util-from-markdown": ["mdast-util-from-markdown@2.0.2", "", { "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "mdast-util-to-string": "^4.0.0", "micromark": "^4.0.0", "micromark-util-decode-numeric-character-reference": "^2.0.0", "micromark-util-decode-string": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "unist-util-stringify-position": "^4.0.0" } }, "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA=="], + + "mdast-util-frontmatter": ["mdast-util-frontmatter@2.0.1", "", { "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "escape-string-regexp": "^5.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0", "micromark-extension-frontmatter": "^2.0.0" } }, "sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA=="], + + "mdast-util-gfm": ["mdast-util-gfm@3.1.0", "", { "dependencies": { "mdast-util-from-markdown": "^2.0.0", "mdast-util-gfm-autolink-literal": "^2.0.0", "mdast-util-gfm-footnote": "^2.0.0", "mdast-util-gfm-strikethrough": "^2.0.0", "mdast-util-gfm-table": "^2.0.0", "mdast-util-gfm-task-list-item": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ=="], + + "mdast-util-gfm-autolink-literal": ["mdast-util-gfm-autolink-literal@2.0.1", "", { "dependencies": { "@types/mdast": "^4.0.0", "ccount": "^2.0.0", "devlop": "^1.0.0", "mdast-util-find-and-replace": "^3.0.0", "micromark-util-character": "^2.0.0" } }, "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ=="], + + "mdast-util-gfm-footnote": ["mdast-util-gfm-footnote@2.1.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.1.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0" } }, "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ=="], + + "mdast-util-gfm-strikethrough": ["mdast-util-gfm-strikethrough@2.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg=="], + + "mdast-util-gfm-table": ["mdast-util-gfm-table@2.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "markdown-table": "^3.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg=="], + + "mdast-util-gfm-task-list-item": ["mdast-util-gfm-task-list-item@2.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ=="], + + "mdast-util-math": ["mdast-util-math@3.0.0", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "longest-streak": "^3.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.1.0", "unist-util-remove-position": "^5.0.0" } }, "sha512-Tl9GBNeG/AhJnQM221bJR2HPvLOSnLE/T9cJI9tlc6zwQk2nPk/4f0cHkOdEixQPC/j8UtKDdITswvLAy1OZ1w=="], + + "mdast-util-mdx": ["mdast-util-mdx@3.0.0", "", { "dependencies": { "mdast-util-from-markdown": "^2.0.0", "mdast-util-mdx-expression": "^2.0.0", "mdast-util-mdx-jsx": "^3.0.0", "mdast-util-mdxjs-esm": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w=="], + + "mdast-util-mdx-expression": ["mdast-util-mdx-expression@2.0.1", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ=="], + + "mdast-util-mdx-jsx": ["mdast-util-mdx-jsx@3.2.0", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", "ccount": "^2.0.0", "devlop": "^1.1.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0", "parse-entities": "^4.0.0", "stringify-entities": "^4.0.0", "unist-util-stringify-position": "^4.0.0", "vfile-message": "^4.0.0" } }, "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q=="], + + "mdast-util-mdxjs-esm": ["mdast-util-mdxjs-esm@2.0.1", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg=="], + + "mdast-util-phrasing": ["mdast-util-phrasing@4.1.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "unist-util-is": "^6.0.0" } }, "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w=="], + + "mdast-util-to-hast": ["mdast-util-to-hast@13.2.1", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "@ungap/structured-clone": "^1.0.0", "devlop": "^1.0.0", "micromark-util-sanitize-uri": "^2.0.0", "trim-lines": "^3.0.0", "unist-util-position": "^5.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.0" } }, "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA=="], + + "mdast-util-to-markdown": ["mdast-util-to-markdown@2.1.2", "", { "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", "longest-streak": "^3.0.0", "mdast-util-phrasing": "^4.0.0", "mdast-util-to-string": "^4.0.0", "micromark-util-classify-character": "^2.0.0", "micromark-util-decode-string": "^2.0.0", "unist-util-visit": "^5.0.0", "zwitch": "^2.0.0" } }, "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA=="], + + "mdast-util-to-string": ["mdast-util-to-string@4.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0" } }, "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg=="], + + "memorystream": ["memorystream@0.3.1", "", {}, "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw=="], + + "merge-stream": ["merge-stream@2.0.0", "", {}, "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="], + + "merge2": ["merge2@1.4.1", "", {}, "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="], + + "mermaid": ["mermaid@11.12.1", "", { "dependencies": { "@braintree/sanitize-url": "^7.1.1", "@iconify/utils": "^3.0.1", "@mermaid-js/parser": "^0.6.3", "@types/d3": "^7.4.3", "cytoscape": "^3.29.3", "cytoscape-cose-bilkent": "^4.1.0", "cytoscape-fcose": "^2.2.0", "d3": "^7.9.0", "d3-sankey": "^0.12.3", "dagre-d3-es": "7.0.13", "dayjs": "^1.11.18", "dompurify": "^3.2.5", "katex": "^0.16.22", "khroma": "^2.1.0", "lodash-es": "^4.17.21", "marked": "^16.2.1", "roughjs": "^4.6.6", "stylis": "^4.3.6", "ts-dedent": "^2.2.0", "uuid": "^11.1.0" } }, "sha512-UlIZrRariB11TY1RtTgUWp65tphtBv4CSq7vyS2ZZ2TgoMjs2nloq+wFqxiwcxlhHUvs7DPGgMjs2aeQxz5h9g=="], + + "mhchemparser": ["mhchemparser@4.2.1", "", {}, "sha512-kYmyrCirqJf3zZ9t/0wGgRZ4/ZJw//VwaRVGA75C4nhE60vtnIzhl9J9ndkX/h6hxSN7pjg/cE0VxbnNM+bnDQ=="], + + "micro-eth-signer": ["micro-eth-signer@0.14.0", "", { "dependencies": { "@noble/curves": "~1.8.1", "@noble/hashes": "~1.7.1", "micro-packed": "~0.7.2" } }, "sha512-5PLLzHiVYPWClEvZIXXFu5yutzpadb73rnQCpUqIHu3No3coFuWQNfE5tkBQJ7djuLYl6aRLaS0MgWJYGoqiBw=="], + + "micro-packed": ["micro-packed@0.7.3", "", { "dependencies": { "@scure/base": "~1.2.5" } }, "sha512-2Milxs+WNC00TRlem41oRswvw31146GiSaoCT7s3Xi2gMUglW5QBeqlQaZeHr5tJx9nm3i57LNXPqxOOaWtTYg=="], + + "micromark": ["micromark@4.0.2", "", { "dependencies": { "@types/debug": "^4.0.0", "debug": "^4.0.0", "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "micromark-core-commonmark": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-combine-extensions": "^2.0.0", "micromark-util-decode-numeric-character-reference": "^2.0.0", "micromark-util-encode": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", "micromark-util-subtokenize": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA=="], + + "micromark-core-commonmark": ["micromark-core-commonmark@2.0.3", "", { "dependencies": { "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "micromark-factory-destination": "^2.0.0", "micromark-factory-label": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-factory-title": "^2.0.0", "micromark-factory-whitespace": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-classify-character": "^2.0.0", "micromark-util-html-tag-name": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-subtokenize": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg=="], + + "micromark-extension-frontmatter": ["micromark-extension-frontmatter@2.0.0", "", { "dependencies": { "fault": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg=="], + + "micromark-extension-gfm": ["micromark-extension-gfm@3.0.0", "", { "dependencies": { "micromark-extension-gfm-autolink-literal": "^2.0.0", "micromark-extension-gfm-footnote": "^2.0.0", "micromark-extension-gfm-strikethrough": "^2.0.0", "micromark-extension-gfm-table": "^2.0.0", "micromark-extension-gfm-tagfilter": "^2.0.0", "micromark-extension-gfm-task-list-item": "^2.0.0", "micromark-util-combine-extensions": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w=="], + + "micromark-extension-gfm-autolink-literal": ["micromark-extension-gfm-autolink-literal@2.1.0", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw=="], + + "micromark-extension-gfm-footnote": ["micromark-extension-gfm-footnote@2.1.0", "", { "dependencies": { "devlop": "^1.0.0", "micromark-core-commonmark": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw=="], + + "micromark-extension-gfm-strikethrough": ["micromark-extension-gfm-strikethrough@2.1.0", "", { "dependencies": { "devlop": "^1.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-classify-character": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw=="], + + "micromark-extension-gfm-table": ["micromark-extension-gfm-table@2.1.1", "", { "dependencies": { "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg=="], + + "micromark-extension-gfm-tagfilter": ["micromark-extension-gfm-tagfilter@2.0.0", "", { "dependencies": { "micromark-util-types": "^2.0.0" } }, "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg=="], + + "micromark-extension-gfm-task-list-item": ["micromark-extension-gfm-task-list-item@2.1.0", "", { "dependencies": { "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw=="], + + "micromark-extension-math": ["micromark-extension-math@3.1.0", "", { "dependencies": { "@types/katex": "^0.16.0", "devlop": "^1.0.0", "katex": "^0.16.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-lvEqd+fHjATVs+2v/8kg9i5Q0AP2k85H0WUOwpIVvUML8BapsMvh1XAogmQjOCsLpoKRCVQqEkQBB3NhVBcsOg=="], + + "micromark-extension-mdx-expression": ["micromark-extension-mdx-expression@3.0.1", "", { "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", "micromark-factory-mdx-expression": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-events-to-acorn": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q=="], + + "micromark-extension-mdx-jsx": ["micromark-extension-mdx-jsx@3.0.2", "", { "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "micromark-factory-mdx-expression": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-events-to-acorn": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "vfile-message": "^4.0.0" } }, "sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ=="], + + "micromark-extension-mdx-md": ["micromark-extension-mdx-md@2.0.0", "", { "dependencies": { "micromark-util-types": "^2.0.0" } }, "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ=="], + + "micromark-extension-mdxjs": ["micromark-extension-mdxjs@3.0.0", "", { "dependencies": { "acorn": "^8.0.0", "acorn-jsx": "^5.0.0", "micromark-extension-mdx-expression": "^3.0.0", "micromark-extension-mdx-jsx": "^3.0.0", "micromark-extension-mdx-md": "^2.0.0", "micromark-extension-mdxjs-esm": "^3.0.0", "micromark-util-combine-extensions": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ=="], + + "micromark-extension-mdxjs-esm": ["micromark-extension-mdxjs-esm@3.0.0", "", { "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", "micromark-core-commonmark": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-events-to-acorn": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "unist-util-position-from-estree": "^2.0.0", "vfile-message": "^4.0.0" } }, "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A=="], + + "micromark-factory-destination": ["micromark-factory-destination@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA=="], + + "micromark-factory-label": ["micromark-factory-label@2.0.1", "", { "dependencies": { "devlop": "^1.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg=="], + + "micromark-factory-mdx-expression": ["micromark-factory-mdx-expression@2.0.3", "", { "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-events-to-acorn": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "unist-util-position-from-estree": "^2.0.0", "vfile-message": "^4.0.0" } }, "sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ=="], + + "micromark-factory-space": ["micromark-factory-space@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg=="], + + "micromark-factory-title": ["micromark-factory-title@2.0.1", "", { "dependencies": { "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw=="], + + "micromark-factory-whitespace": ["micromark-factory-whitespace@2.0.1", "", { "dependencies": { "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ=="], + + "micromark-util-character": ["micromark-util-character@2.1.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q=="], + + "micromark-util-chunked": ["micromark-util-chunked@2.0.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA=="], + + "micromark-util-classify-character": ["micromark-util-classify-character@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q=="], + + "micromark-util-combine-extensions": ["micromark-util-combine-extensions@2.0.1", "", { "dependencies": { "micromark-util-chunked": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg=="], + + "micromark-util-decode-numeric-character-reference": ["micromark-util-decode-numeric-character-reference@2.0.2", "", { "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw=="], + + "micromark-util-decode-string": ["micromark-util-decode-string@2.0.1", "", { "dependencies": { "decode-named-character-reference": "^1.0.0", "micromark-util-character": "^2.0.0", "micromark-util-decode-numeric-character-reference": "^2.0.0", "micromark-util-symbol": "^2.0.0" } }, "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ=="], + + "micromark-util-encode": ["micromark-util-encode@2.0.1", "", {}, "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw=="], + + "micromark-util-events-to-acorn": ["micromark-util-events-to-acorn@2.0.3", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/unist": "^3.0.0", "devlop": "^1.0.0", "estree-util-visit": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "vfile-message": "^4.0.0" } }, "sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg=="], + + "micromark-util-html-tag-name": ["micromark-util-html-tag-name@2.0.1", "", {}, "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA=="], + + "micromark-util-normalize-identifier": ["micromark-util-normalize-identifier@2.0.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q=="], + + "micromark-util-resolve-all": ["micromark-util-resolve-all@2.0.1", "", { "dependencies": { "micromark-util-types": "^2.0.0" } }, "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg=="], + + "micromark-util-sanitize-uri": ["micromark-util-sanitize-uri@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-encode": "^2.0.0", "micromark-util-symbol": "^2.0.0" } }, "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ=="], + + "micromark-util-subtokenize": ["micromark-util-subtokenize@2.1.0", "", { "dependencies": { "devlop": "^1.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA=="], + + "micromark-util-symbol": ["micromark-util-symbol@2.0.1", "", {}, "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q=="], + + "micromark-util-types": ["micromark-util-types@2.0.2", "", {}, "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA=="], + + "micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="], + + "mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="], + + "mime-types": ["mime-types@2.1.35", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="], + + "mimic-fn": ["mimic-fn@4.0.0", "", {}, "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw=="], + + "minimalistic-assert": ["minimalistic-assert@1.0.1", "", {}, "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A=="], + + "minimalistic-crypto-utils": ["minimalistic-crypto-utils@1.0.1", "", {}, "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg=="], + + "minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], + + "minimist": ["minimist@1.2.8", "", {}, "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="], + + "minipass": ["minipass@7.1.2", "", {}, "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw=="], + + "mitt": ["mitt@3.0.1", "", {}, "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw=="], + + "mixpanel-browser": ["mixpanel-browser@2.72.0", "", { "dependencies": { "@mixpanel/rrweb": "2.0.0-alpha.18.2", "@mixpanel/rrweb-plugin-console-record": "2.0.0-alpha.18.2" } }, "sha512-Olc+1ebVBSVBjtR/Pp4t8Pc1wAI9AfA5e668B0MsI/gKJ43QcndzfQ/AT/TiP1Klup8O1C9vwykoWjvPqX+SRA=="], + + "mj-context-menu": ["mj-context-menu@0.6.1", "", {}, "sha512-7NO5s6n10TIV96d4g2uDpG7ZDpIhMh0QNfGdJw/W47JswFcosz457wqz/b5sAKvl12sxINGFCn80NZHKwxQEXA=="], + + "mlly": ["mlly@1.8.0", "", { "dependencies": { "acorn": "^8.15.0", "pathe": "^2.0.3", "pkg-types": "^1.3.1", "ufo": "^1.6.1" } }, "sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g=="], + + "mnemonist": ["mnemonist@0.38.5", "", { "dependencies": { "obliterator": "^2.0.0" } }, "sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg=="], + + "mocha": ["mocha@10.8.2", "", { "dependencies": { "ansi-colors": "^4.1.3", "browser-stdout": "^1.3.1", "chokidar": "^3.5.3", "debug": "^4.3.5", "diff": "^5.2.0", "escape-string-regexp": "^4.0.0", "find-up": "^5.0.0", "glob": "^8.1.0", "he": "^1.2.0", "js-yaml": "^4.1.0", "log-symbols": "^4.1.0", "minimatch": "^5.1.6", "ms": "^2.1.3", "serialize-javascript": "^6.0.2", "strip-json-comments": "^3.1.1", "supports-color": "^8.1.1", "workerpool": "^6.5.1", "yargs": "^16.2.0", "yargs-parser": "^20.2.9", "yargs-unparser": "^2.0.0" }, "bin": { "mocha": "bin/mocha.js", "_mocha": "bin/_mocha" } }, "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg=="], + + "motion": ["motion@12.23.24", "", { "dependencies": { "framer-motion": "^12.23.24", "tslib": "^2.4.0" }, "peerDependencies": { "@emotion/is-prop-valid": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/is-prop-valid", "react", "react-dom"] }, "sha512-Rc5E7oe2YZ72N//S3QXGzbnXgqNrTESv8KKxABR20q2FLch9gHLo0JLyYo2hZ238bZ9Gx6cWhj9VO0IgwbMjCw=="], + + "motion-dom": ["motion-dom@12.23.23", "", { "dependencies": { "motion-utils": "^12.23.6" } }, "sha512-n5yolOs0TQQBRUFImrRfs/+6X4p3Q4n1dUEqt/H58Vx7OW6RF+foWEgmTVDhIWJIMXOuNNL0apKH2S16en9eiA=="], + + "motion-utils": ["motion-utils@12.23.6", "", {}, "sha512-eAWoPgr4eFEOFfg2WjIsMoqJTW6Z8MTUCgn/GZ3VRpClWBdnbjryiA3ZSNLyxCTmCQx4RmYX6jX1iWHbenUPNQ=="], + + "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], + + "mz": ["mz@2.7.0", "", { "dependencies": { "any-promise": "^1.0.0", "object-assign": "^4.0.1", "thenify-all": "^1.0.0" } }, "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q=="], + + "nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], + + "negotiator": ["negotiator@1.0.0", "", {}, "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg=="], + + "next": ["next@14.2.33", "", { "dependencies": { "@next/env": "14.2.33", "@swc/helpers": "0.5.5", "busboy": "1.6.0", "caniuse-lite": "^1.0.30001579", "graceful-fs": "^4.2.11", "postcss": "8.4.31", "styled-jsx": "5.1.1" }, "optionalDependencies": { "@next/swc-darwin-arm64": "14.2.33", "@next/swc-darwin-x64": "14.2.33", "@next/swc-linux-arm64-gnu": "14.2.33", "@next/swc-linux-arm64-musl": "14.2.33", "@next/swc-linux-x64-gnu": "14.2.33", "@next/swc-linux-x64-musl": "14.2.33", "@next/swc-win32-arm64-msvc": "14.2.33", "@next/swc-win32-ia32-msvc": "14.2.33", "@next/swc-win32-x64-msvc": "14.2.33" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "@playwright/test": "^1.41.2", "react": "^18.2.0", "react-dom": "^18.2.0", "sass": "^1.3.0" }, "optionalPeers": ["@opentelemetry/api", "@playwright/test", "sass"], "bin": { "next": "dist/bin/next" } }, "sha512-GiKHLsD00t4ACm1p00VgrI0rUFAC9cRDGReKyERlM57aeEZkOQGcZTpIbsGn0b562FTPJWmYfKwplfO9EaT6ng=="], + + "next-seo": ["next-seo@6.8.0", "", { "peerDependencies": { "next": "^8.1.1-canary.54 || >=9.0.0", "react": ">=16.0.0", "react-dom": ">=16.0.0" } }, "sha512-zcxaV67PFXCSf8e6SXxbxPaOTgc8St/esxfsYXfQXMM24UESUVSXFm7f2A9HMkAwa0Gqn4s64HxYZAGfdF4Vhg=="], + + "next-sitemap": ["next-sitemap@4.2.3", "", { "dependencies": { "@corex/deepmerge": "^4.0.43", "@next/env": "^13.4.3", "fast-glob": "^3.2.12", "minimist": "^1.2.8" }, "peerDependencies": { "next": "*" }, "bin": { "next-sitemap": "bin/next-sitemap.mjs", "next-sitemap-cjs": "bin/next-sitemap.cjs" } }, "sha512-vjdCxeDuWDzldhCnyFCQipw5bfpl4HmZA7uoo3GAaYGjGgfL4Cxb1CiztPuWGmS+auYs7/8OekRS8C2cjdAsjQ=="], + + "nextra": ["nextra@3.3.1", "", { "dependencies": { "@formatjs/intl-localematcher": "^0.5.4", "@headlessui/react": "^2.1.2", "@mdx-js/mdx": "^3.0.0", "@mdx-js/react": "^3.0.0", "@napi-rs/simple-git": "^0.1.9", "@shikijs/twoslash": "^1.0.0", "@theguild/remark-mermaid": "^0.1.3", "@theguild/remark-npm2yarn": "^0.3.2", "better-react-mathjax": "^2.0.3", "clsx": "^2.0.0", "estree-util-to-js": "^2.0.0", "estree-util-value-to-estree": "^3.0.1", "github-slugger": "^2.0.0", "graceful-fs": "^4.2.11", "gray-matter": "^4.0.3", "hast-util-to-estree": "^3.1.0", "katex": "^0.16.9", "mdast-util-from-markdown": "^2.0.1", "mdast-util-gfm": "^3.0.0", "mdast-util-to-hast": "^13.2.0", "negotiator": "^1.0.0", "p-limit": "^6.0.0", "react-medium-image-zoom": "^5.2.12", "rehype-katex": "^7.0.0", "rehype-pretty-code": "0.14.0", "rehype-raw": "^7.0.0", "remark-frontmatter": "^5.0.0", "remark-gfm": "^4.0.0", "remark-math": "^6.0.0", "remark-reading-time": "^2.0.1", "remark-smartypants": "^3.0.0", "shiki": "^1.0.0", "slash": "^5.1.0", "title": "^4.0.0", "unist-util-remove": "^4.0.0", "unist-util-visit": "^5.0.0", "yaml": "^2.3.2", "zod": "^3.22.3", "zod-validation-error": "^3.0.0" }, "peerDependencies": { "next": ">=13", "react": ">=18", "react-dom": ">=18" } }, "sha512-jiwj+LfUPHHeAxJAEqFuglxnbjFgzAOnDWFsjv7iv3BWiX8OksDwd3I2Sv3j2zba00iIBDEPdNeylfzTtTLZVg=="], + + "nlcst-to-string": ["nlcst-to-string@4.0.0", "", { "dependencies": { "@types/nlcst": "^2.0.0" } }, "sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA=="], + + "node-addon-api": ["node-addon-api@2.0.2", "", {}, "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA=="], + + "node-gyp-build": ["node-gyp-build@4.8.4", "", { "bin": { "node-gyp-build": "bin.js", "node-gyp-build-optional": "optional.js", "node-gyp-build-test": "build-test.js" } }, "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ=="], + + "node-releases": ["node-releases@2.0.27", "", {}, "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA=="], + + "normalize-path": ["normalize-path@3.0.0", "", {}, "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="], + + "normalize-range": ["normalize-range@0.1.2", "", {}, "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA=="], + + "npm-run-path": ["npm-run-path@5.3.0", "", { "dependencies": { "path-key": "^4.0.0" } }, "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ=="], + + "npm-to-yarn": ["npm-to-yarn@3.0.1", "", {}, "sha512-tt6PvKu4WyzPwWUzy/hvPFqn+uwXO0K1ZHka8az3NnrhWJDmSqI8ncWq0fkL0k/lmmi5tAC11FXwXuh0rFbt1A=="], + + "numeral": ["numeral@2.0.6", "", {}, "sha512-qaKRmtYPZ5qdw4jWJD6bxEf1FJEqllJrwxCLIm0sQU/A7v2/czigzOb+C2uSiFsa9lBUzeH7M1oK+Q+OLxL3kA=="], + + "nwsapi": ["nwsapi@2.2.22", "", {}, "sha512-ujSMe1OWVn55euT1ihwCI1ZcAaAU3nxUiDwfDQldc51ZXaB9m2AyOn6/jh1BLe2t/G8xd6uKG1UBF2aZJeg2SQ=="], + + "object-assign": ["object-assign@4.1.1", "", {}, "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="], + + "object-hash": ["object-hash@3.0.0", "", {}, "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw=="], + + "object-inspect": ["object-inspect@1.13.4", "", {}, "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew=="], + + "obliterator": ["obliterator@2.0.5", "", {}, "sha512-42CPE9AhahZRsMNslczq0ctAEtqk8Eka26QofnqC346BZdHDySk3LWka23LI7ULIw11NmltpiLagIq8gBozxTw=="], + + "once": ["once@1.4.0", "", { "dependencies": { "wrappy": "1" } }, "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="], + + "onetime": ["onetime@6.0.0", "", { "dependencies": { "mimic-fn": "^4.0.0" } }, "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ=="], + + "oniguruma-parser": ["oniguruma-parser@0.12.1", "", {}, "sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w=="], + + "oniguruma-to-es": ["oniguruma-to-es@4.3.4", "", { "dependencies": { "oniguruma-parser": "^0.12.1", "regex": "^6.0.1", "regex-recursion": "^6.0.2" } }, "sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA=="], + + "openapi-types": ["openapi-types@12.1.3", "", {}, "sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw=="], + + "ora": ["ora@5.4.1", "", { "dependencies": { "bl": "^4.1.0", "chalk": "^4.1.0", "cli-cursor": "^3.1.0", "cli-spinners": "^2.5.0", "is-interactive": "^1.0.0", "is-unicode-supported": "^0.1.0", "log-symbols": "^4.1.0", "strip-ansi": "^6.0.0", "wcwidth": "^1.0.1" } }, "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ=="], + + "os-tmpdir": ["os-tmpdir@1.0.2", "", {}, "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g=="], + + "ox": ["ox@0.9.6", "", { "dependencies": { "@adraffy/ens-normalize": "^1.11.0", "@noble/ciphers": "^1.3.0", "@noble/curves": "1.9.1", "@noble/hashes": "^1.8.0", "@scure/bip32": "^1.7.0", "@scure/bip39": "^1.6.0", "abitype": "^1.0.9", "eventemitter3": "5.0.1" }, "peerDependencies": { "typescript": ">=5.4.0" }, "optionalPeers": ["typescript"] }, "sha512-8SuCbHPvv2eZLYXrNmC0EC12rdzXQLdhnOMlHDW2wiCPLxBrOOJwX5L5E61by+UjTPOryqQiRSnjIKCI+GykKg=="], + + "p-limit": ["p-limit@6.2.0", "", { "dependencies": { "yocto-queue": "^1.1.1" } }, "sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA=="], + + "p-locate": ["p-locate@5.0.0", "", { "dependencies": { "p-limit": "^3.0.2" } }, "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw=="], + + "p-map": ["p-map@4.0.0", "", { "dependencies": { "aggregate-error": "^3.0.0" } }, "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ=="], + + "package-json-from-dist": ["package-json-from-dist@1.0.1", "", {}, "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw=="], + + "package-manager-detector": ["package-manager-detector@1.5.0", "", {}, "sha512-uBj69dVlYe/+wxj8JOpr97XfsxH/eumMt6HqjNTmJDf/6NO9s+0uxeOneIz3AsPt2m6y9PqzDzd3ATcU17MNfw=="], + + "pako": ["pako@2.1.0", "", {}, "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug=="], + + "parent-module": ["parent-module@1.0.1", "", { "dependencies": { "callsites": "^3.0.0" } }, "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g=="], + + "parse-entities": ["parse-entities@4.0.2", "", { "dependencies": { "@types/unist": "^2.0.0", "character-entities-legacy": "^3.0.0", "character-reference-invalid": "^2.0.0", "decode-named-character-reference": "^1.0.0", "is-alphanumerical": "^2.0.0", "is-decimal": "^2.0.0", "is-hexadecimal": "^2.0.0" } }, "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw=="], + + "parse-json": ["parse-json@5.2.0", "", { "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", "json-parse-even-better-errors": "^2.3.0", "lines-and-columns": "^1.1.6" } }, "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg=="], + + "parse-latin": ["parse-latin@7.0.0", "", { "dependencies": { "@types/nlcst": "^2.0.0", "@types/unist": "^3.0.0", "nlcst-to-string": "^4.0.0", "unist-util-modify-children": "^4.0.0", "unist-util-visit-children": "^3.0.0", "vfile": "^6.0.0" } }, "sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ=="], + + "parse-numeric-range": ["parse-numeric-range@1.3.0", "", {}, "sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ=="], + + "parse5": ["parse5@7.3.0", "", { "dependencies": { "entities": "^6.0.0" } }, "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw=="], + + "path-browserify": ["path-browserify@1.0.1", "", {}, "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g=="], + + "path-data-parser": ["path-data-parser@0.1.0", "", {}, "sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w=="], + + "path-exists": ["path-exists@4.0.0", "", {}, "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="], + + "path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="], + + "path-parse": ["path-parse@1.0.7", "", {}, "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="], + + "path-scurry": ["path-scurry@2.0.1", "", { "dependencies": { "lru-cache": "^11.0.0", "minipass": "^7.1.2" } }, "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA=="], + + "path-type": ["path-type@4.0.0", "", {}, "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw=="], + + "pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], + + "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], + + "picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + + "pify": ["pify@2.3.0", "", {}, "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog=="], + + "pirates": ["pirates@4.0.7", "", {}, "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA=="], + + "pkg-types": ["pkg-types@1.3.1", "", { "dependencies": { "confbox": "^0.1.8", "mlly": "^1.7.4", "pathe": "^2.0.1" } }, "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ=="], + + "pluralize": ["pluralize@8.0.0", "", {}, "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA=="], + + "points-on-curve": ["points-on-curve@0.2.0", "", {}, "sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A=="], + + "points-on-path": ["points-on-path@0.2.1", "", { "dependencies": { "path-data-parser": "0.1.0", "points-on-curve": "0.2.0" } }, "sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g=="], + + "postcss": ["postcss@8.5.6", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg=="], + + "postcss-import": ["postcss-import@15.1.0", "", { "dependencies": { "postcss-value-parser": "^4.0.0", "read-cache": "^1.0.0", "resolve": "^1.1.7" }, "peerDependencies": { "postcss": "^8.0.0" } }, "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew=="], + + "postcss-js": ["postcss-js@4.1.0", "", { "dependencies": { "camelcase-css": "^2.0.1" }, "peerDependencies": { "postcss": "^8.4.21" } }, "sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw=="], + + "postcss-load-config": ["postcss-load-config@6.0.1", "", { "dependencies": { "lilconfig": "^3.1.1" }, "peerDependencies": { "jiti": ">=1.21.0", "postcss": ">=8.0.9", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["jiti", "postcss", "tsx", "yaml"] }, "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g=="], + + "postcss-nested": ["postcss-nested@6.2.0", "", { "dependencies": { "postcss-selector-parser": "^6.1.1" }, "peerDependencies": { "postcss": "^8.2.14" } }, "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ=="], + + "postcss-selector-parser": ["postcss-selector-parser@6.1.2", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg=="], + + "postcss-value-parser": ["postcss-value-parser@4.2.0", "", {}, "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="], + + "prettier": ["prettier@2.8.8", "", { "bin": { "prettier": "bin-prettier.js" } }, "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q=="], + + "prism-react-renderer": ["prism-react-renderer@2.4.1", "", { "dependencies": { "@types/prismjs": "^1.26.0", "clsx": "^2.0.0" }, "peerDependencies": { "react": ">=16.0.0" } }, "sha512-ey8Ls/+Di31eqzUxC46h8MksNuGx/n0AAC8uKpwFau4RPDYLuE3EXTp8N8G2vX2N7UC/+IXeNUnlWBGGcAG+Ig=="], + + "prismjs": ["prismjs@1.30.0", "", {}, "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw=="], + + "prompts": ["prompts@2.4.2", "", { "dependencies": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" } }, "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q=="], + + "prop-types": ["prop-types@15.8.1", "", { "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", "react-is": "^16.13.1" } }, "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg=="], + + "property-information": ["property-information@7.1.0", "", {}, "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ=="], + + "psl": ["psl@1.15.0", "", { "dependencies": { "punycode": "^2.3.1" } }, "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w=="], + + "punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="], + + "qs": ["qs@6.14.0", "", { "dependencies": { "side-channel": "^1.1.0" } }, "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w=="], + + "quansync": ["quansync@0.2.11", "", {}, "sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA=="], + + "querystringify": ["querystringify@2.2.0", "", {}, "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ=="], + + "queue-microtask": ["queue-microtask@1.2.3", "", {}, "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="], + + "randombytes": ["randombytes@2.1.0", "", { "dependencies": { "safe-buffer": "^5.1.0" } }, "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ=="], + + "raw-body": ["raw-body@2.5.3", "", { "dependencies": { "bytes": "~3.1.2", "http-errors": "~2.0.1", "iconv-lite": "~0.4.24", "unpipe": "~1.0.0" } }, "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA=="], + + "react": ["react@18.3.1", "", { "dependencies": { "loose-envify": "^1.1.0" } }, "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ=="], + + "react-aria": ["react-aria@3.44.0", "", { "dependencies": { "@internationalized/string": "^3.2.7", "@react-aria/breadcrumbs": "^3.5.29", "@react-aria/button": "^3.14.2", "@react-aria/calendar": "^3.9.2", "@react-aria/checkbox": "^3.16.2", "@react-aria/color": "^3.1.2", "@react-aria/combobox": "^3.14.0", "@react-aria/datepicker": "^3.15.2", "@react-aria/dialog": "^3.5.31", "@react-aria/disclosure": "^3.1.0", "@react-aria/dnd": "^3.11.3", "@react-aria/focus": "^3.21.2", "@react-aria/gridlist": "^3.14.1", "@react-aria/i18n": "^3.12.13", "@react-aria/interactions": "^3.25.6", "@react-aria/label": "^3.7.22", "@react-aria/landmark": "^3.0.7", "@react-aria/link": "^3.8.6", "@react-aria/listbox": "^3.15.0", "@react-aria/menu": "^3.19.3", "@react-aria/meter": "^3.4.27", "@react-aria/numberfield": "^3.12.2", "@react-aria/overlays": "^3.30.0", "@react-aria/progress": "^3.4.27", "@react-aria/radio": "^3.12.2", "@react-aria/searchfield": "^3.8.9", "@react-aria/select": "^3.17.0", "@react-aria/selection": "^3.26.0", "@react-aria/separator": "^3.4.13", "@react-aria/slider": "^3.8.2", "@react-aria/ssr": "^3.9.10", "@react-aria/switch": "^3.7.8", "@react-aria/table": "^3.17.8", "@react-aria/tabs": "^3.10.8", "@react-aria/tag": "^3.7.2", "@react-aria/textfield": "^3.18.2", "@react-aria/toast": "^3.0.8", "@react-aria/tooltip": "^3.8.8", "@react-aria/tree": "^3.1.4", "@react-aria/utils": "^3.31.0", "@react-aria/visually-hidden": "^3.8.28", "@react-types/shared": "^3.32.1" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-2Pq3GQxBgM4/2BlpKYXeaZ47a3tdIcYSW/AYvKgypE3XipxOdQMDG5Sr/NBn7zuJq+thzmtfRb0lB9bTbsmaRw=="], + + "react-device-detect": ["react-device-detect@2.2.3", "", { "dependencies": { "ua-parser-js": "^1.0.33" }, "peerDependencies": { "react": ">= 0.14.0", "react-dom": ">= 0.14.0" } }, "sha512-buYY3qrCnQVlIFHrC5UcUoAj7iANs/+srdkwsnNjI7anr3Tt7UY6MqNxtMLlr0tMBied0O49UZVK8XKs3ZIiPw=="], + + "react-dom": ["react-dom@18.3.1", "", { "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.2" }, "peerDependencies": { "react": "^18.3.1" } }, "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw=="], + + "react-dropzone": ["react-dropzone@14.3.8", "", { "dependencies": { "attr-accept": "^2.2.4", "file-selector": "^2.1.0", "prop-types": "^15.8.1" }, "peerDependencies": { "react": ">= 16.8 || 18.0.0" } }, "sha512-sBgODnq+lcA4P296DY4wacOZz3JFpD99fp+hb//iBO2HHnyeZU3FwWyXJ6salNpqQdsZrgMrotuko/BdJMV8Ug=="], + + "react-ga4": ["react-ga4@2.1.0", "", {}, "sha512-ZKS7PGNFqqMd3PJ6+C2Jtz/o1iU9ggiy8Y8nUeksgVuvNISbmrQtJiZNvC/TjDsqD0QlU5Wkgs7i+w9+OjHhhQ=="], + + "react-image-crop": ["react-image-crop@11.0.10", "", { "peerDependencies": { "react": ">=16.13.1" } }, "sha512-+5FfDXUgYLLqBh1Y/uQhIycpHCbXkI50a+nbfkB1C0xXXUTwkisHDo2QCB1SQJyHCqIuia4FeyReqXuMDKWQTQ=="], + + "react-intersection-observer": ["react-intersection-observer@9.16.0", "", { "peerDependencies": { "react": "^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" }, "optionalPeers": ["react-dom"] }, "sha512-w9nJSEp+DrW9KmQmeWHQyfaP6b03v+TdXynaoA964Wxt7mdR3An11z4NNCQgL4gKSK7y1ver2Fq+JKH6CWEzUA=="], + + "react-is": ["react-is@18.3.1", "", {}, "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg=="], + + "react-keyed-flatten-children": ["react-keyed-flatten-children@5.0.1", "", { "peerDependencies": { "react": ">=18.0.0", "react-is": ">=18.0.0" } }, "sha512-bZhTocogwo+q6zz3+HAQexckXhm+Ko8CaujKO6A138kVpRtF4xN8OmLE7F1Qv9YcDJrZ8gPXkJdM/VgcKjJimg=="], + + "react-markdown": ["react-markdown@10.1.0", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "hast-util-to-jsx-runtime": "^2.0.0", "html-url-attributes": "^3.0.0", "mdast-util-to-hast": "^13.0.0", "remark-parse": "^11.0.0", "remark-rehype": "^11.0.0", "unified": "^11.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.0" }, "peerDependencies": { "@types/react": ">=18", "react": ">=18" } }, "sha512-qKxVopLT/TyA6BX3Ue5NwabOsAzm0Q7kAPwq6L+wWDwisYs7R8vZ0nRXqq6rkueboxpkjvLGU9fWifiX/ZZFxQ=="], + + "react-medium-image-zoom": ["react-medium-image-zoom@5.4.0", "", { "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-BsE+EnFVQzFIlyuuQrZ9iTwyKpKkqdFZV1ImEQN573QPqGrIUuNni7aF+sZwDcxlsuOMayCr6oO/PZR/yJnbRg=="], + + "react-remove-scroll": ["react-remove-scroll@2.7.1", "", { "dependencies": { "react-remove-scroll-bar": "^2.3.7", "react-style-singleton": "^2.2.3", "tslib": "^2.1.0", "use-callback-ref": "^1.3.3", "use-sidecar": "^1.1.3" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-HpMh8+oahmIdOuS5aFKKY6Pyog+FNaZV/XyJOq7b4YFwsFHe5yYfdbIalI4k3vU2nSDql7YskmUseHsRrJqIPA=="], + + "react-remove-scroll-bar": ["react-remove-scroll-bar@2.3.8", "", { "dependencies": { "react-style-singleton": "^2.2.2", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" }, "optionalPeers": ["@types/react"] }, "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q=="], + + "react-smooth": ["react-smooth@4.0.4", "", { "dependencies": { "fast-equals": "^5.0.1", "prop-types": "^15.8.1", "react-transition-group": "^4.4.5" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-gnGKTpYwqL0Iii09gHobNolvX4Kiq4PKx6eWBCYYix+8cdw+cGo3do906l1NBPKkSWx1DghC1dlWG9L2uGd61Q=="], + + "react-style-singleton": ["react-style-singleton@2.2.3", "", { "dependencies": { "get-nonce": "^1.0.0", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ=="], + + "react-transition-group": ["react-transition-group@4.4.5", "", { "dependencies": { "@babel/runtime": "^7.5.5", "dom-helpers": "^5.0.1", "loose-envify": "^1.4.0", "prop-types": "^15.6.2" }, "peerDependencies": { "react": ">=16.6.0", "react-dom": ">=16.6.0" } }, "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g=="], + + "react-virtuoso": ["react-virtuoso@4.15.0", "", { "peerDependencies": { "react": ">=16 || >=17 || >= 18 || >= 19", "react-dom": ">=16 || >=17 || >= 18 || >=19" } }, "sha512-yDVJqOXf3N1GlSoXj/hMhslA6EyUmgCUVzS9u8MpdZs/KIwdTtbQnttZ0yzx8ZKdKeVdd0NPJG4pTINHbAyhyw=="], + + "read-cache": ["read-cache@1.0.0", "", { "dependencies": { "pify": "^2.3.0" } }, "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA=="], + + "readable-stream": ["readable-stream@3.6.2", "", { "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } }, "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA=="], + + "readdirp": ["readdirp@3.6.0", "", { "dependencies": { "picomatch": "^2.2.1" } }, "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="], + + "reading-time": ["reading-time@1.5.0", "", {}, "sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg=="], + + "recharts": ["recharts@2.15.4", "", { "dependencies": { "clsx": "^2.0.0", "eventemitter3": "^4.0.1", "lodash": "^4.17.21", "react-is": "^18.3.1", "react-smooth": "^4.0.4", "recharts-scale": "^0.4.4", "tiny-invariant": "^1.3.1", "victory-vendor": "^36.6.8" }, "peerDependencies": { "react": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-UT/q6fwS3c1dHbXv2uFgYJ9BMFHu3fwnd7AYZaEQhXuYQ4hgsxLvsUXzGdKeZrW5xopzDCvuA2N41WJ88I7zIw=="], + + "recharts-scale": ["recharts-scale@0.4.5", "", { "dependencies": { "decimal.js-light": "^2.4.1" } }, "sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w=="], + + "recma-build-jsx": ["recma-build-jsx@1.0.0", "", { "dependencies": { "@types/estree": "^1.0.0", "estree-util-build-jsx": "^3.0.0", "vfile": "^6.0.0" } }, "sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew=="], + + "recma-jsx": ["recma-jsx@1.0.1", "", { "dependencies": { "acorn-jsx": "^5.0.0", "estree-util-to-js": "^2.0.0", "recma-parse": "^1.0.0", "recma-stringify": "^1.0.0", "unified": "^11.0.0" }, "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w=="], + + "recma-parse": ["recma-parse@1.0.0", "", { "dependencies": { "@types/estree": "^1.0.0", "esast-util-from-js": "^2.0.0", "unified": "^11.0.0", "vfile": "^6.0.0" } }, "sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ=="], + + "recma-stringify": ["recma-stringify@1.0.0", "", { "dependencies": { "@types/estree": "^1.0.0", "estree-util-to-js": "^2.0.0", "unified": "^11.0.0", "vfile": "^6.0.0" } }, "sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g=="], + + "regex": ["regex@6.0.1", "", { "dependencies": { "regex-utilities": "^2.3.0" } }, "sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA=="], + + "regex-recursion": ["regex-recursion@6.0.2", "", { "dependencies": { "regex-utilities": "^2.3.0" } }, "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg=="], + + "regex-utilities": ["regex-utilities@2.3.0", "", {}, "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng=="], + + "rehype-katex": ["rehype-katex@7.0.1", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/katex": "^0.16.0", "hast-util-from-html-isomorphic": "^2.0.0", "hast-util-to-text": "^4.0.0", "katex": "^0.16.0", "unist-util-visit-parents": "^6.0.0", "vfile": "^6.0.0" } }, "sha512-OiM2wrZ/wuhKkigASodFoo8wimG3H12LWQaH8qSPVJn9apWKFSH3YOCtbKpBorTVw/eI7cuT21XBbvwEswbIOA=="], + + "rehype-mdx-code-props": ["rehype-mdx-code-props@3.0.1", "", { "dependencies": { "@types/hast": "^3.0.0", "hast-util-properties-to-mdx-jsx-attributes": "^1.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-mdx": "^3.0.0", "micromark-extension-mdxjs": "^3.0.0", "unified": "^11.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-BWWKn0N6r7/qd7lbLgv5J8of7imz1l1PyCNoY7BH0AOR9JdJlQIfA9cKqTZVEb2h2GPKh473qrBajF0i01fq3A=="], + + "rehype-parse": ["rehype-parse@9.0.1", "", { "dependencies": { "@types/hast": "^3.0.0", "hast-util-from-html": "^2.0.0", "unified": "^11.0.0" } }, "sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag=="], + + "rehype-pretty-code": ["rehype-pretty-code@0.14.0", "", { "dependencies": { "@types/hast": "^3.0.4", "hast-util-to-string": "^3.0.0", "parse-numeric-range": "^1.3.0", "rehype-parse": "^9.0.0", "unified": "^11.0.5", "unist-util-visit": "^5.0.0" }, "peerDependencies": { "shiki": "^1.3.0" } }, "sha512-hBeKF/Wkkf3zyUS8lal9RCUuhypDWLQc+h9UrP9Pav25FUm/AQAVh4m5gdvJxh4Oz+U+xKvdsV01p1LdvsZTiQ=="], + + "rehype-raw": ["rehype-raw@7.0.0", "", { "dependencies": { "@types/hast": "^3.0.0", "hast-util-raw": "^9.0.0", "vfile": "^6.0.0" } }, "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww=="], + + "rehype-recma": ["rehype-recma@1.0.0", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/hast": "^3.0.0", "hast-util-to-estree": "^3.0.0" } }, "sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw=="], + + "remark-frontmatter": ["remark-frontmatter@5.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-frontmatter": "^2.0.0", "micromark-extension-frontmatter": "^2.0.0", "unified": "^11.0.0" } }, "sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ=="], + + "remark-gfm": ["remark-gfm@4.0.1", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-gfm": "^3.0.0", "micromark-extension-gfm": "^3.0.0", "remark-parse": "^11.0.0", "remark-stringify": "^11.0.0", "unified": "^11.0.0" } }, "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg=="], + + "remark-math": ["remark-math@6.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-math": "^3.0.0", "micromark-extension-math": "^3.0.0", "unified": "^11.0.0" } }, "sha512-MMqgnP74Igy+S3WwnhQ7kqGlEerTETXMvJhrUzDikVZ2/uogJCb+WHUg97hK9/jcfc0dkD73s3LN8zU49cTEtA=="], + + "remark-mdx": ["remark-mdx@3.1.1", "", { "dependencies": { "mdast-util-mdx": "^3.0.0", "micromark-extension-mdxjs": "^3.0.0" } }, "sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg=="], + + "remark-parse": ["remark-parse@11.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-from-markdown": "^2.0.0", "micromark-util-types": "^2.0.0", "unified": "^11.0.0" } }, "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA=="], + + "remark-reading-time": ["remark-reading-time@2.0.2", "", { "dependencies": { "estree-util-is-identifier-name": "^2.0.0", "estree-util-value-to-estree": "^3.3.3", "reading-time": "^1.3.0", "unist-util-visit": "^3.1.0" } }, "sha512-ILjIuR0dQQ8pELPgaFvz7ralcSN62rD/L1pTUJgWb4gfua3ZwYEI8mnKGxEQCbrXSUF/OvycTkcUbifGOtOn5A=="], + + "remark-rehype": ["remark-rehype@11.1.2", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "mdast-util-to-hast": "^13.0.0", "unified": "^11.0.0", "vfile": "^6.0.0" } }, "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw=="], + + "remark-smartypants": ["remark-smartypants@3.0.2", "", { "dependencies": { "retext": "^9.0.0", "retext-smartypants": "^6.0.0", "unified": "^11.0.4", "unist-util-visit": "^5.0.0" } }, "sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA=="], + + "remark-stringify": ["remark-stringify@11.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-to-markdown": "^2.0.0", "unified": "^11.0.0" } }, "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw=="], + + "require-directory": ["require-directory@2.1.1", "", {}, "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="], + + "require-from-string": ["require-from-string@2.0.2", "", {}, "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="], + + "requires-port": ["requires-port@1.0.0", "", {}, "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ=="], + + "resolve": ["resolve@1.22.11", "", { "dependencies": { "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ=="], + + "resolve-from": ["resolve-from@5.0.0", "", {}, "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw=="], + + "resolve-pkg-maps": ["resolve-pkg-maps@1.0.0", "", {}, "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw=="], + + "restore-cursor": ["restore-cursor@3.1.0", "", { "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" } }, "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA=="], + + "retext": ["retext@9.0.0", "", { "dependencies": { "@types/nlcst": "^2.0.0", "retext-latin": "^4.0.0", "retext-stringify": "^4.0.0", "unified": "^11.0.0" } }, "sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA=="], + + "retext-latin": ["retext-latin@4.0.0", "", { "dependencies": { "@types/nlcst": "^2.0.0", "parse-latin": "^7.0.0", "unified": "^11.0.0" } }, "sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA=="], + + "retext-smartypants": ["retext-smartypants@6.2.0", "", { "dependencies": { "@types/nlcst": "^2.0.0", "nlcst-to-string": "^4.0.0", "unist-util-visit": "^5.0.0" } }, "sha512-kk0jOU7+zGv//kfjXEBjdIryL1Acl4i9XNkHxtM7Tm5lFiCog576fjNC9hjoR7LTKQ0DsPWy09JummSsH1uqfQ=="], + + "retext-stringify": ["retext-stringify@4.0.0", "", { "dependencies": { "@types/nlcst": "^2.0.0", "nlcst-to-string": "^4.0.0", "unified": "^11.0.0" } }, "sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA=="], + + "reusify": ["reusify@1.1.0", "", {}, "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw=="], + + "robust-predicates": ["robust-predicates@3.0.2", "", {}, "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg=="], + + "rollup": ["rollup@4.53.3", "", { "dependencies": { "@types/estree": "1.0.8" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.53.3", "@rollup/rollup-android-arm64": "4.53.3", "@rollup/rollup-darwin-arm64": "4.53.3", "@rollup/rollup-darwin-x64": "4.53.3", "@rollup/rollup-freebsd-arm64": "4.53.3", "@rollup/rollup-freebsd-x64": "4.53.3", "@rollup/rollup-linux-arm-gnueabihf": "4.53.3", "@rollup/rollup-linux-arm-musleabihf": "4.53.3", "@rollup/rollup-linux-arm64-gnu": "4.53.3", "@rollup/rollup-linux-arm64-musl": "4.53.3", "@rollup/rollup-linux-loong64-gnu": "4.53.3", "@rollup/rollup-linux-ppc64-gnu": "4.53.3", "@rollup/rollup-linux-riscv64-gnu": "4.53.3", "@rollup/rollup-linux-riscv64-musl": "4.53.3", "@rollup/rollup-linux-s390x-gnu": "4.53.3", "@rollup/rollup-linux-x64-gnu": "4.53.3", "@rollup/rollup-linux-x64-musl": "4.53.3", "@rollup/rollup-openharmony-arm64": "4.53.3", "@rollup/rollup-win32-arm64-msvc": "4.53.3", "@rollup/rollup-win32-ia32-msvc": "4.53.3", "@rollup/rollup-win32-x64-gnu": "4.53.3", "@rollup/rollup-win32-x64-msvc": "4.53.3", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA=="], + + "roughjs": ["roughjs@4.6.6", "", { "dependencies": { "hachure-fill": "^0.5.2", "path-data-parser": "^0.1.0", "points-on-curve": "^0.2.0", "points-on-path": "^0.2.1" } }, "sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ=="], + + "rrweb-cssom": ["rrweb-cssom@0.7.1", "", {}, "sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg=="], + + "run-parallel": ["run-parallel@1.2.0", "", { "dependencies": { "queue-microtask": "^1.2.2" } }, "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="], + + "rw": ["rw@1.3.3", "", {}, "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ=="], + + "safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="], + + "safer-buffer": ["safer-buffer@2.1.2", "", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="], + + "saxes": ["saxes@6.0.0", "", { "dependencies": { "xmlchars": "^2.2.0" } }, "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA=="], + + "scheduler": ["scheduler@0.23.2", "", { "dependencies": { "loose-envify": "^1.1.0" } }, "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ=="], + + "scrypt-js": ["scrypt-js@3.0.1", "", {}, "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA=="], + + "search-insights": ["search-insights@2.17.3", "", {}, "sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ=="], + + "section-matter": ["section-matter@1.0.0", "", { "dependencies": { "extend-shallow": "^2.0.1", "kind-of": "^6.0.0" } }, "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA=="], + + "semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + + "serialize-javascript": ["serialize-javascript@6.0.2", "", { "dependencies": { "randombytes": "^2.1.0" } }, "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g=="], + + "setprototypeof": ["setprototypeof@1.2.0", "", {}, "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="], + + "shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="], + + "shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="], + + "shiki": ["shiki@3.15.0", "", { "dependencies": { "@shikijs/core": "3.15.0", "@shikijs/engine-javascript": "3.15.0", "@shikijs/engine-oniguruma": "3.15.0", "@shikijs/langs": "3.15.0", "@shikijs/themes": "3.15.0", "@shikijs/types": "3.15.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-kLdkY6iV3dYbtPwS9KXU7mjfmDm25f5m0IPNFnaXO7TBPcvbUOY72PYXSuSqDzwp+vlH/d7MXpHlKO/x+QoLXw=="], + + "side-channel": ["side-channel@1.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3", "side-channel-list": "^1.0.0", "side-channel-map": "^1.0.1", "side-channel-weakmap": "^1.0.2" } }, "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw=="], + + "side-channel-list": ["side-channel-list@1.0.0", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3" } }, "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA=="], + + "side-channel-map": ["side-channel-map@1.0.1", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.5", "object-inspect": "^1.13.3" } }, "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA=="], + + "side-channel-weakmap": ["side-channel-weakmap@1.0.2", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.5", "object-inspect": "^1.13.3", "side-channel-map": "^1.0.1" } }, "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A=="], + + "signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="], + + "sisteransi": ["sisteransi@1.0.5", "", {}, "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg=="], + + "slash": ["slash@5.1.0", "", {}, "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg=="], + + "solc": ["solc@0.8.26", "", { "dependencies": { "command-exists": "^1.2.8", "commander": "^8.1.0", "follow-redirects": "^1.12.1", "js-sha3": "0.8.0", "memorystream": "^0.3.1", "semver": "^5.5.0", "tmp": "0.0.33" }, "bin": { "solcjs": "solc.js" } }, "sha512-yiPQNVf5rBFHwN6SIf3TUUvVAFKcQqmSUFeq+fb6pNRCo0ZCgpYOZDi3BVoezCPIAcKrVYd/qXlBLUP9wVrZ9g=="], + + "source-map": ["source-map@0.7.6", "", {}, "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ=="], + + "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], + + "source-map-support": ["source-map-support@0.5.21", "", { "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" } }, "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w=="], + + "space-separated-tokens": ["space-separated-tokens@2.0.2", "", {}, "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q=="], + + "speech-rule-engine": ["speech-rule-engine@4.1.2", "", { "dependencies": { "@xmldom/xmldom": "0.9.8", "commander": "13.1.0", "wicked-good-xpath": "1.3.0" }, "bin": { "sre": "bin/sre" } }, "sha512-S6ji+flMEga+1QU79NDbwZ8Ivf0S/MpupQQiIC0rTpU/ZTKgcajijJJb1OcByBQDjrXCN1/DJtGz4ZJeBMPGJw=="], + + "sprintf-js": ["sprintf-js@1.0.3", "", {}, "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="], + + "stack-generator": ["stack-generator@1.1.0", "", { "dependencies": { "stackframe": "^1.0.2" } }, "sha512-sZDVjwC56vZoo+a5t0LH/1sMQLWYLi/r+Z2ztyCAOhOX3QBP34GWxK0FWf2eU1TIU2CJKCKBAtDZycUh/ZKMlw=="], + + "stackframe": ["stackframe@0.3.1", "", {}, "sha512-XmoiF4T5nuWEp2x2w92WdGjdHGY/cZa6LIbRsDRQR/Xlk4uW0PAUlH1zJYVffocwKpCdwyuypIp25xsSXEtZHw=="], + + "stacktrace-gps": ["stacktrace-gps@2.4.4", "", { "dependencies": { "source-map": "0.5.6", "stackframe": "~0.3" } }, "sha512-msFhuMEEklQLUtaJ+GeCDjzUN+PamfHWQiK3C1LnbHjoxSeF5dAxiE+aJkptNMmMNOropGFJ7G3ZT7dPZHgDaQ=="], + + "stacktrace-js": ["stacktrace-js@1.3.1", "", { "dependencies": { "error-stack-parser": "^1.3.6", "stack-generator": "^1.0.7", "stacktrace-gps": "^2.4.3" } }, "sha512-b+5voFnXqg9TWdOE50soXL+WuOreYUm1Ukg9U7rzEWGL4+gcVxIcFasNBtOffVX0I1lYqVZj0PZXZvTt5e3YRQ=="], + + "stacktrace-parser": ["stacktrace-parser@0.1.11", "", { "dependencies": { "type-fest": "^0.7.1" } }, "sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg=="], + + "statuses": ["statuses@2.0.2", "", {}, "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw=="], + + "streamsearch": ["streamsearch@1.1.0", "", {}, "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg=="], + + "string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], + + "string-width-cjs": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], + + "string_decoder": ["string_decoder@1.3.0", "", { "dependencies": { "safe-buffer": "~5.2.0" } }, "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA=="], + + "stringify-entities": ["stringify-entities@4.0.4", "", { "dependencies": { "character-entities-html4": "^2.0.0", "character-entities-legacy": "^3.0.0" } }, "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg=="], + + "stringify-object": ["stringify-object@3.3.0", "", { "dependencies": { "get-own-enumerable-property-symbols": "^3.0.0", "is-obj": "^1.0.1", "is-regexp": "^1.0.0" } }, "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw=="], + + "strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + + "strip-ansi-cjs": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + + "strip-bom-string": ["strip-bom-string@1.0.0", "", {}, "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g=="], + + "strip-final-newline": ["strip-final-newline@3.0.0", "", {}, "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw=="], + + "strip-json-comments": ["strip-json-comments@3.1.1", "", {}, "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="], + + "strnum": ["strnum@2.1.1", "", {}, "sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw=="], + + "style-to-js": ["style-to-js@1.1.21", "", { "dependencies": { "style-to-object": "1.0.14" } }, "sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ=="], + + "style-to-object": ["style-to-object@1.0.14", "", { "dependencies": { "inline-style-parser": "0.2.7" } }, "sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw=="], + + "styled-jsx": ["styled-jsx@5.1.1", "", { "dependencies": { "client-only": "0.0.1" }, "peerDependencies": { "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" } }, "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw=="], + + "styled-system": ["styled-system@5.1.5", "", { "dependencies": { "@styled-system/background": "^5.1.2", "@styled-system/border": "^5.1.5", "@styled-system/color": "^5.1.2", "@styled-system/core": "^5.1.2", "@styled-system/flexbox": "^5.1.2", "@styled-system/grid": "^5.1.2", "@styled-system/layout": "^5.1.2", "@styled-system/position": "^5.1.2", "@styled-system/shadow": "^5.1.2", "@styled-system/space": "^5.1.2", "@styled-system/typography": "^5.1.2", "@styled-system/variant": "^5.1.5", "object-assign": "^4.1.1" } }, "sha512-7VoD0o2R3RKzOzPK0jYrVnS8iJdfkKsQJNiLRDjikOpQVqQHns/DXWaPZOH4tIKkhAT7I6wIsy9FWTWh2X3q+A=="], + + "stylis": ["stylis@4.2.0", "", {}, "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw=="], + + "sucrase": ["sucrase@3.35.1", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.2", "commander": "^4.0.0", "lines-and-columns": "^1.1.6", "mz": "^2.7.0", "pirates": "^4.0.1", "tinyglobby": "^0.2.11", "ts-interface-checker": "^0.1.9" }, "bin": { "sucrase": "bin/sucrase", "sucrase-node": "bin/sucrase-node" } }, "sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw=="], + + "supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="], + + "supports-preserve-symlinks-flag": ["supports-preserve-symlinks-flag@1.0.0", "", {}, "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="], + + "symbol-tree": ["symbol-tree@3.2.4", "", {}, "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw=="], + + "system-architecture": ["system-architecture@0.1.0", "", {}, "sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA=="], + + "tabbable": ["tabbable@6.3.0", "", {}, "sha512-EIHvdY5bPLuWForiR/AN2Bxngzpuwn1is4asboytXtpTgsArc+WmSJKVLlhdh71u7jFcryDqB2A8lQvj78MkyQ=="], + + "tailwindcss": ["tailwindcss@3.4.18", "", { "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", "chokidar": "^3.6.0", "didyoumean": "^1.2.2", "dlv": "^1.1.3", "fast-glob": "^3.3.2", "glob-parent": "^6.0.2", "is-glob": "^4.0.3", "jiti": "^1.21.7", "lilconfig": "^3.1.3", "micromatch": "^4.0.8", "normalize-path": "^3.0.0", "object-hash": "^3.0.0", "picocolors": "^1.1.1", "postcss": "^8.4.47", "postcss-import": "^15.1.0", "postcss-js": "^4.0.1", "postcss-load-config": "^4.0.2 || ^5.0 || ^6.0", "postcss-nested": "^6.2.0", "postcss-selector-parser": "^6.1.2", "resolve": "^1.22.8", "sucrase": "^3.35.0" }, "bin": { "tailwind": "lib/cli.js", "tailwindcss": "lib/cli.js" } }, "sha512-6A2rnmW5xZMdw11LYjhcI5846rt9pbLSabY5XPxo+XWdxwZaFEn47Go4NzFiHu9sNNmr/kXivP1vStfvMaK1GQ=="], + + "theme-ui": ["theme-ui@0.17.2", "", { "dependencies": { "@theme-ui/color-modes": "^0.17.2", "@theme-ui/components": "^0.17.2", "@theme-ui/core": "^0.17.2", "@theme-ui/css": "^0.17.2", "@theme-ui/global": "^0.17.2", "@theme-ui/theme-provider": "^0.17.2" }, "peerDependencies": { "@emotion/react": ">=11.1.1", "react": ">=18" } }, "sha512-BuyJ7lkgGzmI63YPA90WYB+X4LbJTMm+j1a/qxjdl7evhLKRZkEE4Xs3bv66g9T+fuqq2T2TMrcY0BMzpWkOtQ=="], + + "thenify": ["thenify@3.3.1", "", { "dependencies": { "any-promise": "^1.0.0" } }, "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw=="], + + "thenify-all": ["thenify-all@1.6.0", "", { "dependencies": { "thenify": ">= 3.1.0 < 4" } }, "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA=="], + + "tiny-inflate": ["tiny-inflate@1.0.3", "", {}, "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw=="], + + "tiny-invariant": ["tiny-invariant@1.3.3", "", {}, "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg=="], + + "tiny-warning": ["tiny-warning@1.0.3", "", {}, "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA=="], + + "tinyexec": ["tinyexec@0.3.2", "", {}, "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA=="], + + "tinyglobby": ["tinyglobby@0.2.15", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.3" } }, "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ=="], + + "title": ["title@4.0.1", "", { "dependencies": { "arg": "^5.0.0", "chalk": "^5.0.0", "clipboardy": "^4.0.0" }, "bin": { "title": "dist/esm/bin.js" } }, "sha512-xRnPkJx9nvE5MF6LkB5e8QJjE2FW8269wTu/LQdf7zZqBgPly0QJPf/CWAo7srj5so4yXfoLEdCFgurlpi47zg=="], + + "tmp": ["tmp@0.0.33", "", { "dependencies": { "os-tmpdir": "~1.0.2" } }, "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw=="], + + "to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="], + + "toformat": ["toformat@2.0.0", "", {}, "sha512-03SWBVop6nU8bpyZCx7SodpYznbZF5R4ljwNLBcTQzKOD9xuihRo/psX58llS1BMFhhAI08H3luot5GoXJz2pQ=="], + + "toidentifier": ["toidentifier@1.0.1", "", {}, "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="], + + "tough-cookie": ["tough-cookie@4.1.4", "", { "dependencies": { "psl": "^1.1.33", "punycode": "^2.1.1", "universalify": "^0.2.0", "url-parse": "^1.5.3" } }, "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag=="], + + "tr46": ["tr46@5.1.1", "", { "dependencies": { "punycode": "^2.3.1" } }, "sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw=="], + + "tree-kill": ["tree-kill@1.2.2", "", { "bin": { "tree-kill": "cli.js" } }, "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A=="], + + "trim-lines": ["trim-lines@3.0.1", "", {}, "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg=="], + + "trough": ["trough@2.2.0", "", {}, "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw=="], + + "ts-dedent": ["ts-dedent@2.2.0", "", {}, "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ=="], + + "ts-interface-checker": ["ts-interface-checker@0.1.13", "", {}, "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA=="], + + "ts-morph": ["ts-morph@27.0.2", "", { "dependencies": { "@ts-morph/common": "~0.28.1", "code-block-writer": "^13.0.3" } }, "sha512-fhUhgeljcrdZ+9DZND1De1029PrE+cMkIP7ooqkLRTrRLTqcki2AstsyJm0vRNbTbVCNJ0idGlbBrfqc7/nA8w=="], + + "ts-pattern": ["ts-pattern@5.9.0", "", {}, "sha512-6s5V71mX8qBUmlgbrfL33xDUwO0fq48rxAu2LBE11WBeGdpCPOsXksQbZJHvHwhrd3QjUusd3mAOM5Gg0mFBLg=="], + + "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "tsort": ["tsort@0.0.1", "", {}, "sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw=="], + + "tsup": ["tsup@8.5.1", "", { "dependencies": { "bundle-require": "^5.1.0", "cac": "^6.7.14", "chokidar": "^4.0.3", "consola": "^3.4.0", "debug": "^4.4.0", "esbuild": "^0.27.0", "fix-dts-default-cjs-exports": "^1.0.0", "joycon": "^3.1.1", "picocolors": "^1.1.1", "postcss-load-config": "^6.0.1", "resolve-from": "^5.0.0", "rollup": "^4.34.8", "source-map": "^0.7.6", "sucrase": "^3.35.0", "tinyexec": "^0.3.2", "tinyglobby": "^0.2.11", "tree-kill": "^1.2.2" }, "peerDependencies": { "@microsoft/api-extractor": "^7.36.0", "@swc/core": "^1", "postcss": "^8.4.12", "typescript": ">=4.5.0" }, "optionalPeers": ["@microsoft/api-extractor", "@swc/core", "postcss", "typescript"], "bin": { "tsup": "dist/cli-default.js", "tsup-node": "dist/cli-node.js" } }, "sha512-xtgkqwdhpKWr3tKPmCkvYmS9xnQK3m3XgxZHwSUjvfTjp7YfXe5tT3GgWi0F2N+ZSMsOeWeZFh7ZZFg5iPhing=="], + + "tsx": ["tsx@4.20.4", "", { "dependencies": { "esbuild": "~0.25.0", "get-tsconfig": "^4.7.5" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "bin": { "tsx": "dist/cli.mjs" } }, "sha512-yyxBKfORQ7LuRt/BQKBXrpcq59ZvSW0XxwfjAt3w2/8PmdxaFzijtMhTawprSHhpzeM5BgU2hXHG3lklIERZXg=="], + + "twoslash": ["twoslash@0.2.12", "", { "dependencies": { "@typescript/vfs": "^1.6.0", "twoslash-protocol": "0.2.12" }, "peerDependencies": { "typescript": "*" } }, "sha512-tEHPASMqi7kqwfJbkk7hc/4EhlrKCSLcur+TcvYki3vhIfaRMXnXjaYFgXpoZRbT6GdprD4tGuVBEmTpUgLBsw=="], + + "twoslash-protocol": ["twoslash-protocol@0.2.12", "", {}, "sha512-5qZLXVYfZ9ABdjqbvPc4RWMr7PrpPaaDSeaYY55vl/w1j6H6kzsWK/urAEIXlzYlyrFmyz1UbwIt+AA0ck+wbg=="], + + "type-fest": ["type-fest@0.20.2", "", {}, "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ=="], + + "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], + + "typescript-logging": ["typescript-logging@1.0.1", "", { "dependencies": { "stacktrace-js": "1.3.1" } }, "sha512-zp28ABme0m5q/nXabBaY9Hv/35N8lMH4FsvhpUO0zVi4vFs3uKlb5br2it61HAZF5k+U0aP6E67j0VD0IzXGpQ=="], + + "typy": ["typy@3.3.0", "", {}, "sha512-Du53deMF9X9pSM3gVXDjLBq14BUfZWSGKfmmR1kTlg953RaIZehfc8fQuoAiW+SRO6bJsP+59mv1tsH8vwKghg=="], + + "ua-parser-js": ["ua-parser-js@1.0.41", "", { "bin": { "ua-parser-js": "script/cli.js" } }, "sha512-LbBDqdIC5s8iROCUjMbW1f5dJQTEFB1+KO9ogbvlb3nm9n4YHa5p4KTvFPWvh2Hs8gZMBuiB1/8+pdfe/tDPug=="], + + "ufo": ["ufo@1.6.1", "", {}, "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA=="], + + "undici": ["undici@5.29.0", "", { "dependencies": { "@fastify/busboy": "^2.0.0" } }, "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg=="], + + "undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="], + + "unicode-trie": ["unicode-trie@2.0.0", "", { "dependencies": { "pako": "^0.2.5", "tiny-inflate": "^1.0.0" } }, "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ=="], + + "unified": ["unified@11.0.5", "", { "dependencies": { "@types/unist": "^3.0.0", "bail": "^2.0.0", "devlop": "^1.0.0", "extend": "^3.0.0", "is-plain-obj": "^4.0.0", "trough": "^2.0.0", "vfile": "^6.0.0" } }, "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA=="], + + "unist-util-find-after": ["unist-util-find-after@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0" } }, "sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ=="], + + "unist-util-is": ["unist-util-is@6.0.1", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g=="], + + "unist-util-modify-children": ["unist-util-modify-children@4.0.0", "", { "dependencies": { "@types/unist": "^3.0.0", "array-iterate": "^2.0.0" } }, "sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw=="], + + "unist-util-position": ["unist-util-position@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA=="], + + "unist-util-position-from-estree": ["unist-util-position-from-estree@2.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ=="], + + "unist-util-remove": ["unist-util-remove@4.0.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-b4gokeGId57UVRX/eVKej5gXqGlc9+trkORhFJpu9raqZkZhU0zm8Doi05+HaiBsMEIJowL+2WtQ5ItjsngPXg=="], + + "unist-util-remove-position": ["unist-util-remove-position@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-visit": "^5.0.0" } }, "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q=="], + + "unist-util-stringify-position": ["unist-util-stringify-position@4.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ=="], + + "unist-util-visit": ["unist-util-visit@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg=="], + + "unist-util-visit-children": ["unist-util-visit-children@3.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA=="], + + "unist-util-visit-parents": ["unist-util-visit-parents@6.0.2", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0" } }, "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ=="], + + "universal-cookie": ["universal-cookie@7.2.2", "", { "dependencies": { "@types/cookie": "^0.6.0", "cookie": "^0.7.2" } }, "sha512-fMiOcS3TmzP2x5QV26pIH3mvhexLIT0HmPa3V7Q7knRfT9HG6kTwq02HZGLPw0sAOXrAmotElGRvTLCMbJsvxQ=="], + + "universalify": ["universalify@0.2.0", "", {}, "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg=="], + + "unpipe": ["unpipe@1.0.0", "", {}, "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ=="], + + "update-browserslist-db": ["update-browserslist-db@1.1.4", "", { "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" }, "peerDependencies": { "browserslist": ">= 4.21.0" }, "bin": { "update-browserslist-db": "cli.js" } }, "sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A=="], + + "url-parse": ["url-parse@1.5.10", "", { "dependencies": { "querystringify": "^2.1.1", "requires-port": "^1.0.0" } }, "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ=="], + + "use-callback-ref": ["use-callback-ref@1.3.3", "", { "dependencies": { "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg=="], + + "use-isomorphic-layout-effect": ["use-isomorphic-layout-effect@1.2.1", "", { "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-tpZZ+EX0gaghDAiFR37hj5MgY6ZN55kLiPkJsKxBMZ6GZdOSPJXiOzPM984oPYZ5AnehYx5WQp1+ME8I/P/pRA=="], + + "use-sidecar": ["use-sidecar@1.1.3", "", { "dependencies": { "detect-node-es": "^1.1.0", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ=="], + + "use-sync-external-store": ["use-sync-external-store@1.6.0", "", { "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w=="], + + "util-deprecate": ["util-deprecate@1.0.2", "", {}, "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="], + + "uuid": ["uuid@11.1.0", "", { "bin": { "uuid": "dist/esm/bin/uuid" } }, "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A=="], + + "vfile": ["vfile@6.0.3", "", { "dependencies": { "@types/unist": "^3.0.0", "vfile-message": "^4.0.0" } }, "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q=="], + + "vfile-location": ["vfile-location@5.0.3", "", { "dependencies": { "@types/unist": "^3.0.0", "vfile": "^6.0.0" } }, "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg=="], + + "vfile-message": ["vfile-message@4.0.3", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-stringify-position": "^4.0.0" } }, "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw=="], + + "victory-vendor": ["victory-vendor@36.9.2", "", { "dependencies": { "@types/d3-array": "^3.0.3", "@types/d3-ease": "^3.0.0", "@types/d3-interpolate": "^3.0.1", "@types/d3-scale": "^4.0.2", "@types/d3-shape": "^3.1.0", "@types/d3-time": "^3.0.0", "@types/d3-timer": "^3.0.0", "d3-array": "^3.1.6", "d3-ease": "^3.0.1", "d3-interpolate": "^3.0.1", "d3-scale": "^4.0.2", "d3-shape": "^3.1.0", "d3-time": "^3.0.0", "d3-timer": "^3.0.1" } }, "sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ=="], + + "viem": ["viem@2.40.3", "", { "dependencies": { "@noble/curves": "1.9.1", "@noble/hashes": "1.8.0", "@scure/bip32": "1.7.0", "@scure/bip39": "1.6.0", "abitype": "1.1.0", "isows": "1.0.7", "ox": "0.9.6", "ws": "8.18.3" }, "peerDependencies": { "typescript": ">=5.0.4" }, "optionalPeers": ["typescript"] }, "sha512-feYfEpbgjRkZYQpwcgxqkWzjxHI5LSDAjcGetHHwDRuX9BRQHUdV8ohrCosCYpdEhus/RknD3/bOd4qLYVPPuA=="], + + "vscode-jsonrpc": ["vscode-jsonrpc@8.2.0", "", {}, "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA=="], + + "vscode-languageserver": ["vscode-languageserver@9.0.1", "", { "dependencies": { "vscode-languageserver-protocol": "3.17.5" }, "bin": { "installServerIntoExtension": "bin/installServerIntoExtension" } }, "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g=="], + + "vscode-languageserver-protocol": ["vscode-languageserver-protocol@3.17.5", "", { "dependencies": { "vscode-jsonrpc": "8.2.0", "vscode-languageserver-types": "3.17.5" } }, "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg=="], + + "vscode-languageserver-textdocument": ["vscode-languageserver-textdocument@1.0.12", "", {}, "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA=="], + + "vscode-languageserver-types": ["vscode-languageserver-types@3.17.5", "", {}, "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg=="], + + "vscode-uri": ["vscode-uri@3.0.8", "", {}, "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw=="], + + "w3c-xmlserializer": ["w3c-xmlserializer@5.0.0", "", { "dependencies": { "xml-name-validator": "^5.0.0" } }, "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA=="], + + "wcwidth": ["wcwidth@1.0.1", "", { "dependencies": { "defaults": "^1.0.3" } }, "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg=="], + + "web-namespaces": ["web-namespaces@2.0.1", "", {}, "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ=="], + + "webidl-conversions": ["webidl-conversions@7.0.0", "", {}, "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g=="], + + "whatwg-encoding": ["whatwg-encoding@3.1.1", "", { "dependencies": { "iconv-lite": "0.6.3" } }, "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ=="], + + "whatwg-mimetype": ["whatwg-mimetype@4.0.0", "", {}, "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg=="], + + "whatwg-url": ["whatwg-url@14.2.0", "", { "dependencies": { "tr46": "^5.1.0", "webidl-conversions": "^7.0.0" } }, "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw=="], + + "which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], + + "wicked-good-xpath": ["wicked-good-xpath@1.3.0", "", {}, "sha512-Gd9+TUn5nXdwj/hFsPVx5cuHHiF5Bwuc30jZ4+ronF1qHK5O7HD0sgmXWSEgwKquT3ClLoKPVbO6qGwVwLzvAw=="], + + "widest-line": ["widest-line@3.1.0", "", { "dependencies": { "string-width": "^4.0.0" } }, "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg=="], + + "workerpool": ["workerpool@6.5.1", "", {}, "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA=="], + + "wrap-ansi": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="], + + "wrap-ansi-cjs": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="], + + "wrappy": ["wrappy@1.0.2", "", {}, "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="], + + "ws": ["ws@8.18.0", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw=="], + + "xml-name-validator": ["xml-name-validator@5.0.0", "", {}, "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg=="], + + "xmlchars": ["xmlchars@2.2.0", "", {}, "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw=="], + + "xstate": ["xstate@4.38.3", "", {}, "sha512-SH7nAaaPQx57dx6qvfcIgqKRXIh4L0A1iYEqim4s1u7c9VoCgzZc+63FY90AKU4ZzOC2cfJzTnpO4zK7fCUzzw=="], + + "y18n": ["y18n@5.0.8", "", {}, "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="], + + "yaml": ["yaml@2.8.1", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw=="], + + "yargs": ["yargs@16.2.0", "", { "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.0", "y18n": "^5.0.5", "yargs-parser": "^20.2.2" } }, "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw=="], + + "yargs-parser": ["yargs-parser@20.2.9", "", {}, "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w=="], + + "yargs-unparser": ["yargs-unparser@2.0.0", "", { "dependencies": { "camelcase": "^6.0.0", "decamelize": "^4.0.0", "flat": "^5.0.2", "is-plain-obj": "^2.1.0" } }, "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA=="], + + "yocto-queue": ["yocto-queue@1.2.2", "", {}, "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ=="], + + "zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="], + + "zod-validation-error": ["zod-validation-error@3.5.4", "", { "peerDependencies": { "zod": "^3.24.4" } }, "sha512-+hEiRIiPobgyuFlEojnqjJnhFvg4r/i3cqgcm67eehZf/WBaK3g6cD02YU9mtdVxZjv8CzCA9n/Rhrs3yAAvAw=="], + + "zwitch": ["zwitch@2.0.4", "", {}, "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A=="], + + "@antfu/install-pkg/tinyexec": ["tinyexec@1.0.2", "", {}, "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg=="], + + "@asamuzakjp/css-color/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="], + + "@edgeandnode/common/@pinax/graph-networks-registry": ["@pinax/graph-networks-registry@0.6.7", "", {}, "sha512-xogeCEZ50XRMxpBwE3TZjJ8RCO8Guv39gDRrrKtlpDEDEMLm0MzD3A0SQObgj7aF7qTZNRTWzsuvQdxgzw25wQ=="], + + "@edgeandnode/ens/zod": ["zod@4.1.13", "", {}, "sha512-AvvthqfqrAhNH9dnfmrfKzX5upOdjUVJYFqNSlkmGf64gRaTzlPwz99IHYnVs28qYAybvAlBV+H7pn0saFY4Ig=="], + + "@emotion/babel-plugin/escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="], + + "@emotion/babel-plugin/source-map": ["source-map@0.5.7", "", {}, "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ=="], + + "@emotion/is-prop-valid/@emotion/memoize": ["@emotion/memoize@0.7.4", "", {}, "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw=="], + + "@ensdomains/address-encoder/@noble/curves": ["@noble/curves@1.8.2", "", { "dependencies": { "@noble/hashes": "1.7.2" } }, "sha512-vnI7V6lFNe0tLAuJMu+2sX+FcL14TaCWy1qiczg1VwRmPrpQCdq5ESXQMqUc2tluRNf6irBXrWbl1mGN8uaU/g=="], + + "@ensdomains/address-encoder/@noble/hashes": ["@noble/hashes@1.7.2", "", {}, "sha512-biZ0NUSxyjLLqo6KxEJ1b+C2NAx0wtDoFvCaXHGgUkeHzf3Xc1xKumFKREuT7f7DARNZ/slvYUwFG6B0f2b6hQ=="], + + "@ensdomains/content-hash/@ensdomains/address-encoder": ["@ensdomains/address-encoder@1.0.0-rc.3", "", { "dependencies": { "@noble/curves": "^1.2.0", "@noble/hashes": "^1.3.2", "@scure/base": "^1.1.5" } }, "sha512-8o6zH69rObIqDY4PusEWuN9jvVOct+9jj9AOPO7ifc3ev8nmsly0e8TE1sHkhk0iKFbd3DlSsUnJ+yuRWmdLCQ=="], + + "@ensdomains/content-hash/@noble/curves": ["@noble/curves@1.8.2", "", { "dependencies": { "@noble/hashes": "1.7.2" } }, "sha512-vnI7V6lFNe0tLAuJMu+2sX+FcL14TaCWy1qiczg1VwRmPrpQCdq5ESXQMqUc2tluRNf6irBXrWbl1mGN8uaU/g=="], + + "@ensdomains/dnsprovejs/@noble/hashes": ["@noble/hashes@1.7.2", "", {}, "sha512-biZ0NUSxyjLLqo6KxEJ1b+C2NAx0wtDoFvCaXHGgUkeHzf3Xc1xKumFKREuT7f7DARNZ/slvYUwFG6B0f2b6hQ=="], + + "@ensdomains/ensjs/abitype": ["abitype@1.2.0", "", { "peerDependencies": { "typescript": ">=5.0.4", "zod": "^3.22.0 || ^4.0.0" }, "optionalPeers": ["typescript", "zod"] }, "sha512-fD3ROjckUrWsybaSor2AdWxzA0e/DSyV2dA4aYd7bd8orHsoJjl09fOgKfUkTDfk0BsDGBf4NBgu/c7JoS2Npw=="], + + "@ensdomains/ensjs/graphql-request": ["graphql-request@7.1.2", "", { "dependencies": { "@graphql-typed-document-node/core": "^3.2.0" }, "peerDependencies": { "graphql": "14 - 16" } }, "sha512-+XE3iuC55C2di5ZUrB4pjgwe+nIQBuXVIK9J98wrVwojzDW3GMdSBZfxUk8l4j9TieIpjpggclxhNEU9ebGF8w=="], + + "@ethereumjs/util/ethereum-cryptography": ["ethereum-cryptography@2.2.1", "", { "dependencies": { "@noble/curves": "1.4.2", "@noble/hashes": "1.4.0", "@scure/bip32": "1.4.0", "@scure/bip39": "1.3.0" } }, "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg=="], + + "@ethersproject/abi/@ethersproject/keccak256": ["@ethersproject/keccak256@5.8.0", "", { "dependencies": { "@ethersproject/bytes": "^5.8.0", "js-sha3": "0.8.0" } }, "sha512-A1pkKLZSz8pDaQ1ftutZoaN46I6+jvuqugx5KYNeQOPqq+JZ0Txm7dlWesCHB5cndJSu5vP2VKptKf7cksERng=="], + + "@ethersproject/address/@ethersproject/keccak256": ["@ethersproject/keccak256@5.8.0", "", { "dependencies": { "@ethersproject/bytes": "^5.8.0", "js-sha3": "0.8.0" } }, "sha512-A1pkKLZSz8pDaQ1ftutZoaN46I6+jvuqugx5KYNeQOPqq+JZ0Txm7dlWesCHB5cndJSu5vP2VKptKf7cksERng=="], + + "@ethersproject/hash/@ethersproject/keccak256": ["@ethersproject/keccak256@5.8.0", "", { "dependencies": { "@ethersproject/bytes": "^5.8.0", "js-sha3": "0.8.0" } }, "sha512-A1pkKLZSz8pDaQ1ftutZoaN46I6+jvuqugx5KYNeQOPqq+JZ0Txm7dlWesCHB5cndJSu5vP2VKptKf7cksERng=="], + + "@ethersproject/json-wallets/@ethersproject/keccak256": ["@ethersproject/keccak256@5.8.0", "", { "dependencies": { "@ethersproject/bytes": "^5.8.0", "js-sha3": "0.8.0" } }, "sha512-A1pkKLZSz8pDaQ1ftutZoaN46I6+jvuqugx5KYNeQOPqq+JZ0Txm7dlWesCHB5cndJSu5vP2VKptKf7cksERng=="], + + "@ethersproject/solidity/@ethersproject/keccak256": ["@ethersproject/keccak256@5.8.0", "", { "dependencies": { "@ethersproject/bytes": "^5.8.0", "js-sha3": "0.8.0" } }, "sha512-A1pkKLZSz8pDaQ1ftutZoaN46I6+jvuqugx5KYNeQOPqq+JZ0Txm7dlWesCHB5cndJSu5vP2VKptKf7cksERng=="], + + "@ethersproject/transactions/@ethersproject/keccak256": ["@ethersproject/keccak256@5.8.0", "", { "dependencies": { "@ethersproject/bytes": "^5.8.0", "js-sha3": "0.8.0" } }, "sha512-A1pkKLZSz8pDaQ1ftutZoaN46I6+jvuqugx5KYNeQOPqq+JZ0Txm7dlWesCHB5cndJSu5vP2VKptKf7cksERng=="], + + "@ethersproject/wallet/@ethersproject/keccak256": ["@ethersproject/keccak256@5.8.0", "", { "dependencies": { "@ethersproject/bytes": "^5.8.0", "js-sha3": "0.8.0" } }, "sha512-A1pkKLZSz8pDaQ1ftutZoaN46I6+jvuqugx5KYNeQOPqq+JZ0Txm7dlWesCHB5cndJSu5vP2VKptKf7cksERng=="], + + "@figma/code-connect/commander": ["commander@11.1.0", "", {}, "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ=="], + + "@figma/code-connect/zod": ["zod@3.25.58", "", {}, "sha512-DVLmMQzSZwNYzQoMaM3MQWnxr2eq+AtM9Hx3w1/Yl0pH8sLTSjN4jGP7w6f7uand6Hw44tsnSu1hz1AOA6qI2Q=="], + + "@formatjs/ecma402-abstract/@formatjs/intl-localematcher": ["@formatjs/intl-localematcher@0.6.2", "", { "dependencies": { "tslib": "^2.8.0" } }, "sha512-XOMO2Hupl0wdd172Y06h6kLpBz6Dv+J4okPLl4LPtzbr8f66WbIoy4ev98EBuZ6ZK4h5ydTN6XneT4QVpD7cdA=="], + + "@headlessui/react/@floating-ui/react": ["@floating-ui/react@0.26.28", "", { "dependencies": { "@floating-ui/react-dom": "^2.1.2", "@floating-ui/utils": "^0.2.8", "tabbable": "^6.0.0" }, "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "sha512-yORQuuAtVpiRjpMhdc0wJj06b9JFjrYF4qp96j++v2NBpbi6SEGF7donUJ3TMieerQ6qVkAv1tgr7L4r5roTqw=="], + + "@isaacs/cliui/string-width": ["string-width@5.1.2", "", { "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", "strip-ansi": "^7.0.1" } }, "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA=="], + + "@isaacs/cliui/strip-ansi": ["strip-ansi@7.1.2", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA=="], + + "@isaacs/cliui/wrap-ansi": ["wrap-ansi@8.1.0", "", { "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", "strip-ansi": "^7.0.1" } }, "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ=="], + + "@radix-ui/react-alert-dialog/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], + + "@radix-ui/react-collection/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], + + "@radix-ui/react-dialog/@radix-ui/react-portal": ["@radix-ui/react-portal@1.1.9", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ=="], + + "@radix-ui/react-dialog/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], + + "@radix-ui/react-label/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.4", "", { "dependencies": { "@radix-ui/react-slot": "1.2.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg=="], + + "@radix-ui/react-menu/@radix-ui/react-portal": ["@radix-ui/react-portal@1.1.9", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ=="], + + "@radix-ui/react-menu/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], + + "@radix-ui/react-popover/@radix-ui/react-portal": ["@radix-ui/react-portal@1.1.9", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ=="], + + "@radix-ui/react-popover/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], + + "@radix-ui/react-portal/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.4", "", { "dependencies": { "@radix-ui/react-slot": "1.2.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg=="], + + "@radix-ui/react-primitive/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], + + "@radix-ui/react-toast/@radix-ui/react-portal": ["@radix-ui/react-portal@1.1.9", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ=="], + + "@radix-ui/react-tooltip/@radix-ui/react-portal": ["@radix-ui/react-portal@1.1.9", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ=="], + + "@radix-ui/react-tooltip/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], + + "@sentry/core/tslib": ["tslib@1.14.1", "", {}, "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="], + + "@sentry/hub/tslib": ["tslib@1.14.1", "", {}, "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="], + + "@sentry/minimal/tslib": ["tslib@1.14.1", "", {}, "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="], + + "@sentry/node/cookie": ["cookie@0.4.2", "", {}, "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA=="], + + "@sentry/node/https-proxy-agent": ["https-proxy-agent@5.0.1", "", { "dependencies": { "agent-base": "6", "debug": "4" } }, "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA=="], + + "@sentry/node/tslib": ["tslib@1.14.1", "", {}, "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="], + + "@sentry/tracing/tslib": ["tslib@1.14.1", "", {}, "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="], + + "@sentry/utils/tslib": ["tslib@1.14.1", "", {}, "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="], + + "@shikijs/twoslash/@shikijs/core": ["@shikijs/core@1.29.2", "", { "dependencies": { "@shikijs/engine-javascript": "1.29.2", "@shikijs/engine-oniguruma": "1.29.2", "@shikijs/types": "1.29.2", "@shikijs/vscode-textmate": "^10.0.1", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.4" } }, "sha512-vju0lY9r27jJfOY4Z7+Rt/nIOjzJpZ3y+nYpqtUZInVoXQ/TJZcfGnNOGnKjFdVZb8qexiCuSlZRKcGfhhTTZQ=="], + + "@shikijs/twoslash/@shikijs/types": ["@shikijs/types@1.29.2", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.1", "@types/hast": "^3.0.4" } }, "sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw=="], + + "@styled-system/should-forward-prop/@emotion/memoize": ["@emotion/memoize@0.7.5", "", {}, "sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ=="], + + "@ts-morph/common/minimatch": ["minimatch@10.1.1", "", { "dependencies": { "@isaacs/brace-expansion": "^5.0.0" } }, "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ=="], + + "@uniswap/sdk-core/@ethersproject/strings": ["@ethersproject/strings@5.7.0", "", { "dependencies": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/constants": "^5.7.0", "@ethersproject/logger": "^5.7.0" } }, "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg=="], + + "@uniswap/swap-router-contracts/dotenv": ["dotenv@14.3.2", "", {}, "sha512-vwEppIphpFdvaMCaHfCEv9IgwcxMljMw2TnAQBB4VWPvzXQLTb82jwmdOKzlEVUL3gNFT4l4TPKO+Bn+sqcrVQ=="], + + "@uniswap/v3-staker/@openzeppelin/contracts": ["@openzeppelin/contracts@3.4.1-solc-0.7-2", "", {}, "sha512-tAG9LWg8+M2CMu7hIsqHPaTyG4uDzjr6mhvH96LvOpLZZj6tgzTluBt+LsCf1/QaYrlis6pITvpIaIhE+iZB+Q=="], + + "@uniswap/v3-staker/@uniswap/v3-core": ["@uniswap/v3-core@1.0.0", "", {}, "sha512-kSC4djMGKMHj7sLMYVnn61k9nu+lHjMIxgg9CDQT+s2QYLoA56GbSK9Oxr+qJXzzygbkrmuY6cwgP6cW2JXPFA=="], + + "ansi-escapes/type-fest": ["type-fest@0.21.3", "", {}, "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w=="], + + "ansi-styles/color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="], + + "chokidar/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], + + "cosmiconfig/yaml": ["yaml@1.10.2", "", {}, "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg=="], + + "cssstyle/rrweb-cssom": ["rrweb-cssom@0.8.0", "", {}, "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw=="], + + "cytoscape-fcose/cose-base": ["cose-base@2.2.0", "", { "dependencies": { "layout-base": "^2.0.0" } }, "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g=="], + + "d3-dsv/commander": ["commander@7.2.0", "", {}, "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw=="], + + "d3-sankey/d3-array": ["d3-array@2.12.1", "", { "dependencies": { "internmap": "^1.0.0" } }, "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ=="], + + "d3-sankey/d3-shape": ["d3-shape@1.3.7", "", { "dependencies": { "d3-path": "1" } }, "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw=="], + + "elliptic/bn.js": ["bn.js@4.12.2", "", {}, "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw=="], + + "ethereum-cryptography/@noble/hashes": ["@noble/hashes@1.2.0", "", {}, "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ=="], + + "ethereum-cryptography/@scure/bip32": ["@scure/bip32@1.1.5", "", { "dependencies": { "@noble/hashes": "~1.2.0", "@noble/secp256k1": "~1.7.0", "@scure/base": "~1.1.0" } }, "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw=="], + + "ethereum-cryptography/@scure/bip39": ["@scure/bip39@1.1.1", "", { "dependencies": { "@noble/hashes": "~1.2.0", "@scure/base": "~1.1.0" } }, "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg=="], + + "ethers/@ethersproject/keccak256": ["@ethersproject/keccak256@5.8.0", "", { "dependencies": { "@ethersproject/bytes": "^5.8.0", "js-sha3": "0.8.0" } }, "sha512-A1pkKLZSz8pDaQ1ftutZoaN46I6+jvuqugx5KYNeQOPqq+JZ0Txm7dlWesCHB5cndJSu5vP2VKptKf7cksERng=="], + + "fast-glob/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], + + "fs-extra/universalify": ["universalify@0.1.2", "", {}, "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="], + + "glob/minimatch": ["minimatch@10.1.1", "", { "dependencies": { "@isaacs/brace-expansion": "^5.0.0" } }, "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ=="], + + "gray-matter/js-yaml": ["js-yaml@3.14.2", "", { "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg=="], + + "hardhat/boxen": ["boxen@5.1.2", "", { "dependencies": { "ansi-align": "^3.0.0", "camelcase": "^6.2.0", "chalk": "^4.1.0", "cli-boxes": "^2.2.1", "string-width": "^4.2.2", "type-fest": "^0.20.2", "widest-line": "^3.1.0", "wrap-ansi": "^7.0.0" } }, "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ=="], + + "hardhat/chokidar": ["chokidar@4.0.3", "", { "dependencies": { "readdirp": "^4.0.1" } }, "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA=="], + + "hardhat/resolve": ["resolve@1.17.0", "", { "dependencies": { "path-parse": "^1.0.6" } }, "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w=="], + + "hardhat/uuid": ["uuid@8.3.2", "", { "bin": { "uuid": "dist/bin/uuid" } }, "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg=="], + + "hardhat/ws": ["ws@7.5.10", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": "^5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ=="], + + "hast-util-to-parse5/property-information": ["property-information@6.5.0", "", {}, "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig=="], + + "hoist-non-react-statics/react-is": ["react-is@16.13.1", "", {}, "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="], + + "import-fresh/resolve-from": ["resolve-from@4.0.0", "", {}, "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="], + + "katex/commander": ["commander@8.3.0", "", {}, "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww=="], + + "local-pkg/pkg-types": ["pkg-types@2.3.0", "", { "dependencies": { "confbox": "^0.2.2", "exsolve": "^1.0.7", "pathe": "^2.0.3" } }, "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig=="], + + "mermaid/stylis": ["stylis@4.3.6", "", {}, "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ=="], + + "micro-eth-signer/@noble/curves": ["@noble/curves@1.8.2", "", { "dependencies": { "@noble/hashes": "1.7.2" } }, "sha512-vnI7V6lFNe0tLAuJMu+2sX+FcL14TaCWy1qiczg1VwRmPrpQCdq5ESXQMqUc2tluRNf6irBXrWbl1mGN8uaU/g=="], + + "micro-eth-signer/@noble/hashes": ["@noble/hashes@1.7.2", "", {}, "sha512-biZ0NUSxyjLLqo6KxEJ1b+C2NAx0wtDoFvCaXHGgUkeHzf3Xc1xKumFKREuT7f7DARNZ/slvYUwFG6B0f2b6hQ=="], + + "mocha/escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="], + + "mocha/glob": ["glob@8.1.0", "", { "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^5.0.1", "once": "^1.3.0" } }, "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ=="], + + "mocha/minimatch": ["minimatch@5.1.6", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g=="], + + "mocha/supports-color": ["supports-color@8.1.1", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q=="], + + "next/postcss": ["postcss@8.4.31", "", { "dependencies": { "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" } }, "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ=="], + + "next-sitemap/@next/env": ["@next/env@13.5.11", "", {}, "sha512-fbb2C7HChgM7CemdCY+y3N1n8pcTKdqtQLbC7/EQtPdLvlMUT9JX/dBYl8MMZAtYG4uVMyPFHXckb68q/NRwqg=="], + + "nextra/shiki": ["shiki@1.29.2", "", { "dependencies": { "@shikijs/core": "1.29.2", "@shikijs/engine-javascript": "1.29.2", "@shikijs/engine-oniguruma": "1.29.2", "@shikijs/langs": "1.29.2", "@shikijs/themes": "1.29.2", "@shikijs/types": "1.29.2", "@shikijs/vscode-textmate": "^10.0.1", "@types/hast": "^3.0.4" } }, "sha512-njXuliz/cP+67jU2hukkxCNuH1yUi4QfdZZY+sMr5PPrIyXSu5iTb/qYC4BiWWB0vZ+7TbdvYUCeL23zpwCfbg=="], + + "npm-run-path/path-key": ["path-key@4.0.0", "", {}, "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ=="], + + "ox/@adraffy/ens-normalize": ["@adraffy/ens-normalize@1.11.1", "", {}, "sha512-nhCBV3quEgesuf7c7KYfperqSS14T8bYuvJ8PcLJp6znkZpFc0AuW4qBtr8eKVyPPe/8RSr7sglCWPU5eaxwKQ=="], + + "ox/abitype": ["abitype@1.2.0", "", { "peerDependencies": { "typescript": ">=5.0.4", "zod": "^3.22.0 || ^4.0.0" }, "optionalPeers": ["typescript", "zod"] }, "sha512-fD3ROjckUrWsybaSor2AdWxzA0e/DSyV2dA4aYd7bd8orHsoJjl09fOgKfUkTDfk0BsDGBf4NBgu/c7JoS2Npw=="], + + "ox/eventemitter3": ["eventemitter3@5.0.1", "", {}, "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA=="], + + "p-locate/p-limit": ["p-limit@3.1.0", "", { "dependencies": { "yocto-queue": "^0.1.0" } }, "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="], + + "parse-entities/@types/unist": ["@types/unist@2.0.11", "", {}, "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="], + + "prop-types/react-is": ["react-is@16.13.1", "", {}, "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="], + + "raw-body/iconv-lite": ["iconv-lite@0.4.24", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3" } }, "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA=="], + + "rehype-pretty-code/shiki": ["shiki@1.29.2", "", { "dependencies": { "@shikijs/core": "1.29.2", "@shikijs/engine-javascript": "1.29.2", "@shikijs/engine-oniguruma": "1.29.2", "@shikijs/langs": "1.29.2", "@shikijs/themes": "1.29.2", "@shikijs/types": "1.29.2", "@shikijs/vscode-textmate": "^10.0.1", "@types/hast": "^3.0.4" } }, "sha512-njXuliz/cP+67jU2hukkxCNuH1yUi4QfdZZY+sMr5PPrIyXSu5iTb/qYC4BiWWB0vZ+7TbdvYUCeL23zpwCfbg=="], + + "remark-reading-time/estree-util-is-identifier-name": ["estree-util-is-identifier-name@2.1.0", "", {}, "sha512-bEN9VHRyXAUOjkKVQVvArFym08BTWB0aJPppZZr0UNyAqWsLaVfAqP7hbaTJjzHifmB5ebnR8Wm7r7yGN/HonQ=="], + + "remark-reading-time/unist-util-visit": ["unist-util-visit@3.1.0", "", { "dependencies": { "@types/unist": "^2.0.0", "unist-util-is": "^5.0.0", "unist-util-visit-parents": "^4.0.0" } }, "sha512-Szoh+R/Ll68QWAyQyZZpQzZQm2UPbxibDvaY8Xc9SUtYgPsDzx5AWSk++UUt2hJuow8mvwR+rG+LQLw+KsuAKA=="], + + "restore-cursor/onetime": ["onetime@5.1.2", "", { "dependencies": { "mimic-fn": "^2.1.0" } }, "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg=="], + + "restore-cursor/signal-exit": ["signal-exit@3.0.7", "", {}, "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="], + + "solc/commander": ["commander@8.3.0", "", {}, "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww=="], + + "solc/semver": ["semver@5.7.2", "", { "bin": { "semver": "bin/semver" } }, "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g=="], + + "source-map-support/source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], + + "speech-rule-engine/commander": ["commander@13.1.0", "", {}, "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw=="], + + "stack-generator/stackframe": ["stackframe@1.3.4", "", {}, "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw=="], + + "stacktrace-gps/source-map": ["source-map@0.5.6", "", {}, "sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA=="], + + "stacktrace-parser/type-fest": ["type-fest@0.7.1", "", {}, "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg=="], + + "tinyglobby/picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="], + + "title/chalk": ["chalk@5.6.2", "", {}, "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA=="], + + "tsup/chokidar": ["chokidar@4.0.3", "", { "dependencies": { "readdirp": "^4.0.1" } }, "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA=="], + + "tsx/esbuild": ["esbuild@0.25.12", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.12", "@esbuild/android-arm": "0.25.12", "@esbuild/android-arm64": "0.25.12", "@esbuild/android-x64": "0.25.12", "@esbuild/darwin-arm64": "0.25.12", "@esbuild/darwin-x64": "0.25.12", "@esbuild/freebsd-arm64": "0.25.12", "@esbuild/freebsd-x64": "0.25.12", "@esbuild/linux-arm": "0.25.12", "@esbuild/linux-arm64": "0.25.12", "@esbuild/linux-ia32": "0.25.12", "@esbuild/linux-loong64": "0.25.12", "@esbuild/linux-mips64el": "0.25.12", "@esbuild/linux-ppc64": "0.25.12", "@esbuild/linux-riscv64": "0.25.12", "@esbuild/linux-s390x": "0.25.12", "@esbuild/linux-x64": "0.25.12", "@esbuild/netbsd-arm64": "0.25.12", "@esbuild/netbsd-x64": "0.25.12", "@esbuild/openbsd-arm64": "0.25.12", "@esbuild/openbsd-x64": "0.25.12", "@esbuild/openharmony-arm64": "0.25.12", "@esbuild/sunos-x64": "0.25.12", "@esbuild/win32-arm64": "0.25.12", "@esbuild/win32-ia32": "0.25.12", "@esbuild/win32-x64": "0.25.12" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg=="], + + "unicode-trie/pako": ["pako@0.2.9", "", {}, "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA=="], + + "viem/ws": ["ws@8.18.3", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg=="], + + "yargs-unparser/is-plain-obj": ["is-plain-obj@2.1.0", "", {}, "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA=="], + + "@ensdomains/content-hash/@ensdomains/address-encoder/@noble/hashes": ["@noble/hashes@1.7.2", "", {}, "sha512-biZ0NUSxyjLLqo6KxEJ1b+C2NAx0wtDoFvCaXHGgUkeHzf3Xc1xKumFKREuT7f7DARNZ/slvYUwFG6B0f2b6hQ=="], + + "@ensdomains/content-hash/@noble/curves/@noble/hashes": ["@noble/hashes@1.7.2", "", {}, "sha512-biZ0NUSxyjLLqo6KxEJ1b+C2NAx0wtDoFvCaXHGgUkeHzf3Xc1xKumFKREuT7f7DARNZ/slvYUwFG6B0f2b6hQ=="], + + "@ethereumjs/util/ethereum-cryptography/@noble/curves": ["@noble/curves@1.4.2", "", { "dependencies": { "@noble/hashes": "1.4.0" } }, "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw=="], + + "@ethereumjs/util/ethereum-cryptography/@noble/hashes": ["@noble/hashes@1.4.0", "", {}, "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg=="], + + "@ethereumjs/util/ethereum-cryptography/@scure/bip32": ["@scure/bip32@1.4.0", "", { "dependencies": { "@noble/curves": "~1.4.0", "@noble/hashes": "~1.4.0", "@scure/base": "~1.1.6" } }, "sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg=="], + + "@ethereumjs/util/ethereum-cryptography/@scure/bip39": ["@scure/bip39@1.3.0", "", { "dependencies": { "@noble/hashes": "~1.4.0", "@scure/base": "~1.1.6" } }, "sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ=="], + + "@isaacs/cliui/string-width/emoji-regex": ["emoji-regex@9.2.2", "", {}, "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="], + + "@isaacs/cliui/strip-ansi/ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], + + "@isaacs/cliui/wrap-ansi/ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], + + "@sentry/node/https-proxy-agent/agent-base": ["agent-base@6.0.2", "", { "dependencies": { "debug": "4" } }, "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ=="], + + "@shikijs/twoslash/@shikijs/core/@shikijs/engine-javascript": ["@shikijs/engine-javascript@1.29.2", "", { "dependencies": { "@shikijs/types": "1.29.2", "@shikijs/vscode-textmate": "^10.0.1", "oniguruma-to-es": "^2.2.0" } }, "sha512-iNEZv4IrLYPv64Q6k7EPpOCE/nuvGiKl7zxdq0WFuRPF5PAE9PRo2JGq/d8crLusM59BRemJ4eOqrFrC4wiQ+A=="], + + "@shikijs/twoslash/@shikijs/core/@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@1.29.2", "", { "dependencies": { "@shikijs/types": "1.29.2", "@shikijs/vscode-textmate": "^10.0.1" } }, "sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA=="], + + "ansi-styles/color-convert/color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="], + + "cytoscape-fcose/cose-base/layout-base": ["layout-base@2.0.1", "", {}, "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg=="], + + "d3-sankey/d3-array/internmap": ["internmap@1.0.1", "", {}, "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw=="], + + "d3-sankey/d3-shape/d3-path": ["d3-path@1.0.9", "", {}, "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg=="], + + "ethereum-cryptography/@scure/bip32/@scure/base": ["@scure/base@1.1.9", "", {}, "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg=="], + + "ethereum-cryptography/@scure/bip39/@scure/base": ["@scure/base@1.1.9", "", {}, "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg=="], + + "gray-matter/js-yaml/argparse": ["argparse@1.0.10", "", { "dependencies": { "sprintf-js": "~1.0.2" } }, "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg=="], + + "hardhat/chokidar/readdirp": ["readdirp@4.1.2", "", {}, "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg=="], + + "local-pkg/pkg-types/confbox": ["confbox@0.2.2", "", {}, "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ=="], + + "nextra/shiki/@shikijs/core": ["@shikijs/core@1.29.2", "", { "dependencies": { "@shikijs/engine-javascript": "1.29.2", "@shikijs/engine-oniguruma": "1.29.2", "@shikijs/types": "1.29.2", "@shikijs/vscode-textmate": "^10.0.1", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.4" } }, "sha512-vju0lY9r27jJfOY4Z7+Rt/nIOjzJpZ3y+nYpqtUZInVoXQ/TJZcfGnNOGnKjFdVZb8qexiCuSlZRKcGfhhTTZQ=="], + + "nextra/shiki/@shikijs/engine-javascript": ["@shikijs/engine-javascript@1.29.2", "", { "dependencies": { "@shikijs/types": "1.29.2", "@shikijs/vscode-textmate": "^10.0.1", "oniguruma-to-es": "^2.2.0" } }, "sha512-iNEZv4IrLYPv64Q6k7EPpOCE/nuvGiKl7zxdq0WFuRPF5PAE9PRo2JGq/d8crLusM59BRemJ4eOqrFrC4wiQ+A=="], + + "nextra/shiki/@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@1.29.2", "", { "dependencies": { "@shikijs/types": "1.29.2", "@shikijs/vscode-textmate": "^10.0.1" } }, "sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA=="], + + "nextra/shiki/@shikijs/langs": ["@shikijs/langs@1.29.2", "", { "dependencies": { "@shikijs/types": "1.29.2" } }, "sha512-FIBA7N3LZ+223U7cJDUYd5shmciFQlYkFXlkKVaHsCPgfVLiO+e12FmQE6Tf9vuyEsFe3dIl8qGWKXgEHL9wmQ=="], + + "nextra/shiki/@shikijs/themes": ["@shikijs/themes@1.29.2", "", { "dependencies": { "@shikijs/types": "1.29.2" } }, "sha512-i9TNZlsq4uoyqSbluIcZkmPL9Bfi3djVxRnofUHwvx/h6SRW3cwgBC5SML7vsDcWyukY0eCzVN980rqP6qNl9g=="], + + "nextra/shiki/@shikijs/types": ["@shikijs/types@1.29.2", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.1", "@types/hast": "^3.0.4" } }, "sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw=="], + + "p-locate/p-limit/yocto-queue": ["yocto-queue@0.1.0", "", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="], + + "rehype-pretty-code/shiki/@shikijs/core": ["@shikijs/core@1.29.2", "", { "dependencies": { "@shikijs/engine-javascript": "1.29.2", "@shikijs/engine-oniguruma": "1.29.2", "@shikijs/types": "1.29.2", "@shikijs/vscode-textmate": "^10.0.1", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.4" } }, "sha512-vju0lY9r27jJfOY4Z7+Rt/nIOjzJpZ3y+nYpqtUZInVoXQ/TJZcfGnNOGnKjFdVZb8qexiCuSlZRKcGfhhTTZQ=="], + + "rehype-pretty-code/shiki/@shikijs/engine-javascript": ["@shikijs/engine-javascript@1.29.2", "", { "dependencies": { "@shikijs/types": "1.29.2", "@shikijs/vscode-textmate": "^10.0.1", "oniguruma-to-es": "^2.2.0" } }, "sha512-iNEZv4IrLYPv64Q6k7EPpOCE/nuvGiKl7zxdq0WFuRPF5PAE9PRo2JGq/d8crLusM59BRemJ4eOqrFrC4wiQ+A=="], + + "rehype-pretty-code/shiki/@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@1.29.2", "", { "dependencies": { "@shikijs/types": "1.29.2", "@shikijs/vscode-textmate": "^10.0.1" } }, "sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA=="], + + "rehype-pretty-code/shiki/@shikijs/langs": ["@shikijs/langs@1.29.2", "", { "dependencies": { "@shikijs/types": "1.29.2" } }, "sha512-FIBA7N3LZ+223U7cJDUYd5shmciFQlYkFXlkKVaHsCPgfVLiO+e12FmQE6Tf9vuyEsFe3dIl8qGWKXgEHL9wmQ=="], + + "rehype-pretty-code/shiki/@shikijs/themes": ["@shikijs/themes@1.29.2", "", { "dependencies": { "@shikijs/types": "1.29.2" } }, "sha512-i9TNZlsq4uoyqSbluIcZkmPL9Bfi3djVxRnofUHwvx/h6SRW3cwgBC5SML7vsDcWyukY0eCzVN980rqP6qNl9g=="], + + "rehype-pretty-code/shiki/@shikijs/types": ["@shikijs/types@1.29.2", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.1", "@types/hast": "^3.0.4" } }, "sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw=="], + + "remark-reading-time/unist-util-visit/@types/unist": ["@types/unist@2.0.11", "", {}, "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="], + + "remark-reading-time/unist-util-visit/unist-util-is": ["unist-util-is@5.2.1", "", { "dependencies": { "@types/unist": "^2.0.0" } }, "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw=="], + + "remark-reading-time/unist-util-visit/unist-util-visit-parents": ["unist-util-visit-parents@4.1.1", "", { "dependencies": { "@types/unist": "^2.0.0", "unist-util-is": "^5.0.0" } }, "sha512-1xAFJXAKpnnJl8G7K5KgU7FY55y3GcLIXqkzUj5QF/QVP7biUm0K0O2oqVkYsdjzJKifYeWn9+o6piAK2hGSHw=="], + + "restore-cursor/onetime/mimic-fn": ["mimic-fn@2.1.0", "", {}, "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="], + + "tsup/chokidar/readdirp": ["readdirp@4.1.2", "", {}, "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg=="], + + "tsx/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.12", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA=="], + + "tsx/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.25.12", "", { "os": "android", "cpu": "arm" }, "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg=="], + + "tsx/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.12", "", { "os": "android", "cpu": "arm64" }, "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg=="], + + "tsx/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.25.12", "", { "os": "android", "cpu": "x64" }, "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg=="], + + "tsx/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.25.12", "", { "os": "darwin", "cpu": "arm64" }, "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg=="], + + "tsx/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.25.12", "", { "os": "darwin", "cpu": "x64" }, "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA=="], + + "tsx/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.25.12", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg=="], + + "tsx/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.25.12", "", { "os": "freebsd", "cpu": "x64" }, "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ=="], + + "tsx/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.25.12", "", { "os": "linux", "cpu": "arm" }, "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw=="], + + "tsx/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.25.12", "", { "os": "linux", "cpu": "arm64" }, "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ=="], + + "tsx/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.25.12", "", { "os": "linux", "cpu": "ia32" }, "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA=="], + + "tsx/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng=="], + + "tsx/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw=="], + + "tsx/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.25.12", "", { "os": "linux", "cpu": "ppc64" }, "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA=="], + + "tsx/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w=="], + + "tsx/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.25.12", "", { "os": "linux", "cpu": "s390x" }, "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg=="], + + "tsx/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.25.12", "", { "os": "linux", "cpu": "x64" }, "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw=="], + + "tsx/esbuild/@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.25.12", "", { "os": "none", "cpu": "arm64" }, "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg=="], + + "tsx/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.25.12", "", { "os": "none", "cpu": "x64" }, "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ=="], + + "tsx/esbuild/@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.25.12", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A=="], + + "tsx/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.25.12", "", { "os": "openbsd", "cpu": "x64" }, "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw=="], + + "tsx/esbuild/@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.25.12", "", { "os": "none", "cpu": "arm64" }, "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg=="], + + "tsx/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.25.12", "", { "os": "sunos", "cpu": "x64" }, "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w=="], + + "tsx/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.25.12", "", { "os": "win32", "cpu": "arm64" }, "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg=="], + + "tsx/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.25.12", "", { "os": "win32", "cpu": "ia32" }, "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ=="], + + "tsx/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.12", "", { "os": "win32", "cpu": "x64" }, "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA=="], + + "@ethereumjs/util/ethereum-cryptography/@scure/bip32/@scure/base": ["@scure/base@1.1.9", "", {}, "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg=="], + + "@ethereumjs/util/ethereum-cryptography/@scure/bip39/@scure/base": ["@scure/base@1.1.9", "", {}, "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg=="], + + "@shikijs/twoslash/@shikijs/core/@shikijs/engine-javascript/oniguruma-to-es": ["oniguruma-to-es@2.3.0", "", { "dependencies": { "emoji-regex-xs": "^1.0.0", "regex": "^5.1.1", "regex-recursion": "^5.1.1" } }, "sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g=="], + + "nextra/shiki/@shikijs/engine-javascript/oniguruma-to-es": ["oniguruma-to-es@2.3.0", "", { "dependencies": { "emoji-regex-xs": "^1.0.0", "regex": "^5.1.1", "regex-recursion": "^5.1.1" } }, "sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g=="], + + "rehype-pretty-code/shiki/@shikijs/engine-javascript/oniguruma-to-es": ["oniguruma-to-es@2.3.0", "", { "dependencies": { "emoji-regex-xs": "^1.0.0", "regex": "^5.1.1", "regex-recursion": "^5.1.1" } }, "sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g=="], + + "@shikijs/twoslash/@shikijs/core/@shikijs/engine-javascript/oniguruma-to-es/regex": ["regex@5.1.1", "", { "dependencies": { "regex-utilities": "^2.3.0" } }, "sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw=="], + + "@shikijs/twoslash/@shikijs/core/@shikijs/engine-javascript/oniguruma-to-es/regex-recursion": ["regex-recursion@5.1.1", "", { "dependencies": { "regex": "^5.1.1", "regex-utilities": "^2.3.0" } }, "sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w=="], + + "nextra/shiki/@shikijs/engine-javascript/oniguruma-to-es/regex": ["regex@5.1.1", "", { "dependencies": { "regex-utilities": "^2.3.0" } }, "sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw=="], + + "nextra/shiki/@shikijs/engine-javascript/oniguruma-to-es/regex-recursion": ["regex-recursion@5.1.1", "", { "dependencies": { "regex": "^5.1.1", "regex-utilities": "^2.3.0" } }, "sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w=="], + + "rehype-pretty-code/shiki/@shikijs/engine-javascript/oniguruma-to-es/regex": ["regex@5.1.1", "", { "dependencies": { "regex-utilities": "^2.3.0" } }, "sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw=="], + + "rehype-pretty-code/shiki/@shikijs/engine-javascript/oniguruma-to-es/regex-recursion": ["regex-recursion@5.1.1", "", { "dependencies": { "regex": "^5.1.1", "regex-utilities": "^2.3.0" } }, "sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w=="], + } +} diff --git a/website/src/components/CodeTabs.tsx b/website/src/components/CodeTabs.tsx new file mode 100644 index 000000000000..72655067cd8a --- /dev/null +++ b/website/src/components/CodeTabs.tsx @@ -0,0 +1,38 @@ +import { Children, isValidElement, useState } from 'react'; + +export function CodeTabs({ children, defaultIndex = 0 }: { children: React.ReactNode; defaultIndex?: number }) { + const tabs = Children.toArray(children).filter(isValidElement); + + const [activeIndex, setActiveIndex] = useState(defaultIndex); + + return ( +
+ {/* tab labels */} +
+ {tabs.map((tab: any, i: number) => { + const label = tab.props.label ?? `Tab ${i + 1}`; + return ( + + ); + })} +
+ + {/* active tab contents */} +
{tabs[activeIndex]}
+
+ ); +} + +export function CodeTab({ children }: { children: React.ReactNode }) { + return
{children}
; +} \ No newline at end of file diff --git a/website/src/layout/Layout.tsx b/website/src/layout/Layout.tsx index b1e76d3d29c6..f7973ef790f3 100644 --- a/website/src/layout/Layout.tsx +++ b/website/src/layout/Layout.tsx @@ -5,6 +5,7 @@ import { NextSeo, type NextSeoProps } from 'next-seo' import type { NextraThemeLayoutProps } from 'nextra' import { useFSRoute, useRouter } from 'nextra/hooks' import { MDXProvider } from 'nextra/mdx' +import { CodeTabs, CodeTab } from "@/components/CodeTabs" import { normalizePages } from 'nextra/normalize-pages' import { type ComponentProps, @@ -614,6 +615,8 @@ export default function Layout({ pageOpts, children }: NextraThemeLayoutProps {children} diff --git a/website/src/pages/ar/token-api/_meta.js b/website/src/pages/ar/token-api/_meta.js index a8624da52e7f..853f9dc09031 100644 --- a/website/src/pages/ar/token-api/_meta.js +++ b/website/src/pages/ar/token-api/_meta.js @@ -2,15 +2,15 @@ import titles from './_meta-titles.json' export default { 'quick-start': '', + 'svm-tokens': titles['svm-tokens'] ?? '', + 'svm-dexs': titles['svm-dexs'] ?? '', 'evm-tokens': titles['evm-tokens'] ?? '', 'evm-dexs': titles['evm-dexs'] ?? '', 'evm-nfts': titles['evm-nfts'] ?? '', - 'svm-tokens': titles['svm-tokens'] ?? '', - 'svm-dexs': titles['svm-dexs'] ?? '', 'tvm-tokens': titles['tvm-tokens'] ?? '', 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', 'endpoint-pricing': '', + guides: 'Guides', faq: '', - 'upgrade-to-v1': '', } diff --git a/website/src/pages/ar/token-api/endpoints/_meta.js b/website/src/pages/ar/token-api/endpoints/_meta.js new file mode 100644 index 000000000000..5d419807937c --- /dev/null +++ b/website/src/pages/ar/token-api/endpoints/_meta.js @@ -0,0 +1,4 @@ +export default { + 'endpoint-pricing': '', + 'endpoint-support': '', +} diff --git a/website/src/pages/ar/token-api/endpoint-pricing.mdx b/website/src/pages/ar/token-api/endpoints/endpoint-pricing.mdx similarity index 100% rename from website/src/pages/ar/token-api/endpoint-pricing.mdx rename to website/src/pages/ar/token-api/endpoints/endpoint-pricing.mdx diff --git a/website/src/pages/ar/token-api/endpoints/endpoint-support.msx b/website/src/pages/ar/token-api/endpoints/endpoint-support.msx new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/website/src/pages/ar/token-api/guides/_meta-titles.json b/website/src/pages/ar/token-api/guides/_meta-titles.json new file mode 100644 index 000000000000..cd93dcc0fc0b --- /dev/null +++ b/website/src/pages/ar/token-api/guides/_meta-titles.json @@ -0,0 +1,4 @@ +{ + "gpt": "Create Custom GPTS", + "upgrade-to-v1": "" +} diff --git a/website/src/pages/ar/token-api/guides/_meta.js b/website/src/pages/ar/token-api/guides/_meta.js new file mode 100644 index 000000000000..e5aaaadd78f2 --- /dev/null +++ b/website/src/pages/ar/token-api/guides/_meta.js @@ -0,0 +1,4 @@ +export default { + gpt: '', + 'upgrade-to-v1': '', +} diff --git a/website/src/pages/ar/token-api/guides/gpt.mdx b/website/src/pages/ar/token-api/guides/gpt.mdx new file mode 100644 index 000000000000..564d013dea20 --- /dev/null +++ b/website/src/pages/ar/token-api/guides/gpt.mdx @@ -0,0 +1,121 @@ +--- +title: How the Token API Powers Custom GPTs +sidebarTitle: Create Custom GPTs +--- + +## Overview + +The Token API is a pre-indexed blockchain data service that provides real-time access to token balances, metadata, prices, liquidity, and volume across multiple chains. Developers use its REST endpoints to build wallets, trading dashboards, DeFi analytics, and AI systems without maintaining their own indexing stack. Custom GPTs can connect directly to the Token API's OpenAPI schema. + +The Token API enables developers to build **Custom GPTs** to reason over live blockchain data inside ChatGPT that can reason over and respond with live blockchain data directly inside ChatGPT. + +## What the Token API Enables in Custom GPTs + +When a Custom GPT is wired to the Token API, it gains access to a machine-readable schema and authenticated endpoints. Developers can use this to: + +- **Query real-time onchain data**: Balances, token prices, liquidity, and transaction history. +- **Automate domain-specific tasks**: Portfolio tracking, accounting, reconciliation, and market analysis. +- **Power AI agents with verifiable blockchain context**: Use the same data sources dapps rely on. + +Because the Token API provides a machine-readable schema and authenticated requests, it serves as a structured data layer that enables GPT-5 agents to combine natural language reasoning with live onchain data from The Graph. + +## When to Use the Token API for Custom GPTs + +Use the Token API when your GPT needs repeatable, domain-specific behavior grounded in blockchain data. This is most effective when the GPT performs the same type of task frequently or enforces a workflow you define. For one-off or exploratory questions, standard ChatGPT prompts are sufficient. + +## Choosing a Use Case + +Start with a clear, narrow objective, then expand as needed. Common patterns include: + +- **Accounting GPT**: Onchain accounting, tax tagging, and portfolio reconciliation. +- **Trading GPT**: Liquidity, pricing, and volume analysis for trading strategies. +- **Protocol Tracking GPT**: Real-time monitoring of transaction activity and liquidity pools. + +A focused initial goal such as “Retrieve token balances and prices for a wallet” makes it easier to configure reliable behavior before adding complex workflows. + +## Requirements + +| Requirement | Description | +| ---------------------- | -------------------------------------------------------- | +| ChatGPT 5 | Custom GPT creation requires GPT-5 tier or Pro. | +| Token API Subscription | Sign up at [The Graph Market](https://thegraph.market./) | +| Token API Key | Available in your dashboard as the Authentication JWT. | + +## Setting Up a Custom GPT + +Below is an explanatory outline of what happens during setup. This section provides conceptual understanding. + +### Create Custom GPT + +1. Visit chat.openai.com/gpts in your browser. 2, Click Create (top right). +2. Under Configure (in the top left panel), set up your GPT's personality and scope. + +### Configure Your GPT + +You define the GPT's role, scope, and metadata so it knows what it is designed to do. This includes: + +- **Name and Description**: Helps users discover your GPT. + - For example: **Name**: Token Tracker GPT **Description**: An onchain analytics assistant that retrieves live token balances, prices, and liquidity data using The Graph's Token API. +- **Instructions**: Tells the GPT what tasks it should perform using the Token API. + - For example: You are a blockchain data assistant retrieving onchain token data from The Graph's Token API. Use endpoints to fetch balances, liquidity, and price history across EVM chains. Present results in tables with token symbols, prices, and USD values. +- **Knowledge**: Optional context files such as wallet references, accounting rules, or code snippets. +- **New Action**: At the bottom, click “Create new action” to connect your GPT to the Token API. + +### Connect the Token API + +To enable live blockchain queries inside ChatGPT, you connect the GPT to the Token API through: + +#### Authentication + +1. Set Authentication to API Key → Bearer. +2. Open [The Graph Market](https://thegraph.market./) and copy your Authentication JWT from your dashboard. +3. Paste the token into the ChatGPT prompt where the field shows [HIDDEN]. + +#### Schema + +1. Above the Schema box, click Import from URL. +2. Paste: https://token-api.thegraph.com/openapi +3. Click Import. You'll now see endpoints like: + - `getV1EvmTokens` + - `getV1EvmDexes` + - `getV1EvmBalances` +4. Click Test on one (for example `getV1EvmDexes`) to verify connection. + +##### Privacy + +1. At the bottom, under Privacy, paste: https://pinax.network/en/legal/privacy + +### Privacy + +You can attach a privacy policy URL such as: https://pinax.network/en/legal/privacy + +## Example Prompt Patterns + +These examples help illustrate how a GPT reasons over Token API data. + +### Wallet and Portfolio + +Get the total USD balance for a wallet across multiple chains, returning token name, symbol, balance, and price. + +### Trading Analysis + +Compare USDC and DAI liquidity across Uniswap and Curve. Return the top 5 pools by TVL. + +### Accounting + +List all ERC-20 transfers for this address in the last 30 days. Group by token and total incoming/outgoing volume. + +## Best Practices + +| Tip | Why It Matters | +| --------------------------------- | ---------------------------------------------------------------------- | +| Scope your GPT narrowly first | Simplifies debugging and validates schema integration. | +| Use clear role instructions | Helps the GPT choose the right endpoints and avoid assumptions. | +| Name endpoints explicitly | Improves routing accuracy when fetching balances, prices, or DEX data. | +| Combine with code | Enables custom parsing or logic for complex workflows. | +| Add Subgraph or Substream context | Provides richer analytics when combined with Token API data. | + +## FAQs & Resources + +- Builders Office Hours (October 23, 2025) +- Watch the full session: https://x.com/i/broadcasts/1mrGmBzBarNJy diff --git a/website/src/pages/ar/token-api/upgrade-to-v1.mdx b/website/src/pages/ar/token-api/guides/upgrade-to-v1.mdx similarity index 74% rename from website/src/pages/ar/token-api/upgrade-to-v1.mdx rename to website/src/pages/ar/token-api/guides/upgrade-to-v1.mdx index fbe09101eaa5..e2a7ccf973fa 100644 --- a/website/src/pages/ar/token-api/upgrade-to-v1.mdx +++ b/website/src/pages/ar/token-api/guides/upgrade-to-v1.mdx @@ -16,7 +16,7 @@ Used to describe endpoints supporting Solana (currently the only SVM chain suppo ## 🔑 Breaking Changes Summary -### 1. **API Versioning** +### 1. API Versioning All endpoints now use the `/v1` prefix. @@ -34,7 +34,7 @@ GET /v1/evm/balances GET /v1/evm/nft/items ``` -### 2. **Route Structure Reorganization** +### 2. Route Structure Reorganization #### 2.1 EVM Endpoints @@ -92,7 +92,7 @@ Consolidated under `/v1/svm/*` ## 📝 Parameter Changes -### 3. **Path Parameters → Query Parameters** +### 3. Path Parameters → Query Parameters All path parameters have been moved to query parameters. @@ -112,7 +112,7 @@ GET /v1/evm/holders?network=mainnet&contract=0x... GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 ``` -### 4. **Standardized Parameter Naming** +### 4. Standardized Parameter Naming All query parameters have been standardized to use snake_case naming convention. @@ -136,7 +136,7 @@ All query parameters have been standardized to use snake_case naming convention. **Important:** `matic` network has been renamed to `polygon`. -### 5. **Batched Parameters** +### 5. Batched Parameters Many parameters now support batching - accepting single values or comma-separated strings. @@ -151,17 +151,17 @@ Many parameters now support batching - accepting single values or comma-separate **Examples:** ```console -# Single value +## Single value ?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -# Comma-separated, single parameter +## Comma-separated, single parameter ?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -# Repeated parameter values +## Repeated parameter values ?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 ``` -### 6. **New Parameters** +### 6. New Parameters #### `include_null_balances` @@ -175,7 +175,7 @@ Added to balance endpoints to optionally include zero/null balances. ## 🔄 Response Changes -### 7. **Pagination Changes** +### 7. Pagination Changes Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. @@ -212,21 +212,51 @@ Pagination responses have been simplified. The API no longer computes total resu **Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. -### 8. **Removed Parameters** +### 8. Removed Parameters The following deprecated parameters have been removed: - `orderBy` - Results are now ordered by timestamp/block by default - `orderDirection` - Always descending (newest first) +### 9. Cached Queries + +Queries are now cached on the ClickHouse side for better performance. + +You can specifically request to not use the cache by setting the `Cache-Control` header to `no-cache`. + +#### Example + +**Cache** + +```console +$ curl -s 'https://token-api.thegraph.com/v1/...' | jq .statistics +{ + "bytes_read": 221, + "rows_read": 1, + "elapsed": 0.002212065 +} +``` + +**No cache** + +```console +$ curl -s 'http://localhost:8000/v1/...' --header 'Cache-Control: no-cache' | jq .statistics +{ + "bytes_read": 14621174348, + "rows_read": 223244390, + "elapsed": 0.971064066 +} +``` + ## 📚 Example Migrations -### Old vs New: Get Token Balances +### Example 1: Get Token Balances **Before:** ```bash -GET /balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +GET /token/balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 ``` **After:** @@ -235,7 +265,63 @@ GET /balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet& GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 ``` -### New Feature: Batched Queries +### Example 2: Get NFT Items + +**Before:** + +```bash +GET /nft/items/evm/contract/0xbd3531da5cf5857e7cfaa92426877b022e612cf8/token_id/5712?network_id=mainnet +``` + +**After:** + +```bash +GET /v1/evm/nft/items?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&token_id=5712 +``` + +### Example 3: Get Token Transfers with Time Filter + +**Before:** + +```bash +GET /token/transfers/evm?network_id=mainnet&from=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&startTime=1735689600&endTime=1767225600 +``` + +**After:** + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&start_time=1735689600&end_time=1767225600 +``` + +### Example 4: Get NFT Transfer Activities + +**Before:** + +```bash +GET /nft/activities/evm?network_id=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&anyAddress=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +**After:** + +```bash +GET /v1/evm/nft/transfers?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +### Example 5: Get Pool OHLC Data + +**Before:** + +```bash +GET /token/ohlc/pools/evm/0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640?network_id=mainnet&interval=1h&startTime=1735689600 +``` + +**After:** + +```bash +GET /v1/evm/pools/ohlc?network=mainnet&pool=0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640&interval=1h&start_time=1735689600 +``` + +### Example 6: Batched Query (New Feature) Query balances for multiple contracts in a single request: @@ -243,9 +329,15 @@ Query balances for multiple contracts in a single request: GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 ``` +Query transfers from multiple addresses: + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xabc...,0xdef...,0x123...&start_time=1735689600 +``` + ## ⚠️ Important Notes -1. **Backward Compatibility:** The old endpoints are deprecated and will be removed in the future. Migrate by **Oct 30, 2025**. +1. **Migration Notes:** The old endpoints were deprecated and removed on **October 30, 2025**. Please ensure all integrations have been migrated to the new Token API v1 endpoints. 2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. diff --git a/website/src/pages/ar/token-api/svm-tokens/_meta.js b/website/src/pages/ar/token-api/svm-tokens/_meta.js index 1de31437004c..001e2d43341a 100644 --- a/website/src/pages/ar/token-api/svm-tokens/_meta.js +++ b/website/src/pages/ar/token-api/svm-tokens/_meta.js @@ -1,6 +1,6 @@ export default { - tokens: '', transfers: '', + tokens: '', balances: '', 'balances-native': '', holders: '', diff --git a/website/src/pages/cs/token-api/_meta.js b/website/src/pages/cs/token-api/_meta.js index a8624da52e7f..853f9dc09031 100644 --- a/website/src/pages/cs/token-api/_meta.js +++ b/website/src/pages/cs/token-api/_meta.js @@ -2,15 +2,15 @@ import titles from './_meta-titles.json' export default { 'quick-start': '', + 'svm-tokens': titles['svm-tokens'] ?? '', + 'svm-dexs': titles['svm-dexs'] ?? '', 'evm-tokens': titles['evm-tokens'] ?? '', 'evm-dexs': titles['evm-dexs'] ?? '', 'evm-nfts': titles['evm-nfts'] ?? '', - 'svm-tokens': titles['svm-tokens'] ?? '', - 'svm-dexs': titles['svm-dexs'] ?? '', 'tvm-tokens': titles['tvm-tokens'] ?? '', 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', 'endpoint-pricing': '', + guides: 'Guides', faq: '', - 'upgrade-to-v1': '', } diff --git a/website/src/pages/cs/token-api/endpoints/_meta.js b/website/src/pages/cs/token-api/endpoints/_meta.js new file mode 100644 index 000000000000..5d419807937c --- /dev/null +++ b/website/src/pages/cs/token-api/endpoints/_meta.js @@ -0,0 +1,4 @@ +export default { + 'endpoint-pricing': '', + 'endpoint-support': '', +} diff --git a/website/src/pages/cs/token-api/endpoint-pricing.mdx b/website/src/pages/cs/token-api/endpoints/endpoint-pricing.mdx similarity index 100% rename from website/src/pages/cs/token-api/endpoint-pricing.mdx rename to website/src/pages/cs/token-api/endpoints/endpoint-pricing.mdx diff --git a/website/src/pages/cs/token-api/endpoints/endpoint-support.msx b/website/src/pages/cs/token-api/endpoints/endpoint-support.msx new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/website/src/pages/cs/token-api/guides/_meta-titles.json b/website/src/pages/cs/token-api/guides/_meta-titles.json new file mode 100644 index 000000000000..cd93dcc0fc0b --- /dev/null +++ b/website/src/pages/cs/token-api/guides/_meta-titles.json @@ -0,0 +1,4 @@ +{ + "gpt": "Create Custom GPTS", + "upgrade-to-v1": "" +} diff --git a/website/src/pages/cs/token-api/guides/_meta.js b/website/src/pages/cs/token-api/guides/_meta.js new file mode 100644 index 000000000000..e5aaaadd78f2 --- /dev/null +++ b/website/src/pages/cs/token-api/guides/_meta.js @@ -0,0 +1,4 @@ +export default { + gpt: '', + 'upgrade-to-v1': '', +} diff --git a/website/src/pages/cs/token-api/guides/gpt.mdx b/website/src/pages/cs/token-api/guides/gpt.mdx new file mode 100644 index 000000000000..564d013dea20 --- /dev/null +++ b/website/src/pages/cs/token-api/guides/gpt.mdx @@ -0,0 +1,121 @@ +--- +title: How the Token API Powers Custom GPTs +sidebarTitle: Create Custom GPTs +--- + +## Overview + +The Token API is a pre-indexed blockchain data service that provides real-time access to token balances, metadata, prices, liquidity, and volume across multiple chains. Developers use its REST endpoints to build wallets, trading dashboards, DeFi analytics, and AI systems without maintaining their own indexing stack. Custom GPTs can connect directly to the Token API's OpenAPI schema. + +The Token API enables developers to build **Custom GPTs** to reason over live blockchain data inside ChatGPT that can reason over and respond with live blockchain data directly inside ChatGPT. + +## What the Token API Enables in Custom GPTs + +When a Custom GPT is wired to the Token API, it gains access to a machine-readable schema and authenticated endpoints. Developers can use this to: + +- **Query real-time onchain data**: Balances, token prices, liquidity, and transaction history. +- **Automate domain-specific tasks**: Portfolio tracking, accounting, reconciliation, and market analysis. +- **Power AI agents with verifiable blockchain context**: Use the same data sources dapps rely on. + +Because the Token API provides a machine-readable schema and authenticated requests, it serves as a structured data layer that enables GPT-5 agents to combine natural language reasoning with live onchain data from The Graph. + +## When to Use the Token API for Custom GPTs + +Use the Token API when your GPT needs repeatable, domain-specific behavior grounded in blockchain data. This is most effective when the GPT performs the same type of task frequently or enforces a workflow you define. For one-off or exploratory questions, standard ChatGPT prompts are sufficient. + +## Choosing a Use Case + +Start with a clear, narrow objective, then expand as needed. Common patterns include: + +- **Accounting GPT**: Onchain accounting, tax tagging, and portfolio reconciliation. +- **Trading GPT**: Liquidity, pricing, and volume analysis for trading strategies. +- **Protocol Tracking GPT**: Real-time monitoring of transaction activity and liquidity pools. + +A focused initial goal such as “Retrieve token balances and prices for a wallet” makes it easier to configure reliable behavior before adding complex workflows. + +## Requirements + +| Requirement | Description | +| ---------------------- | -------------------------------------------------------- | +| ChatGPT 5 | Custom GPT creation requires GPT-5 tier or Pro. | +| Token API Subscription | Sign up at [The Graph Market](https://thegraph.market./) | +| Token API Key | Available in your dashboard as the Authentication JWT. | + +## Setting Up a Custom GPT + +Below is an explanatory outline of what happens during setup. This section provides conceptual understanding. + +### Create Custom GPT + +1. Visit chat.openai.com/gpts in your browser. 2, Click Create (top right). +2. Under Configure (in the top left panel), set up your GPT's personality and scope. + +### Configure Your GPT + +You define the GPT's role, scope, and metadata so it knows what it is designed to do. This includes: + +- **Name and Description**: Helps users discover your GPT. + - For example: **Name**: Token Tracker GPT **Description**: An onchain analytics assistant that retrieves live token balances, prices, and liquidity data using The Graph's Token API. +- **Instructions**: Tells the GPT what tasks it should perform using the Token API. + - For example: You are a blockchain data assistant retrieving onchain token data from The Graph's Token API. Use endpoints to fetch balances, liquidity, and price history across EVM chains. Present results in tables with token symbols, prices, and USD values. +- **Knowledge**: Optional context files such as wallet references, accounting rules, or code snippets. +- **New Action**: At the bottom, click “Create new action” to connect your GPT to the Token API. + +### Connect the Token API + +To enable live blockchain queries inside ChatGPT, you connect the GPT to the Token API through: + +#### Authentication + +1. Set Authentication to API Key → Bearer. +2. Open [The Graph Market](https://thegraph.market./) and copy your Authentication JWT from your dashboard. +3. Paste the token into the ChatGPT prompt where the field shows [HIDDEN]. + +#### Schema + +1. Above the Schema box, click Import from URL. +2. Paste: https://token-api.thegraph.com/openapi +3. Click Import. You'll now see endpoints like: + - `getV1EvmTokens` + - `getV1EvmDexes` + - `getV1EvmBalances` +4. Click Test on one (for example `getV1EvmDexes`) to verify connection. + +##### Privacy + +1. At the bottom, under Privacy, paste: https://pinax.network/en/legal/privacy + +### Privacy + +You can attach a privacy policy URL such as: https://pinax.network/en/legal/privacy + +## Example Prompt Patterns + +These examples help illustrate how a GPT reasons over Token API data. + +### Wallet and Portfolio + +Get the total USD balance for a wallet across multiple chains, returning token name, symbol, balance, and price. + +### Trading Analysis + +Compare USDC and DAI liquidity across Uniswap and Curve. Return the top 5 pools by TVL. + +### Accounting + +List all ERC-20 transfers for this address in the last 30 days. Group by token and total incoming/outgoing volume. + +## Best Practices + +| Tip | Why It Matters | +| --------------------------------- | ---------------------------------------------------------------------- | +| Scope your GPT narrowly first | Simplifies debugging and validates schema integration. | +| Use clear role instructions | Helps the GPT choose the right endpoints and avoid assumptions. | +| Name endpoints explicitly | Improves routing accuracy when fetching balances, prices, or DEX data. | +| Combine with code | Enables custom parsing or logic for complex workflows. | +| Add Subgraph or Substream context | Provides richer analytics when combined with Token API data. | + +## FAQs & Resources + +- Builders Office Hours (October 23, 2025) +- Watch the full session: https://x.com/i/broadcasts/1mrGmBzBarNJy diff --git a/website/src/pages/cs/token-api/upgrade-to-v1.mdx b/website/src/pages/cs/token-api/guides/upgrade-to-v1.mdx similarity index 74% rename from website/src/pages/cs/token-api/upgrade-to-v1.mdx rename to website/src/pages/cs/token-api/guides/upgrade-to-v1.mdx index fbe09101eaa5..e2a7ccf973fa 100644 --- a/website/src/pages/cs/token-api/upgrade-to-v1.mdx +++ b/website/src/pages/cs/token-api/guides/upgrade-to-v1.mdx @@ -16,7 +16,7 @@ Used to describe endpoints supporting Solana (currently the only SVM chain suppo ## 🔑 Breaking Changes Summary -### 1. **API Versioning** +### 1. API Versioning All endpoints now use the `/v1` prefix. @@ -34,7 +34,7 @@ GET /v1/evm/balances GET /v1/evm/nft/items ``` -### 2. **Route Structure Reorganization** +### 2. Route Structure Reorganization #### 2.1 EVM Endpoints @@ -92,7 +92,7 @@ Consolidated under `/v1/svm/*` ## 📝 Parameter Changes -### 3. **Path Parameters → Query Parameters** +### 3. Path Parameters → Query Parameters All path parameters have been moved to query parameters. @@ -112,7 +112,7 @@ GET /v1/evm/holders?network=mainnet&contract=0x... GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 ``` -### 4. **Standardized Parameter Naming** +### 4. Standardized Parameter Naming All query parameters have been standardized to use snake_case naming convention. @@ -136,7 +136,7 @@ All query parameters have been standardized to use snake_case naming convention. **Important:** `matic` network has been renamed to `polygon`. -### 5. **Batched Parameters** +### 5. Batched Parameters Many parameters now support batching - accepting single values or comma-separated strings. @@ -151,17 +151,17 @@ Many parameters now support batching - accepting single values or comma-separate **Examples:** ```console -# Single value +## Single value ?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -# Comma-separated, single parameter +## Comma-separated, single parameter ?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -# Repeated parameter values +## Repeated parameter values ?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 ``` -### 6. **New Parameters** +### 6. New Parameters #### `include_null_balances` @@ -175,7 +175,7 @@ Added to balance endpoints to optionally include zero/null balances. ## 🔄 Response Changes -### 7. **Pagination Changes** +### 7. Pagination Changes Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. @@ -212,21 +212,51 @@ Pagination responses have been simplified. The API no longer computes total resu **Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. -### 8. **Removed Parameters** +### 8. Removed Parameters The following deprecated parameters have been removed: - `orderBy` - Results are now ordered by timestamp/block by default - `orderDirection` - Always descending (newest first) +### 9. Cached Queries + +Queries are now cached on the ClickHouse side for better performance. + +You can specifically request to not use the cache by setting the `Cache-Control` header to `no-cache`. + +#### Example + +**Cache** + +```console +$ curl -s 'https://token-api.thegraph.com/v1/...' | jq .statistics +{ + "bytes_read": 221, + "rows_read": 1, + "elapsed": 0.002212065 +} +``` + +**No cache** + +```console +$ curl -s 'http://localhost:8000/v1/...' --header 'Cache-Control: no-cache' | jq .statistics +{ + "bytes_read": 14621174348, + "rows_read": 223244390, + "elapsed": 0.971064066 +} +``` + ## 📚 Example Migrations -### Old vs New: Get Token Balances +### Example 1: Get Token Balances **Before:** ```bash -GET /balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +GET /token/balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 ``` **After:** @@ -235,7 +265,63 @@ GET /balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet& GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 ``` -### New Feature: Batched Queries +### Example 2: Get NFT Items + +**Before:** + +```bash +GET /nft/items/evm/contract/0xbd3531da5cf5857e7cfaa92426877b022e612cf8/token_id/5712?network_id=mainnet +``` + +**After:** + +```bash +GET /v1/evm/nft/items?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&token_id=5712 +``` + +### Example 3: Get Token Transfers with Time Filter + +**Before:** + +```bash +GET /token/transfers/evm?network_id=mainnet&from=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&startTime=1735689600&endTime=1767225600 +``` + +**After:** + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&start_time=1735689600&end_time=1767225600 +``` + +### Example 4: Get NFT Transfer Activities + +**Before:** + +```bash +GET /nft/activities/evm?network_id=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&anyAddress=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +**After:** + +```bash +GET /v1/evm/nft/transfers?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +### Example 5: Get Pool OHLC Data + +**Before:** + +```bash +GET /token/ohlc/pools/evm/0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640?network_id=mainnet&interval=1h&startTime=1735689600 +``` + +**After:** + +```bash +GET /v1/evm/pools/ohlc?network=mainnet&pool=0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640&interval=1h&start_time=1735689600 +``` + +### Example 6: Batched Query (New Feature) Query balances for multiple contracts in a single request: @@ -243,9 +329,15 @@ Query balances for multiple contracts in a single request: GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 ``` +Query transfers from multiple addresses: + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xabc...,0xdef...,0x123...&start_time=1735689600 +``` + ## ⚠️ Important Notes -1. **Backward Compatibility:** The old endpoints are deprecated and will be removed in the future. Migrate by **Oct 30, 2025**. +1. **Migration Notes:** The old endpoints were deprecated and removed on **October 30, 2025**. Please ensure all integrations have been migrated to the new Token API v1 endpoints. 2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. diff --git a/website/src/pages/cs/token-api/svm-tokens/_meta.js b/website/src/pages/cs/token-api/svm-tokens/_meta.js index 1de31437004c..001e2d43341a 100644 --- a/website/src/pages/cs/token-api/svm-tokens/_meta.js +++ b/website/src/pages/cs/token-api/svm-tokens/_meta.js @@ -1,6 +1,6 @@ export default { - tokens: '', transfers: '', + tokens: '', balances: '', 'balances-native': '', holders: '', diff --git a/website/src/pages/de/token-api/_meta.js b/website/src/pages/de/token-api/_meta.js index a8624da52e7f..853f9dc09031 100644 --- a/website/src/pages/de/token-api/_meta.js +++ b/website/src/pages/de/token-api/_meta.js @@ -2,15 +2,15 @@ import titles from './_meta-titles.json' export default { 'quick-start': '', + 'svm-tokens': titles['svm-tokens'] ?? '', + 'svm-dexs': titles['svm-dexs'] ?? '', 'evm-tokens': titles['evm-tokens'] ?? '', 'evm-dexs': titles['evm-dexs'] ?? '', 'evm-nfts': titles['evm-nfts'] ?? '', - 'svm-tokens': titles['svm-tokens'] ?? '', - 'svm-dexs': titles['svm-dexs'] ?? '', 'tvm-tokens': titles['tvm-tokens'] ?? '', 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', 'endpoint-pricing': '', + guides: 'Guides', faq: '', - 'upgrade-to-v1': '', } diff --git a/website/src/pages/de/token-api/endpoints/_meta.js b/website/src/pages/de/token-api/endpoints/_meta.js new file mode 100644 index 000000000000..5d419807937c --- /dev/null +++ b/website/src/pages/de/token-api/endpoints/_meta.js @@ -0,0 +1,4 @@ +export default { + 'endpoint-pricing': '', + 'endpoint-support': '', +} diff --git a/website/src/pages/de/token-api/endpoint-pricing.mdx b/website/src/pages/de/token-api/endpoints/endpoint-pricing.mdx similarity index 100% rename from website/src/pages/de/token-api/endpoint-pricing.mdx rename to website/src/pages/de/token-api/endpoints/endpoint-pricing.mdx diff --git a/website/src/pages/de/token-api/endpoints/endpoint-support.msx b/website/src/pages/de/token-api/endpoints/endpoint-support.msx new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/website/src/pages/de/token-api/guides/_meta-titles.json b/website/src/pages/de/token-api/guides/_meta-titles.json new file mode 100644 index 000000000000..cd93dcc0fc0b --- /dev/null +++ b/website/src/pages/de/token-api/guides/_meta-titles.json @@ -0,0 +1,4 @@ +{ + "gpt": "Create Custom GPTS", + "upgrade-to-v1": "" +} diff --git a/website/src/pages/de/token-api/guides/_meta.js b/website/src/pages/de/token-api/guides/_meta.js new file mode 100644 index 000000000000..e5aaaadd78f2 --- /dev/null +++ b/website/src/pages/de/token-api/guides/_meta.js @@ -0,0 +1,4 @@ +export default { + gpt: '', + 'upgrade-to-v1': '', +} diff --git a/website/src/pages/de/token-api/guides/gpt.mdx b/website/src/pages/de/token-api/guides/gpt.mdx new file mode 100644 index 000000000000..564d013dea20 --- /dev/null +++ b/website/src/pages/de/token-api/guides/gpt.mdx @@ -0,0 +1,121 @@ +--- +title: How the Token API Powers Custom GPTs +sidebarTitle: Create Custom GPTs +--- + +## Overview + +The Token API is a pre-indexed blockchain data service that provides real-time access to token balances, metadata, prices, liquidity, and volume across multiple chains. Developers use its REST endpoints to build wallets, trading dashboards, DeFi analytics, and AI systems without maintaining their own indexing stack. Custom GPTs can connect directly to the Token API's OpenAPI schema. + +The Token API enables developers to build **Custom GPTs** to reason over live blockchain data inside ChatGPT that can reason over and respond with live blockchain data directly inside ChatGPT. + +## What the Token API Enables in Custom GPTs + +When a Custom GPT is wired to the Token API, it gains access to a machine-readable schema and authenticated endpoints. Developers can use this to: + +- **Query real-time onchain data**: Balances, token prices, liquidity, and transaction history. +- **Automate domain-specific tasks**: Portfolio tracking, accounting, reconciliation, and market analysis. +- **Power AI agents with verifiable blockchain context**: Use the same data sources dapps rely on. + +Because the Token API provides a machine-readable schema and authenticated requests, it serves as a structured data layer that enables GPT-5 agents to combine natural language reasoning with live onchain data from The Graph. + +## When to Use the Token API for Custom GPTs + +Use the Token API when your GPT needs repeatable, domain-specific behavior grounded in blockchain data. This is most effective when the GPT performs the same type of task frequently or enforces a workflow you define. For one-off or exploratory questions, standard ChatGPT prompts are sufficient. + +## Choosing a Use Case + +Start with a clear, narrow objective, then expand as needed. Common patterns include: + +- **Accounting GPT**: Onchain accounting, tax tagging, and portfolio reconciliation. +- **Trading GPT**: Liquidity, pricing, and volume analysis for trading strategies. +- **Protocol Tracking GPT**: Real-time monitoring of transaction activity and liquidity pools. + +A focused initial goal such as “Retrieve token balances and prices for a wallet” makes it easier to configure reliable behavior before adding complex workflows. + +## Requirements + +| Requirement | Description | +| ---------------------- | -------------------------------------------------------- | +| ChatGPT 5 | Custom GPT creation requires GPT-5 tier or Pro. | +| Token API Subscription | Sign up at [The Graph Market](https://thegraph.market./) | +| Token API Key | Available in your dashboard as the Authentication JWT. | + +## Setting Up a Custom GPT + +Below is an explanatory outline of what happens during setup. This section provides conceptual understanding. + +### Create Custom GPT + +1. Visit chat.openai.com/gpts in your browser. 2, Click Create (top right). +2. Under Configure (in the top left panel), set up your GPT's personality and scope. + +### Configure Your GPT + +You define the GPT's role, scope, and metadata so it knows what it is designed to do. This includes: + +- **Name and Description**: Helps users discover your GPT. + - For example: **Name**: Token Tracker GPT **Description**: An onchain analytics assistant that retrieves live token balances, prices, and liquidity data using The Graph's Token API. +- **Instructions**: Tells the GPT what tasks it should perform using the Token API. + - For example: You are a blockchain data assistant retrieving onchain token data from The Graph's Token API. Use endpoints to fetch balances, liquidity, and price history across EVM chains. Present results in tables with token symbols, prices, and USD values. +- **Knowledge**: Optional context files such as wallet references, accounting rules, or code snippets. +- **New Action**: At the bottom, click “Create new action” to connect your GPT to the Token API. + +### Connect the Token API + +To enable live blockchain queries inside ChatGPT, you connect the GPT to the Token API through: + +#### Authentication + +1. Set Authentication to API Key → Bearer. +2. Open [The Graph Market](https://thegraph.market./) and copy your Authentication JWT from your dashboard. +3. Paste the token into the ChatGPT prompt where the field shows [HIDDEN]. + +#### Schema + +1. Above the Schema box, click Import from URL. +2. Paste: https://token-api.thegraph.com/openapi +3. Click Import. You'll now see endpoints like: + - `getV1EvmTokens` + - `getV1EvmDexes` + - `getV1EvmBalances` +4. Click Test on one (for example `getV1EvmDexes`) to verify connection. + +##### Privacy + +1. At the bottom, under Privacy, paste: https://pinax.network/en/legal/privacy + +### Privacy + +You can attach a privacy policy URL such as: https://pinax.network/en/legal/privacy + +## Example Prompt Patterns + +These examples help illustrate how a GPT reasons over Token API data. + +### Wallet and Portfolio + +Get the total USD balance for a wallet across multiple chains, returning token name, symbol, balance, and price. + +### Trading Analysis + +Compare USDC and DAI liquidity across Uniswap and Curve. Return the top 5 pools by TVL. + +### Accounting + +List all ERC-20 transfers for this address in the last 30 days. Group by token and total incoming/outgoing volume. + +## Best Practices + +| Tip | Why It Matters | +| --------------------------------- | ---------------------------------------------------------------------- | +| Scope your GPT narrowly first | Simplifies debugging and validates schema integration. | +| Use clear role instructions | Helps the GPT choose the right endpoints and avoid assumptions. | +| Name endpoints explicitly | Improves routing accuracy when fetching balances, prices, or DEX data. | +| Combine with code | Enables custom parsing or logic for complex workflows. | +| Add Subgraph or Substream context | Provides richer analytics when combined with Token API data. | + +## FAQs & Resources + +- Builders Office Hours (October 23, 2025) +- Watch the full session: https://x.com/i/broadcasts/1mrGmBzBarNJy diff --git a/website/src/pages/de/token-api/upgrade-to-v1.mdx b/website/src/pages/de/token-api/guides/upgrade-to-v1.mdx similarity index 74% rename from website/src/pages/de/token-api/upgrade-to-v1.mdx rename to website/src/pages/de/token-api/guides/upgrade-to-v1.mdx index fbe09101eaa5..e2a7ccf973fa 100644 --- a/website/src/pages/de/token-api/upgrade-to-v1.mdx +++ b/website/src/pages/de/token-api/guides/upgrade-to-v1.mdx @@ -16,7 +16,7 @@ Used to describe endpoints supporting Solana (currently the only SVM chain suppo ## 🔑 Breaking Changes Summary -### 1. **API Versioning** +### 1. API Versioning All endpoints now use the `/v1` prefix. @@ -34,7 +34,7 @@ GET /v1/evm/balances GET /v1/evm/nft/items ``` -### 2. **Route Structure Reorganization** +### 2. Route Structure Reorganization #### 2.1 EVM Endpoints @@ -92,7 +92,7 @@ Consolidated under `/v1/svm/*` ## 📝 Parameter Changes -### 3. **Path Parameters → Query Parameters** +### 3. Path Parameters → Query Parameters All path parameters have been moved to query parameters. @@ -112,7 +112,7 @@ GET /v1/evm/holders?network=mainnet&contract=0x... GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 ``` -### 4. **Standardized Parameter Naming** +### 4. Standardized Parameter Naming All query parameters have been standardized to use snake_case naming convention. @@ -136,7 +136,7 @@ All query parameters have been standardized to use snake_case naming convention. **Important:** `matic` network has been renamed to `polygon`. -### 5. **Batched Parameters** +### 5. Batched Parameters Many parameters now support batching - accepting single values or comma-separated strings. @@ -151,17 +151,17 @@ Many parameters now support batching - accepting single values or comma-separate **Examples:** ```console -# Single value +## Single value ?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -# Comma-separated, single parameter +## Comma-separated, single parameter ?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -# Repeated parameter values +## Repeated parameter values ?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 ``` -### 6. **New Parameters** +### 6. New Parameters #### `include_null_balances` @@ -175,7 +175,7 @@ Added to balance endpoints to optionally include zero/null balances. ## 🔄 Response Changes -### 7. **Pagination Changes** +### 7. Pagination Changes Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. @@ -212,21 +212,51 @@ Pagination responses have been simplified. The API no longer computes total resu **Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. -### 8. **Removed Parameters** +### 8. Removed Parameters The following deprecated parameters have been removed: - `orderBy` - Results are now ordered by timestamp/block by default - `orderDirection` - Always descending (newest first) +### 9. Cached Queries + +Queries are now cached on the ClickHouse side for better performance. + +You can specifically request to not use the cache by setting the `Cache-Control` header to `no-cache`. + +#### Example + +**Cache** + +```console +$ curl -s 'https://token-api.thegraph.com/v1/...' | jq .statistics +{ + "bytes_read": 221, + "rows_read": 1, + "elapsed": 0.002212065 +} +``` + +**No cache** + +```console +$ curl -s 'http://localhost:8000/v1/...' --header 'Cache-Control: no-cache' | jq .statistics +{ + "bytes_read": 14621174348, + "rows_read": 223244390, + "elapsed": 0.971064066 +} +``` + ## 📚 Example Migrations -### Old vs New: Get Token Balances +### Example 1: Get Token Balances **Before:** ```bash -GET /balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +GET /token/balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 ``` **After:** @@ -235,7 +265,63 @@ GET /balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet& GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 ``` -### New Feature: Batched Queries +### Example 2: Get NFT Items + +**Before:** + +```bash +GET /nft/items/evm/contract/0xbd3531da5cf5857e7cfaa92426877b022e612cf8/token_id/5712?network_id=mainnet +``` + +**After:** + +```bash +GET /v1/evm/nft/items?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&token_id=5712 +``` + +### Example 3: Get Token Transfers with Time Filter + +**Before:** + +```bash +GET /token/transfers/evm?network_id=mainnet&from=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&startTime=1735689600&endTime=1767225600 +``` + +**After:** + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&start_time=1735689600&end_time=1767225600 +``` + +### Example 4: Get NFT Transfer Activities + +**Before:** + +```bash +GET /nft/activities/evm?network_id=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&anyAddress=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +**After:** + +```bash +GET /v1/evm/nft/transfers?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +### Example 5: Get Pool OHLC Data + +**Before:** + +```bash +GET /token/ohlc/pools/evm/0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640?network_id=mainnet&interval=1h&startTime=1735689600 +``` + +**After:** + +```bash +GET /v1/evm/pools/ohlc?network=mainnet&pool=0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640&interval=1h&start_time=1735689600 +``` + +### Example 6: Batched Query (New Feature) Query balances for multiple contracts in a single request: @@ -243,9 +329,15 @@ Query balances for multiple contracts in a single request: GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 ``` +Query transfers from multiple addresses: + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xabc...,0xdef...,0x123...&start_time=1735689600 +``` + ## ⚠️ Important Notes -1. **Backward Compatibility:** The old endpoints are deprecated and will be removed in the future. Migrate by **Oct 30, 2025**. +1. **Migration Notes:** The old endpoints were deprecated and removed on **October 30, 2025**. Please ensure all integrations have been migrated to the new Token API v1 endpoints. 2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. diff --git a/website/src/pages/de/token-api/svm-tokens/_meta.js b/website/src/pages/de/token-api/svm-tokens/_meta.js index 1de31437004c..001e2d43341a 100644 --- a/website/src/pages/de/token-api/svm-tokens/_meta.js +++ b/website/src/pages/de/token-api/svm-tokens/_meta.js @@ -1,6 +1,6 @@ export default { - tokens: '', transfers: '', + tokens: '', balances: '', 'balances-native': '', holders: '', diff --git a/website/src/pages/en/token-api/_meta-titles.json b/website/src/pages/en/token-api/_meta-titles.json index 7971cf40716c..3141ca25f972 100644 --- a/website/src/pages/en/token-api/_meta-titles.json +++ b/website/src/pages/en/token-api/_meta-titles.json @@ -6,5 +6,6 @@ "svm-dexs": "SVM DEX Endpoints", "tvm-tokens": "TVM Token Endpoints", "tvm-dexs": "TVM DEX Endpoints", - "monitoring": "Monitoring Endpoints" + "monitoring": "Monitoring Endpoints", + "endpoints": "Endpoints" } diff --git a/website/src/pages/en/token-api/_meta.js b/website/src/pages/en/token-api/_meta.js index 94368944d673..6a5860d38ff7 100644 --- a/website/src/pages/en/token-api/_meta.js +++ b/website/src/pages/en/token-api/_meta.js @@ -2,15 +2,15 @@ import titles from './_meta-titles.json' export default { 'quick-start': '', + 'svm-tokens': titles['svm-tokens'] ?? '', + 'svm-dexs': titles['svm-dexs'] ?? '', 'evm-tokens': titles['evm-tokens'] ?? '', 'evm-dexs': titles['evm-dexs'] ?? '', 'evm-nfts': titles['evm-nfts'] ?? '', - 'svm-tokens': titles['svm-tokens'] ?? '', - 'svm-dexs': titles['svm-dexs'] ?? '', 'tvm-tokens': titles['tvm-tokens'] ?? '', 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', - 'endpoint-pricing': '', + 'endpoints': titles['endpoints'] ?? '', guides: 'Guides', faq: '', } diff --git a/website/src/pages/en/token-api/endpoints/_meta.js b/website/src/pages/en/token-api/endpoints/_meta.js new file mode 100644 index 000000000000..33c169163213 --- /dev/null +++ b/website/src/pages/en/token-api/endpoints/_meta.js @@ -0,0 +1,4 @@ +export default { + 'pricing': '', + 'support': '', +} diff --git a/website/src/pages/en/token-api/endpoint-pricing.mdx b/website/src/pages/en/token-api/endpoints/pricing.mdx similarity index 99% rename from website/src/pages/en/token-api/endpoint-pricing.mdx rename to website/src/pages/en/token-api/endpoints/pricing.mdx index 0aa0d0605a1e..df3a04c50a55 100644 --- a/website/src/pages/en/token-api/endpoint-pricing.mdx +++ b/website/src/pages/en/token-api/endpoints/pricing.mdx @@ -1,5 +1,6 @@ --- title: Endpoint Pricing +sidebarTitle: Pricing --- ## Pricing Tiers diff --git a/website/src/pages/en/token-api/endpoints/support.mdx b/website/src/pages/en/token-api/endpoints/support.mdx new file mode 100644 index 000000000000..652f7457f9b2 --- /dev/null +++ b/website/src/pages/en/token-api/endpoints/support.mdx @@ -0,0 +1,24 @@ +--- +title: Endpoint Feature Matrix +sidebarTitle: Support Matrix +--- + +import { Check } from '@edgeandnode/gds/icons' + +## Chain and Feature Support + +| Network | Tokens | Swaps | NFTs | +| ----------------- | :-----------------------: | :-----------------------: | :-----------------------: | +| Ethereum Mainnet | | | | +| BSC Mainnet | | | | +| Base Mainnet | | | | +| Unichain Mainnet | | | | +| Arbitrum One | | | | +| Optimism Mainnet | | | | +| Polygon Mainnet | | | | +| Avalanche C-Chain | | | | +| Solana Mainnet | | | ❌ Unsupported | +| Tron Mainnet | | | ❌ Unsupported | + +A full list of chain support for The Graph services can be found [here](/supported-networks/). + diff --git a/website/src/pages/en/token-api/quick-start.mdx b/website/src/pages/en/token-api/quick-start.mdx index 786c6b69a02f..11a853f95535 100644 --- a/website/src/pages/en/token-api/quick-start.mdx +++ b/website/src/pages/en/token-api/quick-start.mdx @@ -1,98 +1,109 @@ --- -title: Token API Quick Start +title: Welcome to the Token API sidebarTitle: Quick Start --- -import { Check } from '@edgeandnode/gds/icons' - -![The Graph Token API Quick Start banner](/img/token-api-quickstart-banner.jpg) - -> [!CAUTION] This product is currently in Beta and under active development. If you have any feedback, please reach out to us on [Discord](https://discord.gg/graphprotocol). - -The Graph's Token API lets you access blockchain token information via a GET request. This guide is designed to help you quickly integrate the Token API into your application. - -The Token API provides access to onchain NFT and fungible token data, including live and historical balances, holders, prices, market data, token metadata, and token transfers. This API also uses the Model Context Protocol (MCP) to allow AI tools such as Claude to enrich raw blockchain data with contextual insights. - -## Prerequisites - -Before you begin, get a JWT API token by signing up on [The Graph Market](https://thegraph.market/plans/token-api/2025/). Make sure to use the JWT API Token, not the API key. Each API key can generate a new JWT API Token at any time. - -## Authentication - -All API endpoints are authenticated using a JWT API token inserted in the header as `Authorization: Bearer `. - -```json -{ - "headers": { - "Authorization": "Bearer eyJh•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••NnlA" - } -} -``` - -## Using JavaScript - -Make an API request using **JavaScript** by adding the request parameters, and then fetching from the relevant endpoint. For example: - -```js label="index.js" -const address = '0x2a0c0dbecc7e4d658f48e01e3fa353f44050c208' -const options = { - method: 'GET', - headers: { - Accept: 'application/json', - Authorization: 'Bearer ', - }, -} - -fetch(`https://token-api.thegraph.com/v1/evm/balances?network=mainnet&address=${address}`) - .then((response) => response.json()) - .then((response) => console.log(response)) - .catch((err) => console.error(err)) -``` - -Make sure to replace `` with the JWT Token generated from your API key. - -## Using cURL (Command Line) - -To make an API request using **cURL**, open your command line and run the following command. - -```curl -curl --request GET \ - --url https://token-api.thegraph.com/v1/evm/balances?network=mainnet&address=${address} \ - --header 'Accept: application/json' \ - --header 'Authorization: Bearer ' -``` - -Make sure to replace `` with the JWT Token generated from your API key. - -> Most Unix-like systems come with cURL preinstalled. For Windows, you may need to install cURL. - -## Chain and Feature Support - -| Network | Tokens | Swaps | NFTs | -| ----------------- | :-----------------------: | :-----------------------: | :-----------------------: | -| Ethereum Mainnet | | | | -| BSC Mainnet | | | | -| Base Mainnet | | | | -| Unichain Mainnet | | | | -| Arbitrum One | | | | -| Optimism Mainnet | | | | -| Polygon Mainnet | | | | -| Avalanche C-Chain | | | | -| Solana Mainnet | | | ❌ Unsupported | -| Tron Mainnet | | | ❌ Unsupported | - -A full list of chain support for The Graph services can be found [here](/supported-networks/). - -## Troubleshooting - -If the API call fails, try printing out the full response object for additional error details. For example: - -```js label="index.js" -fetch(`https://token-api.thegraph.com/v1/evm/balances?network=mainnet&address=${address}`) - .then((response) => { - console.log('Status Code:', response.status) - return response.json() - }) - .then((data) => console.log(data)) - .catch((err) => console.error('Error:', err)) -``` +> [!CAUTION] This product is very new and currently in Beta. If you have any feedback, please reach out to us on [Discord](https://discord.gg/graphprotocol). + +The Graph's Token API lets you access both live and historical data for tokens across multiple blockchains. + +## Gain access + +Make sure you already have an account on [The Graph Market](https://thegraph.com) and an **"API TOKEN (Authentication JWT)"** +from the [Dashboard](https://thegraph.market/dashboard). + +## Use authenticated routes + +All API endpoints are authenticated using a header: + + + + ```shell + curl --request GET \ + --url "https://token-api.thegraph.com/v1/evm/balances?network=mainnet&address=0x2a0c0dbecc7e4d658f48e01e3fa353f44050c208" \ + --header 'Accept: application/json' \ + --header 'Authorization: Bearer YOUR_TOKEN' + ``` + + + ```typescript + const result = await fetch(`https://token-api.thegraph.com/v1/evm/balances?network=mainnet&address=0x2a0c0dbecc7e4d658f48e01e3fa353f44050c208`, { + method: 'GET', + headers: { + Accept: 'application/json', + Authorization: 'Bearer YOUR_TOKEN', + }, + }) + .then((response) => response.json()) + .then((data) => console.log(data)) + .catch((err) => console.error(err)) + ``` + + + ```python + import requests + + res = requests.get( + "https://token-api.thegraph.com/v1/evm/balances?network=mainnet&address=0x2a0c0dbecc7e4d658f48e01e3fa353f44050c208", + headers={"Authorization": "Bearer YOUR_TOKEN"}, + ) + + print(res.json()) + ``` + + + ```go + package main + + import ( + "fmt" + "encoding/json" + "net/http" + ) + + func main() { + req, _ := http.NewRequest("GET", + "https://token-api.thegraph.com/v1/evm/balances?network=mainnet&address=0x2a0c0dbecc7e4d658f48e01e3fa353f44050c208", + nil, + ) + req.Header.Set("Authorization", "Bearer YOUR_TOKEN") + + res, _ := http.DefaultClient.Do(req) + defer res.Body.Close() + + var data any + json.NewDecoder(res.Body).Decode(&data) + + fmt.Printf("%#v\n", data) + } + ``` + + + ```rust + use reqwest::Client; + + #[tokio::main] + async fn main() -> reqwest::Result<()> { + let res = Client::new() + .get("https://token-api.thegraph.com/v1/evm/balances?network=mainnet&address=0x2a0c0dbecc7e4d658f48e01e3fa353f44050c208") + .bearer_auth("YOUR_TOKEN") + .send() + .await?; + + println!("{}", res.text().await?); + Ok(()) + } + ``` + + + +## What's next? + +Explore the most popular endpoints: +- [EVM Transfers](/token-api/evm-tokens/transfers/) +- [Solana Swaps](/token-api/svm-dexs/swaps/) +- [EVM Token Holders](/token-api/evm-tokens/holders/) +- [EVM Swaps](/token-api/evm-dexs/swaps/) +- [EVM Historical Balances](/token-api/evm-tokens/balances-historical/) + +Check the sidebar for more endpoints that you can use with the Token API! diff --git a/website/src/pages/en/token-api/svm-tokens/_meta.js b/website/src/pages/en/token-api/svm-tokens/_meta.js index 1de31437004c..001e2d43341a 100644 --- a/website/src/pages/en/token-api/svm-tokens/_meta.js +++ b/website/src/pages/en/token-api/svm-tokens/_meta.js @@ -1,6 +1,6 @@ export default { - tokens: '', transfers: '', + tokens: '', balances: '', 'balances-native': '', holders: '', diff --git a/website/src/pages/es/token-api/_meta.js b/website/src/pages/es/token-api/_meta.js index a8624da52e7f..853f9dc09031 100644 --- a/website/src/pages/es/token-api/_meta.js +++ b/website/src/pages/es/token-api/_meta.js @@ -2,15 +2,15 @@ import titles from './_meta-titles.json' export default { 'quick-start': '', + 'svm-tokens': titles['svm-tokens'] ?? '', + 'svm-dexs': titles['svm-dexs'] ?? '', 'evm-tokens': titles['evm-tokens'] ?? '', 'evm-dexs': titles['evm-dexs'] ?? '', 'evm-nfts': titles['evm-nfts'] ?? '', - 'svm-tokens': titles['svm-tokens'] ?? '', - 'svm-dexs': titles['svm-dexs'] ?? '', 'tvm-tokens': titles['tvm-tokens'] ?? '', 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', 'endpoint-pricing': '', + guides: 'Guides', faq: '', - 'upgrade-to-v1': '', } diff --git a/website/src/pages/es/token-api/endpoints/_meta.js b/website/src/pages/es/token-api/endpoints/_meta.js new file mode 100644 index 000000000000..5d419807937c --- /dev/null +++ b/website/src/pages/es/token-api/endpoints/_meta.js @@ -0,0 +1,4 @@ +export default { + 'endpoint-pricing': '', + 'endpoint-support': '', +} diff --git a/website/src/pages/es/token-api/endpoint-pricing.mdx b/website/src/pages/es/token-api/endpoints/endpoint-pricing.mdx similarity index 100% rename from website/src/pages/es/token-api/endpoint-pricing.mdx rename to website/src/pages/es/token-api/endpoints/endpoint-pricing.mdx diff --git a/website/src/pages/es/token-api/endpoints/endpoint-support.msx b/website/src/pages/es/token-api/endpoints/endpoint-support.msx new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/website/src/pages/es/token-api/guides/_meta-titles.json b/website/src/pages/es/token-api/guides/_meta-titles.json new file mode 100644 index 000000000000..cd93dcc0fc0b --- /dev/null +++ b/website/src/pages/es/token-api/guides/_meta-titles.json @@ -0,0 +1,4 @@ +{ + "gpt": "Create Custom GPTS", + "upgrade-to-v1": "" +} diff --git a/website/src/pages/es/token-api/guides/_meta.js b/website/src/pages/es/token-api/guides/_meta.js new file mode 100644 index 000000000000..e5aaaadd78f2 --- /dev/null +++ b/website/src/pages/es/token-api/guides/_meta.js @@ -0,0 +1,4 @@ +export default { + gpt: '', + 'upgrade-to-v1': '', +} diff --git a/website/src/pages/es/token-api/guides/gpt.mdx b/website/src/pages/es/token-api/guides/gpt.mdx new file mode 100644 index 000000000000..564d013dea20 --- /dev/null +++ b/website/src/pages/es/token-api/guides/gpt.mdx @@ -0,0 +1,121 @@ +--- +title: How the Token API Powers Custom GPTs +sidebarTitle: Create Custom GPTs +--- + +## Overview + +The Token API is a pre-indexed blockchain data service that provides real-time access to token balances, metadata, prices, liquidity, and volume across multiple chains. Developers use its REST endpoints to build wallets, trading dashboards, DeFi analytics, and AI systems without maintaining their own indexing stack. Custom GPTs can connect directly to the Token API's OpenAPI schema. + +The Token API enables developers to build **Custom GPTs** to reason over live blockchain data inside ChatGPT that can reason over and respond with live blockchain data directly inside ChatGPT. + +## What the Token API Enables in Custom GPTs + +When a Custom GPT is wired to the Token API, it gains access to a machine-readable schema and authenticated endpoints. Developers can use this to: + +- **Query real-time onchain data**: Balances, token prices, liquidity, and transaction history. +- **Automate domain-specific tasks**: Portfolio tracking, accounting, reconciliation, and market analysis. +- **Power AI agents with verifiable blockchain context**: Use the same data sources dapps rely on. + +Because the Token API provides a machine-readable schema and authenticated requests, it serves as a structured data layer that enables GPT-5 agents to combine natural language reasoning with live onchain data from The Graph. + +## When to Use the Token API for Custom GPTs + +Use the Token API when your GPT needs repeatable, domain-specific behavior grounded in blockchain data. This is most effective when the GPT performs the same type of task frequently or enforces a workflow you define. For one-off or exploratory questions, standard ChatGPT prompts are sufficient. + +## Choosing a Use Case + +Start with a clear, narrow objective, then expand as needed. Common patterns include: + +- **Accounting GPT**: Onchain accounting, tax tagging, and portfolio reconciliation. +- **Trading GPT**: Liquidity, pricing, and volume analysis for trading strategies. +- **Protocol Tracking GPT**: Real-time monitoring of transaction activity and liquidity pools. + +A focused initial goal such as “Retrieve token balances and prices for a wallet” makes it easier to configure reliable behavior before adding complex workflows. + +## Requirements + +| Requirement | Description | +| ---------------------- | -------------------------------------------------------- | +| ChatGPT 5 | Custom GPT creation requires GPT-5 tier or Pro. | +| Token API Subscription | Sign up at [The Graph Market](https://thegraph.market./) | +| Token API Key | Available in your dashboard as the Authentication JWT. | + +## Setting Up a Custom GPT + +Below is an explanatory outline of what happens during setup. This section provides conceptual understanding. + +### Create Custom GPT + +1. Visit chat.openai.com/gpts in your browser. 2, Click Create (top right). +2. Under Configure (in the top left panel), set up your GPT's personality and scope. + +### Configure Your GPT + +You define the GPT's role, scope, and metadata so it knows what it is designed to do. This includes: + +- **Name and Description**: Helps users discover your GPT. + - For example: **Name**: Token Tracker GPT **Description**: An onchain analytics assistant that retrieves live token balances, prices, and liquidity data using The Graph's Token API. +- **Instructions**: Tells the GPT what tasks it should perform using the Token API. + - For example: You are a blockchain data assistant retrieving onchain token data from The Graph's Token API. Use endpoints to fetch balances, liquidity, and price history across EVM chains. Present results in tables with token symbols, prices, and USD values. +- **Knowledge**: Optional context files such as wallet references, accounting rules, or code snippets. +- **New Action**: At the bottom, click “Create new action” to connect your GPT to the Token API. + +### Connect the Token API + +To enable live blockchain queries inside ChatGPT, you connect the GPT to the Token API through: + +#### Authentication + +1. Set Authentication to API Key → Bearer. +2. Open [The Graph Market](https://thegraph.market./) and copy your Authentication JWT from your dashboard. +3. Paste the token into the ChatGPT prompt where the field shows [HIDDEN]. + +#### Schema + +1. Above the Schema box, click Import from URL. +2. Paste: https://token-api.thegraph.com/openapi +3. Click Import. You'll now see endpoints like: + - `getV1EvmTokens` + - `getV1EvmDexes` + - `getV1EvmBalances` +4. Click Test on one (for example `getV1EvmDexes`) to verify connection. + +##### Privacy + +1. At the bottom, under Privacy, paste: https://pinax.network/en/legal/privacy + +### Privacy + +You can attach a privacy policy URL such as: https://pinax.network/en/legal/privacy + +## Example Prompt Patterns + +These examples help illustrate how a GPT reasons over Token API data. + +### Wallet and Portfolio + +Get the total USD balance for a wallet across multiple chains, returning token name, symbol, balance, and price. + +### Trading Analysis + +Compare USDC and DAI liquidity across Uniswap and Curve. Return the top 5 pools by TVL. + +### Accounting + +List all ERC-20 transfers for this address in the last 30 days. Group by token and total incoming/outgoing volume. + +## Best Practices + +| Tip | Why It Matters | +| --------------------------------- | ---------------------------------------------------------------------- | +| Scope your GPT narrowly first | Simplifies debugging and validates schema integration. | +| Use clear role instructions | Helps the GPT choose the right endpoints and avoid assumptions. | +| Name endpoints explicitly | Improves routing accuracy when fetching balances, prices, or DEX data. | +| Combine with code | Enables custom parsing or logic for complex workflows. | +| Add Subgraph or Substream context | Provides richer analytics when combined with Token API data. | + +## FAQs & Resources + +- Builders Office Hours (October 23, 2025) +- Watch the full session: https://x.com/i/broadcasts/1mrGmBzBarNJy diff --git a/website/src/pages/es/token-api/upgrade-to-v1.mdx b/website/src/pages/es/token-api/guides/upgrade-to-v1.mdx similarity index 74% rename from website/src/pages/es/token-api/upgrade-to-v1.mdx rename to website/src/pages/es/token-api/guides/upgrade-to-v1.mdx index fbe09101eaa5..e2a7ccf973fa 100644 --- a/website/src/pages/es/token-api/upgrade-to-v1.mdx +++ b/website/src/pages/es/token-api/guides/upgrade-to-v1.mdx @@ -16,7 +16,7 @@ Used to describe endpoints supporting Solana (currently the only SVM chain suppo ## 🔑 Breaking Changes Summary -### 1. **API Versioning** +### 1. API Versioning All endpoints now use the `/v1` prefix. @@ -34,7 +34,7 @@ GET /v1/evm/balances GET /v1/evm/nft/items ``` -### 2. **Route Structure Reorganization** +### 2. Route Structure Reorganization #### 2.1 EVM Endpoints @@ -92,7 +92,7 @@ Consolidated under `/v1/svm/*` ## 📝 Parameter Changes -### 3. **Path Parameters → Query Parameters** +### 3. Path Parameters → Query Parameters All path parameters have been moved to query parameters. @@ -112,7 +112,7 @@ GET /v1/evm/holders?network=mainnet&contract=0x... GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 ``` -### 4. **Standardized Parameter Naming** +### 4. Standardized Parameter Naming All query parameters have been standardized to use snake_case naming convention. @@ -136,7 +136,7 @@ All query parameters have been standardized to use snake_case naming convention. **Important:** `matic` network has been renamed to `polygon`. -### 5. **Batched Parameters** +### 5. Batched Parameters Many parameters now support batching - accepting single values or comma-separated strings. @@ -151,17 +151,17 @@ Many parameters now support batching - accepting single values or comma-separate **Examples:** ```console -# Single value +## Single value ?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -# Comma-separated, single parameter +## Comma-separated, single parameter ?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -# Repeated parameter values +## Repeated parameter values ?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 ``` -### 6. **New Parameters** +### 6. New Parameters #### `include_null_balances` @@ -175,7 +175,7 @@ Added to balance endpoints to optionally include zero/null balances. ## 🔄 Response Changes -### 7. **Pagination Changes** +### 7. Pagination Changes Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. @@ -212,21 +212,51 @@ Pagination responses have been simplified. The API no longer computes total resu **Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. -### 8. **Removed Parameters** +### 8. Removed Parameters The following deprecated parameters have been removed: - `orderBy` - Results are now ordered by timestamp/block by default - `orderDirection` - Always descending (newest first) +### 9. Cached Queries + +Queries are now cached on the ClickHouse side for better performance. + +You can specifically request to not use the cache by setting the `Cache-Control` header to `no-cache`. + +#### Example + +**Cache** + +```console +$ curl -s 'https://token-api.thegraph.com/v1/...' | jq .statistics +{ + "bytes_read": 221, + "rows_read": 1, + "elapsed": 0.002212065 +} +``` + +**No cache** + +```console +$ curl -s 'http://localhost:8000/v1/...' --header 'Cache-Control: no-cache' | jq .statistics +{ + "bytes_read": 14621174348, + "rows_read": 223244390, + "elapsed": 0.971064066 +} +``` + ## 📚 Example Migrations -### Old vs New: Get Token Balances +### Example 1: Get Token Balances **Before:** ```bash -GET /balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +GET /token/balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 ``` **After:** @@ -235,7 +265,63 @@ GET /balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet& GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 ``` -### New Feature: Batched Queries +### Example 2: Get NFT Items + +**Before:** + +```bash +GET /nft/items/evm/contract/0xbd3531da5cf5857e7cfaa92426877b022e612cf8/token_id/5712?network_id=mainnet +``` + +**After:** + +```bash +GET /v1/evm/nft/items?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&token_id=5712 +``` + +### Example 3: Get Token Transfers with Time Filter + +**Before:** + +```bash +GET /token/transfers/evm?network_id=mainnet&from=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&startTime=1735689600&endTime=1767225600 +``` + +**After:** + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&start_time=1735689600&end_time=1767225600 +``` + +### Example 4: Get NFT Transfer Activities + +**Before:** + +```bash +GET /nft/activities/evm?network_id=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&anyAddress=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +**After:** + +```bash +GET /v1/evm/nft/transfers?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +### Example 5: Get Pool OHLC Data + +**Before:** + +```bash +GET /token/ohlc/pools/evm/0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640?network_id=mainnet&interval=1h&startTime=1735689600 +``` + +**After:** + +```bash +GET /v1/evm/pools/ohlc?network=mainnet&pool=0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640&interval=1h&start_time=1735689600 +``` + +### Example 6: Batched Query (New Feature) Query balances for multiple contracts in a single request: @@ -243,9 +329,15 @@ Query balances for multiple contracts in a single request: GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 ``` +Query transfers from multiple addresses: + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xabc...,0xdef...,0x123...&start_time=1735689600 +``` + ## ⚠️ Important Notes -1. **Backward Compatibility:** The old endpoints are deprecated and will be removed in the future. Migrate by **Oct 30, 2025**. +1. **Migration Notes:** The old endpoints were deprecated and removed on **October 30, 2025**. Please ensure all integrations have been migrated to the new Token API v1 endpoints. 2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. diff --git a/website/src/pages/es/token-api/svm-tokens/_meta.js b/website/src/pages/es/token-api/svm-tokens/_meta.js index 1de31437004c..001e2d43341a 100644 --- a/website/src/pages/es/token-api/svm-tokens/_meta.js +++ b/website/src/pages/es/token-api/svm-tokens/_meta.js @@ -1,6 +1,6 @@ export default { - tokens: '', transfers: '', + tokens: '', balances: '', 'balances-native': '', holders: '', diff --git a/website/src/pages/fr/token-api/_meta.js b/website/src/pages/fr/token-api/_meta.js index a8624da52e7f..853f9dc09031 100644 --- a/website/src/pages/fr/token-api/_meta.js +++ b/website/src/pages/fr/token-api/_meta.js @@ -2,15 +2,15 @@ import titles from './_meta-titles.json' export default { 'quick-start': '', + 'svm-tokens': titles['svm-tokens'] ?? '', + 'svm-dexs': titles['svm-dexs'] ?? '', 'evm-tokens': titles['evm-tokens'] ?? '', 'evm-dexs': titles['evm-dexs'] ?? '', 'evm-nfts': titles['evm-nfts'] ?? '', - 'svm-tokens': titles['svm-tokens'] ?? '', - 'svm-dexs': titles['svm-dexs'] ?? '', 'tvm-tokens': titles['tvm-tokens'] ?? '', 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', 'endpoint-pricing': '', + guides: 'Guides', faq: '', - 'upgrade-to-v1': '', } diff --git a/website/src/pages/fr/token-api/endpoints/_meta.js b/website/src/pages/fr/token-api/endpoints/_meta.js new file mode 100644 index 000000000000..5d419807937c --- /dev/null +++ b/website/src/pages/fr/token-api/endpoints/_meta.js @@ -0,0 +1,4 @@ +export default { + 'endpoint-pricing': '', + 'endpoint-support': '', +} diff --git a/website/src/pages/fr/token-api/endpoint-pricing.mdx b/website/src/pages/fr/token-api/endpoints/endpoint-pricing.mdx similarity index 100% rename from website/src/pages/fr/token-api/endpoint-pricing.mdx rename to website/src/pages/fr/token-api/endpoints/endpoint-pricing.mdx diff --git a/website/src/pages/fr/token-api/endpoints/endpoint-support.msx b/website/src/pages/fr/token-api/endpoints/endpoint-support.msx new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/website/src/pages/fr/token-api/guides/_meta-titles.json b/website/src/pages/fr/token-api/guides/_meta-titles.json new file mode 100644 index 000000000000..cd93dcc0fc0b --- /dev/null +++ b/website/src/pages/fr/token-api/guides/_meta-titles.json @@ -0,0 +1,4 @@ +{ + "gpt": "Create Custom GPTS", + "upgrade-to-v1": "" +} diff --git a/website/src/pages/fr/token-api/guides/_meta.js b/website/src/pages/fr/token-api/guides/_meta.js new file mode 100644 index 000000000000..e5aaaadd78f2 --- /dev/null +++ b/website/src/pages/fr/token-api/guides/_meta.js @@ -0,0 +1,4 @@ +export default { + gpt: '', + 'upgrade-to-v1': '', +} diff --git a/website/src/pages/fr/token-api/guides/gpt.mdx b/website/src/pages/fr/token-api/guides/gpt.mdx new file mode 100644 index 000000000000..564d013dea20 --- /dev/null +++ b/website/src/pages/fr/token-api/guides/gpt.mdx @@ -0,0 +1,121 @@ +--- +title: How the Token API Powers Custom GPTs +sidebarTitle: Create Custom GPTs +--- + +## Overview + +The Token API is a pre-indexed blockchain data service that provides real-time access to token balances, metadata, prices, liquidity, and volume across multiple chains. Developers use its REST endpoints to build wallets, trading dashboards, DeFi analytics, and AI systems without maintaining their own indexing stack. Custom GPTs can connect directly to the Token API's OpenAPI schema. + +The Token API enables developers to build **Custom GPTs** to reason over live blockchain data inside ChatGPT that can reason over and respond with live blockchain data directly inside ChatGPT. + +## What the Token API Enables in Custom GPTs + +When a Custom GPT is wired to the Token API, it gains access to a machine-readable schema and authenticated endpoints. Developers can use this to: + +- **Query real-time onchain data**: Balances, token prices, liquidity, and transaction history. +- **Automate domain-specific tasks**: Portfolio tracking, accounting, reconciliation, and market analysis. +- **Power AI agents with verifiable blockchain context**: Use the same data sources dapps rely on. + +Because the Token API provides a machine-readable schema and authenticated requests, it serves as a structured data layer that enables GPT-5 agents to combine natural language reasoning with live onchain data from The Graph. + +## When to Use the Token API for Custom GPTs + +Use the Token API when your GPT needs repeatable, domain-specific behavior grounded in blockchain data. This is most effective when the GPT performs the same type of task frequently or enforces a workflow you define. For one-off or exploratory questions, standard ChatGPT prompts are sufficient. + +## Choosing a Use Case + +Start with a clear, narrow objective, then expand as needed. Common patterns include: + +- **Accounting GPT**: Onchain accounting, tax tagging, and portfolio reconciliation. +- **Trading GPT**: Liquidity, pricing, and volume analysis for trading strategies. +- **Protocol Tracking GPT**: Real-time monitoring of transaction activity and liquidity pools. + +A focused initial goal such as “Retrieve token balances and prices for a wallet” makes it easier to configure reliable behavior before adding complex workflows. + +## Requirements + +| Requirement | Description | +| ---------------------- | -------------------------------------------------------- | +| ChatGPT 5 | Custom GPT creation requires GPT-5 tier or Pro. | +| Token API Subscription | Sign up at [The Graph Market](https://thegraph.market./) | +| Token API Key | Available in your dashboard as the Authentication JWT. | + +## Setting Up a Custom GPT + +Below is an explanatory outline of what happens during setup. This section provides conceptual understanding. + +### Create Custom GPT + +1. Visit chat.openai.com/gpts in your browser. 2, Click Create (top right). +2. Under Configure (in the top left panel), set up your GPT's personality and scope. + +### Configure Your GPT + +You define the GPT's role, scope, and metadata so it knows what it is designed to do. This includes: + +- **Name and Description**: Helps users discover your GPT. + - For example: **Name**: Token Tracker GPT **Description**: An onchain analytics assistant that retrieves live token balances, prices, and liquidity data using The Graph's Token API. +- **Instructions**: Tells the GPT what tasks it should perform using the Token API. + - For example: You are a blockchain data assistant retrieving onchain token data from The Graph's Token API. Use endpoints to fetch balances, liquidity, and price history across EVM chains. Present results in tables with token symbols, prices, and USD values. +- **Knowledge**: Optional context files such as wallet references, accounting rules, or code snippets. +- **New Action**: At the bottom, click “Create new action” to connect your GPT to the Token API. + +### Connect the Token API + +To enable live blockchain queries inside ChatGPT, you connect the GPT to the Token API through: + +#### Authentication + +1. Set Authentication to API Key → Bearer. +2. Open [The Graph Market](https://thegraph.market./) and copy your Authentication JWT from your dashboard. +3. Paste the token into the ChatGPT prompt where the field shows [HIDDEN]. + +#### Schema + +1. Above the Schema box, click Import from URL. +2. Paste: https://token-api.thegraph.com/openapi +3. Click Import. You'll now see endpoints like: + - `getV1EvmTokens` + - `getV1EvmDexes` + - `getV1EvmBalances` +4. Click Test on one (for example `getV1EvmDexes`) to verify connection. + +##### Privacy + +1. At the bottom, under Privacy, paste: https://pinax.network/en/legal/privacy + +### Privacy + +You can attach a privacy policy URL such as: https://pinax.network/en/legal/privacy + +## Example Prompt Patterns + +These examples help illustrate how a GPT reasons over Token API data. + +### Wallet and Portfolio + +Get the total USD balance for a wallet across multiple chains, returning token name, symbol, balance, and price. + +### Trading Analysis + +Compare USDC and DAI liquidity across Uniswap and Curve. Return the top 5 pools by TVL. + +### Accounting + +List all ERC-20 transfers for this address in the last 30 days. Group by token and total incoming/outgoing volume. + +## Best Practices + +| Tip | Why It Matters | +| --------------------------------- | ---------------------------------------------------------------------- | +| Scope your GPT narrowly first | Simplifies debugging and validates schema integration. | +| Use clear role instructions | Helps the GPT choose the right endpoints and avoid assumptions. | +| Name endpoints explicitly | Improves routing accuracy when fetching balances, prices, or DEX data. | +| Combine with code | Enables custom parsing or logic for complex workflows. | +| Add Subgraph or Substream context | Provides richer analytics when combined with Token API data. | + +## FAQs & Resources + +- Builders Office Hours (October 23, 2025) +- Watch the full session: https://x.com/i/broadcasts/1mrGmBzBarNJy diff --git a/website/src/pages/fr/token-api/guides/upgrade-to-v1.mdx b/website/src/pages/fr/token-api/guides/upgrade-to-v1.mdx new file mode 100644 index 000000000000..e2a7ccf973fa --- /dev/null +++ b/website/src/pages/fr/token-api/guides/upgrade-to-v1.mdx @@ -0,0 +1,346 @@ +--- +title: Upgrade to v1 +--- + +This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. + +**Note** + +- `EVM` = Ethereum Virtual Machine + +Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). + +- `SVM` = Solana Virtual Machine + +Used to describe endpoints supporting Solana (currently the only SVM chain supported). + +## 🔑 Breaking Changes Summary + +### 1. API Versioning + +All endpoints now use the `/v1` prefix. + +**Before:** + +``` +GET /balances/evm +GET /nft/items/contract/:contract/token_id/:token_id +``` + +**After:** + +``` +GET /v1/evm/balances +GET /v1/evm/nft/items +``` + +### 2. Route Structure Reorganization + +#### 2.1 EVM Endpoints + +Consolidated under `/v1/evm/*` + +| Old Endpoint | New Endpoint | +| ------------------------------------------------------ | ----------------------------- | +| `/balances/evm` | `/v1/evm/balances` | +| `/historical/balances/evm` | `/v1/evm/balances/historical` | +| `/holders/evm/:contract` | `/v1/evm/holders` | +| `/tokens/evm/:contract` | `/v1/evm/tokens` | +| `/transfers/evm` | `/v1/evm/transfers` | +| `/pools/evm` | `/v1/evm/pools` | +| `/swaps/evm` | `/v1/evm/swaps` | +| `/dexes/evm` | `/v1/evm/dexes` | +| `/ohlc/prices/evm/:contract` | _(removed)_ | +| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | +| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | +| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | +| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | +| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | +| `/nft/activities/evm` | `/v1/evm/nft/transfers` | +| `/nft/sales/evm` | `/v1/evm/nft/sales` | + +**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. + +**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. + +--- + +#### 2.2 New EVM native balances endpoint + +Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. + +Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. + +--- + +#### 2.3 SVM Endpoints + +Consolidated under `/v1/svm/*` + +| Old Endpoint | New Endpoint | +| ------------------------ | ------------------------- | +| `/balances/svm` | `/v1/svm/balances` | +| `/balances/native/svm` | `/v1/svm/balances/native` | +| `/holders/svm/:contract` | `/v1/svm/holders` | +| `/tokens/svm/:mint` | `/v1/svm/tokens` | +| `/transfers/svm` | `/v1/svm/transfers` | +| `/pools/svm` | `/v1/svm/pools` | +| `/swaps/svm` | `/v1/svm/swaps` | +| `/dexes/svm` | `/v1/svm/dexes` | +| `/owner/svm/:account` | `/v1/svm/owner` | +| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | + +## 📝 Parameter Changes + +### 3. Path Parameters → Query Parameters + +All path parameters have been moved to query parameters. + +**Before:** + +```bash +GET /balances/evm/:address +GET /holders/evm/:contract +GET /nft/items/evm/contract/:contract/token_id/:token_id +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0x... +GET /v1/evm/holders?network=mainnet&contract=0x... +GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 +``` + +### 4. Standardized Parameter Naming + +All query parameters have been standardized to use snake_case naming convention. + +| Old Parameter | New Parameter | Notes | +| --- | --- | --- | +| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | +| `anyAddress` | `address` | Matches either `from` or `to` address | +| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | +| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | +| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | +| `endTime` | `end_time` | Default: `9999999999` | +| - | `start_block` | New parameter, default: `0` | +| - | `end_block` | New parameter, default: `9999999999` | +| - | `include_null_balances` | New parameter, default: `false` | +| `tx_hash` | `transaction_id` | - | +| `token` | `input_token`, `output_token` | More explicit for pool queries | +| `pool` | `amm_pool` | - | +| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | + +**Important:** The `network_id` parameter has been renamed to `network`. + +**Important:** `matic` network has been renamed to `polygon`. + +### 5. Batched Parameters + +Many parameters now support batching - accepting single values or comma-separated strings. + +**Supported Batched Parameters:** + +- `address`, `from_address`, `to_address` +- `contract`, `token_id` +- `factory`, `pool` +- `owner`, `token_account`, `mint` +- `transaction_id`, `signature` + +**Examples:** + +```console +## Single value +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 + +## Comma-separated, single parameter +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 + +## Repeated parameter values +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +### 6. New Parameters + +#### `include_null_balances` + +Added to balance endpoints to optionally include zero/null balances. + +```bash +?include_null_balances=true +``` + +**Default:** `false` + +## 🔄 Response Changes + +### 7. Pagination Changes + +Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. + +**Before:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2, + "next_page": 3, + "total_pages": 10 + }, + "total_results": 1234 +} +``` + +**After:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2 + } +} +``` + +**Removed fields:** + +- `next_page` +- `total_pages` +- `total_results` + +**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. + +### 8. Removed Parameters + +The following deprecated parameters have been removed: + +- `orderBy` - Results are now ordered by timestamp/block by default +- `orderDirection` - Always descending (newest first) + +### 9. Cached Queries + +Queries are now cached on the ClickHouse side for better performance. + +You can specifically request to not use the cache by setting the `Cache-Control` header to `no-cache`. + +#### Example + +**Cache** + +```console +$ curl -s 'https://token-api.thegraph.com/v1/...' | jq .statistics +{ + "bytes_read": 221, + "rows_read": 1, + "elapsed": 0.002212065 +} +``` + +**No cache** + +```console +$ curl -s 'http://localhost:8000/v1/...' --header 'Cache-Control: no-cache' | jq .statistics +{ + "bytes_read": 14621174348, + "rows_read": 223244390, + "elapsed": 0.971064066 +} +``` + +## 📚 Example Migrations + +### Example 1: Get Token Balances + +**Before:** + +```bash +GET /token/balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +### Example 2: Get NFT Items + +**Before:** + +```bash +GET /nft/items/evm/contract/0xbd3531da5cf5857e7cfaa92426877b022e612cf8/token_id/5712?network_id=mainnet +``` + +**After:** + +```bash +GET /v1/evm/nft/items?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&token_id=5712 +``` + +### Example 3: Get Token Transfers with Time Filter + +**Before:** + +```bash +GET /token/transfers/evm?network_id=mainnet&from=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&startTime=1735689600&endTime=1767225600 +``` + +**After:** + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&start_time=1735689600&end_time=1767225600 +``` + +### Example 4: Get NFT Transfer Activities + +**Before:** + +```bash +GET /nft/activities/evm?network_id=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&anyAddress=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +**After:** + +```bash +GET /v1/evm/nft/transfers?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +### Example 5: Get Pool OHLC Data + +**Before:** + +```bash +GET /token/ohlc/pools/evm/0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640?network_id=mainnet&interval=1h&startTime=1735689600 +``` + +**After:** + +```bash +GET /v1/evm/pools/ohlc?network=mainnet&pool=0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640&interval=1h&start_time=1735689600 +``` + +### Example 6: Batched Query (New Feature) + +Query balances for multiple contracts in a single request: + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +Query transfers from multiple addresses: + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xabc...,0xdef...,0x123...&start_time=1735689600 +``` + +## ⚠️ Important Notes + +1. **Migration Notes:** The old endpoints were deprecated and removed on **October 30, 2025**. Please ensure all integrations have been migrated to the new Token API v1 endpoints. + +2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. + +3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. + +4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/fr/token-api/svm-tokens/_meta.js b/website/src/pages/fr/token-api/svm-tokens/_meta.js index 1de31437004c..001e2d43341a 100644 --- a/website/src/pages/fr/token-api/svm-tokens/_meta.js +++ b/website/src/pages/fr/token-api/svm-tokens/_meta.js @@ -1,6 +1,6 @@ export default { - tokens: '', transfers: '', + tokens: '', balances: '', 'balances-native': '', holders: '', diff --git a/website/src/pages/fr/token-api/upgrade-to-v1.mdx b/website/src/pages/fr/token-api/upgrade-to-v1.mdx deleted file mode 100644 index fbe09101eaa5..000000000000 --- a/website/src/pages/fr/token-api/upgrade-to-v1.mdx +++ /dev/null @@ -1,254 +0,0 @@ ---- -title: Upgrade to v1 ---- - -This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. - -**Note** - -- `EVM` = Ethereum Virtual Machine - -Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). - -- `SVM` = Solana Virtual Machine - -Used to describe endpoints supporting Solana (currently the only SVM chain supported). - -## 🔑 Breaking Changes Summary - -### 1. **API Versioning** - -All endpoints now use the `/v1` prefix. - -**Before:** - -``` -GET /balances/evm -GET /nft/items/contract/:contract/token_id/:token_id -``` - -**After:** - -``` -GET /v1/evm/balances -GET /v1/evm/nft/items -``` - -### 2. **Route Structure Reorganization** - -#### 2.1 EVM Endpoints - -Consolidated under `/v1/evm/*` - -| Old Endpoint | New Endpoint | -| ------------------------------------------------------ | ----------------------------- | -| `/balances/evm` | `/v1/evm/balances` | -| `/historical/balances/evm` | `/v1/evm/balances/historical` | -| `/holders/evm/:contract` | `/v1/evm/holders` | -| `/tokens/evm/:contract` | `/v1/evm/tokens` | -| `/transfers/evm` | `/v1/evm/transfers` | -| `/pools/evm` | `/v1/evm/pools` | -| `/swaps/evm` | `/v1/evm/swaps` | -| `/dexes/evm` | `/v1/evm/dexes` | -| `/ohlc/prices/evm/:contract` | _(removed)_ | -| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | -| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | -| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | -| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | -| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | -| `/nft/activities/evm` | `/v1/evm/nft/transfers` | -| `/nft/sales/evm` | `/v1/evm/nft/sales` | - -**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. - -**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. - ---- - -#### 2.2 New EVM native balances endpoint - -Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. - -Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. - ---- - -#### 2.3 SVM Endpoints - -Consolidated under `/v1/svm/*` - -| Old Endpoint | New Endpoint | -| ------------------------ | ------------------------- | -| `/balances/svm` | `/v1/svm/balances` | -| `/balances/native/svm` | `/v1/svm/balances/native` | -| `/holders/svm/:contract` | `/v1/svm/holders` | -| `/tokens/svm/:mint` | `/v1/svm/tokens` | -| `/transfers/svm` | `/v1/svm/transfers` | -| `/pools/svm` | `/v1/svm/pools` | -| `/swaps/svm` | `/v1/svm/swaps` | -| `/dexes/svm` | `/v1/svm/dexes` | -| `/owner/svm/:account` | `/v1/svm/owner` | -| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | - -## 📝 Parameter Changes - -### 3. **Path Parameters → Query Parameters** - -All path parameters have been moved to query parameters. - -**Before:** - -```bash -GET /balances/evm/:address -GET /holders/evm/:contract -GET /nft/items/evm/contract/:contract/token_id/:token_id -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0x... -GET /v1/evm/holders?network=mainnet&contract=0x... -GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 -``` - -### 4. **Standardized Parameter Naming** - -All query parameters have been standardized to use snake_case naming convention. - -| Old Parameter | New Parameter | Notes | -| --- | --- | --- | -| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | -| `anyAddress` | `address` | Matches either `from` or `to` address | -| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | -| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | -| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | -| `endTime` | `end_time` | Default: `9999999999` | -| - | `start_block` | New parameter, default: `0` | -| - | `end_block` | New parameter, default: `9999999999` | -| - | `include_null_balances` | New parameter, default: `false` | -| `tx_hash` | `transaction_id` | - | -| `token` | `input_token`, `output_token` | More explicit for pool queries | -| `pool` | `amm_pool` | - | -| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | - -**Important:** The `network_id` parameter has been renamed to `network`. - -**Important:** `matic` network has been renamed to `polygon`. - -### 5. **Batched Parameters** - -Many parameters now support batching - accepting single values or comma-separated strings. - -**Supported Batched Parameters:** - -- `address`, `from_address`, `to_address` -- `contract`, `token_id` -- `factory`, `pool` -- `owner`, `token_account`, `mint` -- `transaction_id`, `signature` - -**Examples:** - -```console -# Single value -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 - -# Comma-separated, single parameter -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 - -# Repeated parameter values -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -### 6. **New Parameters** - -#### `include_null_balances` - -Added to balance endpoints to optionally include zero/null balances. - -```bash -?include_null_balances=true -``` - -**Default:** `false` - -## 🔄 Response Changes - -### 7. **Pagination Changes** - -Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. - -**Before:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2, - "next_page": 3, - "total_pages": 10 - }, - "total_results": 1234 -} -``` - -**After:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2 - } -} -``` - -**Removed fields:** - -- `next_page` -- `total_pages` -- `total_results` - -**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. - -### 8. **Removed Parameters** - -The following deprecated parameters have been removed: - -- `orderBy` - Results are now ordered by timestamp/block by default -- `orderDirection` - Always descending (newest first) - -## 📚 Example Migrations - -### Old vs New: Get Token Balances - -**Before:** - -```bash -GET /balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -### New Feature: Batched Queries - -Query balances for multiple contracts in a single request: - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -## ⚠️ Important Notes - -1. **Backward Compatibility:** The old endpoints are deprecated and will be removed in the future. Migrate by **Oct 30, 2025**. - -2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. - -3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. - -4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/hi/token-api/_meta.js b/website/src/pages/hi/token-api/_meta.js index a8624da52e7f..853f9dc09031 100644 --- a/website/src/pages/hi/token-api/_meta.js +++ b/website/src/pages/hi/token-api/_meta.js @@ -2,15 +2,15 @@ import titles from './_meta-titles.json' export default { 'quick-start': '', + 'svm-tokens': titles['svm-tokens'] ?? '', + 'svm-dexs': titles['svm-dexs'] ?? '', 'evm-tokens': titles['evm-tokens'] ?? '', 'evm-dexs': titles['evm-dexs'] ?? '', 'evm-nfts': titles['evm-nfts'] ?? '', - 'svm-tokens': titles['svm-tokens'] ?? '', - 'svm-dexs': titles['svm-dexs'] ?? '', 'tvm-tokens': titles['tvm-tokens'] ?? '', 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', 'endpoint-pricing': '', + guides: 'Guides', faq: '', - 'upgrade-to-v1': '', } diff --git a/website/src/pages/hi/token-api/endpoints/_meta.js b/website/src/pages/hi/token-api/endpoints/_meta.js new file mode 100644 index 000000000000..5d419807937c --- /dev/null +++ b/website/src/pages/hi/token-api/endpoints/_meta.js @@ -0,0 +1,4 @@ +export default { + 'endpoint-pricing': '', + 'endpoint-support': '', +} diff --git a/website/src/pages/hi/token-api/endpoint-pricing.mdx b/website/src/pages/hi/token-api/endpoints/endpoint-pricing.mdx similarity index 100% rename from website/src/pages/hi/token-api/endpoint-pricing.mdx rename to website/src/pages/hi/token-api/endpoints/endpoint-pricing.mdx diff --git a/website/src/pages/hi/token-api/endpoints/endpoint-support.msx b/website/src/pages/hi/token-api/endpoints/endpoint-support.msx new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/website/src/pages/hi/token-api/guides/_meta-titles.json b/website/src/pages/hi/token-api/guides/_meta-titles.json new file mode 100644 index 000000000000..cd93dcc0fc0b --- /dev/null +++ b/website/src/pages/hi/token-api/guides/_meta-titles.json @@ -0,0 +1,4 @@ +{ + "gpt": "Create Custom GPTS", + "upgrade-to-v1": "" +} diff --git a/website/src/pages/hi/token-api/guides/_meta.js b/website/src/pages/hi/token-api/guides/_meta.js new file mode 100644 index 000000000000..e5aaaadd78f2 --- /dev/null +++ b/website/src/pages/hi/token-api/guides/_meta.js @@ -0,0 +1,4 @@ +export default { + gpt: '', + 'upgrade-to-v1': '', +} diff --git a/website/src/pages/hi/token-api/guides/gpt.mdx b/website/src/pages/hi/token-api/guides/gpt.mdx new file mode 100644 index 000000000000..564d013dea20 --- /dev/null +++ b/website/src/pages/hi/token-api/guides/gpt.mdx @@ -0,0 +1,121 @@ +--- +title: How the Token API Powers Custom GPTs +sidebarTitle: Create Custom GPTs +--- + +## Overview + +The Token API is a pre-indexed blockchain data service that provides real-time access to token balances, metadata, prices, liquidity, and volume across multiple chains. Developers use its REST endpoints to build wallets, trading dashboards, DeFi analytics, and AI systems without maintaining their own indexing stack. Custom GPTs can connect directly to the Token API's OpenAPI schema. + +The Token API enables developers to build **Custom GPTs** to reason over live blockchain data inside ChatGPT that can reason over and respond with live blockchain data directly inside ChatGPT. + +## What the Token API Enables in Custom GPTs + +When a Custom GPT is wired to the Token API, it gains access to a machine-readable schema and authenticated endpoints. Developers can use this to: + +- **Query real-time onchain data**: Balances, token prices, liquidity, and transaction history. +- **Automate domain-specific tasks**: Portfolio tracking, accounting, reconciliation, and market analysis. +- **Power AI agents with verifiable blockchain context**: Use the same data sources dapps rely on. + +Because the Token API provides a machine-readable schema and authenticated requests, it serves as a structured data layer that enables GPT-5 agents to combine natural language reasoning with live onchain data from The Graph. + +## When to Use the Token API for Custom GPTs + +Use the Token API when your GPT needs repeatable, domain-specific behavior grounded in blockchain data. This is most effective when the GPT performs the same type of task frequently or enforces a workflow you define. For one-off or exploratory questions, standard ChatGPT prompts are sufficient. + +## Choosing a Use Case + +Start with a clear, narrow objective, then expand as needed. Common patterns include: + +- **Accounting GPT**: Onchain accounting, tax tagging, and portfolio reconciliation. +- **Trading GPT**: Liquidity, pricing, and volume analysis for trading strategies. +- **Protocol Tracking GPT**: Real-time monitoring of transaction activity and liquidity pools. + +A focused initial goal such as “Retrieve token balances and prices for a wallet” makes it easier to configure reliable behavior before adding complex workflows. + +## Requirements + +| Requirement | Description | +| ---------------------- | -------------------------------------------------------- | +| ChatGPT 5 | Custom GPT creation requires GPT-5 tier or Pro. | +| Token API Subscription | Sign up at [The Graph Market](https://thegraph.market./) | +| Token API Key | Available in your dashboard as the Authentication JWT. | + +## Setting Up a Custom GPT + +Below is an explanatory outline of what happens during setup. This section provides conceptual understanding. + +### Create Custom GPT + +1. Visit chat.openai.com/gpts in your browser. 2, Click Create (top right). +2. Under Configure (in the top left panel), set up your GPT's personality and scope. + +### Configure Your GPT + +You define the GPT's role, scope, and metadata so it knows what it is designed to do. This includes: + +- **Name and Description**: Helps users discover your GPT. + - For example: **Name**: Token Tracker GPT **Description**: An onchain analytics assistant that retrieves live token balances, prices, and liquidity data using The Graph's Token API. +- **Instructions**: Tells the GPT what tasks it should perform using the Token API. + - For example: You are a blockchain data assistant retrieving onchain token data from The Graph's Token API. Use endpoints to fetch balances, liquidity, and price history across EVM chains. Present results in tables with token symbols, prices, and USD values. +- **Knowledge**: Optional context files such as wallet references, accounting rules, or code snippets. +- **New Action**: At the bottom, click “Create new action” to connect your GPT to the Token API. + +### Connect the Token API + +To enable live blockchain queries inside ChatGPT, you connect the GPT to the Token API through: + +#### Authentication + +1. Set Authentication to API Key → Bearer. +2. Open [The Graph Market](https://thegraph.market./) and copy your Authentication JWT from your dashboard. +3. Paste the token into the ChatGPT prompt where the field shows [HIDDEN]. + +#### Schema + +1. Above the Schema box, click Import from URL. +2. Paste: https://token-api.thegraph.com/openapi +3. Click Import. You'll now see endpoints like: + - `getV1EvmTokens` + - `getV1EvmDexes` + - `getV1EvmBalances` +4. Click Test on one (for example `getV1EvmDexes`) to verify connection. + +##### Privacy + +1. At the bottom, under Privacy, paste: https://pinax.network/en/legal/privacy + +### Privacy + +You can attach a privacy policy URL such as: https://pinax.network/en/legal/privacy + +## Example Prompt Patterns + +These examples help illustrate how a GPT reasons over Token API data. + +### Wallet and Portfolio + +Get the total USD balance for a wallet across multiple chains, returning token name, symbol, balance, and price. + +### Trading Analysis + +Compare USDC and DAI liquidity across Uniswap and Curve. Return the top 5 pools by TVL. + +### Accounting + +List all ERC-20 transfers for this address in the last 30 days. Group by token and total incoming/outgoing volume. + +## Best Practices + +| Tip | Why It Matters | +| --------------------------------- | ---------------------------------------------------------------------- | +| Scope your GPT narrowly first | Simplifies debugging and validates schema integration. | +| Use clear role instructions | Helps the GPT choose the right endpoints and avoid assumptions. | +| Name endpoints explicitly | Improves routing accuracy when fetching balances, prices, or DEX data. | +| Combine with code | Enables custom parsing or logic for complex workflows. | +| Add Subgraph or Substream context | Provides richer analytics when combined with Token API data. | + +## FAQs & Resources + +- Builders Office Hours (October 23, 2025) +- Watch the full session: https://x.com/i/broadcasts/1mrGmBzBarNJy diff --git a/website/src/pages/hi/token-api/guides/upgrade-to-v1.mdx b/website/src/pages/hi/token-api/guides/upgrade-to-v1.mdx new file mode 100644 index 000000000000..e2a7ccf973fa --- /dev/null +++ b/website/src/pages/hi/token-api/guides/upgrade-to-v1.mdx @@ -0,0 +1,346 @@ +--- +title: Upgrade to v1 +--- + +This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. + +**Note** + +- `EVM` = Ethereum Virtual Machine + +Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). + +- `SVM` = Solana Virtual Machine + +Used to describe endpoints supporting Solana (currently the only SVM chain supported). + +## 🔑 Breaking Changes Summary + +### 1. API Versioning + +All endpoints now use the `/v1` prefix. + +**Before:** + +``` +GET /balances/evm +GET /nft/items/contract/:contract/token_id/:token_id +``` + +**After:** + +``` +GET /v1/evm/balances +GET /v1/evm/nft/items +``` + +### 2. Route Structure Reorganization + +#### 2.1 EVM Endpoints + +Consolidated under `/v1/evm/*` + +| Old Endpoint | New Endpoint | +| ------------------------------------------------------ | ----------------------------- | +| `/balances/evm` | `/v1/evm/balances` | +| `/historical/balances/evm` | `/v1/evm/balances/historical` | +| `/holders/evm/:contract` | `/v1/evm/holders` | +| `/tokens/evm/:contract` | `/v1/evm/tokens` | +| `/transfers/evm` | `/v1/evm/transfers` | +| `/pools/evm` | `/v1/evm/pools` | +| `/swaps/evm` | `/v1/evm/swaps` | +| `/dexes/evm` | `/v1/evm/dexes` | +| `/ohlc/prices/evm/:contract` | _(removed)_ | +| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | +| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | +| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | +| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | +| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | +| `/nft/activities/evm` | `/v1/evm/nft/transfers` | +| `/nft/sales/evm` | `/v1/evm/nft/sales` | + +**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. + +**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. + +--- + +#### 2.2 New EVM native balances endpoint + +Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. + +Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. + +--- + +#### 2.3 SVM Endpoints + +Consolidated under `/v1/svm/*` + +| Old Endpoint | New Endpoint | +| ------------------------ | ------------------------- | +| `/balances/svm` | `/v1/svm/balances` | +| `/balances/native/svm` | `/v1/svm/balances/native` | +| `/holders/svm/:contract` | `/v1/svm/holders` | +| `/tokens/svm/:mint` | `/v1/svm/tokens` | +| `/transfers/svm` | `/v1/svm/transfers` | +| `/pools/svm` | `/v1/svm/pools` | +| `/swaps/svm` | `/v1/svm/swaps` | +| `/dexes/svm` | `/v1/svm/dexes` | +| `/owner/svm/:account` | `/v1/svm/owner` | +| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | + +## 📝 Parameter Changes + +### 3. Path Parameters → Query Parameters + +All path parameters have been moved to query parameters. + +**Before:** + +```bash +GET /balances/evm/:address +GET /holders/evm/:contract +GET /nft/items/evm/contract/:contract/token_id/:token_id +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0x... +GET /v1/evm/holders?network=mainnet&contract=0x... +GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 +``` + +### 4. Standardized Parameter Naming + +All query parameters have been standardized to use snake_case naming convention. + +| Old Parameter | New Parameter | Notes | +| --- | --- | --- | +| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | +| `anyAddress` | `address` | Matches either `from` or `to` address | +| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | +| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | +| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | +| `endTime` | `end_time` | Default: `9999999999` | +| - | `start_block` | New parameter, default: `0` | +| - | `end_block` | New parameter, default: `9999999999` | +| - | `include_null_balances` | New parameter, default: `false` | +| `tx_hash` | `transaction_id` | - | +| `token` | `input_token`, `output_token` | More explicit for pool queries | +| `pool` | `amm_pool` | - | +| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | + +**Important:** The `network_id` parameter has been renamed to `network`. + +**Important:** `matic` network has been renamed to `polygon`. + +### 5. Batched Parameters + +Many parameters now support batching - accepting single values or comma-separated strings. + +**Supported Batched Parameters:** + +- `address`, `from_address`, `to_address` +- `contract`, `token_id` +- `factory`, `pool` +- `owner`, `token_account`, `mint` +- `transaction_id`, `signature` + +**Examples:** + +```console +## Single value +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 + +## Comma-separated, single parameter +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 + +## Repeated parameter values +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +### 6. New Parameters + +#### `include_null_balances` + +Added to balance endpoints to optionally include zero/null balances. + +```bash +?include_null_balances=true +``` + +**Default:** `false` + +## 🔄 Response Changes + +### 7. Pagination Changes + +Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. + +**Before:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2, + "next_page": 3, + "total_pages": 10 + }, + "total_results": 1234 +} +``` + +**After:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2 + } +} +``` + +**Removed fields:** + +- `next_page` +- `total_pages` +- `total_results` + +**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. + +### 8. Removed Parameters + +The following deprecated parameters have been removed: + +- `orderBy` - Results are now ordered by timestamp/block by default +- `orderDirection` - Always descending (newest first) + +### 9. Cached Queries + +Queries are now cached on the ClickHouse side for better performance. + +You can specifically request to not use the cache by setting the `Cache-Control` header to `no-cache`. + +#### Example + +**Cache** + +```console +$ curl -s 'https://token-api.thegraph.com/v1/...' | jq .statistics +{ + "bytes_read": 221, + "rows_read": 1, + "elapsed": 0.002212065 +} +``` + +**No cache** + +```console +$ curl -s 'http://localhost:8000/v1/...' --header 'Cache-Control: no-cache' | jq .statistics +{ + "bytes_read": 14621174348, + "rows_read": 223244390, + "elapsed": 0.971064066 +} +``` + +## 📚 Example Migrations + +### Example 1: Get Token Balances + +**Before:** + +```bash +GET /token/balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +### Example 2: Get NFT Items + +**Before:** + +```bash +GET /nft/items/evm/contract/0xbd3531da5cf5857e7cfaa92426877b022e612cf8/token_id/5712?network_id=mainnet +``` + +**After:** + +```bash +GET /v1/evm/nft/items?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&token_id=5712 +``` + +### Example 3: Get Token Transfers with Time Filter + +**Before:** + +```bash +GET /token/transfers/evm?network_id=mainnet&from=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&startTime=1735689600&endTime=1767225600 +``` + +**After:** + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&start_time=1735689600&end_time=1767225600 +``` + +### Example 4: Get NFT Transfer Activities + +**Before:** + +```bash +GET /nft/activities/evm?network_id=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&anyAddress=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +**After:** + +```bash +GET /v1/evm/nft/transfers?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +### Example 5: Get Pool OHLC Data + +**Before:** + +```bash +GET /token/ohlc/pools/evm/0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640?network_id=mainnet&interval=1h&startTime=1735689600 +``` + +**After:** + +```bash +GET /v1/evm/pools/ohlc?network=mainnet&pool=0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640&interval=1h&start_time=1735689600 +``` + +### Example 6: Batched Query (New Feature) + +Query balances for multiple contracts in a single request: + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +Query transfers from multiple addresses: + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xabc...,0xdef...,0x123...&start_time=1735689600 +``` + +## ⚠️ Important Notes + +1. **Migration Notes:** The old endpoints were deprecated and removed on **October 30, 2025**. Please ensure all integrations have been migrated to the new Token API v1 endpoints. + +2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. + +3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. + +4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/hi/token-api/svm-tokens/_meta.js b/website/src/pages/hi/token-api/svm-tokens/_meta.js index 1de31437004c..001e2d43341a 100644 --- a/website/src/pages/hi/token-api/svm-tokens/_meta.js +++ b/website/src/pages/hi/token-api/svm-tokens/_meta.js @@ -1,6 +1,6 @@ export default { - tokens: '', transfers: '', + tokens: '', balances: '', 'balances-native': '', holders: '', diff --git a/website/src/pages/hi/token-api/upgrade-to-v1.mdx b/website/src/pages/hi/token-api/upgrade-to-v1.mdx deleted file mode 100644 index fbe09101eaa5..000000000000 --- a/website/src/pages/hi/token-api/upgrade-to-v1.mdx +++ /dev/null @@ -1,254 +0,0 @@ ---- -title: Upgrade to v1 ---- - -This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. - -**Note** - -- `EVM` = Ethereum Virtual Machine - -Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). - -- `SVM` = Solana Virtual Machine - -Used to describe endpoints supporting Solana (currently the only SVM chain supported). - -## 🔑 Breaking Changes Summary - -### 1. **API Versioning** - -All endpoints now use the `/v1` prefix. - -**Before:** - -``` -GET /balances/evm -GET /nft/items/contract/:contract/token_id/:token_id -``` - -**After:** - -``` -GET /v1/evm/balances -GET /v1/evm/nft/items -``` - -### 2. **Route Structure Reorganization** - -#### 2.1 EVM Endpoints - -Consolidated under `/v1/evm/*` - -| Old Endpoint | New Endpoint | -| ------------------------------------------------------ | ----------------------------- | -| `/balances/evm` | `/v1/evm/balances` | -| `/historical/balances/evm` | `/v1/evm/balances/historical` | -| `/holders/evm/:contract` | `/v1/evm/holders` | -| `/tokens/evm/:contract` | `/v1/evm/tokens` | -| `/transfers/evm` | `/v1/evm/transfers` | -| `/pools/evm` | `/v1/evm/pools` | -| `/swaps/evm` | `/v1/evm/swaps` | -| `/dexes/evm` | `/v1/evm/dexes` | -| `/ohlc/prices/evm/:contract` | _(removed)_ | -| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | -| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | -| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | -| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | -| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | -| `/nft/activities/evm` | `/v1/evm/nft/transfers` | -| `/nft/sales/evm` | `/v1/evm/nft/sales` | - -**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. - -**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. - ---- - -#### 2.2 New EVM native balances endpoint - -Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. - -Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. - ---- - -#### 2.3 SVM Endpoints - -Consolidated under `/v1/svm/*` - -| Old Endpoint | New Endpoint | -| ------------------------ | ------------------------- | -| `/balances/svm` | `/v1/svm/balances` | -| `/balances/native/svm` | `/v1/svm/balances/native` | -| `/holders/svm/:contract` | `/v1/svm/holders` | -| `/tokens/svm/:mint` | `/v1/svm/tokens` | -| `/transfers/svm` | `/v1/svm/transfers` | -| `/pools/svm` | `/v1/svm/pools` | -| `/swaps/svm` | `/v1/svm/swaps` | -| `/dexes/svm` | `/v1/svm/dexes` | -| `/owner/svm/:account` | `/v1/svm/owner` | -| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | - -## 📝 Parameter Changes - -### 3. **Path Parameters → Query Parameters** - -All path parameters have been moved to query parameters. - -**Before:** - -```bash -GET /balances/evm/:address -GET /holders/evm/:contract -GET /nft/items/evm/contract/:contract/token_id/:token_id -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0x... -GET /v1/evm/holders?network=mainnet&contract=0x... -GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 -``` - -### 4. **Standardized Parameter Naming** - -All query parameters have been standardized to use snake_case naming convention. - -| Old Parameter | New Parameter | Notes | -| --- | --- | --- | -| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | -| `anyAddress` | `address` | Matches either `from` or `to` address | -| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | -| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | -| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | -| `endTime` | `end_time` | Default: `9999999999` | -| - | `start_block` | New parameter, default: `0` | -| - | `end_block` | New parameter, default: `9999999999` | -| - | `include_null_balances` | New parameter, default: `false` | -| `tx_hash` | `transaction_id` | - | -| `token` | `input_token`, `output_token` | More explicit for pool queries | -| `pool` | `amm_pool` | - | -| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | - -**Important:** The `network_id` parameter has been renamed to `network`. - -**Important:** `matic` network has been renamed to `polygon`. - -### 5. **Batched Parameters** - -Many parameters now support batching - accepting single values or comma-separated strings. - -**Supported Batched Parameters:** - -- `address`, `from_address`, `to_address` -- `contract`, `token_id` -- `factory`, `pool` -- `owner`, `token_account`, `mint` -- `transaction_id`, `signature` - -**Examples:** - -```console -# Single value -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 - -# Comma-separated, single parameter -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 - -# Repeated parameter values -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -### 6. **New Parameters** - -#### `include_null_balances` - -Added to balance endpoints to optionally include zero/null balances. - -```bash -?include_null_balances=true -``` - -**Default:** `false` - -## 🔄 Response Changes - -### 7. **Pagination Changes** - -Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. - -**Before:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2, - "next_page": 3, - "total_pages": 10 - }, - "total_results": 1234 -} -``` - -**After:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2 - } -} -``` - -**Removed fields:** - -- `next_page` -- `total_pages` -- `total_results` - -**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. - -### 8. **Removed Parameters** - -The following deprecated parameters have been removed: - -- `orderBy` - Results are now ordered by timestamp/block by default -- `orderDirection` - Always descending (newest first) - -## 📚 Example Migrations - -### Old vs New: Get Token Balances - -**Before:** - -```bash -GET /balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -### New Feature: Batched Queries - -Query balances for multiple contracts in a single request: - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -## ⚠️ Important Notes - -1. **Backward Compatibility:** The old endpoints are deprecated and will be removed in the future. Migrate by **Oct 30, 2025**. - -2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. - -3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. - -4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/it/token-api/_meta.js b/website/src/pages/it/token-api/_meta.js index a8624da52e7f..853f9dc09031 100644 --- a/website/src/pages/it/token-api/_meta.js +++ b/website/src/pages/it/token-api/_meta.js @@ -2,15 +2,15 @@ import titles from './_meta-titles.json' export default { 'quick-start': '', + 'svm-tokens': titles['svm-tokens'] ?? '', + 'svm-dexs': titles['svm-dexs'] ?? '', 'evm-tokens': titles['evm-tokens'] ?? '', 'evm-dexs': titles['evm-dexs'] ?? '', 'evm-nfts': titles['evm-nfts'] ?? '', - 'svm-tokens': titles['svm-tokens'] ?? '', - 'svm-dexs': titles['svm-dexs'] ?? '', 'tvm-tokens': titles['tvm-tokens'] ?? '', 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', 'endpoint-pricing': '', + guides: 'Guides', faq: '', - 'upgrade-to-v1': '', } diff --git a/website/src/pages/it/token-api/endpoints/_meta.js b/website/src/pages/it/token-api/endpoints/_meta.js new file mode 100644 index 000000000000..5d419807937c --- /dev/null +++ b/website/src/pages/it/token-api/endpoints/_meta.js @@ -0,0 +1,4 @@ +export default { + 'endpoint-pricing': '', + 'endpoint-support': '', +} diff --git a/website/src/pages/it/token-api/endpoint-pricing.mdx b/website/src/pages/it/token-api/endpoints/endpoint-pricing.mdx similarity index 100% rename from website/src/pages/it/token-api/endpoint-pricing.mdx rename to website/src/pages/it/token-api/endpoints/endpoint-pricing.mdx diff --git a/website/src/pages/it/token-api/endpoints/endpoint-support.msx b/website/src/pages/it/token-api/endpoints/endpoint-support.msx new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/website/src/pages/it/token-api/guides/_meta-titles.json b/website/src/pages/it/token-api/guides/_meta-titles.json new file mode 100644 index 000000000000..cd93dcc0fc0b --- /dev/null +++ b/website/src/pages/it/token-api/guides/_meta-titles.json @@ -0,0 +1,4 @@ +{ + "gpt": "Create Custom GPTS", + "upgrade-to-v1": "" +} diff --git a/website/src/pages/it/token-api/guides/_meta.js b/website/src/pages/it/token-api/guides/_meta.js new file mode 100644 index 000000000000..e5aaaadd78f2 --- /dev/null +++ b/website/src/pages/it/token-api/guides/_meta.js @@ -0,0 +1,4 @@ +export default { + gpt: '', + 'upgrade-to-v1': '', +} diff --git a/website/src/pages/it/token-api/guides/gpt.mdx b/website/src/pages/it/token-api/guides/gpt.mdx new file mode 100644 index 000000000000..564d013dea20 --- /dev/null +++ b/website/src/pages/it/token-api/guides/gpt.mdx @@ -0,0 +1,121 @@ +--- +title: How the Token API Powers Custom GPTs +sidebarTitle: Create Custom GPTs +--- + +## Overview + +The Token API is a pre-indexed blockchain data service that provides real-time access to token balances, metadata, prices, liquidity, and volume across multiple chains. Developers use its REST endpoints to build wallets, trading dashboards, DeFi analytics, and AI systems without maintaining their own indexing stack. Custom GPTs can connect directly to the Token API's OpenAPI schema. + +The Token API enables developers to build **Custom GPTs** to reason over live blockchain data inside ChatGPT that can reason over and respond with live blockchain data directly inside ChatGPT. + +## What the Token API Enables in Custom GPTs + +When a Custom GPT is wired to the Token API, it gains access to a machine-readable schema and authenticated endpoints. Developers can use this to: + +- **Query real-time onchain data**: Balances, token prices, liquidity, and transaction history. +- **Automate domain-specific tasks**: Portfolio tracking, accounting, reconciliation, and market analysis. +- **Power AI agents with verifiable blockchain context**: Use the same data sources dapps rely on. + +Because the Token API provides a machine-readable schema and authenticated requests, it serves as a structured data layer that enables GPT-5 agents to combine natural language reasoning with live onchain data from The Graph. + +## When to Use the Token API for Custom GPTs + +Use the Token API when your GPT needs repeatable, domain-specific behavior grounded in blockchain data. This is most effective when the GPT performs the same type of task frequently or enforces a workflow you define. For one-off or exploratory questions, standard ChatGPT prompts are sufficient. + +## Choosing a Use Case + +Start with a clear, narrow objective, then expand as needed. Common patterns include: + +- **Accounting GPT**: Onchain accounting, tax tagging, and portfolio reconciliation. +- **Trading GPT**: Liquidity, pricing, and volume analysis for trading strategies. +- **Protocol Tracking GPT**: Real-time monitoring of transaction activity and liquidity pools. + +A focused initial goal such as “Retrieve token balances and prices for a wallet” makes it easier to configure reliable behavior before adding complex workflows. + +## Requirements + +| Requirement | Description | +| ---------------------- | -------------------------------------------------------- | +| ChatGPT 5 | Custom GPT creation requires GPT-5 tier or Pro. | +| Token API Subscription | Sign up at [The Graph Market](https://thegraph.market./) | +| Token API Key | Available in your dashboard as the Authentication JWT. | + +## Setting Up a Custom GPT + +Below is an explanatory outline of what happens during setup. This section provides conceptual understanding. + +### Create Custom GPT + +1. Visit chat.openai.com/gpts in your browser. 2, Click Create (top right). +2. Under Configure (in the top left panel), set up your GPT's personality and scope. + +### Configure Your GPT + +You define the GPT's role, scope, and metadata so it knows what it is designed to do. This includes: + +- **Name and Description**: Helps users discover your GPT. + - For example: **Name**: Token Tracker GPT **Description**: An onchain analytics assistant that retrieves live token balances, prices, and liquidity data using The Graph's Token API. +- **Instructions**: Tells the GPT what tasks it should perform using the Token API. + - For example: You are a blockchain data assistant retrieving onchain token data from The Graph's Token API. Use endpoints to fetch balances, liquidity, and price history across EVM chains. Present results in tables with token symbols, prices, and USD values. +- **Knowledge**: Optional context files such as wallet references, accounting rules, or code snippets. +- **New Action**: At the bottom, click “Create new action” to connect your GPT to the Token API. + +### Connect the Token API + +To enable live blockchain queries inside ChatGPT, you connect the GPT to the Token API through: + +#### Authentication + +1. Set Authentication to API Key → Bearer. +2. Open [The Graph Market](https://thegraph.market./) and copy your Authentication JWT from your dashboard. +3. Paste the token into the ChatGPT prompt where the field shows [HIDDEN]. + +#### Schema + +1. Above the Schema box, click Import from URL. +2. Paste: https://token-api.thegraph.com/openapi +3. Click Import. You'll now see endpoints like: + - `getV1EvmTokens` + - `getV1EvmDexes` + - `getV1EvmBalances` +4. Click Test on one (for example `getV1EvmDexes`) to verify connection. + +##### Privacy + +1. At the bottom, under Privacy, paste: https://pinax.network/en/legal/privacy + +### Privacy + +You can attach a privacy policy URL such as: https://pinax.network/en/legal/privacy + +## Example Prompt Patterns + +These examples help illustrate how a GPT reasons over Token API data. + +### Wallet and Portfolio + +Get the total USD balance for a wallet across multiple chains, returning token name, symbol, balance, and price. + +### Trading Analysis + +Compare USDC and DAI liquidity across Uniswap and Curve. Return the top 5 pools by TVL. + +### Accounting + +List all ERC-20 transfers for this address in the last 30 days. Group by token and total incoming/outgoing volume. + +## Best Practices + +| Tip | Why It Matters | +| --------------------------------- | ---------------------------------------------------------------------- | +| Scope your GPT narrowly first | Simplifies debugging and validates schema integration. | +| Use clear role instructions | Helps the GPT choose the right endpoints and avoid assumptions. | +| Name endpoints explicitly | Improves routing accuracy when fetching balances, prices, or DEX data. | +| Combine with code | Enables custom parsing or logic for complex workflows. | +| Add Subgraph or Substream context | Provides richer analytics when combined with Token API data. | + +## FAQs & Resources + +- Builders Office Hours (October 23, 2025) +- Watch the full session: https://x.com/i/broadcasts/1mrGmBzBarNJy diff --git a/website/src/pages/it/token-api/guides/upgrade-to-v1.mdx b/website/src/pages/it/token-api/guides/upgrade-to-v1.mdx new file mode 100644 index 000000000000..e2a7ccf973fa --- /dev/null +++ b/website/src/pages/it/token-api/guides/upgrade-to-v1.mdx @@ -0,0 +1,346 @@ +--- +title: Upgrade to v1 +--- + +This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. + +**Note** + +- `EVM` = Ethereum Virtual Machine + +Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). + +- `SVM` = Solana Virtual Machine + +Used to describe endpoints supporting Solana (currently the only SVM chain supported). + +## 🔑 Breaking Changes Summary + +### 1. API Versioning + +All endpoints now use the `/v1` prefix. + +**Before:** + +``` +GET /balances/evm +GET /nft/items/contract/:contract/token_id/:token_id +``` + +**After:** + +``` +GET /v1/evm/balances +GET /v1/evm/nft/items +``` + +### 2. Route Structure Reorganization + +#### 2.1 EVM Endpoints + +Consolidated under `/v1/evm/*` + +| Old Endpoint | New Endpoint | +| ------------------------------------------------------ | ----------------------------- | +| `/balances/evm` | `/v1/evm/balances` | +| `/historical/balances/evm` | `/v1/evm/balances/historical` | +| `/holders/evm/:contract` | `/v1/evm/holders` | +| `/tokens/evm/:contract` | `/v1/evm/tokens` | +| `/transfers/evm` | `/v1/evm/transfers` | +| `/pools/evm` | `/v1/evm/pools` | +| `/swaps/evm` | `/v1/evm/swaps` | +| `/dexes/evm` | `/v1/evm/dexes` | +| `/ohlc/prices/evm/:contract` | _(removed)_ | +| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | +| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | +| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | +| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | +| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | +| `/nft/activities/evm` | `/v1/evm/nft/transfers` | +| `/nft/sales/evm` | `/v1/evm/nft/sales` | + +**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. + +**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. + +--- + +#### 2.2 New EVM native balances endpoint + +Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. + +Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. + +--- + +#### 2.3 SVM Endpoints + +Consolidated under `/v1/svm/*` + +| Old Endpoint | New Endpoint | +| ------------------------ | ------------------------- | +| `/balances/svm` | `/v1/svm/balances` | +| `/balances/native/svm` | `/v1/svm/balances/native` | +| `/holders/svm/:contract` | `/v1/svm/holders` | +| `/tokens/svm/:mint` | `/v1/svm/tokens` | +| `/transfers/svm` | `/v1/svm/transfers` | +| `/pools/svm` | `/v1/svm/pools` | +| `/swaps/svm` | `/v1/svm/swaps` | +| `/dexes/svm` | `/v1/svm/dexes` | +| `/owner/svm/:account` | `/v1/svm/owner` | +| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | + +## 📝 Parameter Changes + +### 3. Path Parameters → Query Parameters + +All path parameters have been moved to query parameters. + +**Before:** + +```bash +GET /balances/evm/:address +GET /holders/evm/:contract +GET /nft/items/evm/contract/:contract/token_id/:token_id +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0x... +GET /v1/evm/holders?network=mainnet&contract=0x... +GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 +``` + +### 4. Standardized Parameter Naming + +All query parameters have been standardized to use snake_case naming convention. + +| Old Parameter | New Parameter | Notes | +| --- | --- | --- | +| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | +| `anyAddress` | `address` | Matches either `from` or `to` address | +| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | +| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | +| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | +| `endTime` | `end_time` | Default: `9999999999` | +| - | `start_block` | New parameter, default: `0` | +| - | `end_block` | New parameter, default: `9999999999` | +| - | `include_null_balances` | New parameter, default: `false` | +| `tx_hash` | `transaction_id` | - | +| `token` | `input_token`, `output_token` | More explicit for pool queries | +| `pool` | `amm_pool` | - | +| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | + +**Important:** The `network_id` parameter has been renamed to `network`. + +**Important:** `matic` network has been renamed to `polygon`. + +### 5. Batched Parameters + +Many parameters now support batching - accepting single values or comma-separated strings. + +**Supported Batched Parameters:** + +- `address`, `from_address`, `to_address` +- `contract`, `token_id` +- `factory`, `pool` +- `owner`, `token_account`, `mint` +- `transaction_id`, `signature` + +**Examples:** + +```console +## Single value +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 + +## Comma-separated, single parameter +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 + +## Repeated parameter values +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +### 6. New Parameters + +#### `include_null_balances` + +Added to balance endpoints to optionally include zero/null balances. + +```bash +?include_null_balances=true +``` + +**Default:** `false` + +## 🔄 Response Changes + +### 7. Pagination Changes + +Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. + +**Before:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2, + "next_page": 3, + "total_pages": 10 + }, + "total_results": 1234 +} +``` + +**After:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2 + } +} +``` + +**Removed fields:** + +- `next_page` +- `total_pages` +- `total_results` + +**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. + +### 8. Removed Parameters + +The following deprecated parameters have been removed: + +- `orderBy` - Results are now ordered by timestamp/block by default +- `orderDirection` - Always descending (newest first) + +### 9. Cached Queries + +Queries are now cached on the ClickHouse side for better performance. + +You can specifically request to not use the cache by setting the `Cache-Control` header to `no-cache`. + +#### Example + +**Cache** + +```console +$ curl -s 'https://token-api.thegraph.com/v1/...' | jq .statistics +{ + "bytes_read": 221, + "rows_read": 1, + "elapsed": 0.002212065 +} +``` + +**No cache** + +```console +$ curl -s 'http://localhost:8000/v1/...' --header 'Cache-Control: no-cache' | jq .statistics +{ + "bytes_read": 14621174348, + "rows_read": 223244390, + "elapsed": 0.971064066 +} +``` + +## 📚 Example Migrations + +### Example 1: Get Token Balances + +**Before:** + +```bash +GET /token/balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +### Example 2: Get NFT Items + +**Before:** + +```bash +GET /nft/items/evm/contract/0xbd3531da5cf5857e7cfaa92426877b022e612cf8/token_id/5712?network_id=mainnet +``` + +**After:** + +```bash +GET /v1/evm/nft/items?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&token_id=5712 +``` + +### Example 3: Get Token Transfers with Time Filter + +**Before:** + +```bash +GET /token/transfers/evm?network_id=mainnet&from=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&startTime=1735689600&endTime=1767225600 +``` + +**After:** + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&start_time=1735689600&end_time=1767225600 +``` + +### Example 4: Get NFT Transfer Activities + +**Before:** + +```bash +GET /nft/activities/evm?network_id=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&anyAddress=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +**After:** + +```bash +GET /v1/evm/nft/transfers?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +### Example 5: Get Pool OHLC Data + +**Before:** + +```bash +GET /token/ohlc/pools/evm/0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640?network_id=mainnet&interval=1h&startTime=1735689600 +``` + +**After:** + +```bash +GET /v1/evm/pools/ohlc?network=mainnet&pool=0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640&interval=1h&start_time=1735689600 +``` + +### Example 6: Batched Query (New Feature) + +Query balances for multiple contracts in a single request: + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +Query transfers from multiple addresses: + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xabc...,0xdef...,0x123...&start_time=1735689600 +``` + +## ⚠️ Important Notes + +1. **Migration Notes:** The old endpoints were deprecated and removed on **October 30, 2025**. Please ensure all integrations have been migrated to the new Token API v1 endpoints. + +2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. + +3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. + +4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/it/token-api/svm-tokens/_meta.js b/website/src/pages/it/token-api/svm-tokens/_meta.js index 1de31437004c..001e2d43341a 100644 --- a/website/src/pages/it/token-api/svm-tokens/_meta.js +++ b/website/src/pages/it/token-api/svm-tokens/_meta.js @@ -1,6 +1,6 @@ export default { - tokens: '', transfers: '', + tokens: '', balances: '', 'balances-native': '', holders: '', diff --git a/website/src/pages/it/token-api/upgrade-to-v1.mdx b/website/src/pages/it/token-api/upgrade-to-v1.mdx deleted file mode 100644 index fbe09101eaa5..000000000000 --- a/website/src/pages/it/token-api/upgrade-to-v1.mdx +++ /dev/null @@ -1,254 +0,0 @@ ---- -title: Upgrade to v1 ---- - -This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. - -**Note** - -- `EVM` = Ethereum Virtual Machine - -Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). - -- `SVM` = Solana Virtual Machine - -Used to describe endpoints supporting Solana (currently the only SVM chain supported). - -## 🔑 Breaking Changes Summary - -### 1. **API Versioning** - -All endpoints now use the `/v1` prefix. - -**Before:** - -``` -GET /balances/evm -GET /nft/items/contract/:contract/token_id/:token_id -``` - -**After:** - -``` -GET /v1/evm/balances -GET /v1/evm/nft/items -``` - -### 2. **Route Structure Reorganization** - -#### 2.1 EVM Endpoints - -Consolidated under `/v1/evm/*` - -| Old Endpoint | New Endpoint | -| ------------------------------------------------------ | ----------------------------- | -| `/balances/evm` | `/v1/evm/balances` | -| `/historical/balances/evm` | `/v1/evm/balances/historical` | -| `/holders/evm/:contract` | `/v1/evm/holders` | -| `/tokens/evm/:contract` | `/v1/evm/tokens` | -| `/transfers/evm` | `/v1/evm/transfers` | -| `/pools/evm` | `/v1/evm/pools` | -| `/swaps/evm` | `/v1/evm/swaps` | -| `/dexes/evm` | `/v1/evm/dexes` | -| `/ohlc/prices/evm/:contract` | _(removed)_ | -| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | -| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | -| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | -| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | -| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | -| `/nft/activities/evm` | `/v1/evm/nft/transfers` | -| `/nft/sales/evm` | `/v1/evm/nft/sales` | - -**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. - -**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. - ---- - -#### 2.2 New EVM native balances endpoint - -Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. - -Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. - ---- - -#### 2.3 SVM Endpoints - -Consolidated under `/v1/svm/*` - -| Old Endpoint | New Endpoint | -| ------------------------ | ------------------------- | -| `/balances/svm` | `/v1/svm/balances` | -| `/balances/native/svm` | `/v1/svm/balances/native` | -| `/holders/svm/:contract` | `/v1/svm/holders` | -| `/tokens/svm/:mint` | `/v1/svm/tokens` | -| `/transfers/svm` | `/v1/svm/transfers` | -| `/pools/svm` | `/v1/svm/pools` | -| `/swaps/svm` | `/v1/svm/swaps` | -| `/dexes/svm` | `/v1/svm/dexes` | -| `/owner/svm/:account` | `/v1/svm/owner` | -| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | - -## 📝 Parameter Changes - -### 3. **Path Parameters → Query Parameters** - -All path parameters have been moved to query parameters. - -**Before:** - -```bash -GET /balances/evm/:address -GET /holders/evm/:contract -GET /nft/items/evm/contract/:contract/token_id/:token_id -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0x... -GET /v1/evm/holders?network=mainnet&contract=0x... -GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 -``` - -### 4. **Standardized Parameter Naming** - -All query parameters have been standardized to use snake_case naming convention. - -| Old Parameter | New Parameter | Notes | -| --- | --- | --- | -| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | -| `anyAddress` | `address` | Matches either `from` or `to` address | -| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | -| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | -| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | -| `endTime` | `end_time` | Default: `9999999999` | -| - | `start_block` | New parameter, default: `0` | -| - | `end_block` | New parameter, default: `9999999999` | -| - | `include_null_balances` | New parameter, default: `false` | -| `tx_hash` | `transaction_id` | - | -| `token` | `input_token`, `output_token` | More explicit for pool queries | -| `pool` | `amm_pool` | - | -| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | - -**Important:** The `network_id` parameter has been renamed to `network`. - -**Important:** `matic` network has been renamed to `polygon`. - -### 5. **Batched Parameters** - -Many parameters now support batching - accepting single values or comma-separated strings. - -**Supported Batched Parameters:** - -- `address`, `from_address`, `to_address` -- `contract`, `token_id` -- `factory`, `pool` -- `owner`, `token_account`, `mint` -- `transaction_id`, `signature` - -**Examples:** - -```console -# Single value -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 - -# Comma-separated, single parameter -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 - -# Repeated parameter values -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -### 6. **New Parameters** - -#### `include_null_balances` - -Added to balance endpoints to optionally include zero/null balances. - -```bash -?include_null_balances=true -``` - -**Default:** `false` - -## 🔄 Response Changes - -### 7. **Pagination Changes** - -Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. - -**Before:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2, - "next_page": 3, - "total_pages": 10 - }, - "total_results": 1234 -} -``` - -**After:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2 - } -} -``` - -**Removed fields:** - -- `next_page` -- `total_pages` -- `total_results` - -**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. - -### 8. **Removed Parameters** - -The following deprecated parameters have been removed: - -- `orderBy` - Results are now ordered by timestamp/block by default -- `orderDirection` - Always descending (newest first) - -## 📚 Example Migrations - -### Old vs New: Get Token Balances - -**Before:** - -```bash -GET /balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -### New Feature: Batched Queries - -Query balances for multiple contracts in a single request: - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -## ⚠️ Important Notes - -1. **Backward Compatibility:** The old endpoints are deprecated and will be removed in the future. Migrate by **Oct 30, 2025**. - -2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. - -3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. - -4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/ja/token-api/_meta.js b/website/src/pages/ja/token-api/_meta.js index a8624da52e7f..853f9dc09031 100644 --- a/website/src/pages/ja/token-api/_meta.js +++ b/website/src/pages/ja/token-api/_meta.js @@ -2,15 +2,15 @@ import titles from './_meta-titles.json' export default { 'quick-start': '', + 'svm-tokens': titles['svm-tokens'] ?? '', + 'svm-dexs': titles['svm-dexs'] ?? '', 'evm-tokens': titles['evm-tokens'] ?? '', 'evm-dexs': titles['evm-dexs'] ?? '', 'evm-nfts': titles['evm-nfts'] ?? '', - 'svm-tokens': titles['svm-tokens'] ?? '', - 'svm-dexs': titles['svm-dexs'] ?? '', 'tvm-tokens': titles['tvm-tokens'] ?? '', 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', 'endpoint-pricing': '', + guides: 'Guides', faq: '', - 'upgrade-to-v1': '', } diff --git a/website/src/pages/ja/token-api/endpoints/_meta.js b/website/src/pages/ja/token-api/endpoints/_meta.js new file mode 100644 index 000000000000..5d419807937c --- /dev/null +++ b/website/src/pages/ja/token-api/endpoints/_meta.js @@ -0,0 +1,4 @@ +export default { + 'endpoint-pricing': '', + 'endpoint-support': '', +} diff --git a/website/src/pages/ja/token-api/endpoint-pricing.mdx b/website/src/pages/ja/token-api/endpoints/endpoint-pricing.mdx similarity index 100% rename from website/src/pages/ja/token-api/endpoint-pricing.mdx rename to website/src/pages/ja/token-api/endpoints/endpoint-pricing.mdx diff --git a/website/src/pages/ja/token-api/endpoints/endpoint-support.msx b/website/src/pages/ja/token-api/endpoints/endpoint-support.msx new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/website/src/pages/ja/token-api/guides/_meta-titles.json b/website/src/pages/ja/token-api/guides/_meta-titles.json new file mode 100644 index 000000000000..cd93dcc0fc0b --- /dev/null +++ b/website/src/pages/ja/token-api/guides/_meta-titles.json @@ -0,0 +1,4 @@ +{ + "gpt": "Create Custom GPTS", + "upgrade-to-v1": "" +} diff --git a/website/src/pages/ja/token-api/guides/_meta.js b/website/src/pages/ja/token-api/guides/_meta.js new file mode 100644 index 000000000000..e5aaaadd78f2 --- /dev/null +++ b/website/src/pages/ja/token-api/guides/_meta.js @@ -0,0 +1,4 @@ +export default { + gpt: '', + 'upgrade-to-v1': '', +} diff --git a/website/src/pages/ja/token-api/guides/gpt.mdx b/website/src/pages/ja/token-api/guides/gpt.mdx new file mode 100644 index 000000000000..564d013dea20 --- /dev/null +++ b/website/src/pages/ja/token-api/guides/gpt.mdx @@ -0,0 +1,121 @@ +--- +title: How the Token API Powers Custom GPTs +sidebarTitle: Create Custom GPTs +--- + +## Overview + +The Token API is a pre-indexed blockchain data service that provides real-time access to token balances, metadata, prices, liquidity, and volume across multiple chains. Developers use its REST endpoints to build wallets, trading dashboards, DeFi analytics, and AI systems without maintaining their own indexing stack. Custom GPTs can connect directly to the Token API's OpenAPI schema. + +The Token API enables developers to build **Custom GPTs** to reason over live blockchain data inside ChatGPT that can reason over and respond with live blockchain data directly inside ChatGPT. + +## What the Token API Enables in Custom GPTs + +When a Custom GPT is wired to the Token API, it gains access to a machine-readable schema and authenticated endpoints. Developers can use this to: + +- **Query real-time onchain data**: Balances, token prices, liquidity, and transaction history. +- **Automate domain-specific tasks**: Portfolio tracking, accounting, reconciliation, and market analysis. +- **Power AI agents with verifiable blockchain context**: Use the same data sources dapps rely on. + +Because the Token API provides a machine-readable schema and authenticated requests, it serves as a structured data layer that enables GPT-5 agents to combine natural language reasoning with live onchain data from The Graph. + +## When to Use the Token API for Custom GPTs + +Use the Token API when your GPT needs repeatable, domain-specific behavior grounded in blockchain data. This is most effective when the GPT performs the same type of task frequently or enforces a workflow you define. For one-off or exploratory questions, standard ChatGPT prompts are sufficient. + +## Choosing a Use Case + +Start with a clear, narrow objective, then expand as needed. Common patterns include: + +- **Accounting GPT**: Onchain accounting, tax tagging, and portfolio reconciliation. +- **Trading GPT**: Liquidity, pricing, and volume analysis for trading strategies. +- **Protocol Tracking GPT**: Real-time monitoring of transaction activity and liquidity pools. + +A focused initial goal such as “Retrieve token balances and prices for a wallet” makes it easier to configure reliable behavior before adding complex workflows. + +## Requirements + +| Requirement | Description | +| ---------------------- | -------------------------------------------------------- | +| ChatGPT 5 | Custom GPT creation requires GPT-5 tier or Pro. | +| Token API Subscription | Sign up at [The Graph Market](https://thegraph.market./) | +| Token API Key | Available in your dashboard as the Authentication JWT. | + +## Setting Up a Custom GPT + +Below is an explanatory outline of what happens during setup. This section provides conceptual understanding. + +### Create Custom GPT + +1. Visit chat.openai.com/gpts in your browser. 2, Click Create (top right). +2. Under Configure (in the top left panel), set up your GPT's personality and scope. + +### Configure Your GPT + +You define the GPT's role, scope, and metadata so it knows what it is designed to do. This includes: + +- **Name and Description**: Helps users discover your GPT. + - For example: **Name**: Token Tracker GPT **Description**: An onchain analytics assistant that retrieves live token balances, prices, and liquidity data using The Graph's Token API. +- **Instructions**: Tells the GPT what tasks it should perform using the Token API. + - For example: You are a blockchain data assistant retrieving onchain token data from The Graph's Token API. Use endpoints to fetch balances, liquidity, and price history across EVM chains. Present results in tables with token symbols, prices, and USD values. +- **Knowledge**: Optional context files such as wallet references, accounting rules, or code snippets. +- **New Action**: At the bottom, click “Create new action” to connect your GPT to the Token API. + +### Connect the Token API + +To enable live blockchain queries inside ChatGPT, you connect the GPT to the Token API through: + +#### Authentication + +1. Set Authentication to API Key → Bearer. +2. Open [The Graph Market](https://thegraph.market./) and copy your Authentication JWT from your dashboard. +3. Paste the token into the ChatGPT prompt where the field shows [HIDDEN]. + +#### Schema + +1. Above the Schema box, click Import from URL. +2. Paste: https://token-api.thegraph.com/openapi +3. Click Import. You'll now see endpoints like: + - `getV1EvmTokens` + - `getV1EvmDexes` + - `getV1EvmBalances` +4. Click Test on one (for example `getV1EvmDexes`) to verify connection. + +##### Privacy + +1. At the bottom, under Privacy, paste: https://pinax.network/en/legal/privacy + +### Privacy + +You can attach a privacy policy URL such as: https://pinax.network/en/legal/privacy + +## Example Prompt Patterns + +These examples help illustrate how a GPT reasons over Token API data. + +### Wallet and Portfolio + +Get the total USD balance for a wallet across multiple chains, returning token name, symbol, balance, and price. + +### Trading Analysis + +Compare USDC and DAI liquidity across Uniswap and Curve. Return the top 5 pools by TVL. + +### Accounting + +List all ERC-20 transfers for this address in the last 30 days. Group by token and total incoming/outgoing volume. + +## Best Practices + +| Tip | Why It Matters | +| --------------------------------- | ---------------------------------------------------------------------- | +| Scope your GPT narrowly first | Simplifies debugging and validates schema integration. | +| Use clear role instructions | Helps the GPT choose the right endpoints and avoid assumptions. | +| Name endpoints explicitly | Improves routing accuracy when fetching balances, prices, or DEX data. | +| Combine with code | Enables custom parsing or logic for complex workflows. | +| Add Subgraph or Substream context | Provides richer analytics when combined with Token API data. | + +## FAQs & Resources + +- Builders Office Hours (October 23, 2025) +- Watch the full session: https://x.com/i/broadcasts/1mrGmBzBarNJy diff --git a/website/src/pages/ja/token-api/guides/upgrade-to-v1.mdx b/website/src/pages/ja/token-api/guides/upgrade-to-v1.mdx new file mode 100644 index 000000000000..e2a7ccf973fa --- /dev/null +++ b/website/src/pages/ja/token-api/guides/upgrade-to-v1.mdx @@ -0,0 +1,346 @@ +--- +title: Upgrade to v1 +--- + +This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. + +**Note** + +- `EVM` = Ethereum Virtual Machine + +Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). + +- `SVM` = Solana Virtual Machine + +Used to describe endpoints supporting Solana (currently the only SVM chain supported). + +## 🔑 Breaking Changes Summary + +### 1. API Versioning + +All endpoints now use the `/v1` prefix. + +**Before:** + +``` +GET /balances/evm +GET /nft/items/contract/:contract/token_id/:token_id +``` + +**After:** + +``` +GET /v1/evm/balances +GET /v1/evm/nft/items +``` + +### 2. Route Structure Reorganization + +#### 2.1 EVM Endpoints + +Consolidated under `/v1/evm/*` + +| Old Endpoint | New Endpoint | +| ------------------------------------------------------ | ----------------------------- | +| `/balances/evm` | `/v1/evm/balances` | +| `/historical/balances/evm` | `/v1/evm/balances/historical` | +| `/holders/evm/:contract` | `/v1/evm/holders` | +| `/tokens/evm/:contract` | `/v1/evm/tokens` | +| `/transfers/evm` | `/v1/evm/transfers` | +| `/pools/evm` | `/v1/evm/pools` | +| `/swaps/evm` | `/v1/evm/swaps` | +| `/dexes/evm` | `/v1/evm/dexes` | +| `/ohlc/prices/evm/:contract` | _(removed)_ | +| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | +| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | +| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | +| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | +| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | +| `/nft/activities/evm` | `/v1/evm/nft/transfers` | +| `/nft/sales/evm` | `/v1/evm/nft/sales` | + +**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. + +**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. + +--- + +#### 2.2 New EVM native balances endpoint + +Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. + +Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. + +--- + +#### 2.3 SVM Endpoints + +Consolidated under `/v1/svm/*` + +| Old Endpoint | New Endpoint | +| ------------------------ | ------------------------- | +| `/balances/svm` | `/v1/svm/balances` | +| `/balances/native/svm` | `/v1/svm/balances/native` | +| `/holders/svm/:contract` | `/v1/svm/holders` | +| `/tokens/svm/:mint` | `/v1/svm/tokens` | +| `/transfers/svm` | `/v1/svm/transfers` | +| `/pools/svm` | `/v1/svm/pools` | +| `/swaps/svm` | `/v1/svm/swaps` | +| `/dexes/svm` | `/v1/svm/dexes` | +| `/owner/svm/:account` | `/v1/svm/owner` | +| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | + +## 📝 Parameter Changes + +### 3. Path Parameters → Query Parameters + +All path parameters have been moved to query parameters. + +**Before:** + +```bash +GET /balances/evm/:address +GET /holders/evm/:contract +GET /nft/items/evm/contract/:contract/token_id/:token_id +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0x... +GET /v1/evm/holders?network=mainnet&contract=0x... +GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 +``` + +### 4. Standardized Parameter Naming + +All query parameters have been standardized to use snake_case naming convention. + +| Old Parameter | New Parameter | Notes | +| --- | --- | --- | +| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | +| `anyAddress` | `address` | Matches either `from` or `to` address | +| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | +| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | +| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | +| `endTime` | `end_time` | Default: `9999999999` | +| - | `start_block` | New parameter, default: `0` | +| - | `end_block` | New parameter, default: `9999999999` | +| - | `include_null_balances` | New parameter, default: `false` | +| `tx_hash` | `transaction_id` | - | +| `token` | `input_token`, `output_token` | More explicit for pool queries | +| `pool` | `amm_pool` | - | +| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | + +**Important:** The `network_id` parameter has been renamed to `network`. + +**Important:** `matic` network has been renamed to `polygon`. + +### 5. Batched Parameters + +Many parameters now support batching - accepting single values or comma-separated strings. + +**Supported Batched Parameters:** + +- `address`, `from_address`, `to_address` +- `contract`, `token_id` +- `factory`, `pool` +- `owner`, `token_account`, `mint` +- `transaction_id`, `signature` + +**Examples:** + +```console +## Single value +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 + +## Comma-separated, single parameter +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 + +## Repeated parameter values +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +### 6. New Parameters + +#### `include_null_balances` + +Added to balance endpoints to optionally include zero/null balances. + +```bash +?include_null_balances=true +``` + +**Default:** `false` + +## 🔄 Response Changes + +### 7. Pagination Changes + +Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. + +**Before:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2, + "next_page": 3, + "total_pages": 10 + }, + "total_results": 1234 +} +``` + +**After:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2 + } +} +``` + +**Removed fields:** + +- `next_page` +- `total_pages` +- `total_results` + +**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. + +### 8. Removed Parameters + +The following deprecated parameters have been removed: + +- `orderBy` - Results are now ordered by timestamp/block by default +- `orderDirection` - Always descending (newest first) + +### 9. Cached Queries + +Queries are now cached on the ClickHouse side for better performance. + +You can specifically request to not use the cache by setting the `Cache-Control` header to `no-cache`. + +#### Example + +**Cache** + +```console +$ curl -s 'https://token-api.thegraph.com/v1/...' | jq .statistics +{ + "bytes_read": 221, + "rows_read": 1, + "elapsed": 0.002212065 +} +``` + +**No cache** + +```console +$ curl -s 'http://localhost:8000/v1/...' --header 'Cache-Control: no-cache' | jq .statistics +{ + "bytes_read": 14621174348, + "rows_read": 223244390, + "elapsed": 0.971064066 +} +``` + +## 📚 Example Migrations + +### Example 1: Get Token Balances + +**Before:** + +```bash +GET /token/balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +### Example 2: Get NFT Items + +**Before:** + +```bash +GET /nft/items/evm/contract/0xbd3531da5cf5857e7cfaa92426877b022e612cf8/token_id/5712?network_id=mainnet +``` + +**After:** + +```bash +GET /v1/evm/nft/items?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&token_id=5712 +``` + +### Example 3: Get Token Transfers with Time Filter + +**Before:** + +```bash +GET /token/transfers/evm?network_id=mainnet&from=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&startTime=1735689600&endTime=1767225600 +``` + +**After:** + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&start_time=1735689600&end_time=1767225600 +``` + +### Example 4: Get NFT Transfer Activities + +**Before:** + +```bash +GET /nft/activities/evm?network_id=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&anyAddress=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +**After:** + +```bash +GET /v1/evm/nft/transfers?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +### Example 5: Get Pool OHLC Data + +**Before:** + +```bash +GET /token/ohlc/pools/evm/0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640?network_id=mainnet&interval=1h&startTime=1735689600 +``` + +**After:** + +```bash +GET /v1/evm/pools/ohlc?network=mainnet&pool=0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640&interval=1h&start_time=1735689600 +``` + +### Example 6: Batched Query (New Feature) + +Query balances for multiple contracts in a single request: + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +Query transfers from multiple addresses: + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xabc...,0xdef...,0x123...&start_time=1735689600 +``` + +## ⚠️ Important Notes + +1. **Migration Notes:** The old endpoints were deprecated and removed on **October 30, 2025**. Please ensure all integrations have been migrated to the new Token API v1 endpoints. + +2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. + +3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. + +4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/ja/token-api/svm-tokens/_meta.js b/website/src/pages/ja/token-api/svm-tokens/_meta.js index 1de31437004c..001e2d43341a 100644 --- a/website/src/pages/ja/token-api/svm-tokens/_meta.js +++ b/website/src/pages/ja/token-api/svm-tokens/_meta.js @@ -1,6 +1,6 @@ export default { - tokens: '', transfers: '', + tokens: '', balances: '', 'balances-native': '', holders: '', diff --git a/website/src/pages/ja/token-api/upgrade-to-v1.mdx b/website/src/pages/ja/token-api/upgrade-to-v1.mdx deleted file mode 100644 index fbe09101eaa5..000000000000 --- a/website/src/pages/ja/token-api/upgrade-to-v1.mdx +++ /dev/null @@ -1,254 +0,0 @@ ---- -title: Upgrade to v1 ---- - -This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. - -**Note** - -- `EVM` = Ethereum Virtual Machine - -Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). - -- `SVM` = Solana Virtual Machine - -Used to describe endpoints supporting Solana (currently the only SVM chain supported). - -## 🔑 Breaking Changes Summary - -### 1. **API Versioning** - -All endpoints now use the `/v1` prefix. - -**Before:** - -``` -GET /balances/evm -GET /nft/items/contract/:contract/token_id/:token_id -``` - -**After:** - -``` -GET /v1/evm/balances -GET /v1/evm/nft/items -``` - -### 2. **Route Structure Reorganization** - -#### 2.1 EVM Endpoints - -Consolidated under `/v1/evm/*` - -| Old Endpoint | New Endpoint | -| ------------------------------------------------------ | ----------------------------- | -| `/balances/evm` | `/v1/evm/balances` | -| `/historical/balances/evm` | `/v1/evm/balances/historical` | -| `/holders/evm/:contract` | `/v1/evm/holders` | -| `/tokens/evm/:contract` | `/v1/evm/tokens` | -| `/transfers/evm` | `/v1/evm/transfers` | -| `/pools/evm` | `/v1/evm/pools` | -| `/swaps/evm` | `/v1/evm/swaps` | -| `/dexes/evm` | `/v1/evm/dexes` | -| `/ohlc/prices/evm/:contract` | _(removed)_ | -| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | -| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | -| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | -| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | -| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | -| `/nft/activities/evm` | `/v1/evm/nft/transfers` | -| `/nft/sales/evm` | `/v1/evm/nft/sales` | - -**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. - -**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. - ---- - -#### 2.2 New EVM native balances endpoint - -Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. - -Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. - ---- - -#### 2.3 SVM Endpoints - -Consolidated under `/v1/svm/*` - -| Old Endpoint | New Endpoint | -| ------------------------ | ------------------------- | -| `/balances/svm` | `/v1/svm/balances` | -| `/balances/native/svm` | `/v1/svm/balances/native` | -| `/holders/svm/:contract` | `/v1/svm/holders` | -| `/tokens/svm/:mint` | `/v1/svm/tokens` | -| `/transfers/svm` | `/v1/svm/transfers` | -| `/pools/svm` | `/v1/svm/pools` | -| `/swaps/svm` | `/v1/svm/swaps` | -| `/dexes/svm` | `/v1/svm/dexes` | -| `/owner/svm/:account` | `/v1/svm/owner` | -| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | - -## 📝 Parameter Changes - -### 3. **Path Parameters → Query Parameters** - -All path parameters have been moved to query parameters. - -**Before:** - -```bash -GET /balances/evm/:address -GET /holders/evm/:contract -GET /nft/items/evm/contract/:contract/token_id/:token_id -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0x... -GET /v1/evm/holders?network=mainnet&contract=0x... -GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 -``` - -### 4. **Standardized Parameter Naming** - -All query parameters have been standardized to use snake_case naming convention. - -| Old Parameter | New Parameter | Notes | -| --- | --- | --- | -| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | -| `anyAddress` | `address` | Matches either `from` or `to` address | -| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | -| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | -| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | -| `endTime` | `end_time` | Default: `9999999999` | -| - | `start_block` | New parameter, default: `0` | -| - | `end_block` | New parameter, default: `9999999999` | -| - | `include_null_balances` | New parameter, default: `false` | -| `tx_hash` | `transaction_id` | - | -| `token` | `input_token`, `output_token` | More explicit for pool queries | -| `pool` | `amm_pool` | - | -| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | - -**Important:** The `network_id` parameter has been renamed to `network`. - -**Important:** `matic` network has been renamed to `polygon`. - -### 5. **Batched Parameters** - -Many parameters now support batching - accepting single values or comma-separated strings. - -**Supported Batched Parameters:** - -- `address`, `from_address`, `to_address` -- `contract`, `token_id` -- `factory`, `pool` -- `owner`, `token_account`, `mint` -- `transaction_id`, `signature` - -**Examples:** - -```console -# Single value -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 - -# Comma-separated, single parameter -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 - -# Repeated parameter values -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -### 6. **New Parameters** - -#### `include_null_balances` - -Added to balance endpoints to optionally include zero/null balances. - -```bash -?include_null_balances=true -``` - -**Default:** `false` - -## 🔄 Response Changes - -### 7. **Pagination Changes** - -Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. - -**Before:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2, - "next_page": 3, - "total_pages": 10 - }, - "total_results": 1234 -} -``` - -**After:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2 - } -} -``` - -**Removed fields:** - -- `next_page` -- `total_pages` -- `total_results` - -**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. - -### 8. **Removed Parameters** - -The following deprecated parameters have been removed: - -- `orderBy` - Results are now ordered by timestamp/block by default -- `orderDirection` - Always descending (newest first) - -## 📚 Example Migrations - -### Old vs New: Get Token Balances - -**Before:** - -```bash -GET /balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -### New Feature: Batched Queries - -Query balances for multiple contracts in a single request: - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -## ⚠️ Important Notes - -1. **Backward Compatibility:** The old endpoints are deprecated and will be removed in the future. Migrate by **Oct 30, 2025**. - -2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. - -3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. - -4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/ko/token-api/_meta.js b/website/src/pages/ko/token-api/_meta.js index a8624da52e7f..853f9dc09031 100644 --- a/website/src/pages/ko/token-api/_meta.js +++ b/website/src/pages/ko/token-api/_meta.js @@ -2,15 +2,15 @@ import titles from './_meta-titles.json' export default { 'quick-start': '', + 'svm-tokens': titles['svm-tokens'] ?? '', + 'svm-dexs': titles['svm-dexs'] ?? '', 'evm-tokens': titles['evm-tokens'] ?? '', 'evm-dexs': titles['evm-dexs'] ?? '', 'evm-nfts': titles['evm-nfts'] ?? '', - 'svm-tokens': titles['svm-tokens'] ?? '', - 'svm-dexs': titles['svm-dexs'] ?? '', 'tvm-tokens': titles['tvm-tokens'] ?? '', 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', 'endpoint-pricing': '', + guides: 'Guides', faq: '', - 'upgrade-to-v1': '', } diff --git a/website/src/pages/ko/token-api/endpoints/_meta.js b/website/src/pages/ko/token-api/endpoints/_meta.js new file mode 100644 index 000000000000..5d419807937c --- /dev/null +++ b/website/src/pages/ko/token-api/endpoints/_meta.js @@ -0,0 +1,4 @@ +export default { + 'endpoint-pricing': '', + 'endpoint-support': '', +} diff --git a/website/src/pages/ko/token-api/endpoint-pricing.mdx b/website/src/pages/ko/token-api/endpoints/endpoint-pricing.mdx similarity index 100% rename from website/src/pages/ko/token-api/endpoint-pricing.mdx rename to website/src/pages/ko/token-api/endpoints/endpoint-pricing.mdx diff --git a/website/src/pages/ko/token-api/endpoints/endpoint-support.msx b/website/src/pages/ko/token-api/endpoints/endpoint-support.msx new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/website/src/pages/ko/token-api/guides/_meta-titles.json b/website/src/pages/ko/token-api/guides/_meta-titles.json new file mode 100644 index 000000000000..cd93dcc0fc0b --- /dev/null +++ b/website/src/pages/ko/token-api/guides/_meta-titles.json @@ -0,0 +1,4 @@ +{ + "gpt": "Create Custom GPTS", + "upgrade-to-v1": "" +} diff --git a/website/src/pages/ko/token-api/guides/_meta.js b/website/src/pages/ko/token-api/guides/_meta.js new file mode 100644 index 000000000000..e5aaaadd78f2 --- /dev/null +++ b/website/src/pages/ko/token-api/guides/_meta.js @@ -0,0 +1,4 @@ +export default { + gpt: '', + 'upgrade-to-v1': '', +} diff --git a/website/src/pages/ko/token-api/guides/gpt.mdx b/website/src/pages/ko/token-api/guides/gpt.mdx new file mode 100644 index 000000000000..564d013dea20 --- /dev/null +++ b/website/src/pages/ko/token-api/guides/gpt.mdx @@ -0,0 +1,121 @@ +--- +title: How the Token API Powers Custom GPTs +sidebarTitle: Create Custom GPTs +--- + +## Overview + +The Token API is a pre-indexed blockchain data service that provides real-time access to token balances, metadata, prices, liquidity, and volume across multiple chains. Developers use its REST endpoints to build wallets, trading dashboards, DeFi analytics, and AI systems without maintaining their own indexing stack. Custom GPTs can connect directly to the Token API's OpenAPI schema. + +The Token API enables developers to build **Custom GPTs** to reason over live blockchain data inside ChatGPT that can reason over and respond with live blockchain data directly inside ChatGPT. + +## What the Token API Enables in Custom GPTs + +When a Custom GPT is wired to the Token API, it gains access to a machine-readable schema and authenticated endpoints. Developers can use this to: + +- **Query real-time onchain data**: Balances, token prices, liquidity, and transaction history. +- **Automate domain-specific tasks**: Portfolio tracking, accounting, reconciliation, and market analysis. +- **Power AI agents with verifiable blockchain context**: Use the same data sources dapps rely on. + +Because the Token API provides a machine-readable schema and authenticated requests, it serves as a structured data layer that enables GPT-5 agents to combine natural language reasoning with live onchain data from The Graph. + +## When to Use the Token API for Custom GPTs + +Use the Token API when your GPT needs repeatable, domain-specific behavior grounded in blockchain data. This is most effective when the GPT performs the same type of task frequently or enforces a workflow you define. For one-off or exploratory questions, standard ChatGPT prompts are sufficient. + +## Choosing a Use Case + +Start with a clear, narrow objective, then expand as needed. Common patterns include: + +- **Accounting GPT**: Onchain accounting, tax tagging, and portfolio reconciliation. +- **Trading GPT**: Liquidity, pricing, and volume analysis for trading strategies. +- **Protocol Tracking GPT**: Real-time monitoring of transaction activity and liquidity pools. + +A focused initial goal such as “Retrieve token balances and prices for a wallet” makes it easier to configure reliable behavior before adding complex workflows. + +## Requirements + +| Requirement | Description | +| ---------------------- | -------------------------------------------------------- | +| ChatGPT 5 | Custom GPT creation requires GPT-5 tier or Pro. | +| Token API Subscription | Sign up at [The Graph Market](https://thegraph.market./) | +| Token API Key | Available in your dashboard as the Authentication JWT. | + +## Setting Up a Custom GPT + +Below is an explanatory outline of what happens during setup. This section provides conceptual understanding. + +### Create Custom GPT + +1. Visit chat.openai.com/gpts in your browser. 2, Click Create (top right). +2. Under Configure (in the top left panel), set up your GPT's personality and scope. + +### Configure Your GPT + +You define the GPT's role, scope, and metadata so it knows what it is designed to do. This includes: + +- **Name and Description**: Helps users discover your GPT. + - For example: **Name**: Token Tracker GPT **Description**: An onchain analytics assistant that retrieves live token balances, prices, and liquidity data using The Graph's Token API. +- **Instructions**: Tells the GPT what tasks it should perform using the Token API. + - For example: You are a blockchain data assistant retrieving onchain token data from The Graph's Token API. Use endpoints to fetch balances, liquidity, and price history across EVM chains. Present results in tables with token symbols, prices, and USD values. +- **Knowledge**: Optional context files such as wallet references, accounting rules, or code snippets. +- **New Action**: At the bottom, click “Create new action” to connect your GPT to the Token API. + +### Connect the Token API + +To enable live blockchain queries inside ChatGPT, you connect the GPT to the Token API through: + +#### Authentication + +1. Set Authentication to API Key → Bearer. +2. Open [The Graph Market](https://thegraph.market./) and copy your Authentication JWT from your dashboard. +3. Paste the token into the ChatGPT prompt where the field shows [HIDDEN]. + +#### Schema + +1. Above the Schema box, click Import from URL. +2. Paste: https://token-api.thegraph.com/openapi +3. Click Import. You'll now see endpoints like: + - `getV1EvmTokens` + - `getV1EvmDexes` + - `getV1EvmBalances` +4. Click Test on one (for example `getV1EvmDexes`) to verify connection. + +##### Privacy + +1. At the bottom, under Privacy, paste: https://pinax.network/en/legal/privacy + +### Privacy + +You can attach a privacy policy URL such as: https://pinax.network/en/legal/privacy + +## Example Prompt Patterns + +These examples help illustrate how a GPT reasons over Token API data. + +### Wallet and Portfolio + +Get the total USD balance for a wallet across multiple chains, returning token name, symbol, balance, and price. + +### Trading Analysis + +Compare USDC and DAI liquidity across Uniswap and Curve. Return the top 5 pools by TVL. + +### Accounting + +List all ERC-20 transfers for this address in the last 30 days. Group by token and total incoming/outgoing volume. + +## Best Practices + +| Tip | Why It Matters | +| --------------------------------- | ---------------------------------------------------------------------- | +| Scope your GPT narrowly first | Simplifies debugging and validates schema integration. | +| Use clear role instructions | Helps the GPT choose the right endpoints and avoid assumptions. | +| Name endpoints explicitly | Improves routing accuracy when fetching balances, prices, or DEX data. | +| Combine with code | Enables custom parsing or logic for complex workflows. | +| Add Subgraph or Substream context | Provides richer analytics when combined with Token API data. | + +## FAQs & Resources + +- Builders Office Hours (October 23, 2025) +- Watch the full session: https://x.com/i/broadcasts/1mrGmBzBarNJy diff --git a/website/src/pages/ko/token-api/guides/upgrade-to-v1.mdx b/website/src/pages/ko/token-api/guides/upgrade-to-v1.mdx new file mode 100644 index 000000000000..e2a7ccf973fa --- /dev/null +++ b/website/src/pages/ko/token-api/guides/upgrade-to-v1.mdx @@ -0,0 +1,346 @@ +--- +title: Upgrade to v1 +--- + +This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. + +**Note** + +- `EVM` = Ethereum Virtual Machine + +Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). + +- `SVM` = Solana Virtual Machine + +Used to describe endpoints supporting Solana (currently the only SVM chain supported). + +## 🔑 Breaking Changes Summary + +### 1. API Versioning + +All endpoints now use the `/v1` prefix. + +**Before:** + +``` +GET /balances/evm +GET /nft/items/contract/:contract/token_id/:token_id +``` + +**After:** + +``` +GET /v1/evm/balances +GET /v1/evm/nft/items +``` + +### 2. Route Structure Reorganization + +#### 2.1 EVM Endpoints + +Consolidated under `/v1/evm/*` + +| Old Endpoint | New Endpoint | +| ------------------------------------------------------ | ----------------------------- | +| `/balances/evm` | `/v1/evm/balances` | +| `/historical/balances/evm` | `/v1/evm/balances/historical` | +| `/holders/evm/:contract` | `/v1/evm/holders` | +| `/tokens/evm/:contract` | `/v1/evm/tokens` | +| `/transfers/evm` | `/v1/evm/transfers` | +| `/pools/evm` | `/v1/evm/pools` | +| `/swaps/evm` | `/v1/evm/swaps` | +| `/dexes/evm` | `/v1/evm/dexes` | +| `/ohlc/prices/evm/:contract` | _(removed)_ | +| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | +| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | +| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | +| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | +| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | +| `/nft/activities/evm` | `/v1/evm/nft/transfers` | +| `/nft/sales/evm` | `/v1/evm/nft/sales` | + +**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. + +**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. + +--- + +#### 2.2 New EVM native balances endpoint + +Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. + +Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. + +--- + +#### 2.3 SVM Endpoints + +Consolidated under `/v1/svm/*` + +| Old Endpoint | New Endpoint | +| ------------------------ | ------------------------- | +| `/balances/svm` | `/v1/svm/balances` | +| `/balances/native/svm` | `/v1/svm/balances/native` | +| `/holders/svm/:contract` | `/v1/svm/holders` | +| `/tokens/svm/:mint` | `/v1/svm/tokens` | +| `/transfers/svm` | `/v1/svm/transfers` | +| `/pools/svm` | `/v1/svm/pools` | +| `/swaps/svm` | `/v1/svm/swaps` | +| `/dexes/svm` | `/v1/svm/dexes` | +| `/owner/svm/:account` | `/v1/svm/owner` | +| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | + +## 📝 Parameter Changes + +### 3. Path Parameters → Query Parameters + +All path parameters have been moved to query parameters. + +**Before:** + +```bash +GET /balances/evm/:address +GET /holders/evm/:contract +GET /nft/items/evm/contract/:contract/token_id/:token_id +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0x... +GET /v1/evm/holders?network=mainnet&contract=0x... +GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 +``` + +### 4. Standardized Parameter Naming + +All query parameters have been standardized to use snake_case naming convention. + +| Old Parameter | New Parameter | Notes | +| --- | --- | --- | +| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | +| `anyAddress` | `address` | Matches either `from` or `to` address | +| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | +| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | +| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | +| `endTime` | `end_time` | Default: `9999999999` | +| - | `start_block` | New parameter, default: `0` | +| - | `end_block` | New parameter, default: `9999999999` | +| - | `include_null_balances` | New parameter, default: `false` | +| `tx_hash` | `transaction_id` | - | +| `token` | `input_token`, `output_token` | More explicit for pool queries | +| `pool` | `amm_pool` | - | +| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | + +**Important:** The `network_id` parameter has been renamed to `network`. + +**Important:** `matic` network has been renamed to `polygon`. + +### 5. Batched Parameters + +Many parameters now support batching - accepting single values or comma-separated strings. + +**Supported Batched Parameters:** + +- `address`, `from_address`, `to_address` +- `contract`, `token_id` +- `factory`, `pool` +- `owner`, `token_account`, `mint` +- `transaction_id`, `signature` + +**Examples:** + +```console +## Single value +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 + +## Comma-separated, single parameter +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 + +## Repeated parameter values +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +### 6. New Parameters + +#### `include_null_balances` + +Added to balance endpoints to optionally include zero/null balances. + +```bash +?include_null_balances=true +``` + +**Default:** `false` + +## 🔄 Response Changes + +### 7. Pagination Changes + +Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. + +**Before:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2, + "next_page": 3, + "total_pages": 10 + }, + "total_results": 1234 +} +``` + +**After:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2 + } +} +``` + +**Removed fields:** + +- `next_page` +- `total_pages` +- `total_results` + +**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. + +### 8. Removed Parameters + +The following deprecated parameters have been removed: + +- `orderBy` - Results are now ordered by timestamp/block by default +- `orderDirection` - Always descending (newest first) + +### 9. Cached Queries + +Queries are now cached on the ClickHouse side for better performance. + +You can specifically request to not use the cache by setting the `Cache-Control` header to `no-cache`. + +#### Example + +**Cache** + +```console +$ curl -s 'https://token-api.thegraph.com/v1/...' | jq .statistics +{ + "bytes_read": 221, + "rows_read": 1, + "elapsed": 0.002212065 +} +``` + +**No cache** + +```console +$ curl -s 'http://localhost:8000/v1/...' --header 'Cache-Control: no-cache' | jq .statistics +{ + "bytes_read": 14621174348, + "rows_read": 223244390, + "elapsed": 0.971064066 +} +``` + +## 📚 Example Migrations + +### Example 1: Get Token Balances + +**Before:** + +```bash +GET /token/balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +### Example 2: Get NFT Items + +**Before:** + +```bash +GET /nft/items/evm/contract/0xbd3531da5cf5857e7cfaa92426877b022e612cf8/token_id/5712?network_id=mainnet +``` + +**After:** + +```bash +GET /v1/evm/nft/items?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&token_id=5712 +``` + +### Example 3: Get Token Transfers with Time Filter + +**Before:** + +```bash +GET /token/transfers/evm?network_id=mainnet&from=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&startTime=1735689600&endTime=1767225600 +``` + +**After:** + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&start_time=1735689600&end_time=1767225600 +``` + +### Example 4: Get NFT Transfer Activities + +**Before:** + +```bash +GET /nft/activities/evm?network_id=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&anyAddress=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +**After:** + +```bash +GET /v1/evm/nft/transfers?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +### Example 5: Get Pool OHLC Data + +**Before:** + +```bash +GET /token/ohlc/pools/evm/0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640?network_id=mainnet&interval=1h&startTime=1735689600 +``` + +**After:** + +```bash +GET /v1/evm/pools/ohlc?network=mainnet&pool=0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640&interval=1h&start_time=1735689600 +``` + +### Example 6: Batched Query (New Feature) + +Query balances for multiple contracts in a single request: + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +Query transfers from multiple addresses: + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xabc...,0xdef...,0x123...&start_time=1735689600 +``` + +## ⚠️ Important Notes + +1. **Migration Notes:** The old endpoints were deprecated and removed on **October 30, 2025**. Please ensure all integrations have been migrated to the new Token API v1 endpoints. + +2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. + +3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. + +4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/ko/token-api/svm-tokens/_meta.js b/website/src/pages/ko/token-api/svm-tokens/_meta.js index 1de31437004c..001e2d43341a 100644 --- a/website/src/pages/ko/token-api/svm-tokens/_meta.js +++ b/website/src/pages/ko/token-api/svm-tokens/_meta.js @@ -1,6 +1,6 @@ export default { - tokens: '', transfers: '', + tokens: '', balances: '', 'balances-native': '', holders: '', diff --git a/website/src/pages/ko/token-api/upgrade-to-v1.mdx b/website/src/pages/ko/token-api/upgrade-to-v1.mdx deleted file mode 100644 index fbe09101eaa5..000000000000 --- a/website/src/pages/ko/token-api/upgrade-to-v1.mdx +++ /dev/null @@ -1,254 +0,0 @@ ---- -title: Upgrade to v1 ---- - -This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. - -**Note** - -- `EVM` = Ethereum Virtual Machine - -Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). - -- `SVM` = Solana Virtual Machine - -Used to describe endpoints supporting Solana (currently the only SVM chain supported). - -## 🔑 Breaking Changes Summary - -### 1. **API Versioning** - -All endpoints now use the `/v1` prefix. - -**Before:** - -``` -GET /balances/evm -GET /nft/items/contract/:contract/token_id/:token_id -``` - -**After:** - -``` -GET /v1/evm/balances -GET /v1/evm/nft/items -``` - -### 2. **Route Structure Reorganization** - -#### 2.1 EVM Endpoints - -Consolidated under `/v1/evm/*` - -| Old Endpoint | New Endpoint | -| ------------------------------------------------------ | ----------------------------- | -| `/balances/evm` | `/v1/evm/balances` | -| `/historical/balances/evm` | `/v1/evm/balances/historical` | -| `/holders/evm/:contract` | `/v1/evm/holders` | -| `/tokens/evm/:contract` | `/v1/evm/tokens` | -| `/transfers/evm` | `/v1/evm/transfers` | -| `/pools/evm` | `/v1/evm/pools` | -| `/swaps/evm` | `/v1/evm/swaps` | -| `/dexes/evm` | `/v1/evm/dexes` | -| `/ohlc/prices/evm/:contract` | _(removed)_ | -| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | -| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | -| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | -| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | -| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | -| `/nft/activities/evm` | `/v1/evm/nft/transfers` | -| `/nft/sales/evm` | `/v1/evm/nft/sales` | - -**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. - -**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. - ---- - -#### 2.2 New EVM native balances endpoint - -Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. - -Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. - ---- - -#### 2.3 SVM Endpoints - -Consolidated under `/v1/svm/*` - -| Old Endpoint | New Endpoint | -| ------------------------ | ------------------------- | -| `/balances/svm` | `/v1/svm/balances` | -| `/balances/native/svm` | `/v1/svm/balances/native` | -| `/holders/svm/:contract` | `/v1/svm/holders` | -| `/tokens/svm/:mint` | `/v1/svm/tokens` | -| `/transfers/svm` | `/v1/svm/transfers` | -| `/pools/svm` | `/v1/svm/pools` | -| `/swaps/svm` | `/v1/svm/swaps` | -| `/dexes/svm` | `/v1/svm/dexes` | -| `/owner/svm/:account` | `/v1/svm/owner` | -| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | - -## 📝 Parameter Changes - -### 3. **Path Parameters → Query Parameters** - -All path parameters have been moved to query parameters. - -**Before:** - -```bash -GET /balances/evm/:address -GET /holders/evm/:contract -GET /nft/items/evm/contract/:contract/token_id/:token_id -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0x... -GET /v1/evm/holders?network=mainnet&contract=0x... -GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 -``` - -### 4. **Standardized Parameter Naming** - -All query parameters have been standardized to use snake_case naming convention. - -| Old Parameter | New Parameter | Notes | -| --- | --- | --- | -| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | -| `anyAddress` | `address` | Matches either `from` or `to` address | -| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | -| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | -| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | -| `endTime` | `end_time` | Default: `9999999999` | -| - | `start_block` | New parameter, default: `0` | -| - | `end_block` | New parameter, default: `9999999999` | -| - | `include_null_balances` | New parameter, default: `false` | -| `tx_hash` | `transaction_id` | - | -| `token` | `input_token`, `output_token` | More explicit for pool queries | -| `pool` | `amm_pool` | - | -| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | - -**Important:** The `network_id` parameter has been renamed to `network`. - -**Important:** `matic` network has been renamed to `polygon`. - -### 5. **Batched Parameters** - -Many parameters now support batching - accepting single values or comma-separated strings. - -**Supported Batched Parameters:** - -- `address`, `from_address`, `to_address` -- `contract`, `token_id` -- `factory`, `pool` -- `owner`, `token_account`, `mint` -- `transaction_id`, `signature` - -**Examples:** - -```console -# Single value -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 - -# Comma-separated, single parameter -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 - -# Repeated parameter values -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -### 6. **New Parameters** - -#### `include_null_balances` - -Added to balance endpoints to optionally include zero/null balances. - -```bash -?include_null_balances=true -``` - -**Default:** `false` - -## 🔄 Response Changes - -### 7. **Pagination Changes** - -Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. - -**Before:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2, - "next_page": 3, - "total_pages": 10 - }, - "total_results": 1234 -} -``` - -**After:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2 - } -} -``` - -**Removed fields:** - -- `next_page` -- `total_pages` -- `total_results` - -**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. - -### 8. **Removed Parameters** - -The following deprecated parameters have been removed: - -- `orderBy` - Results are now ordered by timestamp/block by default -- `orderDirection` - Always descending (newest first) - -## 📚 Example Migrations - -### Old vs New: Get Token Balances - -**Before:** - -```bash -GET /balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -### New Feature: Batched Queries - -Query balances for multiple contracts in a single request: - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -## ⚠️ Important Notes - -1. **Backward Compatibility:** The old endpoints are deprecated and will be removed in the future. Migrate by **Oct 30, 2025**. - -2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. - -3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. - -4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/mr/token-api/_meta.js b/website/src/pages/mr/token-api/_meta.js index a8624da52e7f..853f9dc09031 100644 --- a/website/src/pages/mr/token-api/_meta.js +++ b/website/src/pages/mr/token-api/_meta.js @@ -2,15 +2,15 @@ import titles from './_meta-titles.json' export default { 'quick-start': '', + 'svm-tokens': titles['svm-tokens'] ?? '', + 'svm-dexs': titles['svm-dexs'] ?? '', 'evm-tokens': titles['evm-tokens'] ?? '', 'evm-dexs': titles['evm-dexs'] ?? '', 'evm-nfts': titles['evm-nfts'] ?? '', - 'svm-tokens': titles['svm-tokens'] ?? '', - 'svm-dexs': titles['svm-dexs'] ?? '', 'tvm-tokens': titles['tvm-tokens'] ?? '', 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', 'endpoint-pricing': '', + guides: 'Guides', faq: '', - 'upgrade-to-v1': '', } diff --git a/website/src/pages/mr/token-api/endpoints/_meta.js b/website/src/pages/mr/token-api/endpoints/_meta.js new file mode 100644 index 000000000000..5d419807937c --- /dev/null +++ b/website/src/pages/mr/token-api/endpoints/_meta.js @@ -0,0 +1,4 @@ +export default { + 'endpoint-pricing': '', + 'endpoint-support': '', +} diff --git a/website/src/pages/mr/token-api/endpoint-pricing.mdx b/website/src/pages/mr/token-api/endpoints/endpoint-pricing.mdx similarity index 100% rename from website/src/pages/mr/token-api/endpoint-pricing.mdx rename to website/src/pages/mr/token-api/endpoints/endpoint-pricing.mdx diff --git a/website/src/pages/mr/token-api/endpoints/endpoint-support.msx b/website/src/pages/mr/token-api/endpoints/endpoint-support.msx new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/website/src/pages/mr/token-api/guides/_meta-titles.json b/website/src/pages/mr/token-api/guides/_meta-titles.json new file mode 100644 index 000000000000..cd93dcc0fc0b --- /dev/null +++ b/website/src/pages/mr/token-api/guides/_meta-titles.json @@ -0,0 +1,4 @@ +{ + "gpt": "Create Custom GPTS", + "upgrade-to-v1": "" +} diff --git a/website/src/pages/mr/token-api/guides/_meta.js b/website/src/pages/mr/token-api/guides/_meta.js new file mode 100644 index 000000000000..e5aaaadd78f2 --- /dev/null +++ b/website/src/pages/mr/token-api/guides/_meta.js @@ -0,0 +1,4 @@ +export default { + gpt: '', + 'upgrade-to-v1': '', +} diff --git a/website/src/pages/mr/token-api/guides/gpt.mdx b/website/src/pages/mr/token-api/guides/gpt.mdx new file mode 100644 index 000000000000..564d013dea20 --- /dev/null +++ b/website/src/pages/mr/token-api/guides/gpt.mdx @@ -0,0 +1,121 @@ +--- +title: How the Token API Powers Custom GPTs +sidebarTitle: Create Custom GPTs +--- + +## Overview + +The Token API is a pre-indexed blockchain data service that provides real-time access to token balances, metadata, prices, liquidity, and volume across multiple chains. Developers use its REST endpoints to build wallets, trading dashboards, DeFi analytics, and AI systems without maintaining their own indexing stack. Custom GPTs can connect directly to the Token API's OpenAPI schema. + +The Token API enables developers to build **Custom GPTs** to reason over live blockchain data inside ChatGPT that can reason over and respond with live blockchain data directly inside ChatGPT. + +## What the Token API Enables in Custom GPTs + +When a Custom GPT is wired to the Token API, it gains access to a machine-readable schema and authenticated endpoints. Developers can use this to: + +- **Query real-time onchain data**: Balances, token prices, liquidity, and transaction history. +- **Automate domain-specific tasks**: Portfolio tracking, accounting, reconciliation, and market analysis. +- **Power AI agents with verifiable blockchain context**: Use the same data sources dapps rely on. + +Because the Token API provides a machine-readable schema and authenticated requests, it serves as a structured data layer that enables GPT-5 agents to combine natural language reasoning with live onchain data from The Graph. + +## When to Use the Token API for Custom GPTs + +Use the Token API when your GPT needs repeatable, domain-specific behavior grounded in blockchain data. This is most effective when the GPT performs the same type of task frequently or enforces a workflow you define. For one-off or exploratory questions, standard ChatGPT prompts are sufficient. + +## Choosing a Use Case + +Start with a clear, narrow objective, then expand as needed. Common patterns include: + +- **Accounting GPT**: Onchain accounting, tax tagging, and portfolio reconciliation. +- **Trading GPT**: Liquidity, pricing, and volume analysis for trading strategies. +- **Protocol Tracking GPT**: Real-time monitoring of transaction activity and liquidity pools. + +A focused initial goal such as “Retrieve token balances and prices for a wallet” makes it easier to configure reliable behavior before adding complex workflows. + +## Requirements + +| Requirement | Description | +| ---------------------- | -------------------------------------------------------- | +| ChatGPT 5 | Custom GPT creation requires GPT-5 tier or Pro. | +| Token API Subscription | Sign up at [The Graph Market](https://thegraph.market./) | +| Token API Key | Available in your dashboard as the Authentication JWT. | + +## Setting Up a Custom GPT + +Below is an explanatory outline of what happens during setup. This section provides conceptual understanding. + +### Create Custom GPT + +1. Visit chat.openai.com/gpts in your browser. 2, Click Create (top right). +2. Under Configure (in the top left panel), set up your GPT's personality and scope. + +### Configure Your GPT + +You define the GPT's role, scope, and metadata so it knows what it is designed to do. This includes: + +- **Name and Description**: Helps users discover your GPT. + - For example: **Name**: Token Tracker GPT **Description**: An onchain analytics assistant that retrieves live token balances, prices, and liquidity data using The Graph's Token API. +- **Instructions**: Tells the GPT what tasks it should perform using the Token API. + - For example: You are a blockchain data assistant retrieving onchain token data from The Graph's Token API. Use endpoints to fetch balances, liquidity, and price history across EVM chains. Present results in tables with token symbols, prices, and USD values. +- **Knowledge**: Optional context files such as wallet references, accounting rules, or code snippets. +- **New Action**: At the bottom, click “Create new action” to connect your GPT to the Token API. + +### Connect the Token API + +To enable live blockchain queries inside ChatGPT, you connect the GPT to the Token API through: + +#### Authentication + +1. Set Authentication to API Key → Bearer. +2. Open [The Graph Market](https://thegraph.market./) and copy your Authentication JWT from your dashboard. +3. Paste the token into the ChatGPT prompt where the field shows [HIDDEN]. + +#### Schema + +1. Above the Schema box, click Import from URL. +2. Paste: https://token-api.thegraph.com/openapi +3. Click Import. You'll now see endpoints like: + - `getV1EvmTokens` + - `getV1EvmDexes` + - `getV1EvmBalances` +4. Click Test on one (for example `getV1EvmDexes`) to verify connection. + +##### Privacy + +1. At the bottom, under Privacy, paste: https://pinax.network/en/legal/privacy + +### Privacy + +You can attach a privacy policy URL such as: https://pinax.network/en/legal/privacy + +## Example Prompt Patterns + +These examples help illustrate how a GPT reasons over Token API data. + +### Wallet and Portfolio + +Get the total USD balance for a wallet across multiple chains, returning token name, symbol, balance, and price. + +### Trading Analysis + +Compare USDC and DAI liquidity across Uniswap and Curve. Return the top 5 pools by TVL. + +### Accounting + +List all ERC-20 transfers for this address in the last 30 days. Group by token and total incoming/outgoing volume. + +## Best Practices + +| Tip | Why It Matters | +| --------------------------------- | ---------------------------------------------------------------------- | +| Scope your GPT narrowly first | Simplifies debugging and validates schema integration. | +| Use clear role instructions | Helps the GPT choose the right endpoints and avoid assumptions. | +| Name endpoints explicitly | Improves routing accuracy when fetching balances, prices, or DEX data. | +| Combine with code | Enables custom parsing or logic for complex workflows. | +| Add Subgraph or Substream context | Provides richer analytics when combined with Token API data. | + +## FAQs & Resources + +- Builders Office Hours (October 23, 2025) +- Watch the full session: https://x.com/i/broadcasts/1mrGmBzBarNJy diff --git a/website/src/pages/mr/token-api/guides/upgrade-to-v1.mdx b/website/src/pages/mr/token-api/guides/upgrade-to-v1.mdx new file mode 100644 index 000000000000..e2a7ccf973fa --- /dev/null +++ b/website/src/pages/mr/token-api/guides/upgrade-to-v1.mdx @@ -0,0 +1,346 @@ +--- +title: Upgrade to v1 +--- + +This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. + +**Note** + +- `EVM` = Ethereum Virtual Machine + +Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). + +- `SVM` = Solana Virtual Machine + +Used to describe endpoints supporting Solana (currently the only SVM chain supported). + +## 🔑 Breaking Changes Summary + +### 1. API Versioning + +All endpoints now use the `/v1` prefix. + +**Before:** + +``` +GET /balances/evm +GET /nft/items/contract/:contract/token_id/:token_id +``` + +**After:** + +``` +GET /v1/evm/balances +GET /v1/evm/nft/items +``` + +### 2. Route Structure Reorganization + +#### 2.1 EVM Endpoints + +Consolidated under `/v1/evm/*` + +| Old Endpoint | New Endpoint | +| ------------------------------------------------------ | ----------------------------- | +| `/balances/evm` | `/v1/evm/balances` | +| `/historical/balances/evm` | `/v1/evm/balances/historical` | +| `/holders/evm/:contract` | `/v1/evm/holders` | +| `/tokens/evm/:contract` | `/v1/evm/tokens` | +| `/transfers/evm` | `/v1/evm/transfers` | +| `/pools/evm` | `/v1/evm/pools` | +| `/swaps/evm` | `/v1/evm/swaps` | +| `/dexes/evm` | `/v1/evm/dexes` | +| `/ohlc/prices/evm/:contract` | _(removed)_ | +| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | +| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | +| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | +| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | +| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | +| `/nft/activities/evm` | `/v1/evm/nft/transfers` | +| `/nft/sales/evm` | `/v1/evm/nft/sales` | + +**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. + +**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. + +--- + +#### 2.2 New EVM native balances endpoint + +Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. + +Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. + +--- + +#### 2.3 SVM Endpoints + +Consolidated under `/v1/svm/*` + +| Old Endpoint | New Endpoint | +| ------------------------ | ------------------------- | +| `/balances/svm` | `/v1/svm/balances` | +| `/balances/native/svm` | `/v1/svm/balances/native` | +| `/holders/svm/:contract` | `/v1/svm/holders` | +| `/tokens/svm/:mint` | `/v1/svm/tokens` | +| `/transfers/svm` | `/v1/svm/transfers` | +| `/pools/svm` | `/v1/svm/pools` | +| `/swaps/svm` | `/v1/svm/swaps` | +| `/dexes/svm` | `/v1/svm/dexes` | +| `/owner/svm/:account` | `/v1/svm/owner` | +| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | + +## 📝 Parameter Changes + +### 3. Path Parameters → Query Parameters + +All path parameters have been moved to query parameters. + +**Before:** + +```bash +GET /balances/evm/:address +GET /holders/evm/:contract +GET /nft/items/evm/contract/:contract/token_id/:token_id +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0x... +GET /v1/evm/holders?network=mainnet&contract=0x... +GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 +``` + +### 4. Standardized Parameter Naming + +All query parameters have been standardized to use snake_case naming convention. + +| Old Parameter | New Parameter | Notes | +| --- | --- | --- | +| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | +| `anyAddress` | `address` | Matches either `from` or `to` address | +| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | +| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | +| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | +| `endTime` | `end_time` | Default: `9999999999` | +| - | `start_block` | New parameter, default: `0` | +| - | `end_block` | New parameter, default: `9999999999` | +| - | `include_null_balances` | New parameter, default: `false` | +| `tx_hash` | `transaction_id` | - | +| `token` | `input_token`, `output_token` | More explicit for pool queries | +| `pool` | `amm_pool` | - | +| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | + +**Important:** The `network_id` parameter has been renamed to `network`. + +**Important:** `matic` network has been renamed to `polygon`. + +### 5. Batched Parameters + +Many parameters now support batching - accepting single values or comma-separated strings. + +**Supported Batched Parameters:** + +- `address`, `from_address`, `to_address` +- `contract`, `token_id` +- `factory`, `pool` +- `owner`, `token_account`, `mint` +- `transaction_id`, `signature` + +**Examples:** + +```console +## Single value +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 + +## Comma-separated, single parameter +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 + +## Repeated parameter values +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +### 6. New Parameters + +#### `include_null_balances` + +Added to balance endpoints to optionally include zero/null balances. + +```bash +?include_null_balances=true +``` + +**Default:** `false` + +## 🔄 Response Changes + +### 7. Pagination Changes + +Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. + +**Before:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2, + "next_page": 3, + "total_pages": 10 + }, + "total_results": 1234 +} +``` + +**After:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2 + } +} +``` + +**Removed fields:** + +- `next_page` +- `total_pages` +- `total_results` + +**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. + +### 8. Removed Parameters + +The following deprecated parameters have been removed: + +- `orderBy` - Results are now ordered by timestamp/block by default +- `orderDirection` - Always descending (newest first) + +### 9. Cached Queries + +Queries are now cached on the ClickHouse side for better performance. + +You can specifically request to not use the cache by setting the `Cache-Control` header to `no-cache`. + +#### Example + +**Cache** + +```console +$ curl -s 'https://token-api.thegraph.com/v1/...' | jq .statistics +{ + "bytes_read": 221, + "rows_read": 1, + "elapsed": 0.002212065 +} +``` + +**No cache** + +```console +$ curl -s 'http://localhost:8000/v1/...' --header 'Cache-Control: no-cache' | jq .statistics +{ + "bytes_read": 14621174348, + "rows_read": 223244390, + "elapsed": 0.971064066 +} +``` + +## 📚 Example Migrations + +### Example 1: Get Token Balances + +**Before:** + +```bash +GET /token/balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +### Example 2: Get NFT Items + +**Before:** + +```bash +GET /nft/items/evm/contract/0xbd3531da5cf5857e7cfaa92426877b022e612cf8/token_id/5712?network_id=mainnet +``` + +**After:** + +```bash +GET /v1/evm/nft/items?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&token_id=5712 +``` + +### Example 3: Get Token Transfers with Time Filter + +**Before:** + +```bash +GET /token/transfers/evm?network_id=mainnet&from=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&startTime=1735689600&endTime=1767225600 +``` + +**After:** + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&start_time=1735689600&end_time=1767225600 +``` + +### Example 4: Get NFT Transfer Activities + +**Before:** + +```bash +GET /nft/activities/evm?network_id=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&anyAddress=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +**After:** + +```bash +GET /v1/evm/nft/transfers?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +### Example 5: Get Pool OHLC Data + +**Before:** + +```bash +GET /token/ohlc/pools/evm/0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640?network_id=mainnet&interval=1h&startTime=1735689600 +``` + +**After:** + +```bash +GET /v1/evm/pools/ohlc?network=mainnet&pool=0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640&interval=1h&start_time=1735689600 +``` + +### Example 6: Batched Query (New Feature) + +Query balances for multiple contracts in a single request: + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +Query transfers from multiple addresses: + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xabc...,0xdef...,0x123...&start_time=1735689600 +``` + +## ⚠️ Important Notes + +1. **Migration Notes:** The old endpoints were deprecated and removed on **October 30, 2025**. Please ensure all integrations have been migrated to the new Token API v1 endpoints. + +2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. + +3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. + +4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/mr/token-api/svm-tokens/_meta.js b/website/src/pages/mr/token-api/svm-tokens/_meta.js index 1de31437004c..001e2d43341a 100644 --- a/website/src/pages/mr/token-api/svm-tokens/_meta.js +++ b/website/src/pages/mr/token-api/svm-tokens/_meta.js @@ -1,6 +1,6 @@ export default { - tokens: '', transfers: '', + tokens: '', balances: '', 'balances-native': '', holders: '', diff --git a/website/src/pages/mr/token-api/upgrade-to-v1.mdx b/website/src/pages/mr/token-api/upgrade-to-v1.mdx deleted file mode 100644 index fbe09101eaa5..000000000000 --- a/website/src/pages/mr/token-api/upgrade-to-v1.mdx +++ /dev/null @@ -1,254 +0,0 @@ ---- -title: Upgrade to v1 ---- - -This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. - -**Note** - -- `EVM` = Ethereum Virtual Machine - -Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). - -- `SVM` = Solana Virtual Machine - -Used to describe endpoints supporting Solana (currently the only SVM chain supported). - -## 🔑 Breaking Changes Summary - -### 1. **API Versioning** - -All endpoints now use the `/v1` prefix. - -**Before:** - -``` -GET /balances/evm -GET /nft/items/contract/:contract/token_id/:token_id -``` - -**After:** - -``` -GET /v1/evm/balances -GET /v1/evm/nft/items -``` - -### 2. **Route Structure Reorganization** - -#### 2.1 EVM Endpoints - -Consolidated under `/v1/evm/*` - -| Old Endpoint | New Endpoint | -| ------------------------------------------------------ | ----------------------------- | -| `/balances/evm` | `/v1/evm/balances` | -| `/historical/balances/evm` | `/v1/evm/balances/historical` | -| `/holders/evm/:contract` | `/v1/evm/holders` | -| `/tokens/evm/:contract` | `/v1/evm/tokens` | -| `/transfers/evm` | `/v1/evm/transfers` | -| `/pools/evm` | `/v1/evm/pools` | -| `/swaps/evm` | `/v1/evm/swaps` | -| `/dexes/evm` | `/v1/evm/dexes` | -| `/ohlc/prices/evm/:contract` | _(removed)_ | -| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | -| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | -| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | -| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | -| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | -| `/nft/activities/evm` | `/v1/evm/nft/transfers` | -| `/nft/sales/evm` | `/v1/evm/nft/sales` | - -**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. - -**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. - ---- - -#### 2.2 New EVM native balances endpoint - -Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. - -Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. - ---- - -#### 2.3 SVM Endpoints - -Consolidated under `/v1/svm/*` - -| Old Endpoint | New Endpoint | -| ------------------------ | ------------------------- | -| `/balances/svm` | `/v1/svm/balances` | -| `/balances/native/svm` | `/v1/svm/balances/native` | -| `/holders/svm/:contract` | `/v1/svm/holders` | -| `/tokens/svm/:mint` | `/v1/svm/tokens` | -| `/transfers/svm` | `/v1/svm/transfers` | -| `/pools/svm` | `/v1/svm/pools` | -| `/swaps/svm` | `/v1/svm/swaps` | -| `/dexes/svm` | `/v1/svm/dexes` | -| `/owner/svm/:account` | `/v1/svm/owner` | -| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | - -## 📝 Parameter Changes - -### 3. **Path Parameters → Query Parameters** - -All path parameters have been moved to query parameters. - -**Before:** - -```bash -GET /balances/evm/:address -GET /holders/evm/:contract -GET /nft/items/evm/contract/:contract/token_id/:token_id -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0x... -GET /v1/evm/holders?network=mainnet&contract=0x... -GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 -``` - -### 4. **Standardized Parameter Naming** - -All query parameters have been standardized to use snake_case naming convention. - -| Old Parameter | New Parameter | Notes | -| --- | --- | --- | -| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | -| `anyAddress` | `address` | Matches either `from` or `to` address | -| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | -| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | -| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | -| `endTime` | `end_time` | Default: `9999999999` | -| - | `start_block` | New parameter, default: `0` | -| - | `end_block` | New parameter, default: `9999999999` | -| - | `include_null_balances` | New parameter, default: `false` | -| `tx_hash` | `transaction_id` | - | -| `token` | `input_token`, `output_token` | More explicit for pool queries | -| `pool` | `amm_pool` | - | -| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | - -**Important:** The `network_id` parameter has been renamed to `network`. - -**Important:** `matic` network has been renamed to `polygon`. - -### 5. **Batched Parameters** - -Many parameters now support batching - accepting single values or comma-separated strings. - -**Supported Batched Parameters:** - -- `address`, `from_address`, `to_address` -- `contract`, `token_id` -- `factory`, `pool` -- `owner`, `token_account`, `mint` -- `transaction_id`, `signature` - -**Examples:** - -```console -# Single value -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 - -# Comma-separated, single parameter -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 - -# Repeated parameter values -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -### 6. **New Parameters** - -#### `include_null_balances` - -Added to balance endpoints to optionally include zero/null balances. - -```bash -?include_null_balances=true -``` - -**Default:** `false` - -## 🔄 Response Changes - -### 7. **Pagination Changes** - -Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. - -**Before:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2, - "next_page": 3, - "total_pages": 10 - }, - "total_results": 1234 -} -``` - -**After:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2 - } -} -``` - -**Removed fields:** - -- `next_page` -- `total_pages` -- `total_results` - -**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. - -### 8. **Removed Parameters** - -The following deprecated parameters have been removed: - -- `orderBy` - Results are now ordered by timestamp/block by default -- `orderDirection` - Always descending (newest first) - -## 📚 Example Migrations - -### Old vs New: Get Token Balances - -**Before:** - -```bash -GET /balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -### New Feature: Batched Queries - -Query balances for multiple contracts in a single request: - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -## ⚠️ Important Notes - -1. **Backward Compatibility:** The old endpoints are deprecated and will be removed in the future. Migrate by **Oct 30, 2025**. - -2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. - -3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. - -4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/nl/token-api/_meta.js b/website/src/pages/nl/token-api/_meta.js index a8624da52e7f..853f9dc09031 100644 --- a/website/src/pages/nl/token-api/_meta.js +++ b/website/src/pages/nl/token-api/_meta.js @@ -2,15 +2,15 @@ import titles from './_meta-titles.json' export default { 'quick-start': '', + 'svm-tokens': titles['svm-tokens'] ?? '', + 'svm-dexs': titles['svm-dexs'] ?? '', 'evm-tokens': titles['evm-tokens'] ?? '', 'evm-dexs': titles['evm-dexs'] ?? '', 'evm-nfts': titles['evm-nfts'] ?? '', - 'svm-tokens': titles['svm-tokens'] ?? '', - 'svm-dexs': titles['svm-dexs'] ?? '', 'tvm-tokens': titles['tvm-tokens'] ?? '', 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', 'endpoint-pricing': '', + guides: 'Guides', faq: '', - 'upgrade-to-v1': '', } diff --git a/website/src/pages/nl/token-api/endpoints/_meta.js b/website/src/pages/nl/token-api/endpoints/_meta.js new file mode 100644 index 000000000000..5d419807937c --- /dev/null +++ b/website/src/pages/nl/token-api/endpoints/_meta.js @@ -0,0 +1,4 @@ +export default { + 'endpoint-pricing': '', + 'endpoint-support': '', +} diff --git a/website/src/pages/nl/token-api/endpoint-pricing.mdx b/website/src/pages/nl/token-api/endpoints/endpoint-pricing.mdx similarity index 100% rename from website/src/pages/nl/token-api/endpoint-pricing.mdx rename to website/src/pages/nl/token-api/endpoints/endpoint-pricing.mdx diff --git a/website/src/pages/nl/token-api/endpoints/endpoint-support.msx b/website/src/pages/nl/token-api/endpoints/endpoint-support.msx new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/website/src/pages/nl/token-api/guides/_meta-titles.json b/website/src/pages/nl/token-api/guides/_meta-titles.json new file mode 100644 index 000000000000..cd93dcc0fc0b --- /dev/null +++ b/website/src/pages/nl/token-api/guides/_meta-titles.json @@ -0,0 +1,4 @@ +{ + "gpt": "Create Custom GPTS", + "upgrade-to-v1": "" +} diff --git a/website/src/pages/nl/token-api/guides/_meta.js b/website/src/pages/nl/token-api/guides/_meta.js new file mode 100644 index 000000000000..e5aaaadd78f2 --- /dev/null +++ b/website/src/pages/nl/token-api/guides/_meta.js @@ -0,0 +1,4 @@ +export default { + gpt: '', + 'upgrade-to-v1': '', +} diff --git a/website/src/pages/nl/token-api/guides/gpt.mdx b/website/src/pages/nl/token-api/guides/gpt.mdx new file mode 100644 index 000000000000..564d013dea20 --- /dev/null +++ b/website/src/pages/nl/token-api/guides/gpt.mdx @@ -0,0 +1,121 @@ +--- +title: How the Token API Powers Custom GPTs +sidebarTitle: Create Custom GPTs +--- + +## Overview + +The Token API is a pre-indexed blockchain data service that provides real-time access to token balances, metadata, prices, liquidity, and volume across multiple chains. Developers use its REST endpoints to build wallets, trading dashboards, DeFi analytics, and AI systems without maintaining their own indexing stack. Custom GPTs can connect directly to the Token API's OpenAPI schema. + +The Token API enables developers to build **Custom GPTs** to reason over live blockchain data inside ChatGPT that can reason over and respond with live blockchain data directly inside ChatGPT. + +## What the Token API Enables in Custom GPTs + +When a Custom GPT is wired to the Token API, it gains access to a machine-readable schema and authenticated endpoints. Developers can use this to: + +- **Query real-time onchain data**: Balances, token prices, liquidity, and transaction history. +- **Automate domain-specific tasks**: Portfolio tracking, accounting, reconciliation, and market analysis. +- **Power AI agents with verifiable blockchain context**: Use the same data sources dapps rely on. + +Because the Token API provides a machine-readable schema and authenticated requests, it serves as a structured data layer that enables GPT-5 agents to combine natural language reasoning with live onchain data from The Graph. + +## When to Use the Token API for Custom GPTs + +Use the Token API when your GPT needs repeatable, domain-specific behavior grounded in blockchain data. This is most effective when the GPT performs the same type of task frequently or enforces a workflow you define. For one-off or exploratory questions, standard ChatGPT prompts are sufficient. + +## Choosing a Use Case + +Start with a clear, narrow objective, then expand as needed. Common patterns include: + +- **Accounting GPT**: Onchain accounting, tax tagging, and portfolio reconciliation. +- **Trading GPT**: Liquidity, pricing, and volume analysis for trading strategies. +- **Protocol Tracking GPT**: Real-time monitoring of transaction activity and liquidity pools. + +A focused initial goal such as “Retrieve token balances and prices for a wallet” makes it easier to configure reliable behavior before adding complex workflows. + +## Requirements + +| Requirement | Description | +| ---------------------- | -------------------------------------------------------- | +| ChatGPT 5 | Custom GPT creation requires GPT-5 tier or Pro. | +| Token API Subscription | Sign up at [The Graph Market](https://thegraph.market./) | +| Token API Key | Available in your dashboard as the Authentication JWT. | + +## Setting Up a Custom GPT + +Below is an explanatory outline of what happens during setup. This section provides conceptual understanding. + +### Create Custom GPT + +1. Visit chat.openai.com/gpts in your browser. 2, Click Create (top right). +2. Under Configure (in the top left panel), set up your GPT's personality and scope. + +### Configure Your GPT + +You define the GPT's role, scope, and metadata so it knows what it is designed to do. This includes: + +- **Name and Description**: Helps users discover your GPT. + - For example: **Name**: Token Tracker GPT **Description**: An onchain analytics assistant that retrieves live token balances, prices, and liquidity data using The Graph's Token API. +- **Instructions**: Tells the GPT what tasks it should perform using the Token API. + - For example: You are a blockchain data assistant retrieving onchain token data from The Graph's Token API. Use endpoints to fetch balances, liquidity, and price history across EVM chains. Present results in tables with token symbols, prices, and USD values. +- **Knowledge**: Optional context files such as wallet references, accounting rules, or code snippets. +- **New Action**: At the bottom, click “Create new action” to connect your GPT to the Token API. + +### Connect the Token API + +To enable live blockchain queries inside ChatGPT, you connect the GPT to the Token API through: + +#### Authentication + +1. Set Authentication to API Key → Bearer. +2. Open [The Graph Market](https://thegraph.market./) and copy your Authentication JWT from your dashboard. +3. Paste the token into the ChatGPT prompt where the field shows [HIDDEN]. + +#### Schema + +1. Above the Schema box, click Import from URL. +2. Paste: https://token-api.thegraph.com/openapi +3. Click Import. You'll now see endpoints like: + - `getV1EvmTokens` + - `getV1EvmDexes` + - `getV1EvmBalances` +4. Click Test on one (for example `getV1EvmDexes`) to verify connection. + +##### Privacy + +1. At the bottom, under Privacy, paste: https://pinax.network/en/legal/privacy + +### Privacy + +You can attach a privacy policy URL such as: https://pinax.network/en/legal/privacy + +## Example Prompt Patterns + +These examples help illustrate how a GPT reasons over Token API data. + +### Wallet and Portfolio + +Get the total USD balance for a wallet across multiple chains, returning token name, symbol, balance, and price. + +### Trading Analysis + +Compare USDC and DAI liquidity across Uniswap and Curve. Return the top 5 pools by TVL. + +### Accounting + +List all ERC-20 transfers for this address in the last 30 days. Group by token and total incoming/outgoing volume. + +## Best Practices + +| Tip | Why It Matters | +| --------------------------------- | ---------------------------------------------------------------------- | +| Scope your GPT narrowly first | Simplifies debugging and validates schema integration. | +| Use clear role instructions | Helps the GPT choose the right endpoints and avoid assumptions. | +| Name endpoints explicitly | Improves routing accuracy when fetching balances, prices, or DEX data. | +| Combine with code | Enables custom parsing or logic for complex workflows. | +| Add Subgraph or Substream context | Provides richer analytics when combined with Token API data. | + +## FAQs & Resources + +- Builders Office Hours (October 23, 2025) +- Watch the full session: https://x.com/i/broadcasts/1mrGmBzBarNJy diff --git a/website/src/pages/nl/token-api/guides/upgrade-to-v1.mdx b/website/src/pages/nl/token-api/guides/upgrade-to-v1.mdx new file mode 100644 index 000000000000..e2a7ccf973fa --- /dev/null +++ b/website/src/pages/nl/token-api/guides/upgrade-to-v1.mdx @@ -0,0 +1,346 @@ +--- +title: Upgrade to v1 +--- + +This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. + +**Note** + +- `EVM` = Ethereum Virtual Machine + +Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). + +- `SVM` = Solana Virtual Machine + +Used to describe endpoints supporting Solana (currently the only SVM chain supported). + +## 🔑 Breaking Changes Summary + +### 1. API Versioning + +All endpoints now use the `/v1` prefix. + +**Before:** + +``` +GET /balances/evm +GET /nft/items/contract/:contract/token_id/:token_id +``` + +**After:** + +``` +GET /v1/evm/balances +GET /v1/evm/nft/items +``` + +### 2. Route Structure Reorganization + +#### 2.1 EVM Endpoints + +Consolidated under `/v1/evm/*` + +| Old Endpoint | New Endpoint | +| ------------------------------------------------------ | ----------------------------- | +| `/balances/evm` | `/v1/evm/balances` | +| `/historical/balances/evm` | `/v1/evm/balances/historical` | +| `/holders/evm/:contract` | `/v1/evm/holders` | +| `/tokens/evm/:contract` | `/v1/evm/tokens` | +| `/transfers/evm` | `/v1/evm/transfers` | +| `/pools/evm` | `/v1/evm/pools` | +| `/swaps/evm` | `/v1/evm/swaps` | +| `/dexes/evm` | `/v1/evm/dexes` | +| `/ohlc/prices/evm/:contract` | _(removed)_ | +| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | +| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | +| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | +| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | +| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | +| `/nft/activities/evm` | `/v1/evm/nft/transfers` | +| `/nft/sales/evm` | `/v1/evm/nft/sales` | + +**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. + +**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. + +--- + +#### 2.2 New EVM native balances endpoint + +Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. + +Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. + +--- + +#### 2.3 SVM Endpoints + +Consolidated under `/v1/svm/*` + +| Old Endpoint | New Endpoint | +| ------------------------ | ------------------------- | +| `/balances/svm` | `/v1/svm/balances` | +| `/balances/native/svm` | `/v1/svm/balances/native` | +| `/holders/svm/:contract` | `/v1/svm/holders` | +| `/tokens/svm/:mint` | `/v1/svm/tokens` | +| `/transfers/svm` | `/v1/svm/transfers` | +| `/pools/svm` | `/v1/svm/pools` | +| `/swaps/svm` | `/v1/svm/swaps` | +| `/dexes/svm` | `/v1/svm/dexes` | +| `/owner/svm/:account` | `/v1/svm/owner` | +| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | + +## 📝 Parameter Changes + +### 3. Path Parameters → Query Parameters + +All path parameters have been moved to query parameters. + +**Before:** + +```bash +GET /balances/evm/:address +GET /holders/evm/:contract +GET /nft/items/evm/contract/:contract/token_id/:token_id +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0x... +GET /v1/evm/holders?network=mainnet&contract=0x... +GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 +``` + +### 4. Standardized Parameter Naming + +All query parameters have been standardized to use snake_case naming convention. + +| Old Parameter | New Parameter | Notes | +| --- | --- | --- | +| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | +| `anyAddress` | `address` | Matches either `from` or `to` address | +| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | +| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | +| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | +| `endTime` | `end_time` | Default: `9999999999` | +| - | `start_block` | New parameter, default: `0` | +| - | `end_block` | New parameter, default: `9999999999` | +| - | `include_null_balances` | New parameter, default: `false` | +| `tx_hash` | `transaction_id` | - | +| `token` | `input_token`, `output_token` | More explicit for pool queries | +| `pool` | `amm_pool` | - | +| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | + +**Important:** The `network_id` parameter has been renamed to `network`. + +**Important:** `matic` network has been renamed to `polygon`. + +### 5. Batched Parameters + +Many parameters now support batching - accepting single values or comma-separated strings. + +**Supported Batched Parameters:** + +- `address`, `from_address`, `to_address` +- `contract`, `token_id` +- `factory`, `pool` +- `owner`, `token_account`, `mint` +- `transaction_id`, `signature` + +**Examples:** + +```console +## Single value +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 + +## Comma-separated, single parameter +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 + +## Repeated parameter values +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +### 6. New Parameters + +#### `include_null_balances` + +Added to balance endpoints to optionally include zero/null balances. + +```bash +?include_null_balances=true +``` + +**Default:** `false` + +## 🔄 Response Changes + +### 7. Pagination Changes + +Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. + +**Before:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2, + "next_page": 3, + "total_pages": 10 + }, + "total_results": 1234 +} +``` + +**After:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2 + } +} +``` + +**Removed fields:** + +- `next_page` +- `total_pages` +- `total_results` + +**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. + +### 8. Removed Parameters + +The following deprecated parameters have been removed: + +- `orderBy` - Results are now ordered by timestamp/block by default +- `orderDirection` - Always descending (newest first) + +### 9. Cached Queries + +Queries are now cached on the ClickHouse side for better performance. + +You can specifically request to not use the cache by setting the `Cache-Control` header to `no-cache`. + +#### Example + +**Cache** + +```console +$ curl -s 'https://token-api.thegraph.com/v1/...' | jq .statistics +{ + "bytes_read": 221, + "rows_read": 1, + "elapsed": 0.002212065 +} +``` + +**No cache** + +```console +$ curl -s 'http://localhost:8000/v1/...' --header 'Cache-Control: no-cache' | jq .statistics +{ + "bytes_read": 14621174348, + "rows_read": 223244390, + "elapsed": 0.971064066 +} +``` + +## 📚 Example Migrations + +### Example 1: Get Token Balances + +**Before:** + +```bash +GET /token/balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +### Example 2: Get NFT Items + +**Before:** + +```bash +GET /nft/items/evm/contract/0xbd3531da5cf5857e7cfaa92426877b022e612cf8/token_id/5712?network_id=mainnet +``` + +**After:** + +```bash +GET /v1/evm/nft/items?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&token_id=5712 +``` + +### Example 3: Get Token Transfers with Time Filter + +**Before:** + +```bash +GET /token/transfers/evm?network_id=mainnet&from=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&startTime=1735689600&endTime=1767225600 +``` + +**After:** + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&start_time=1735689600&end_time=1767225600 +``` + +### Example 4: Get NFT Transfer Activities + +**Before:** + +```bash +GET /nft/activities/evm?network_id=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&anyAddress=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +**After:** + +```bash +GET /v1/evm/nft/transfers?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +### Example 5: Get Pool OHLC Data + +**Before:** + +```bash +GET /token/ohlc/pools/evm/0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640?network_id=mainnet&interval=1h&startTime=1735689600 +``` + +**After:** + +```bash +GET /v1/evm/pools/ohlc?network=mainnet&pool=0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640&interval=1h&start_time=1735689600 +``` + +### Example 6: Batched Query (New Feature) + +Query balances for multiple contracts in a single request: + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +Query transfers from multiple addresses: + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xabc...,0xdef...,0x123...&start_time=1735689600 +``` + +## ⚠️ Important Notes + +1. **Migration Notes:** The old endpoints were deprecated and removed on **October 30, 2025**. Please ensure all integrations have been migrated to the new Token API v1 endpoints. + +2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. + +3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. + +4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/nl/token-api/svm-tokens/_meta.js b/website/src/pages/nl/token-api/svm-tokens/_meta.js index 1de31437004c..001e2d43341a 100644 --- a/website/src/pages/nl/token-api/svm-tokens/_meta.js +++ b/website/src/pages/nl/token-api/svm-tokens/_meta.js @@ -1,6 +1,6 @@ export default { - tokens: '', transfers: '', + tokens: '', balances: '', 'balances-native': '', holders: '', diff --git a/website/src/pages/nl/token-api/upgrade-to-v1.mdx b/website/src/pages/nl/token-api/upgrade-to-v1.mdx deleted file mode 100644 index fbe09101eaa5..000000000000 --- a/website/src/pages/nl/token-api/upgrade-to-v1.mdx +++ /dev/null @@ -1,254 +0,0 @@ ---- -title: Upgrade to v1 ---- - -This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. - -**Note** - -- `EVM` = Ethereum Virtual Machine - -Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). - -- `SVM` = Solana Virtual Machine - -Used to describe endpoints supporting Solana (currently the only SVM chain supported). - -## 🔑 Breaking Changes Summary - -### 1. **API Versioning** - -All endpoints now use the `/v1` prefix. - -**Before:** - -``` -GET /balances/evm -GET /nft/items/contract/:contract/token_id/:token_id -``` - -**After:** - -``` -GET /v1/evm/balances -GET /v1/evm/nft/items -``` - -### 2. **Route Structure Reorganization** - -#### 2.1 EVM Endpoints - -Consolidated under `/v1/evm/*` - -| Old Endpoint | New Endpoint | -| ------------------------------------------------------ | ----------------------------- | -| `/balances/evm` | `/v1/evm/balances` | -| `/historical/balances/evm` | `/v1/evm/balances/historical` | -| `/holders/evm/:contract` | `/v1/evm/holders` | -| `/tokens/evm/:contract` | `/v1/evm/tokens` | -| `/transfers/evm` | `/v1/evm/transfers` | -| `/pools/evm` | `/v1/evm/pools` | -| `/swaps/evm` | `/v1/evm/swaps` | -| `/dexes/evm` | `/v1/evm/dexes` | -| `/ohlc/prices/evm/:contract` | _(removed)_ | -| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | -| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | -| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | -| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | -| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | -| `/nft/activities/evm` | `/v1/evm/nft/transfers` | -| `/nft/sales/evm` | `/v1/evm/nft/sales` | - -**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. - -**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. - ---- - -#### 2.2 New EVM native balances endpoint - -Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. - -Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. - ---- - -#### 2.3 SVM Endpoints - -Consolidated under `/v1/svm/*` - -| Old Endpoint | New Endpoint | -| ------------------------ | ------------------------- | -| `/balances/svm` | `/v1/svm/balances` | -| `/balances/native/svm` | `/v1/svm/balances/native` | -| `/holders/svm/:contract` | `/v1/svm/holders` | -| `/tokens/svm/:mint` | `/v1/svm/tokens` | -| `/transfers/svm` | `/v1/svm/transfers` | -| `/pools/svm` | `/v1/svm/pools` | -| `/swaps/svm` | `/v1/svm/swaps` | -| `/dexes/svm` | `/v1/svm/dexes` | -| `/owner/svm/:account` | `/v1/svm/owner` | -| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | - -## 📝 Parameter Changes - -### 3. **Path Parameters → Query Parameters** - -All path parameters have been moved to query parameters. - -**Before:** - -```bash -GET /balances/evm/:address -GET /holders/evm/:contract -GET /nft/items/evm/contract/:contract/token_id/:token_id -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0x... -GET /v1/evm/holders?network=mainnet&contract=0x... -GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 -``` - -### 4. **Standardized Parameter Naming** - -All query parameters have been standardized to use snake_case naming convention. - -| Old Parameter | New Parameter | Notes | -| --- | --- | --- | -| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | -| `anyAddress` | `address` | Matches either `from` or `to` address | -| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | -| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | -| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | -| `endTime` | `end_time` | Default: `9999999999` | -| - | `start_block` | New parameter, default: `0` | -| - | `end_block` | New parameter, default: `9999999999` | -| - | `include_null_balances` | New parameter, default: `false` | -| `tx_hash` | `transaction_id` | - | -| `token` | `input_token`, `output_token` | More explicit for pool queries | -| `pool` | `amm_pool` | - | -| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | - -**Important:** The `network_id` parameter has been renamed to `network`. - -**Important:** `matic` network has been renamed to `polygon`. - -### 5. **Batched Parameters** - -Many parameters now support batching - accepting single values or comma-separated strings. - -**Supported Batched Parameters:** - -- `address`, `from_address`, `to_address` -- `contract`, `token_id` -- `factory`, `pool` -- `owner`, `token_account`, `mint` -- `transaction_id`, `signature` - -**Examples:** - -```console -# Single value -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 - -# Comma-separated, single parameter -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 - -# Repeated parameter values -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -### 6. **New Parameters** - -#### `include_null_balances` - -Added to balance endpoints to optionally include zero/null balances. - -```bash -?include_null_balances=true -``` - -**Default:** `false` - -## 🔄 Response Changes - -### 7. **Pagination Changes** - -Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. - -**Before:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2, - "next_page": 3, - "total_pages": 10 - }, - "total_results": 1234 -} -``` - -**After:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2 - } -} -``` - -**Removed fields:** - -- `next_page` -- `total_pages` -- `total_results` - -**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. - -### 8. **Removed Parameters** - -The following deprecated parameters have been removed: - -- `orderBy` - Results are now ordered by timestamp/block by default -- `orderDirection` - Always descending (newest first) - -## 📚 Example Migrations - -### Old vs New: Get Token Balances - -**Before:** - -```bash -GET /balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -### New Feature: Batched Queries - -Query balances for multiple contracts in a single request: - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -## ⚠️ Important Notes - -1. **Backward Compatibility:** The old endpoints are deprecated and will be removed in the future. Migrate by **Oct 30, 2025**. - -2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. - -3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. - -4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/pl/token-api/_meta.js b/website/src/pages/pl/token-api/_meta.js index a8624da52e7f..853f9dc09031 100644 --- a/website/src/pages/pl/token-api/_meta.js +++ b/website/src/pages/pl/token-api/_meta.js @@ -2,15 +2,15 @@ import titles from './_meta-titles.json' export default { 'quick-start': '', + 'svm-tokens': titles['svm-tokens'] ?? '', + 'svm-dexs': titles['svm-dexs'] ?? '', 'evm-tokens': titles['evm-tokens'] ?? '', 'evm-dexs': titles['evm-dexs'] ?? '', 'evm-nfts': titles['evm-nfts'] ?? '', - 'svm-tokens': titles['svm-tokens'] ?? '', - 'svm-dexs': titles['svm-dexs'] ?? '', 'tvm-tokens': titles['tvm-tokens'] ?? '', 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', 'endpoint-pricing': '', + guides: 'Guides', faq: '', - 'upgrade-to-v1': '', } diff --git a/website/src/pages/pl/token-api/endpoints/_meta.js b/website/src/pages/pl/token-api/endpoints/_meta.js new file mode 100644 index 000000000000..5d419807937c --- /dev/null +++ b/website/src/pages/pl/token-api/endpoints/_meta.js @@ -0,0 +1,4 @@ +export default { + 'endpoint-pricing': '', + 'endpoint-support': '', +} diff --git a/website/src/pages/pl/token-api/endpoint-pricing.mdx b/website/src/pages/pl/token-api/endpoints/endpoint-pricing.mdx similarity index 100% rename from website/src/pages/pl/token-api/endpoint-pricing.mdx rename to website/src/pages/pl/token-api/endpoints/endpoint-pricing.mdx diff --git a/website/src/pages/pl/token-api/endpoints/endpoint-support.msx b/website/src/pages/pl/token-api/endpoints/endpoint-support.msx new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/website/src/pages/pl/token-api/guides/_meta-titles.json b/website/src/pages/pl/token-api/guides/_meta-titles.json new file mode 100644 index 000000000000..cd93dcc0fc0b --- /dev/null +++ b/website/src/pages/pl/token-api/guides/_meta-titles.json @@ -0,0 +1,4 @@ +{ + "gpt": "Create Custom GPTS", + "upgrade-to-v1": "" +} diff --git a/website/src/pages/pl/token-api/guides/_meta.js b/website/src/pages/pl/token-api/guides/_meta.js new file mode 100644 index 000000000000..e5aaaadd78f2 --- /dev/null +++ b/website/src/pages/pl/token-api/guides/_meta.js @@ -0,0 +1,4 @@ +export default { + gpt: '', + 'upgrade-to-v1': '', +} diff --git a/website/src/pages/pl/token-api/guides/gpt.mdx b/website/src/pages/pl/token-api/guides/gpt.mdx new file mode 100644 index 000000000000..564d013dea20 --- /dev/null +++ b/website/src/pages/pl/token-api/guides/gpt.mdx @@ -0,0 +1,121 @@ +--- +title: How the Token API Powers Custom GPTs +sidebarTitle: Create Custom GPTs +--- + +## Overview + +The Token API is a pre-indexed blockchain data service that provides real-time access to token balances, metadata, prices, liquidity, and volume across multiple chains. Developers use its REST endpoints to build wallets, trading dashboards, DeFi analytics, and AI systems without maintaining their own indexing stack. Custom GPTs can connect directly to the Token API's OpenAPI schema. + +The Token API enables developers to build **Custom GPTs** to reason over live blockchain data inside ChatGPT that can reason over and respond with live blockchain data directly inside ChatGPT. + +## What the Token API Enables in Custom GPTs + +When a Custom GPT is wired to the Token API, it gains access to a machine-readable schema and authenticated endpoints. Developers can use this to: + +- **Query real-time onchain data**: Balances, token prices, liquidity, and transaction history. +- **Automate domain-specific tasks**: Portfolio tracking, accounting, reconciliation, and market analysis. +- **Power AI agents with verifiable blockchain context**: Use the same data sources dapps rely on. + +Because the Token API provides a machine-readable schema and authenticated requests, it serves as a structured data layer that enables GPT-5 agents to combine natural language reasoning with live onchain data from The Graph. + +## When to Use the Token API for Custom GPTs + +Use the Token API when your GPT needs repeatable, domain-specific behavior grounded in blockchain data. This is most effective when the GPT performs the same type of task frequently or enforces a workflow you define. For one-off or exploratory questions, standard ChatGPT prompts are sufficient. + +## Choosing a Use Case + +Start with a clear, narrow objective, then expand as needed. Common patterns include: + +- **Accounting GPT**: Onchain accounting, tax tagging, and portfolio reconciliation. +- **Trading GPT**: Liquidity, pricing, and volume analysis for trading strategies. +- **Protocol Tracking GPT**: Real-time monitoring of transaction activity and liquidity pools. + +A focused initial goal such as “Retrieve token balances and prices for a wallet” makes it easier to configure reliable behavior before adding complex workflows. + +## Requirements + +| Requirement | Description | +| ---------------------- | -------------------------------------------------------- | +| ChatGPT 5 | Custom GPT creation requires GPT-5 tier or Pro. | +| Token API Subscription | Sign up at [The Graph Market](https://thegraph.market./) | +| Token API Key | Available in your dashboard as the Authentication JWT. | + +## Setting Up a Custom GPT + +Below is an explanatory outline of what happens during setup. This section provides conceptual understanding. + +### Create Custom GPT + +1. Visit chat.openai.com/gpts in your browser. 2, Click Create (top right). +2. Under Configure (in the top left panel), set up your GPT's personality and scope. + +### Configure Your GPT + +You define the GPT's role, scope, and metadata so it knows what it is designed to do. This includes: + +- **Name and Description**: Helps users discover your GPT. + - For example: **Name**: Token Tracker GPT **Description**: An onchain analytics assistant that retrieves live token balances, prices, and liquidity data using The Graph's Token API. +- **Instructions**: Tells the GPT what tasks it should perform using the Token API. + - For example: You are a blockchain data assistant retrieving onchain token data from The Graph's Token API. Use endpoints to fetch balances, liquidity, and price history across EVM chains. Present results in tables with token symbols, prices, and USD values. +- **Knowledge**: Optional context files such as wallet references, accounting rules, or code snippets. +- **New Action**: At the bottom, click “Create new action” to connect your GPT to the Token API. + +### Connect the Token API + +To enable live blockchain queries inside ChatGPT, you connect the GPT to the Token API through: + +#### Authentication + +1. Set Authentication to API Key → Bearer. +2. Open [The Graph Market](https://thegraph.market./) and copy your Authentication JWT from your dashboard. +3. Paste the token into the ChatGPT prompt where the field shows [HIDDEN]. + +#### Schema + +1. Above the Schema box, click Import from URL. +2. Paste: https://token-api.thegraph.com/openapi +3. Click Import. You'll now see endpoints like: + - `getV1EvmTokens` + - `getV1EvmDexes` + - `getV1EvmBalances` +4. Click Test on one (for example `getV1EvmDexes`) to verify connection. + +##### Privacy + +1. At the bottom, under Privacy, paste: https://pinax.network/en/legal/privacy + +### Privacy + +You can attach a privacy policy URL such as: https://pinax.network/en/legal/privacy + +## Example Prompt Patterns + +These examples help illustrate how a GPT reasons over Token API data. + +### Wallet and Portfolio + +Get the total USD balance for a wallet across multiple chains, returning token name, symbol, balance, and price. + +### Trading Analysis + +Compare USDC and DAI liquidity across Uniswap and Curve. Return the top 5 pools by TVL. + +### Accounting + +List all ERC-20 transfers for this address in the last 30 days. Group by token and total incoming/outgoing volume. + +## Best Practices + +| Tip | Why It Matters | +| --------------------------------- | ---------------------------------------------------------------------- | +| Scope your GPT narrowly first | Simplifies debugging and validates schema integration. | +| Use clear role instructions | Helps the GPT choose the right endpoints and avoid assumptions. | +| Name endpoints explicitly | Improves routing accuracy when fetching balances, prices, or DEX data. | +| Combine with code | Enables custom parsing or logic for complex workflows. | +| Add Subgraph or Substream context | Provides richer analytics when combined with Token API data. | + +## FAQs & Resources + +- Builders Office Hours (October 23, 2025) +- Watch the full session: https://x.com/i/broadcasts/1mrGmBzBarNJy diff --git a/website/src/pages/pl/token-api/guides/upgrade-to-v1.mdx b/website/src/pages/pl/token-api/guides/upgrade-to-v1.mdx new file mode 100644 index 000000000000..e2a7ccf973fa --- /dev/null +++ b/website/src/pages/pl/token-api/guides/upgrade-to-v1.mdx @@ -0,0 +1,346 @@ +--- +title: Upgrade to v1 +--- + +This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. + +**Note** + +- `EVM` = Ethereum Virtual Machine + +Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). + +- `SVM` = Solana Virtual Machine + +Used to describe endpoints supporting Solana (currently the only SVM chain supported). + +## 🔑 Breaking Changes Summary + +### 1. API Versioning + +All endpoints now use the `/v1` prefix. + +**Before:** + +``` +GET /balances/evm +GET /nft/items/contract/:contract/token_id/:token_id +``` + +**After:** + +``` +GET /v1/evm/balances +GET /v1/evm/nft/items +``` + +### 2. Route Structure Reorganization + +#### 2.1 EVM Endpoints + +Consolidated under `/v1/evm/*` + +| Old Endpoint | New Endpoint | +| ------------------------------------------------------ | ----------------------------- | +| `/balances/evm` | `/v1/evm/balances` | +| `/historical/balances/evm` | `/v1/evm/balances/historical` | +| `/holders/evm/:contract` | `/v1/evm/holders` | +| `/tokens/evm/:contract` | `/v1/evm/tokens` | +| `/transfers/evm` | `/v1/evm/transfers` | +| `/pools/evm` | `/v1/evm/pools` | +| `/swaps/evm` | `/v1/evm/swaps` | +| `/dexes/evm` | `/v1/evm/dexes` | +| `/ohlc/prices/evm/:contract` | _(removed)_ | +| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | +| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | +| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | +| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | +| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | +| `/nft/activities/evm` | `/v1/evm/nft/transfers` | +| `/nft/sales/evm` | `/v1/evm/nft/sales` | + +**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. + +**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. + +--- + +#### 2.2 New EVM native balances endpoint + +Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. + +Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. + +--- + +#### 2.3 SVM Endpoints + +Consolidated under `/v1/svm/*` + +| Old Endpoint | New Endpoint | +| ------------------------ | ------------------------- | +| `/balances/svm` | `/v1/svm/balances` | +| `/balances/native/svm` | `/v1/svm/balances/native` | +| `/holders/svm/:contract` | `/v1/svm/holders` | +| `/tokens/svm/:mint` | `/v1/svm/tokens` | +| `/transfers/svm` | `/v1/svm/transfers` | +| `/pools/svm` | `/v1/svm/pools` | +| `/swaps/svm` | `/v1/svm/swaps` | +| `/dexes/svm` | `/v1/svm/dexes` | +| `/owner/svm/:account` | `/v1/svm/owner` | +| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | + +## 📝 Parameter Changes + +### 3. Path Parameters → Query Parameters + +All path parameters have been moved to query parameters. + +**Before:** + +```bash +GET /balances/evm/:address +GET /holders/evm/:contract +GET /nft/items/evm/contract/:contract/token_id/:token_id +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0x... +GET /v1/evm/holders?network=mainnet&contract=0x... +GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 +``` + +### 4. Standardized Parameter Naming + +All query parameters have been standardized to use snake_case naming convention. + +| Old Parameter | New Parameter | Notes | +| --- | --- | --- | +| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | +| `anyAddress` | `address` | Matches either `from` or `to` address | +| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | +| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | +| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | +| `endTime` | `end_time` | Default: `9999999999` | +| - | `start_block` | New parameter, default: `0` | +| - | `end_block` | New parameter, default: `9999999999` | +| - | `include_null_balances` | New parameter, default: `false` | +| `tx_hash` | `transaction_id` | - | +| `token` | `input_token`, `output_token` | More explicit for pool queries | +| `pool` | `amm_pool` | - | +| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | + +**Important:** The `network_id` parameter has been renamed to `network`. + +**Important:** `matic` network has been renamed to `polygon`. + +### 5. Batched Parameters + +Many parameters now support batching - accepting single values or comma-separated strings. + +**Supported Batched Parameters:** + +- `address`, `from_address`, `to_address` +- `contract`, `token_id` +- `factory`, `pool` +- `owner`, `token_account`, `mint` +- `transaction_id`, `signature` + +**Examples:** + +```console +## Single value +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 + +## Comma-separated, single parameter +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 + +## Repeated parameter values +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +### 6. New Parameters + +#### `include_null_balances` + +Added to balance endpoints to optionally include zero/null balances. + +```bash +?include_null_balances=true +``` + +**Default:** `false` + +## 🔄 Response Changes + +### 7. Pagination Changes + +Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. + +**Before:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2, + "next_page": 3, + "total_pages": 10 + }, + "total_results": 1234 +} +``` + +**After:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2 + } +} +``` + +**Removed fields:** + +- `next_page` +- `total_pages` +- `total_results` + +**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. + +### 8. Removed Parameters + +The following deprecated parameters have been removed: + +- `orderBy` - Results are now ordered by timestamp/block by default +- `orderDirection` - Always descending (newest first) + +### 9. Cached Queries + +Queries are now cached on the ClickHouse side for better performance. + +You can specifically request to not use the cache by setting the `Cache-Control` header to `no-cache`. + +#### Example + +**Cache** + +```console +$ curl -s 'https://token-api.thegraph.com/v1/...' | jq .statistics +{ + "bytes_read": 221, + "rows_read": 1, + "elapsed": 0.002212065 +} +``` + +**No cache** + +```console +$ curl -s 'http://localhost:8000/v1/...' --header 'Cache-Control: no-cache' | jq .statistics +{ + "bytes_read": 14621174348, + "rows_read": 223244390, + "elapsed": 0.971064066 +} +``` + +## 📚 Example Migrations + +### Example 1: Get Token Balances + +**Before:** + +```bash +GET /token/balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +### Example 2: Get NFT Items + +**Before:** + +```bash +GET /nft/items/evm/contract/0xbd3531da5cf5857e7cfaa92426877b022e612cf8/token_id/5712?network_id=mainnet +``` + +**After:** + +```bash +GET /v1/evm/nft/items?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&token_id=5712 +``` + +### Example 3: Get Token Transfers with Time Filter + +**Before:** + +```bash +GET /token/transfers/evm?network_id=mainnet&from=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&startTime=1735689600&endTime=1767225600 +``` + +**After:** + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&start_time=1735689600&end_time=1767225600 +``` + +### Example 4: Get NFT Transfer Activities + +**Before:** + +```bash +GET /nft/activities/evm?network_id=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&anyAddress=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +**After:** + +```bash +GET /v1/evm/nft/transfers?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +### Example 5: Get Pool OHLC Data + +**Before:** + +```bash +GET /token/ohlc/pools/evm/0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640?network_id=mainnet&interval=1h&startTime=1735689600 +``` + +**After:** + +```bash +GET /v1/evm/pools/ohlc?network=mainnet&pool=0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640&interval=1h&start_time=1735689600 +``` + +### Example 6: Batched Query (New Feature) + +Query balances for multiple contracts in a single request: + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +Query transfers from multiple addresses: + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xabc...,0xdef...,0x123...&start_time=1735689600 +``` + +## ⚠️ Important Notes + +1. **Migration Notes:** The old endpoints were deprecated and removed on **October 30, 2025**. Please ensure all integrations have been migrated to the new Token API v1 endpoints. + +2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. + +3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. + +4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/pl/token-api/svm-tokens/_meta.js b/website/src/pages/pl/token-api/svm-tokens/_meta.js index 1de31437004c..001e2d43341a 100644 --- a/website/src/pages/pl/token-api/svm-tokens/_meta.js +++ b/website/src/pages/pl/token-api/svm-tokens/_meta.js @@ -1,6 +1,6 @@ export default { - tokens: '', transfers: '', + tokens: '', balances: '', 'balances-native': '', holders: '', diff --git a/website/src/pages/pl/token-api/upgrade-to-v1.mdx b/website/src/pages/pl/token-api/upgrade-to-v1.mdx deleted file mode 100644 index fbe09101eaa5..000000000000 --- a/website/src/pages/pl/token-api/upgrade-to-v1.mdx +++ /dev/null @@ -1,254 +0,0 @@ ---- -title: Upgrade to v1 ---- - -This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. - -**Note** - -- `EVM` = Ethereum Virtual Machine - -Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). - -- `SVM` = Solana Virtual Machine - -Used to describe endpoints supporting Solana (currently the only SVM chain supported). - -## 🔑 Breaking Changes Summary - -### 1. **API Versioning** - -All endpoints now use the `/v1` prefix. - -**Before:** - -``` -GET /balances/evm -GET /nft/items/contract/:contract/token_id/:token_id -``` - -**After:** - -``` -GET /v1/evm/balances -GET /v1/evm/nft/items -``` - -### 2. **Route Structure Reorganization** - -#### 2.1 EVM Endpoints - -Consolidated under `/v1/evm/*` - -| Old Endpoint | New Endpoint | -| ------------------------------------------------------ | ----------------------------- | -| `/balances/evm` | `/v1/evm/balances` | -| `/historical/balances/evm` | `/v1/evm/balances/historical` | -| `/holders/evm/:contract` | `/v1/evm/holders` | -| `/tokens/evm/:contract` | `/v1/evm/tokens` | -| `/transfers/evm` | `/v1/evm/transfers` | -| `/pools/evm` | `/v1/evm/pools` | -| `/swaps/evm` | `/v1/evm/swaps` | -| `/dexes/evm` | `/v1/evm/dexes` | -| `/ohlc/prices/evm/:contract` | _(removed)_ | -| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | -| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | -| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | -| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | -| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | -| `/nft/activities/evm` | `/v1/evm/nft/transfers` | -| `/nft/sales/evm` | `/v1/evm/nft/sales` | - -**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. - -**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. - ---- - -#### 2.2 New EVM native balances endpoint - -Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. - -Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. - ---- - -#### 2.3 SVM Endpoints - -Consolidated under `/v1/svm/*` - -| Old Endpoint | New Endpoint | -| ------------------------ | ------------------------- | -| `/balances/svm` | `/v1/svm/balances` | -| `/balances/native/svm` | `/v1/svm/balances/native` | -| `/holders/svm/:contract` | `/v1/svm/holders` | -| `/tokens/svm/:mint` | `/v1/svm/tokens` | -| `/transfers/svm` | `/v1/svm/transfers` | -| `/pools/svm` | `/v1/svm/pools` | -| `/swaps/svm` | `/v1/svm/swaps` | -| `/dexes/svm` | `/v1/svm/dexes` | -| `/owner/svm/:account` | `/v1/svm/owner` | -| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | - -## 📝 Parameter Changes - -### 3. **Path Parameters → Query Parameters** - -All path parameters have been moved to query parameters. - -**Before:** - -```bash -GET /balances/evm/:address -GET /holders/evm/:contract -GET /nft/items/evm/contract/:contract/token_id/:token_id -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0x... -GET /v1/evm/holders?network=mainnet&contract=0x... -GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 -``` - -### 4. **Standardized Parameter Naming** - -All query parameters have been standardized to use snake_case naming convention. - -| Old Parameter | New Parameter | Notes | -| --- | --- | --- | -| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | -| `anyAddress` | `address` | Matches either `from` or `to` address | -| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | -| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | -| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | -| `endTime` | `end_time` | Default: `9999999999` | -| - | `start_block` | New parameter, default: `0` | -| - | `end_block` | New parameter, default: `9999999999` | -| - | `include_null_balances` | New parameter, default: `false` | -| `tx_hash` | `transaction_id` | - | -| `token` | `input_token`, `output_token` | More explicit for pool queries | -| `pool` | `amm_pool` | - | -| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | - -**Important:** The `network_id` parameter has been renamed to `network`. - -**Important:** `matic` network has been renamed to `polygon`. - -### 5. **Batched Parameters** - -Many parameters now support batching - accepting single values or comma-separated strings. - -**Supported Batched Parameters:** - -- `address`, `from_address`, `to_address` -- `contract`, `token_id` -- `factory`, `pool` -- `owner`, `token_account`, `mint` -- `transaction_id`, `signature` - -**Examples:** - -```console -# Single value -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 - -# Comma-separated, single parameter -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 - -# Repeated parameter values -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -### 6. **New Parameters** - -#### `include_null_balances` - -Added to balance endpoints to optionally include zero/null balances. - -```bash -?include_null_balances=true -``` - -**Default:** `false` - -## 🔄 Response Changes - -### 7. **Pagination Changes** - -Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. - -**Before:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2, - "next_page": 3, - "total_pages": 10 - }, - "total_results": 1234 -} -``` - -**After:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2 - } -} -``` - -**Removed fields:** - -- `next_page` -- `total_pages` -- `total_results` - -**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. - -### 8. **Removed Parameters** - -The following deprecated parameters have been removed: - -- `orderBy` - Results are now ordered by timestamp/block by default -- `orderDirection` - Always descending (newest first) - -## 📚 Example Migrations - -### Old vs New: Get Token Balances - -**Before:** - -```bash -GET /balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -### New Feature: Batched Queries - -Query balances for multiple contracts in a single request: - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -## ⚠️ Important Notes - -1. **Backward Compatibility:** The old endpoints are deprecated and will be removed in the future. Migrate by **Oct 30, 2025**. - -2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. - -3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. - -4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/pt/token-api/_meta.js b/website/src/pages/pt/token-api/_meta.js index a8624da52e7f..853f9dc09031 100644 --- a/website/src/pages/pt/token-api/_meta.js +++ b/website/src/pages/pt/token-api/_meta.js @@ -2,15 +2,15 @@ import titles from './_meta-titles.json' export default { 'quick-start': '', + 'svm-tokens': titles['svm-tokens'] ?? '', + 'svm-dexs': titles['svm-dexs'] ?? '', 'evm-tokens': titles['evm-tokens'] ?? '', 'evm-dexs': titles['evm-dexs'] ?? '', 'evm-nfts': titles['evm-nfts'] ?? '', - 'svm-tokens': titles['svm-tokens'] ?? '', - 'svm-dexs': titles['svm-dexs'] ?? '', 'tvm-tokens': titles['tvm-tokens'] ?? '', 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', 'endpoint-pricing': '', + guides: 'Guides', faq: '', - 'upgrade-to-v1': '', } diff --git a/website/src/pages/pt/token-api/endpoints/_meta.js b/website/src/pages/pt/token-api/endpoints/_meta.js new file mode 100644 index 000000000000..5d419807937c --- /dev/null +++ b/website/src/pages/pt/token-api/endpoints/_meta.js @@ -0,0 +1,4 @@ +export default { + 'endpoint-pricing': '', + 'endpoint-support': '', +} diff --git a/website/src/pages/pt/token-api/endpoint-pricing.mdx b/website/src/pages/pt/token-api/endpoints/endpoint-pricing.mdx similarity index 100% rename from website/src/pages/pt/token-api/endpoint-pricing.mdx rename to website/src/pages/pt/token-api/endpoints/endpoint-pricing.mdx diff --git a/website/src/pages/pt/token-api/endpoints/endpoint-support.msx b/website/src/pages/pt/token-api/endpoints/endpoint-support.msx new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/website/src/pages/pt/token-api/guides/_meta-titles.json b/website/src/pages/pt/token-api/guides/_meta-titles.json new file mode 100644 index 000000000000..cd93dcc0fc0b --- /dev/null +++ b/website/src/pages/pt/token-api/guides/_meta-titles.json @@ -0,0 +1,4 @@ +{ + "gpt": "Create Custom GPTS", + "upgrade-to-v1": "" +} diff --git a/website/src/pages/pt/token-api/guides/_meta.js b/website/src/pages/pt/token-api/guides/_meta.js new file mode 100644 index 000000000000..e5aaaadd78f2 --- /dev/null +++ b/website/src/pages/pt/token-api/guides/_meta.js @@ -0,0 +1,4 @@ +export default { + gpt: '', + 'upgrade-to-v1': '', +} diff --git a/website/src/pages/pt/token-api/guides/gpt.mdx b/website/src/pages/pt/token-api/guides/gpt.mdx new file mode 100644 index 000000000000..564d013dea20 --- /dev/null +++ b/website/src/pages/pt/token-api/guides/gpt.mdx @@ -0,0 +1,121 @@ +--- +title: How the Token API Powers Custom GPTs +sidebarTitle: Create Custom GPTs +--- + +## Overview + +The Token API is a pre-indexed blockchain data service that provides real-time access to token balances, metadata, prices, liquidity, and volume across multiple chains. Developers use its REST endpoints to build wallets, trading dashboards, DeFi analytics, and AI systems without maintaining their own indexing stack. Custom GPTs can connect directly to the Token API's OpenAPI schema. + +The Token API enables developers to build **Custom GPTs** to reason over live blockchain data inside ChatGPT that can reason over and respond with live blockchain data directly inside ChatGPT. + +## What the Token API Enables in Custom GPTs + +When a Custom GPT is wired to the Token API, it gains access to a machine-readable schema and authenticated endpoints. Developers can use this to: + +- **Query real-time onchain data**: Balances, token prices, liquidity, and transaction history. +- **Automate domain-specific tasks**: Portfolio tracking, accounting, reconciliation, and market analysis. +- **Power AI agents with verifiable blockchain context**: Use the same data sources dapps rely on. + +Because the Token API provides a machine-readable schema and authenticated requests, it serves as a structured data layer that enables GPT-5 agents to combine natural language reasoning with live onchain data from The Graph. + +## When to Use the Token API for Custom GPTs + +Use the Token API when your GPT needs repeatable, domain-specific behavior grounded in blockchain data. This is most effective when the GPT performs the same type of task frequently or enforces a workflow you define. For one-off or exploratory questions, standard ChatGPT prompts are sufficient. + +## Choosing a Use Case + +Start with a clear, narrow objective, then expand as needed. Common patterns include: + +- **Accounting GPT**: Onchain accounting, tax tagging, and portfolio reconciliation. +- **Trading GPT**: Liquidity, pricing, and volume analysis for trading strategies. +- **Protocol Tracking GPT**: Real-time monitoring of transaction activity and liquidity pools. + +A focused initial goal such as “Retrieve token balances and prices for a wallet” makes it easier to configure reliable behavior before adding complex workflows. + +## Requirements + +| Requirement | Description | +| ---------------------- | -------------------------------------------------------- | +| ChatGPT 5 | Custom GPT creation requires GPT-5 tier or Pro. | +| Token API Subscription | Sign up at [The Graph Market](https://thegraph.market./) | +| Token API Key | Available in your dashboard as the Authentication JWT. | + +## Setting Up a Custom GPT + +Below is an explanatory outline of what happens during setup. This section provides conceptual understanding. + +### Create Custom GPT + +1. Visit chat.openai.com/gpts in your browser. 2, Click Create (top right). +2. Under Configure (in the top left panel), set up your GPT's personality and scope. + +### Configure Your GPT + +You define the GPT's role, scope, and metadata so it knows what it is designed to do. This includes: + +- **Name and Description**: Helps users discover your GPT. + - For example: **Name**: Token Tracker GPT **Description**: An onchain analytics assistant that retrieves live token balances, prices, and liquidity data using The Graph's Token API. +- **Instructions**: Tells the GPT what tasks it should perform using the Token API. + - For example: You are a blockchain data assistant retrieving onchain token data from The Graph's Token API. Use endpoints to fetch balances, liquidity, and price history across EVM chains. Present results in tables with token symbols, prices, and USD values. +- **Knowledge**: Optional context files such as wallet references, accounting rules, or code snippets. +- **New Action**: At the bottom, click “Create new action” to connect your GPT to the Token API. + +### Connect the Token API + +To enable live blockchain queries inside ChatGPT, you connect the GPT to the Token API through: + +#### Authentication + +1. Set Authentication to API Key → Bearer. +2. Open [The Graph Market](https://thegraph.market./) and copy your Authentication JWT from your dashboard. +3. Paste the token into the ChatGPT prompt where the field shows [HIDDEN]. + +#### Schema + +1. Above the Schema box, click Import from URL. +2. Paste: https://token-api.thegraph.com/openapi +3. Click Import. You'll now see endpoints like: + - `getV1EvmTokens` + - `getV1EvmDexes` + - `getV1EvmBalances` +4. Click Test on one (for example `getV1EvmDexes`) to verify connection. + +##### Privacy + +1. At the bottom, under Privacy, paste: https://pinax.network/en/legal/privacy + +### Privacy + +You can attach a privacy policy URL such as: https://pinax.network/en/legal/privacy + +## Example Prompt Patterns + +These examples help illustrate how a GPT reasons over Token API data. + +### Wallet and Portfolio + +Get the total USD balance for a wallet across multiple chains, returning token name, symbol, balance, and price. + +### Trading Analysis + +Compare USDC and DAI liquidity across Uniswap and Curve. Return the top 5 pools by TVL. + +### Accounting + +List all ERC-20 transfers for this address in the last 30 days. Group by token and total incoming/outgoing volume. + +## Best Practices + +| Tip | Why It Matters | +| --------------------------------- | ---------------------------------------------------------------------- | +| Scope your GPT narrowly first | Simplifies debugging and validates schema integration. | +| Use clear role instructions | Helps the GPT choose the right endpoints and avoid assumptions. | +| Name endpoints explicitly | Improves routing accuracy when fetching balances, prices, or DEX data. | +| Combine with code | Enables custom parsing or logic for complex workflows. | +| Add Subgraph or Substream context | Provides richer analytics when combined with Token API data. | + +## FAQs & Resources + +- Builders Office Hours (October 23, 2025) +- Watch the full session: https://x.com/i/broadcasts/1mrGmBzBarNJy diff --git a/website/src/pages/pt/token-api/guides/upgrade-to-v1.mdx b/website/src/pages/pt/token-api/guides/upgrade-to-v1.mdx new file mode 100644 index 000000000000..e2a7ccf973fa --- /dev/null +++ b/website/src/pages/pt/token-api/guides/upgrade-to-v1.mdx @@ -0,0 +1,346 @@ +--- +title: Upgrade to v1 +--- + +This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. + +**Note** + +- `EVM` = Ethereum Virtual Machine + +Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). + +- `SVM` = Solana Virtual Machine + +Used to describe endpoints supporting Solana (currently the only SVM chain supported). + +## 🔑 Breaking Changes Summary + +### 1. API Versioning + +All endpoints now use the `/v1` prefix. + +**Before:** + +``` +GET /balances/evm +GET /nft/items/contract/:contract/token_id/:token_id +``` + +**After:** + +``` +GET /v1/evm/balances +GET /v1/evm/nft/items +``` + +### 2. Route Structure Reorganization + +#### 2.1 EVM Endpoints + +Consolidated under `/v1/evm/*` + +| Old Endpoint | New Endpoint | +| ------------------------------------------------------ | ----------------------------- | +| `/balances/evm` | `/v1/evm/balances` | +| `/historical/balances/evm` | `/v1/evm/balances/historical` | +| `/holders/evm/:contract` | `/v1/evm/holders` | +| `/tokens/evm/:contract` | `/v1/evm/tokens` | +| `/transfers/evm` | `/v1/evm/transfers` | +| `/pools/evm` | `/v1/evm/pools` | +| `/swaps/evm` | `/v1/evm/swaps` | +| `/dexes/evm` | `/v1/evm/dexes` | +| `/ohlc/prices/evm/:contract` | _(removed)_ | +| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | +| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | +| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | +| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | +| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | +| `/nft/activities/evm` | `/v1/evm/nft/transfers` | +| `/nft/sales/evm` | `/v1/evm/nft/sales` | + +**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. + +**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. + +--- + +#### 2.2 New EVM native balances endpoint + +Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. + +Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. + +--- + +#### 2.3 SVM Endpoints + +Consolidated under `/v1/svm/*` + +| Old Endpoint | New Endpoint | +| ------------------------ | ------------------------- | +| `/balances/svm` | `/v1/svm/balances` | +| `/balances/native/svm` | `/v1/svm/balances/native` | +| `/holders/svm/:contract` | `/v1/svm/holders` | +| `/tokens/svm/:mint` | `/v1/svm/tokens` | +| `/transfers/svm` | `/v1/svm/transfers` | +| `/pools/svm` | `/v1/svm/pools` | +| `/swaps/svm` | `/v1/svm/swaps` | +| `/dexes/svm` | `/v1/svm/dexes` | +| `/owner/svm/:account` | `/v1/svm/owner` | +| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | + +## 📝 Parameter Changes + +### 3. Path Parameters → Query Parameters + +All path parameters have been moved to query parameters. + +**Before:** + +```bash +GET /balances/evm/:address +GET /holders/evm/:contract +GET /nft/items/evm/contract/:contract/token_id/:token_id +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0x... +GET /v1/evm/holders?network=mainnet&contract=0x... +GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 +``` + +### 4. Standardized Parameter Naming + +All query parameters have been standardized to use snake_case naming convention. + +| Old Parameter | New Parameter | Notes | +| --- | --- | --- | +| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | +| `anyAddress` | `address` | Matches either `from` or `to` address | +| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | +| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | +| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | +| `endTime` | `end_time` | Default: `9999999999` | +| - | `start_block` | New parameter, default: `0` | +| - | `end_block` | New parameter, default: `9999999999` | +| - | `include_null_balances` | New parameter, default: `false` | +| `tx_hash` | `transaction_id` | - | +| `token` | `input_token`, `output_token` | More explicit for pool queries | +| `pool` | `amm_pool` | - | +| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | + +**Important:** The `network_id` parameter has been renamed to `network`. + +**Important:** `matic` network has been renamed to `polygon`. + +### 5. Batched Parameters + +Many parameters now support batching - accepting single values or comma-separated strings. + +**Supported Batched Parameters:** + +- `address`, `from_address`, `to_address` +- `contract`, `token_id` +- `factory`, `pool` +- `owner`, `token_account`, `mint` +- `transaction_id`, `signature` + +**Examples:** + +```console +## Single value +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 + +## Comma-separated, single parameter +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 + +## Repeated parameter values +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +### 6. New Parameters + +#### `include_null_balances` + +Added to balance endpoints to optionally include zero/null balances. + +```bash +?include_null_balances=true +``` + +**Default:** `false` + +## 🔄 Response Changes + +### 7. Pagination Changes + +Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. + +**Before:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2, + "next_page": 3, + "total_pages": 10 + }, + "total_results": 1234 +} +``` + +**After:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2 + } +} +``` + +**Removed fields:** + +- `next_page` +- `total_pages` +- `total_results` + +**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. + +### 8. Removed Parameters + +The following deprecated parameters have been removed: + +- `orderBy` - Results are now ordered by timestamp/block by default +- `orderDirection` - Always descending (newest first) + +### 9. Cached Queries + +Queries are now cached on the ClickHouse side for better performance. + +You can specifically request to not use the cache by setting the `Cache-Control` header to `no-cache`. + +#### Example + +**Cache** + +```console +$ curl -s 'https://token-api.thegraph.com/v1/...' | jq .statistics +{ + "bytes_read": 221, + "rows_read": 1, + "elapsed": 0.002212065 +} +``` + +**No cache** + +```console +$ curl -s 'http://localhost:8000/v1/...' --header 'Cache-Control: no-cache' | jq .statistics +{ + "bytes_read": 14621174348, + "rows_read": 223244390, + "elapsed": 0.971064066 +} +``` + +## 📚 Example Migrations + +### Example 1: Get Token Balances + +**Before:** + +```bash +GET /token/balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +### Example 2: Get NFT Items + +**Before:** + +```bash +GET /nft/items/evm/contract/0xbd3531da5cf5857e7cfaa92426877b022e612cf8/token_id/5712?network_id=mainnet +``` + +**After:** + +```bash +GET /v1/evm/nft/items?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&token_id=5712 +``` + +### Example 3: Get Token Transfers with Time Filter + +**Before:** + +```bash +GET /token/transfers/evm?network_id=mainnet&from=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&startTime=1735689600&endTime=1767225600 +``` + +**After:** + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&start_time=1735689600&end_time=1767225600 +``` + +### Example 4: Get NFT Transfer Activities + +**Before:** + +```bash +GET /nft/activities/evm?network_id=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&anyAddress=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +**After:** + +```bash +GET /v1/evm/nft/transfers?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +### Example 5: Get Pool OHLC Data + +**Before:** + +```bash +GET /token/ohlc/pools/evm/0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640?network_id=mainnet&interval=1h&startTime=1735689600 +``` + +**After:** + +```bash +GET /v1/evm/pools/ohlc?network=mainnet&pool=0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640&interval=1h&start_time=1735689600 +``` + +### Example 6: Batched Query (New Feature) + +Query balances for multiple contracts in a single request: + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +Query transfers from multiple addresses: + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xabc...,0xdef...,0x123...&start_time=1735689600 +``` + +## ⚠️ Important Notes + +1. **Migration Notes:** The old endpoints were deprecated and removed on **October 30, 2025**. Please ensure all integrations have been migrated to the new Token API v1 endpoints. + +2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. + +3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. + +4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/pt/token-api/svm-tokens/_meta.js b/website/src/pages/pt/token-api/svm-tokens/_meta.js index 1de31437004c..001e2d43341a 100644 --- a/website/src/pages/pt/token-api/svm-tokens/_meta.js +++ b/website/src/pages/pt/token-api/svm-tokens/_meta.js @@ -1,6 +1,6 @@ export default { - tokens: '', transfers: '', + tokens: '', balances: '', 'balances-native': '', holders: '', diff --git a/website/src/pages/pt/token-api/upgrade-to-v1.mdx b/website/src/pages/pt/token-api/upgrade-to-v1.mdx deleted file mode 100644 index fbe09101eaa5..000000000000 --- a/website/src/pages/pt/token-api/upgrade-to-v1.mdx +++ /dev/null @@ -1,254 +0,0 @@ ---- -title: Upgrade to v1 ---- - -This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. - -**Note** - -- `EVM` = Ethereum Virtual Machine - -Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). - -- `SVM` = Solana Virtual Machine - -Used to describe endpoints supporting Solana (currently the only SVM chain supported). - -## 🔑 Breaking Changes Summary - -### 1. **API Versioning** - -All endpoints now use the `/v1` prefix. - -**Before:** - -``` -GET /balances/evm -GET /nft/items/contract/:contract/token_id/:token_id -``` - -**After:** - -``` -GET /v1/evm/balances -GET /v1/evm/nft/items -``` - -### 2. **Route Structure Reorganization** - -#### 2.1 EVM Endpoints - -Consolidated under `/v1/evm/*` - -| Old Endpoint | New Endpoint | -| ------------------------------------------------------ | ----------------------------- | -| `/balances/evm` | `/v1/evm/balances` | -| `/historical/balances/evm` | `/v1/evm/balances/historical` | -| `/holders/evm/:contract` | `/v1/evm/holders` | -| `/tokens/evm/:contract` | `/v1/evm/tokens` | -| `/transfers/evm` | `/v1/evm/transfers` | -| `/pools/evm` | `/v1/evm/pools` | -| `/swaps/evm` | `/v1/evm/swaps` | -| `/dexes/evm` | `/v1/evm/dexes` | -| `/ohlc/prices/evm/:contract` | _(removed)_ | -| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | -| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | -| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | -| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | -| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | -| `/nft/activities/evm` | `/v1/evm/nft/transfers` | -| `/nft/sales/evm` | `/v1/evm/nft/sales` | - -**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. - -**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. - ---- - -#### 2.2 New EVM native balances endpoint - -Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. - -Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. - ---- - -#### 2.3 SVM Endpoints - -Consolidated under `/v1/svm/*` - -| Old Endpoint | New Endpoint | -| ------------------------ | ------------------------- | -| `/balances/svm` | `/v1/svm/balances` | -| `/balances/native/svm` | `/v1/svm/balances/native` | -| `/holders/svm/:contract` | `/v1/svm/holders` | -| `/tokens/svm/:mint` | `/v1/svm/tokens` | -| `/transfers/svm` | `/v1/svm/transfers` | -| `/pools/svm` | `/v1/svm/pools` | -| `/swaps/svm` | `/v1/svm/swaps` | -| `/dexes/svm` | `/v1/svm/dexes` | -| `/owner/svm/:account` | `/v1/svm/owner` | -| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | - -## 📝 Parameter Changes - -### 3. **Path Parameters → Query Parameters** - -All path parameters have been moved to query parameters. - -**Before:** - -```bash -GET /balances/evm/:address -GET /holders/evm/:contract -GET /nft/items/evm/contract/:contract/token_id/:token_id -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0x... -GET /v1/evm/holders?network=mainnet&contract=0x... -GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 -``` - -### 4. **Standardized Parameter Naming** - -All query parameters have been standardized to use snake_case naming convention. - -| Old Parameter | New Parameter | Notes | -| --- | --- | --- | -| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | -| `anyAddress` | `address` | Matches either `from` or `to` address | -| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | -| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | -| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | -| `endTime` | `end_time` | Default: `9999999999` | -| - | `start_block` | New parameter, default: `0` | -| - | `end_block` | New parameter, default: `9999999999` | -| - | `include_null_balances` | New parameter, default: `false` | -| `tx_hash` | `transaction_id` | - | -| `token` | `input_token`, `output_token` | More explicit for pool queries | -| `pool` | `amm_pool` | - | -| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | - -**Important:** The `network_id` parameter has been renamed to `network`. - -**Important:** `matic` network has been renamed to `polygon`. - -### 5. **Batched Parameters** - -Many parameters now support batching - accepting single values or comma-separated strings. - -**Supported Batched Parameters:** - -- `address`, `from_address`, `to_address` -- `contract`, `token_id` -- `factory`, `pool` -- `owner`, `token_account`, `mint` -- `transaction_id`, `signature` - -**Examples:** - -```console -# Single value -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 - -# Comma-separated, single parameter -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 - -# Repeated parameter values -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -### 6. **New Parameters** - -#### `include_null_balances` - -Added to balance endpoints to optionally include zero/null balances. - -```bash -?include_null_balances=true -``` - -**Default:** `false` - -## 🔄 Response Changes - -### 7. **Pagination Changes** - -Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. - -**Before:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2, - "next_page": 3, - "total_pages": 10 - }, - "total_results": 1234 -} -``` - -**After:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2 - } -} -``` - -**Removed fields:** - -- `next_page` -- `total_pages` -- `total_results` - -**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. - -### 8. **Removed Parameters** - -The following deprecated parameters have been removed: - -- `orderBy` - Results are now ordered by timestamp/block by default -- `orderDirection` - Always descending (newest first) - -## 📚 Example Migrations - -### Old vs New: Get Token Balances - -**Before:** - -```bash -GET /balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -### New Feature: Batched Queries - -Query balances for multiple contracts in a single request: - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -## ⚠️ Important Notes - -1. **Backward Compatibility:** The old endpoints are deprecated and will be removed in the future. Migrate by **Oct 30, 2025**. - -2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. - -3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. - -4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/ro/token-api/_meta.js b/website/src/pages/ro/token-api/_meta.js index a8624da52e7f..853f9dc09031 100644 --- a/website/src/pages/ro/token-api/_meta.js +++ b/website/src/pages/ro/token-api/_meta.js @@ -2,15 +2,15 @@ import titles from './_meta-titles.json' export default { 'quick-start': '', + 'svm-tokens': titles['svm-tokens'] ?? '', + 'svm-dexs': titles['svm-dexs'] ?? '', 'evm-tokens': titles['evm-tokens'] ?? '', 'evm-dexs': titles['evm-dexs'] ?? '', 'evm-nfts': titles['evm-nfts'] ?? '', - 'svm-tokens': titles['svm-tokens'] ?? '', - 'svm-dexs': titles['svm-dexs'] ?? '', 'tvm-tokens': titles['tvm-tokens'] ?? '', 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', 'endpoint-pricing': '', + guides: 'Guides', faq: '', - 'upgrade-to-v1': '', } diff --git a/website/src/pages/ro/token-api/endpoints/_meta.js b/website/src/pages/ro/token-api/endpoints/_meta.js new file mode 100644 index 000000000000..5d419807937c --- /dev/null +++ b/website/src/pages/ro/token-api/endpoints/_meta.js @@ -0,0 +1,4 @@ +export default { + 'endpoint-pricing': '', + 'endpoint-support': '', +} diff --git a/website/src/pages/ro/token-api/endpoint-pricing.mdx b/website/src/pages/ro/token-api/endpoints/endpoint-pricing.mdx similarity index 100% rename from website/src/pages/ro/token-api/endpoint-pricing.mdx rename to website/src/pages/ro/token-api/endpoints/endpoint-pricing.mdx diff --git a/website/src/pages/ro/token-api/endpoints/endpoint-support.msx b/website/src/pages/ro/token-api/endpoints/endpoint-support.msx new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/website/src/pages/ro/token-api/guides/_meta-titles.json b/website/src/pages/ro/token-api/guides/_meta-titles.json new file mode 100644 index 000000000000..cd93dcc0fc0b --- /dev/null +++ b/website/src/pages/ro/token-api/guides/_meta-titles.json @@ -0,0 +1,4 @@ +{ + "gpt": "Create Custom GPTS", + "upgrade-to-v1": "" +} diff --git a/website/src/pages/ro/token-api/guides/_meta.js b/website/src/pages/ro/token-api/guides/_meta.js new file mode 100644 index 000000000000..e5aaaadd78f2 --- /dev/null +++ b/website/src/pages/ro/token-api/guides/_meta.js @@ -0,0 +1,4 @@ +export default { + gpt: '', + 'upgrade-to-v1': '', +} diff --git a/website/src/pages/ro/token-api/guides/gpt.mdx b/website/src/pages/ro/token-api/guides/gpt.mdx new file mode 100644 index 000000000000..564d013dea20 --- /dev/null +++ b/website/src/pages/ro/token-api/guides/gpt.mdx @@ -0,0 +1,121 @@ +--- +title: How the Token API Powers Custom GPTs +sidebarTitle: Create Custom GPTs +--- + +## Overview + +The Token API is a pre-indexed blockchain data service that provides real-time access to token balances, metadata, prices, liquidity, and volume across multiple chains. Developers use its REST endpoints to build wallets, trading dashboards, DeFi analytics, and AI systems without maintaining their own indexing stack. Custom GPTs can connect directly to the Token API's OpenAPI schema. + +The Token API enables developers to build **Custom GPTs** to reason over live blockchain data inside ChatGPT that can reason over and respond with live blockchain data directly inside ChatGPT. + +## What the Token API Enables in Custom GPTs + +When a Custom GPT is wired to the Token API, it gains access to a machine-readable schema and authenticated endpoints. Developers can use this to: + +- **Query real-time onchain data**: Balances, token prices, liquidity, and transaction history. +- **Automate domain-specific tasks**: Portfolio tracking, accounting, reconciliation, and market analysis. +- **Power AI agents with verifiable blockchain context**: Use the same data sources dapps rely on. + +Because the Token API provides a machine-readable schema and authenticated requests, it serves as a structured data layer that enables GPT-5 agents to combine natural language reasoning with live onchain data from The Graph. + +## When to Use the Token API for Custom GPTs + +Use the Token API when your GPT needs repeatable, domain-specific behavior grounded in blockchain data. This is most effective when the GPT performs the same type of task frequently or enforces a workflow you define. For one-off or exploratory questions, standard ChatGPT prompts are sufficient. + +## Choosing a Use Case + +Start with a clear, narrow objective, then expand as needed. Common patterns include: + +- **Accounting GPT**: Onchain accounting, tax tagging, and portfolio reconciliation. +- **Trading GPT**: Liquidity, pricing, and volume analysis for trading strategies. +- **Protocol Tracking GPT**: Real-time monitoring of transaction activity and liquidity pools. + +A focused initial goal such as “Retrieve token balances and prices for a wallet” makes it easier to configure reliable behavior before adding complex workflows. + +## Requirements + +| Requirement | Description | +| ---------------------- | -------------------------------------------------------- | +| ChatGPT 5 | Custom GPT creation requires GPT-5 tier or Pro. | +| Token API Subscription | Sign up at [The Graph Market](https://thegraph.market./) | +| Token API Key | Available in your dashboard as the Authentication JWT. | + +## Setting Up a Custom GPT + +Below is an explanatory outline of what happens during setup. This section provides conceptual understanding. + +### Create Custom GPT + +1. Visit chat.openai.com/gpts in your browser. 2, Click Create (top right). +2. Under Configure (in the top left panel), set up your GPT's personality and scope. + +### Configure Your GPT + +You define the GPT's role, scope, and metadata so it knows what it is designed to do. This includes: + +- **Name and Description**: Helps users discover your GPT. + - For example: **Name**: Token Tracker GPT **Description**: An onchain analytics assistant that retrieves live token balances, prices, and liquidity data using The Graph's Token API. +- **Instructions**: Tells the GPT what tasks it should perform using the Token API. + - For example: You are a blockchain data assistant retrieving onchain token data from The Graph's Token API. Use endpoints to fetch balances, liquidity, and price history across EVM chains. Present results in tables with token symbols, prices, and USD values. +- **Knowledge**: Optional context files such as wallet references, accounting rules, or code snippets. +- **New Action**: At the bottom, click “Create new action” to connect your GPT to the Token API. + +### Connect the Token API + +To enable live blockchain queries inside ChatGPT, you connect the GPT to the Token API through: + +#### Authentication + +1. Set Authentication to API Key → Bearer. +2. Open [The Graph Market](https://thegraph.market./) and copy your Authentication JWT from your dashboard. +3. Paste the token into the ChatGPT prompt where the field shows [HIDDEN]. + +#### Schema + +1. Above the Schema box, click Import from URL. +2. Paste: https://token-api.thegraph.com/openapi +3. Click Import. You'll now see endpoints like: + - `getV1EvmTokens` + - `getV1EvmDexes` + - `getV1EvmBalances` +4. Click Test on one (for example `getV1EvmDexes`) to verify connection. + +##### Privacy + +1. At the bottom, under Privacy, paste: https://pinax.network/en/legal/privacy + +### Privacy + +You can attach a privacy policy URL such as: https://pinax.network/en/legal/privacy + +## Example Prompt Patterns + +These examples help illustrate how a GPT reasons over Token API data. + +### Wallet and Portfolio + +Get the total USD balance for a wallet across multiple chains, returning token name, symbol, balance, and price. + +### Trading Analysis + +Compare USDC and DAI liquidity across Uniswap and Curve. Return the top 5 pools by TVL. + +### Accounting + +List all ERC-20 transfers for this address in the last 30 days. Group by token and total incoming/outgoing volume. + +## Best Practices + +| Tip | Why It Matters | +| --------------------------------- | ---------------------------------------------------------------------- | +| Scope your GPT narrowly first | Simplifies debugging and validates schema integration. | +| Use clear role instructions | Helps the GPT choose the right endpoints and avoid assumptions. | +| Name endpoints explicitly | Improves routing accuracy when fetching balances, prices, or DEX data. | +| Combine with code | Enables custom parsing or logic for complex workflows. | +| Add Subgraph or Substream context | Provides richer analytics when combined with Token API data. | + +## FAQs & Resources + +- Builders Office Hours (October 23, 2025) +- Watch the full session: https://x.com/i/broadcasts/1mrGmBzBarNJy diff --git a/website/src/pages/ro/token-api/guides/upgrade-to-v1.mdx b/website/src/pages/ro/token-api/guides/upgrade-to-v1.mdx new file mode 100644 index 000000000000..e2a7ccf973fa --- /dev/null +++ b/website/src/pages/ro/token-api/guides/upgrade-to-v1.mdx @@ -0,0 +1,346 @@ +--- +title: Upgrade to v1 +--- + +This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. + +**Note** + +- `EVM` = Ethereum Virtual Machine + +Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). + +- `SVM` = Solana Virtual Machine + +Used to describe endpoints supporting Solana (currently the only SVM chain supported). + +## 🔑 Breaking Changes Summary + +### 1. API Versioning + +All endpoints now use the `/v1` prefix. + +**Before:** + +``` +GET /balances/evm +GET /nft/items/contract/:contract/token_id/:token_id +``` + +**After:** + +``` +GET /v1/evm/balances +GET /v1/evm/nft/items +``` + +### 2. Route Structure Reorganization + +#### 2.1 EVM Endpoints + +Consolidated under `/v1/evm/*` + +| Old Endpoint | New Endpoint | +| ------------------------------------------------------ | ----------------------------- | +| `/balances/evm` | `/v1/evm/balances` | +| `/historical/balances/evm` | `/v1/evm/balances/historical` | +| `/holders/evm/:contract` | `/v1/evm/holders` | +| `/tokens/evm/:contract` | `/v1/evm/tokens` | +| `/transfers/evm` | `/v1/evm/transfers` | +| `/pools/evm` | `/v1/evm/pools` | +| `/swaps/evm` | `/v1/evm/swaps` | +| `/dexes/evm` | `/v1/evm/dexes` | +| `/ohlc/prices/evm/:contract` | _(removed)_ | +| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | +| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | +| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | +| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | +| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | +| `/nft/activities/evm` | `/v1/evm/nft/transfers` | +| `/nft/sales/evm` | `/v1/evm/nft/sales` | + +**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. + +**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. + +--- + +#### 2.2 New EVM native balances endpoint + +Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. + +Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. + +--- + +#### 2.3 SVM Endpoints + +Consolidated under `/v1/svm/*` + +| Old Endpoint | New Endpoint | +| ------------------------ | ------------------------- | +| `/balances/svm` | `/v1/svm/balances` | +| `/balances/native/svm` | `/v1/svm/balances/native` | +| `/holders/svm/:contract` | `/v1/svm/holders` | +| `/tokens/svm/:mint` | `/v1/svm/tokens` | +| `/transfers/svm` | `/v1/svm/transfers` | +| `/pools/svm` | `/v1/svm/pools` | +| `/swaps/svm` | `/v1/svm/swaps` | +| `/dexes/svm` | `/v1/svm/dexes` | +| `/owner/svm/:account` | `/v1/svm/owner` | +| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | + +## 📝 Parameter Changes + +### 3. Path Parameters → Query Parameters + +All path parameters have been moved to query parameters. + +**Before:** + +```bash +GET /balances/evm/:address +GET /holders/evm/:contract +GET /nft/items/evm/contract/:contract/token_id/:token_id +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0x... +GET /v1/evm/holders?network=mainnet&contract=0x... +GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 +``` + +### 4. Standardized Parameter Naming + +All query parameters have been standardized to use snake_case naming convention. + +| Old Parameter | New Parameter | Notes | +| --- | --- | --- | +| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | +| `anyAddress` | `address` | Matches either `from` or `to` address | +| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | +| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | +| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | +| `endTime` | `end_time` | Default: `9999999999` | +| - | `start_block` | New parameter, default: `0` | +| - | `end_block` | New parameter, default: `9999999999` | +| - | `include_null_balances` | New parameter, default: `false` | +| `tx_hash` | `transaction_id` | - | +| `token` | `input_token`, `output_token` | More explicit for pool queries | +| `pool` | `amm_pool` | - | +| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | + +**Important:** The `network_id` parameter has been renamed to `network`. + +**Important:** `matic` network has been renamed to `polygon`. + +### 5. Batched Parameters + +Many parameters now support batching - accepting single values or comma-separated strings. + +**Supported Batched Parameters:** + +- `address`, `from_address`, `to_address` +- `contract`, `token_id` +- `factory`, `pool` +- `owner`, `token_account`, `mint` +- `transaction_id`, `signature` + +**Examples:** + +```console +## Single value +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 + +## Comma-separated, single parameter +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 + +## Repeated parameter values +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +### 6. New Parameters + +#### `include_null_balances` + +Added to balance endpoints to optionally include zero/null balances. + +```bash +?include_null_balances=true +``` + +**Default:** `false` + +## 🔄 Response Changes + +### 7. Pagination Changes + +Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. + +**Before:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2, + "next_page": 3, + "total_pages": 10 + }, + "total_results": 1234 +} +``` + +**After:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2 + } +} +``` + +**Removed fields:** + +- `next_page` +- `total_pages` +- `total_results` + +**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. + +### 8. Removed Parameters + +The following deprecated parameters have been removed: + +- `orderBy` - Results are now ordered by timestamp/block by default +- `orderDirection` - Always descending (newest first) + +### 9. Cached Queries + +Queries are now cached on the ClickHouse side for better performance. + +You can specifically request to not use the cache by setting the `Cache-Control` header to `no-cache`. + +#### Example + +**Cache** + +```console +$ curl -s 'https://token-api.thegraph.com/v1/...' | jq .statistics +{ + "bytes_read": 221, + "rows_read": 1, + "elapsed": 0.002212065 +} +``` + +**No cache** + +```console +$ curl -s 'http://localhost:8000/v1/...' --header 'Cache-Control: no-cache' | jq .statistics +{ + "bytes_read": 14621174348, + "rows_read": 223244390, + "elapsed": 0.971064066 +} +``` + +## 📚 Example Migrations + +### Example 1: Get Token Balances + +**Before:** + +```bash +GET /token/balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +### Example 2: Get NFT Items + +**Before:** + +```bash +GET /nft/items/evm/contract/0xbd3531da5cf5857e7cfaa92426877b022e612cf8/token_id/5712?network_id=mainnet +``` + +**After:** + +```bash +GET /v1/evm/nft/items?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&token_id=5712 +``` + +### Example 3: Get Token Transfers with Time Filter + +**Before:** + +```bash +GET /token/transfers/evm?network_id=mainnet&from=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&startTime=1735689600&endTime=1767225600 +``` + +**After:** + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&start_time=1735689600&end_time=1767225600 +``` + +### Example 4: Get NFT Transfer Activities + +**Before:** + +```bash +GET /nft/activities/evm?network_id=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&anyAddress=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +**After:** + +```bash +GET /v1/evm/nft/transfers?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +### Example 5: Get Pool OHLC Data + +**Before:** + +```bash +GET /token/ohlc/pools/evm/0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640?network_id=mainnet&interval=1h&startTime=1735689600 +``` + +**After:** + +```bash +GET /v1/evm/pools/ohlc?network=mainnet&pool=0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640&interval=1h&start_time=1735689600 +``` + +### Example 6: Batched Query (New Feature) + +Query balances for multiple contracts in a single request: + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +Query transfers from multiple addresses: + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xabc...,0xdef...,0x123...&start_time=1735689600 +``` + +## ⚠️ Important Notes + +1. **Migration Notes:** The old endpoints were deprecated and removed on **October 30, 2025**. Please ensure all integrations have been migrated to the new Token API v1 endpoints. + +2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. + +3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. + +4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/ro/token-api/svm-tokens/_meta.js b/website/src/pages/ro/token-api/svm-tokens/_meta.js index 1de31437004c..001e2d43341a 100644 --- a/website/src/pages/ro/token-api/svm-tokens/_meta.js +++ b/website/src/pages/ro/token-api/svm-tokens/_meta.js @@ -1,6 +1,6 @@ export default { - tokens: '', transfers: '', + tokens: '', balances: '', 'balances-native': '', holders: '', diff --git a/website/src/pages/ro/token-api/upgrade-to-v1.mdx b/website/src/pages/ro/token-api/upgrade-to-v1.mdx deleted file mode 100644 index fbe09101eaa5..000000000000 --- a/website/src/pages/ro/token-api/upgrade-to-v1.mdx +++ /dev/null @@ -1,254 +0,0 @@ ---- -title: Upgrade to v1 ---- - -This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. - -**Note** - -- `EVM` = Ethereum Virtual Machine - -Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). - -- `SVM` = Solana Virtual Machine - -Used to describe endpoints supporting Solana (currently the only SVM chain supported). - -## 🔑 Breaking Changes Summary - -### 1. **API Versioning** - -All endpoints now use the `/v1` prefix. - -**Before:** - -``` -GET /balances/evm -GET /nft/items/contract/:contract/token_id/:token_id -``` - -**After:** - -``` -GET /v1/evm/balances -GET /v1/evm/nft/items -``` - -### 2. **Route Structure Reorganization** - -#### 2.1 EVM Endpoints - -Consolidated under `/v1/evm/*` - -| Old Endpoint | New Endpoint | -| ------------------------------------------------------ | ----------------------------- | -| `/balances/evm` | `/v1/evm/balances` | -| `/historical/balances/evm` | `/v1/evm/balances/historical` | -| `/holders/evm/:contract` | `/v1/evm/holders` | -| `/tokens/evm/:contract` | `/v1/evm/tokens` | -| `/transfers/evm` | `/v1/evm/transfers` | -| `/pools/evm` | `/v1/evm/pools` | -| `/swaps/evm` | `/v1/evm/swaps` | -| `/dexes/evm` | `/v1/evm/dexes` | -| `/ohlc/prices/evm/:contract` | _(removed)_ | -| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | -| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | -| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | -| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | -| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | -| `/nft/activities/evm` | `/v1/evm/nft/transfers` | -| `/nft/sales/evm` | `/v1/evm/nft/sales` | - -**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. - -**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. - ---- - -#### 2.2 New EVM native balances endpoint - -Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. - -Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. - ---- - -#### 2.3 SVM Endpoints - -Consolidated under `/v1/svm/*` - -| Old Endpoint | New Endpoint | -| ------------------------ | ------------------------- | -| `/balances/svm` | `/v1/svm/balances` | -| `/balances/native/svm` | `/v1/svm/balances/native` | -| `/holders/svm/:contract` | `/v1/svm/holders` | -| `/tokens/svm/:mint` | `/v1/svm/tokens` | -| `/transfers/svm` | `/v1/svm/transfers` | -| `/pools/svm` | `/v1/svm/pools` | -| `/swaps/svm` | `/v1/svm/swaps` | -| `/dexes/svm` | `/v1/svm/dexes` | -| `/owner/svm/:account` | `/v1/svm/owner` | -| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | - -## 📝 Parameter Changes - -### 3. **Path Parameters → Query Parameters** - -All path parameters have been moved to query parameters. - -**Before:** - -```bash -GET /balances/evm/:address -GET /holders/evm/:contract -GET /nft/items/evm/contract/:contract/token_id/:token_id -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0x... -GET /v1/evm/holders?network=mainnet&contract=0x... -GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 -``` - -### 4. **Standardized Parameter Naming** - -All query parameters have been standardized to use snake_case naming convention. - -| Old Parameter | New Parameter | Notes | -| --- | --- | --- | -| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | -| `anyAddress` | `address` | Matches either `from` or `to` address | -| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | -| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | -| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | -| `endTime` | `end_time` | Default: `9999999999` | -| - | `start_block` | New parameter, default: `0` | -| - | `end_block` | New parameter, default: `9999999999` | -| - | `include_null_balances` | New parameter, default: `false` | -| `tx_hash` | `transaction_id` | - | -| `token` | `input_token`, `output_token` | More explicit for pool queries | -| `pool` | `amm_pool` | - | -| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | - -**Important:** The `network_id` parameter has been renamed to `network`. - -**Important:** `matic` network has been renamed to `polygon`. - -### 5. **Batched Parameters** - -Many parameters now support batching - accepting single values or comma-separated strings. - -**Supported Batched Parameters:** - -- `address`, `from_address`, `to_address` -- `contract`, `token_id` -- `factory`, `pool` -- `owner`, `token_account`, `mint` -- `transaction_id`, `signature` - -**Examples:** - -```console -# Single value -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 - -# Comma-separated, single parameter -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 - -# Repeated parameter values -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -### 6. **New Parameters** - -#### `include_null_balances` - -Added to balance endpoints to optionally include zero/null balances. - -```bash -?include_null_balances=true -``` - -**Default:** `false` - -## 🔄 Response Changes - -### 7. **Pagination Changes** - -Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. - -**Before:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2, - "next_page": 3, - "total_pages": 10 - }, - "total_results": 1234 -} -``` - -**After:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2 - } -} -``` - -**Removed fields:** - -- `next_page` -- `total_pages` -- `total_results` - -**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. - -### 8. **Removed Parameters** - -The following deprecated parameters have been removed: - -- `orderBy` - Results are now ordered by timestamp/block by default -- `orderDirection` - Always descending (newest first) - -## 📚 Example Migrations - -### Old vs New: Get Token Balances - -**Before:** - -```bash -GET /balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -### New Feature: Batched Queries - -Query balances for multiple contracts in a single request: - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -## ⚠️ Important Notes - -1. **Backward Compatibility:** The old endpoints are deprecated and will be removed in the future. Migrate by **Oct 30, 2025**. - -2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. - -3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. - -4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/ru/token-api/_meta.js b/website/src/pages/ru/token-api/_meta.js index a8624da52e7f..853f9dc09031 100644 --- a/website/src/pages/ru/token-api/_meta.js +++ b/website/src/pages/ru/token-api/_meta.js @@ -2,15 +2,15 @@ import titles from './_meta-titles.json' export default { 'quick-start': '', + 'svm-tokens': titles['svm-tokens'] ?? '', + 'svm-dexs': titles['svm-dexs'] ?? '', 'evm-tokens': titles['evm-tokens'] ?? '', 'evm-dexs': titles['evm-dexs'] ?? '', 'evm-nfts': titles['evm-nfts'] ?? '', - 'svm-tokens': titles['svm-tokens'] ?? '', - 'svm-dexs': titles['svm-dexs'] ?? '', 'tvm-tokens': titles['tvm-tokens'] ?? '', 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', 'endpoint-pricing': '', + guides: 'Guides', faq: '', - 'upgrade-to-v1': '', } diff --git a/website/src/pages/ru/token-api/endpoints/_meta.js b/website/src/pages/ru/token-api/endpoints/_meta.js new file mode 100644 index 000000000000..5d419807937c --- /dev/null +++ b/website/src/pages/ru/token-api/endpoints/_meta.js @@ -0,0 +1,4 @@ +export default { + 'endpoint-pricing': '', + 'endpoint-support': '', +} diff --git a/website/src/pages/ru/token-api/endpoint-pricing.mdx b/website/src/pages/ru/token-api/endpoints/endpoint-pricing.mdx similarity index 100% rename from website/src/pages/ru/token-api/endpoint-pricing.mdx rename to website/src/pages/ru/token-api/endpoints/endpoint-pricing.mdx diff --git a/website/src/pages/ru/token-api/endpoints/endpoint-support.msx b/website/src/pages/ru/token-api/endpoints/endpoint-support.msx new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/website/src/pages/ru/token-api/guides/_meta-titles.json b/website/src/pages/ru/token-api/guides/_meta-titles.json new file mode 100644 index 000000000000..cd93dcc0fc0b --- /dev/null +++ b/website/src/pages/ru/token-api/guides/_meta-titles.json @@ -0,0 +1,4 @@ +{ + "gpt": "Create Custom GPTS", + "upgrade-to-v1": "" +} diff --git a/website/src/pages/ru/token-api/guides/_meta.js b/website/src/pages/ru/token-api/guides/_meta.js new file mode 100644 index 000000000000..e5aaaadd78f2 --- /dev/null +++ b/website/src/pages/ru/token-api/guides/_meta.js @@ -0,0 +1,4 @@ +export default { + gpt: '', + 'upgrade-to-v1': '', +} diff --git a/website/src/pages/ru/token-api/guides/gpt.mdx b/website/src/pages/ru/token-api/guides/gpt.mdx new file mode 100644 index 000000000000..564d013dea20 --- /dev/null +++ b/website/src/pages/ru/token-api/guides/gpt.mdx @@ -0,0 +1,121 @@ +--- +title: How the Token API Powers Custom GPTs +sidebarTitle: Create Custom GPTs +--- + +## Overview + +The Token API is a pre-indexed blockchain data service that provides real-time access to token balances, metadata, prices, liquidity, and volume across multiple chains. Developers use its REST endpoints to build wallets, trading dashboards, DeFi analytics, and AI systems without maintaining their own indexing stack. Custom GPTs can connect directly to the Token API's OpenAPI schema. + +The Token API enables developers to build **Custom GPTs** to reason over live blockchain data inside ChatGPT that can reason over and respond with live blockchain data directly inside ChatGPT. + +## What the Token API Enables in Custom GPTs + +When a Custom GPT is wired to the Token API, it gains access to a machine-readable schema and authenticated endpoints. Developers can use this to: + +- **Query real-time onchain data**: Balances, token prices, liquidity, and transaction history. +- **Automate domain-specific tasks**: Portfolio tracking, accounting, reconciliation, and market analysis. +- **Power AI agents with verifiable blockchain context**: Use the same data sources dapps rely on. + +Because the Token API provides a machine-readable schema and authenticated requests, it serves as a structured data layer that enables GPT-5 agents to combine natural language reasoning with live onchain data from The Graph. + +## When to Use the Token API for Custom GPTs + +Use the Token API when your GPT needs repeatable, domain-specific behavior grounded in blockchain data. This is most effective when the GPT performs the same type of task frequently or enforces a workflow you define. For one-off or exploratory questions, standard ChatGPT prompts are sufficient. + +## Choosing a Use Case + +Start with a clear, narrow objective, then expand as needed. Common patterns include: + +- **Accounting GPT**: Onchain accounting, tax tagging, and portfolio reconciliation. +- **Trading GPT**: Liquidity, pricing, and volume analysis for trading strategies. +- **Protocol Tracking GPT**: Real-time monitoring of transaction activity and liquidity pools. + +A focused initial goal such as “Retrieve token balances and prices for a wallet” makes it easier to configure reliable behavior before adding complex workflows. + +## Requirements + +| Requirement | Description | +| ---------------------- | -------------------------------------------------------- | +| ChatGPT 5 | Custom GPT creation requires GPT-5 tier or Pro. | +| Token API Subscription | Sign up at [The Graph Market](https://thegraph.market./) | +| Token API Key | Available in your dashboard as the Authentication JWT. | + +## Setting Up a Custom GPT + +Below is an explanatory outline of what happens during setup. This section provides conceptual understanding. + +### Create Custom GPT + +1. Visit chat.openai.com/gpts in your browser. 2, Click Create (top right). +2. Under Configure (in the top left panel), set up your GPT's personality and scope. + +### Configure Your GPT + +You define the GPT's role, scope, and metadata so it knows what it is designed to do. This includes: + +- **Name and Description**: Helps users discover your GPT. + - For example: **Name**: Token Tracker GPT **Description**: An onchain analytics assistant that retrieves live token balances, prices, and liquidity data using The Graph's Token API. +- **Instructions**: Tells the GPT what tasks it should perform using the Token API. + - For example: You are a blockchain data assistant retrieving onchain token data from The Graph's Token API. Use endpoints to fetch balances, liquidity, and price history across EVM chains. Present results in tables with token symbols, prices, and USD values. +- **Knowledge**: Optional context files such as wallet references, accounting rules, or code snippets. +- **New Action**: At the bottom, click “Create new action” to connect your GPT to the Token API. + +### Connect the Token API + +To enable live blockchain queries inside ChatGPT, you connect the GPT to the Token API through: + +#### Authentication + +1. Set Authentication to API Key → Bearer. +2. Open [The Graph Market](https://thegraph.market./) and copy your Authentication JWT from your dashboard. +3. Paste the token into the ChatGPT prompt where the field shows [HIDDEN]. + +#### Schema + +1. Above the Schema box, click Import from URL. +2. Paste: https://token-api.thegraph.com/openapi +3. Click Import. You'll now see endpoints like: + - `getV1EvmTokens` + - `getV1EvmDexes` + - `getV1EvmBalances` +4. Click Test on one (for example `getV1EvmDexes`) to verify connection. + +##### Privacy + +1. At the bottom, under Privacy, paste: https://pinax.network/en/legal/privacy + +### Privacy + +You can attach a privacy policy URL such as: https://pinax.network/en/legal/privacy + +## Example Prompt Patterns + +These examples help illustrate how a GPT reasons over Token API data. + +### Wallet and Portfolio + +Get the total USD balance for a wallet across multiple chains, returning token name, symbol, balance, and price. + +### Trading Analysis + +Compare USDC and DAI liquidity across Uniswap and Curve. Return the top 5 pools by TVL. + +### Accounting + +List all ERC-20 transfers for this address in the last 30 days. Group by token and total incoming/outgoing volume. + +## Best Practices + +| Tip | Why It Matters | +| --------------------------------- | ---------------------------------------------------------------------- | +| Scope your GPT narrowly first | Simplifies debugging and validates schema integration. | +| Use clear role instructions | Helps the GPT choose the right endpoints and avoid assumptions. | +| Name endpoints explicitly | Improves routing accuracy when fetching balances, prices, or DEX data. | +| Combine with code | Enables custom parsing or logic for complex workflows. | +| Add Subgraph or Substream context | Provides richer analytics when combined with Token API data. | + +## FAQs & Resources + +- Builders Office Hours (October 23, 2025) +- Watch the full session: https://x.com/i/broadcasts/1mrGmBzBarNJy diff --git a/website/src/pages/ru/token-api/guides/upgrade-to-v1.mdx b/website/src/pages/ru/token-api/guides/upgrade-to-v1.mdx new file mode 100644 index 000000000000..e2a7ccf973fa --- /dev/null +++ b/website/src/pages/ru/token-api/guides/upgrade-to-v1.mdx @@ -0,0 +1,346 @@ +--- +title: Upgrade to v1 +--- + +This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. + +**Note** + +- `EVM` = Ethereum Virtual Machine + +Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). + +- `SVM` = Solana Virtual Machine + +Used to describe endpoints supporting Solana (currently the only SVM chain supported). + +## 🔑 Breaking Changes Summary + +### 1. API Versioning + +All endpoints now use the `/v1` prefix. + +**Before:** + +``` +GET /balances/evm +GET /nft/items/contract/:contract/token_id/:token_id +``` + +**After:** + +``` +GET /v1/evm/balances +GET /v1/evm/nft/items +``` + +### 2. Route Structure Reorganization + +#### 2.1 EVM Endpoints + +Consolidated under `/v1/evm/*` + +| Old Endpoint | New Endpoint | +| ------------------------------------------------------ | ----------------------------- | +| `/balances/evm` | `/v1/evm/balances` | +| `/historical/balances/evm` | `/v1/evm/balances/historical` | +| `/holders/evm/:contract` | `/v1/evm/holders` | +| `/tokens/evm/:contract` | `/v1/evm/tokens` | +| `/transfers/evm` | `/v1/evm/transfers` | +| `/pools/evm` | `/v1/evm/pools` | +| `/swaps/evm` | `/v1/evm/swaps` | +| `/dexes/evm` | `/v1/evm/dexes` | +| `/ohlc/prices/evm/:contract` | _(removed)_ | +| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | +| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | +| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | +| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | +| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | +| `/nft/activities/evm` | `/v1/evm/nft/transfers` | +| `/nft/sales/evm` | `/v1/evm/nft/sales` | + +**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. + +**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. + +--- + +#### 2.2 New EVM native balances endpoint + +Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. + +Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. + +--- + +#### 2.3 SVM Endpoints + +Consolidated under `/v1/svm/*` + +| Old Endpoint | New Endpoint | +| ------------------------ | ------------------------- | +| `/balances/svm` | `/v1/svm/balances` | +| `/balances/native/svm` | `/v1/svm/balances/native` | +| `/holders/svm/:contract` | `/v1/svm/holders` | +| `/tokens/svm/:mint` | `/v1/svm/tokens` | +| `/transfers/svm` | `/v1/svm/transfers` | +| `/pools/svm` | `/v1/svm/pools` | +| `/swaps/svm` | `/v1/svm/swaps` | +| `/dexes/svm` | `/v1/svm/dexes` | +| `/owner/svm/:account` | `/v1/svm/owner` | +| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | + +## 📝 Parameter Changes + +### 3. Path Parameters → Query Parameters + +All path parameters have been moved to query parameters. + +**Before:** + +```bash +GET /balances/evm/:address +GET /holders/evm/:contract +GET /nft/items/evm/contract/:contract/token_id/:token_id +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0x... +GET /v1/evm/holders?network=mainnet&contract=0x... +GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 +``` + +### 4. Standardized Parameter Naming + +All query parameters have been standardized to use snake_case naming convention. + +| Old Parameter | New Parameter | Notes | +| --- | --- | --- | +| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | +| `anyAddress` | `address` | Matches either `from` or `to` address | +| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | +| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | +| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | +| `endTime` | `end_time` | Default: `9999999999` | +| - | `start_block` | New parameter, default: `0` | +| - | `end_block` | New parameter, default: `9999999999` | +| - | `include_null_balances` | New parameter, default: `false` | +| `tx_hash` | `transaction_id` | - | +| `token` | `input_token`, `output_token` | More explicit for pool queries | +| `pool` | `amm_pool` | - | +| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | + +**Important:** The `network_id` parameter has been renamed to `network`. + +**Important:** `matic` network has been renamed to `polygon`. + +### 5. Batched Parameters + +Many parameters now support batching - accepting single values or comma-separated strings. + +**Supported Batched Parameters:** + +- `address`, `from_address`, `to_address` +- `contract`, `token_id` +- `factory`, `pool` +- `owner`, `token_account`, `mint` +- `transaction_id`, `signature` + +**Examples:** + +```console +## Single value +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 + +## Comma-separated, single parameter +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 + +## Repeated parameter values +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +### 6. New Parameters + +#### `include_null_balances` + +Added to balance endpoints to optionally include zero/null balances. + +```bash +?include_null_balances=true +``` + +**Default:** `false` + +## 🔄 Response Changes + +### 7. Pagination Changes + +Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. + +**Before:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2, + "next_page": 3, + "total_pages": 10 + }, + "total_results": 1234 +} +``` + +**After:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2 + } +} +``` + +**Removed fields:** + +- `next_page` +- `total_pages` +- `total_results` + +**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. + +### 8. Removed Parameters + +The following deprecated parameters have been removed: + +- `orderBy` - Results are now ordered by timestamp/block by default +- `orderDirection` - Always descending (newest first) + +### 9. Cached Queries + +Queries are now cached on the ClickHouse side for better performance. + +You can specifically request to not use the cache by setting the `Cache-Control` header to `no-cache`. + +#### Example + +**Cache** + +```console +$ curl -s 'https://token-api.thegraph.com/v1/...' | jq .statistics +{ + "bytes_read": 221, + "rows_read": 1, + "elapsed": 0.002212065 +} +``` + +**No cache** + +```console +$ curl -s 'http://localhost:8000/v1/...' --header 'Cache-Control: no-cache' | jq .statistics +{ + "bytes_read": 14621174348, + "rows_read": 223244390, + "elapsed": 0.971064066 +} +``` + +## 📚 Example Migrations + +### Example 1: Get Token Balances + +**Before:** + +```bash +GET /token/balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +### Example 2: Get NFT Items + +**Before:** + +```bash +GET /nft/items/evm/contract/0xbd3531da5cf5857e7cfaa92426877b022e612cf8/token_id/5712?network_id=mainnet +``` + +**After:** + +```bash +GET /v1/evm/nft/items?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&token_id=5712 +``` + +### Example 3: Get Token Transfers with Time Filter + +**Before:** + +```bash +GET /token/transfers/evm?network_id=mainnet&from=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&startTime=1735689600&endTime=1767225600 +``` + +**After:** + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&start_time=1735689600&end_time=1767225600 +``` + +### Example 4: Get NFT Transfer Activities + +**Before:** + +```bash +GET /nft/activities/evm?network_id=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&anyAddress=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +**After:** + +```bash +GET /v1/evm/nft/transfers?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +### Example 5: Get Pool OHLC Data + +**Before:** + +```bash +GET /token/ohlc/pools/evm/0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640?network_id=mainnet&interval=1h&startTime=1735689600 +``` + +**After:** + +```bash +GET /v1/evm/pools/ohlc?network=mainnet&pool=0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640&interval=1h&start_time=1735689600 +``` + +### Example 6: Batched Query (New Feature) + +Query balances for multiple contracts in a single request: + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +Query transfers from multiple addresses: + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xabc...,0xdef...,0x123...&start_time=1735689600 +``` + +## ⚠️ Important Notes + +1. **Migration Notes:** The old endpoints were deprecated and removed on **October 30, 2025**. Please ensure all integrations have been migrated to the new Token API v1 endpoints. + +2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. + +3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. + +4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/ru/token-api/svm-tokens/_meta.js b/website/src/pages/ru/token-api/svm-tokens/_meta.js index 1de31437004c..001e2d43341a 100644 --- a/website/src/pages/ru/token-api/svm-tokens/_meta.js +++ b/website/src/pages/ru/token-api/svm-tokens/_meta.js @@ -1,6 +1,6 @@ export default { - tokens: '', transfers: '', + tokens: '', balances: '', 'balances-native': '', holders: '', diff --git a/website/src/pages/ru/token-api/upgrade-to-v1.mdx b/website/src/pages/ru/token-api/upgrade-to-v1.mdx deleted file mode 100644 index fbe09101eaa5..000000000000 --- a/website/src/pages/ru/token-api/upgrade-to-v1.mdx +++ /dev/null @@ -1,254 +0,0 @@ ---- -title: Upgrade to v1 ---- - -This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. - -**Note** - -- `EVM` = Ethereum Virtual Machine - -Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). - -- `SVM` = Solana Virtual Machine - -Used to describe endpoints supporting Solana (currently the only SVM chain supported). - -## 🔑 Breaking Changes Summary - -### 1. **API Versioning** - -All endpoints now use the `/v1` prefix. - -**Before:** - -``` -GET /balances/evm -GET /nft/items/contract/:contract/token_id/:token_id -``` - -**After:** - -``` -GET /v1/evm/balances -GET /v1/evm/nft/items -``` - -### 2. **Route Structure Reorganization** - -#### 2.1 EVM Endpoints - -Consolidated under `/v1/evm/*` - -| Old Endpoint | New Endpoint | -| ------------------------------------------------------ | ----------------------------- | -| `/balances/evm` | `/v1/evm/balances` | -| `/historical/balances/evm` | `/v1/evm/balances/historical` | -| `/holders/evm/:contract` | `/v1/evm/holders` | -| `/tokens/evm/:contract` | `/v1/evm/tokens` | -| `/transfers/evm` | `/v1/evm/transfers` | -| `/pools/evm` | `/v1/evm/pools` | -| `/swaps/evm` | `/v1/evm/swaps` | -| `/dexes/evm` | `/v1/evm/dexes` | -| `/ohlc/prices/evm/:contract` | _(removed)_ | -| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | -| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | -| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | -| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | -| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | -| `/nft/activities/evm` | `/v1/evm/nft/transfers` | -| `/nft/sales/evm` | `/v1/evm/nft/sales` | - -**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. - -**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. - ---- - -#### 2.2 New EVM native balances endpoint - -Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. - -Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. - ---- - -#### 2.3 SVM Endpoints - -Consolidated under `/v1/svm/*` - -| Old Endpoint | New Endpoint | -| ------------------------ | ------------------------- | -| `/balances/svm` | `/v1/svm/balances` | -| `/balances/native/svm` | `/v1/svm/balances/native` | -| `/holders/svm/:contract` | `/v1/svm/holders` | -| `/tokens/svm/:mint` | `/v1/svm/tokens` | -| `/transfers/svm` | `/v1/svm/transfers` | -| `/pools/svm` | `/v1/svm/pools` | -| `/swaps/svm` | `/v1/svm/swaps` | -| `/dexes/svm` | `/v1/svm/dexes` | -| `/owner/svm/:account` | `/v1/svm/owner` | -| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | - -## 📝 Parameter Changes - -### 3. **Path Parameters → Query Parameters** - -All path parameters have been moved to query parameters. - -**Before:** - -```bash -GET /balances/evm/:address -GET /holders/evm/:contract -GET /nft/items/evm/contract/:contract/token_id/:token_id -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0x... -GET /v1/evm/holders?network=mainnet&contract=0x... -GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 -``` - -### 4. **Standardized Parameter Naming** - -All query parameters have been standardized to use snake_case naming convention. - -| Old Parameter | New Parameter | Notes | -| --- | --- | --- | -| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | -| `anyAddress` | `address` | Matches either `from` or `to` address | -| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | -| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | -| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | -| `endTime` | `end_time` | Default: `9999999999` | -| - | `start_block` | New parameter, default: `0` | -| - | `end_block` | New parameter, default: `9999999999` | -| - | `include_null_balances` | New parameter, default: `false` | -| `tx_hash` | `transaction_id` | - | -| `token` | `input_token`, `output_token` | More explicit for pool queries | -| `pool` | `amm_pool` | - | -| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | - -**Important:** The `network_id` parameter has been renamed to `network`. - -**Important:** `matic` network has been renamed to `polygon`. - -### 5. **Batched Parameters** - -Many parameters now support batching - accepting single values or comma-separated strings. - -**Supported Batched Parameters:** - -- `address`, `from_address`, `to_address` -- `contract`, `token_id` -- `factory`, `pool` -- `owner`, `token_account`, `mint` -- `transaction_id`, `signature` - -**Examples:** - -```console -# Single value -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 - -# Comma-separated, single parameter -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 - -# Repeated parameter values -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -### 6. **New Parameters** - -#### `include_null_balances` - -Added to balance endpoints to optionally include zero/null balances. - -```bash -?include_null_balances=true -``` - -**Default:** `false` - -## 🔄 Response Changes - -### 7. **Pagination Changes** - -Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. - -**Before:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2, - "next_page": 3, - "total_pages": 10 - }, - "total_results": 1234 -} -``` - -**After:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2 - } -} -``` - -**Removed fields:** - -- `next_page` -- `total_pages` -- `total_results` - -**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. - -### 8. **Removed Parameters** - -The following deprecated parameters have been removed: - -- `orderBy` - Results are now ordered by timestamp/block by default -- `orderDirection` - Always descending (newest first) - -## 📚 Example Migrations - -### Old vs New: Get Token Balances - -**Before:** - -```bash -GET /balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -### New Feature: Batched Queries - -Query balances for multiple contracts in a single request: - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -## ⚠️ Important Notes - -1. **Backward Compatibility:** The old endpoints are deprecated and will be removed in the future. Migrate by **Oct 30, 2025**. - -2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. - -3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. - -4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/sv/token-api/_meta.js b/website/src/pages/sv/token-api/_meta.js index a8624da52e7f..853f9dc09031 100644 --- a/website/src/pages/sv/token-api/_meta.js +++ b/website/src/pages/sv/token-api/_meta.js @@ -2,15 +2,15 @@ import titles from './_meta-titles.json' export default { 'quick-start': '', + 'svm-tokens': titles['svm-tokens'] ?? '', + 'svm-dexs': titles['svm-dexs'] ?? '', 'evm-tokens': titles['evm-tokens'] ?? '', 'evm-dexs': titles['evm-dexs'] ?? '', 'evm-nfts': titles['evm-nfts'] ?? '', - 'svm-tokens': titles['svm-tokens'] ?? '', - 'svm-dexs': titles['svm-dexs'] ?? '', 'tvm-tokens': titles['tvm-tokens'] ?? '', 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', 'endpoint-pricing': '', + guides: 'Guides', faq: '', - 'upgrade-to-v1': '', } diff --git a/website/src/pages/sv/token-api/endpoints/_meta.js b/website/src/pages/sv/token-api/endpoints/_meta.js new file mode 100644 index 000000000000..5d419807937c --- /dev/null +++ b/website/src/pages/sv/token-api/endpoints/_meta.js @@ -0,0 +1,4 @@ +export default { + 'endpoint-pricing': '', + 'endpoint-support': '', +} diff --git a/website/src/pages/sv/token-api/endpoint-pricing.mdx b/website/src/pages/sv/token-api/endpoints/endpoint-pricing.mdx similarity index 100% rename from website/src/pages/sv/token-api/endpoint-pricing.mdx rename to website/src/pages/sv/token-api/endpoints/endpoint-pricing.mdx diff --git a/website/src/pages/sv/token-api/endpoints/endpoint-support.msx b/website/src/pages/sv/token-api/endpoints/endpoint-support.msx new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/website/src/pages/sv/token-api/guides/_meta-titles.json b/website/src/pages/sv/token-api/guides/_meta-titles.json new file mode 100644 index 000000000000..cd93dcc0fc0b --- /dev/null +++ b/website/src/pages/sv/token-api/guides/_meta-titles.json @@ -0,0 +1,4 @@ +{ + "gpt": "Create Custom GPTS", + "upgrade-to-v1": "" +} diff --git a/website/src/pages/sv/token-api/guides/_meta.js b/website/src/pages/sv/token-api/guides/_meta.js new file mode 100644 index 000000000000..e5aaaadd78f2 --- /dev/null +++ b/website/src/pages/sv/token-api/guides/_meta.js @@ -0,0 +1,4 @@ +export default { + gpt: '', + 'upgrade-to-v1': '', +} diff --git a/website/src/pages/sv/token-api/guides/gpt.mdx b/website/src/pages/sv/token-api/guides/gpt.mdx new file mode 100644 index 000000000000..564d013dea20 --- /dev/null +++ b/website/src/pages/sv/token-api/guides/gpt.mdx @@ -0,0 +1,121 @@ +--- +title: How the Token API Powers Custom GPTs +sidebarTitle: Create Custom GPTs +--- + +## Overview + +The Token API is a pre-indexed blockchain data service that provides real-time access to token balances, metadata, prices, liquidity, and volume across multiple chains. Developers use its REST endpoints to build wallets, trading dashboards, DeFi analytics, and AI systems without maintaining their own indexing stack. Custom GPTs can connect directly to the Token API's OpenAPI schema. + +The Token API enables developers to build **Custom GPTs** to reason over live blockchain data inside ChatGPT that can reason over and respond with live blockchain data directly inside ChatGPT. + +## What the Token API Enables in Custom GPTs + +When a Custom GPT is wired to the Token API, it gains access to a machine-readable schema and authenticated endpoints. Developers can use this to: + +- **Query real-time onchain data**: Balances, token prices, liquidity, and transaction history. +- **Automate domain-specific tasks**: Portfolio tracking, accounting, reconciliation, and market analysis. +- **Power AI agents with verifiable blockchain context**: Use the same data sources dapps rely on. + +Because the Token API provides a machine-readable schema and authenticated requests, it serves as a structured data layer that enables GPT-5 agents to combine natural language reasoning with live onchain data from The Graph. + +## When to Use the Token API for Custom GPTs + +Use the Token API when your GPT needs repeatable, domain-specific behavior grounded in blockchain data. This is most effective when the GPT performs the same type of task frequently or enforces a workflow you define. For one-off or exploratory questions, standard ChatGPT prompts are sufficient. + +## Choosing a Use Case + +Start with a clear, narrow objective, then expand as needed. Common patterns include: + +- **Accounting GPT**: Onchain accounting, tax tagging, and portfolio reconciliation. +- **Trading GPT**: Liquidity, pricing, and volume analysis for trading strategies. +- **Protocol Tracking GPT**: Real-time monitoring of transaction activity and liquidity pools. + +A focused initial goal such as “Retrieve token balances and prices for a wallet” makes it easier to configure reliable behavior before adding complex workflows. + +## Requirements + +| Requirement | Description | +| ---------------------- | -------------------------------------------------------- | +| ChatGPT 5 | Custom GPT creation requires GPT-5 tier or Pro. | +| Token API Subscription | Sign up at [The Graph Market](https://thegraph.market./) | +| Token API Key | Available in your dashboard as the Authentication JWT. | + +## Setting Up a Custom GPT + +Below is an explanatory outline of what happens during setup. This section provides conceptual understanding. + +### Create Custom GPT + +1. Visit chat.openai.com/gpts in your browser. 2, Click Create (top right). +2. Under Configure (in the top left panel), set up your GPT's personality and scope. + +### Configure Your GPT + +You define the GPT's role, scope, and metadata so it knows what it is designed to do. This includes: + +- **Name and Description**: Helps users discover your GPT. + - For example: **Name**: Token Tracker GPT **Description**: An onchain analytics assistant that retrieves live token balances, prices, and liquidity data using The Graph's Token API. +- **Instructions**: Tells the GPT what tasks it should perform using the Token API. + - For example: You are a blockchain data assistant retrieving onchain token data from The Graph's Token API. Use endpoints to fetch balances, liquidity, and price history across EVM chains. Present results in tables with token symbols, prices, and USD values. +- **Knowledge**: Optional context files such as wallet references, accounting rules, or code snippets. +- **New Action**: At the bottom, click “Create new action” to connect your GPT to the Token API. + +### Connect the Token API + +To enable live blockchain queries inside ChatGPT, you connect the GPT to the Token API through: + +#### Authentication + +1. Set Authentication to API Key → Bearer. +2. Open [The Graph Market](https://thegraph.market./) and copy your Authentication JWT from your dashboard. +3. Paste the token into the ChatGPT prompt where the field shows [HIDDEN]. + +#### Schema + +1. Above the Schema box, click Import from URL. +2. Paste: https://token-api.thegraph.com/openapi +3. Click Import. You'll now see endpoints like: + - `getV1EvmTokens` + - `getV1EvmDexes` + - `getV1EvmBalances` +4. Click Test on one (for example `getV1EvmDexes`) to verify connection. + +##### Privacy + +1. At the bottom, under Privacy, paste: https://pinax.network/en/legal/privacy + +### Privacy + +You can attach a privacy policy URL such as: https://pinax.network/en/legal/privacy + +## Example Prompt Patterns + +These examples help illustrate how a GPT reasons over Token API data. + +### Wallet and Portfolio + +Get the total USD balance for a wallet across multiple chains, returning token name, symbol, balance, and price. + +### Trading Analysis + +Compare USDC and DAI liquidity across Uniswap and Curve. Return the top 5 pools by TVL. + +### Accounting + +List all ERC-20 transfers for this address in the last 30 days. Group by token and total incoming/outgoing volume. + +## Best Practices + +| Tip | Why It Matters | +| --------------------------------- | ---------------------------------------------------------------------- | +| Scope your GPT narrowly first | Simplifies debugging and validates schema integration. | +| Use clear role instructions | Helps the GPT choose the right endpoints and avoid assumptions. | +| Name endpoints explicitly | Improves routing accuracy when fetching balances, prices, or DEX data. | +| Combine with code | Enables custom parsing or logic for complex workflows. | +| Add Subgraph or Substream context | Provides richer analytics when combined with Token API data. | + +## FAQs & Resources + +- Builders Office Hours (October 23, 2025) +- Watch the full session: https://x.com/i/broadcasts/1mrGmBzBarNJy diff --git a/website/src/pages/sv/token-api/guides/upgrade-to-v1.mdx b/website/src/pages/sv/token-api/guides/upgrade-to-v1.mdx new file mode 100644 index 000000000000..e2a7ccf973fa --- /dev/null +++ b/website/src/pages/sv/token-api/guides/upgrade-to-v1.mdx @@ -0,0 +1,346 @@ +--- +title: Upgrade to v1 +--- + +This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. + +**Note** + +- `EVM` = Ethereum Virtual Machine + +Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). + +- `SVM` = Solana Virtual Machine + +Used to describe endpoints supporting Solana (currently the only SVM chain supported). + +## 🔑 Breaking Changes Summary + +### 1. API Versioning + +All endpoints now use the `/v1` prefix. + +**Before:** + +``` +GET /balances/evm +GET /nft/items/contract/:contract/token_id/:token_id +``` + +**After:** + +``` +GET /v1/evm/balances +GET /v1/evm/nft/items +``` + +### 2. Route Structure Reorganization + +#### 2.1 EVM Endpoints + +Consolidated under `/v1/evm/*` + +| Old Endpoint | New Endpoint | +| ------------------------------------------------------ | ----------------------------- | +| `/balances/evm` | `/v1/evm/balances` | +| `/historical/balances/evm` | `/v1/evm/balances/historical` | +| `/holders/evm/:contract` | `/v1/evm/holders` | +| `/tokens/evm/:contract` | `/v1/evm/tokens` | +| `/transfers/evm` | `/v1/evm/transfers` | +| `/pools/evm` | `/v1/evm/pools` | +| `/swaps/evm` | `/v1/evm/swaps` | +| `/dexes/evm` | `/v1/evm/dexes` | +| `/ohlc/prices/evm/:contract` | _(removed)_ | +| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | +| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | +| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | +| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | +| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | +| `/nft/activities/evm` | `/v1/evm/nft/transfers` | +| `/nft/sales/evm` | `/v1/evm/nft/sales` | + +**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. + +**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. + +--- + +#### 2.2 New EVM native balances endpoint + +Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. + +Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. + +--- + +#### 2.3 SVM Endpoints + +Consolidated under `/v1/svm/*` + +| Old Endpoint | New Endpoint | +| ------------------------ | ------------------------- | +| `/balances/svm` | `/v1/svm/balances` | +| `/balances/native/svm` | `/v1/svm/balances/native` | +| `/holders/svm/:contract` | `/v1/svm/holders` | +| `/tokens/svm/:mint` | `/v1/svm/tokens` | +| `/transfers/svm` | `/v1/svm/transfers` | +| `/pools/svm` | `/v1/svm/pools` | +| `/swaps/svm` | `/v1/svm/swaps` | +| `/dexes/svm` | `/v1/svm/dexes` | +| `/owner/svm/:account` | `/v1/svm/owner` | +| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | + +## 📝 Parameter Changes + +### 3. Path Parameters → Query Parameters + +All path parameters have been moved to query parameters. + +**Before:** + +```bash +GET /balances/evm/:address +GET /holders/evm/:contract +GET /nft/items/evm/contract/:contract/token_id/:token_id +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0x... +GET /v1/evm/holders?network=mainnet&contract=0x... +GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 +``` + +### 4. Standardized Parameter Naming + +All query parameters have been standardized to use snake_case naming convention. + +| Old Parameter | New Parameter | Notes | +| --- | --- | --- | +| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | +| `anyAddress` | `address` | Matches either `from` or `to` address | +| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | +| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | +| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | +| `endTime` | `end_time` | Default: `9999999999` | +| - | `start_block` | New parameter, default: `0` | +| - | `end_block` | New parameter, default: `9999999999` | +| - | `include_null_balances` | New parameter, default: `false` | +| `tx_hash` | `transaction_id` | - | +| `token` | `input_token`, `output_token` | More explicit for pool queries | +| `pool` | `amm_pool` | - | +| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | + +**Important:** The `network_id` parameter has been renamed to `network`. + +**Important:** `matic` network has been renamed to `polygon`. + +### 5. Batched Parameters + +Many parameters now support batching - accepting single values or comma-separated strings. + +**Supported Batched Parameters:** + +- `address`, `from_address`, `to_address` +- `contract`, `token_id` +- `factory`, `pool` +- `owner`, `token_account`, `mint` +- `transaction_id`, `signature` + +**Examples:** + +```console +## Single value +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 + +## Comma-separated, single parameter +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 + +## Repeated parameter values +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +### 6. New Parameters + +#### `include_null_balances` + +Added to balance endpoints to optionally include zero/null balances. + +```bash +?include_null_balances=true +``` + +**Default:** `false` + +## 🔄 Response Changes + +### 7. Pagination Changes + +Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. + +**Before:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2, + "next_page": 3, + "total_pages": 10 + }, + "total_results": 1234 +} +``` + +**After:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2 + } +} +``` + +**Removed fields:** + +- `next_page` +- `total_pages` +- `total_results` + +**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. + +### 8. Removed Parameters + +The following deprecated parameters have been removed: + +- `orderBy` - Results are now ordered by timestamp/block by default +- `orderDirection` - Always descending (newest first) + +### 9. Cached Queries + +Queries are now cached on the ClickHouse side for better performance. + +You can specifically request to not use the cache by setting the `Cache-Control` header to `no-cache`. + +#### Example + +**Cache** + +```console +$ curl -s 'https://token-api.thegraph.com/v1/...' | jq .statistics +{ + "bytes_read": 221, + "rows_read": 1, + "elapsed": 0.002212065 +} +``` + +**No cache** + +```console +$ curl -s 'http://localhost:8000/v1/...' --header 'Cache-Control: no-cache' | jq .statistics +{ + "bytes_read": 14621174348, + "rows_read": 223244390, + "elapsed": 0.971064066 +} +``` + +## 📚 Example Migrations + +### Example 1: Get Token Balances + +**Before:** + +```bash +GET /token/balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +### Example 2: Get NFT Items + +**Before:** + +```bash +GET /nft/items/evm/contract/0xbd3531da5cf5857e7cfaa92426877b022e612cf8/token_id/5712?network_id=mainnet +``` + +**After:** + +```bash +GET /v1/evm/nft/items?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&token_id=5712 +``` + +### Example 3: Get Token Transfers with Time Filter + +**Before:** + +```bash +GET /token/transfers/evm?network_id=mainnet&from=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&startTime=1735689600&endTime=1767225600 +``` + +**After:** + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&start_time=1735689600&end_time=1767225600 +``` + +### Example 4: Get NFT Transfer Activities + +**Before:** + +```bash +GET /nft/activities/evm?network_id=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&anyAddress=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +**After:** + +```bash +GET /v1/evm/nft/transfers?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +### Example 5: Get Pool OHLC Data + +**Before:** + +```bash +GET /token/ohlc/pools/evm/0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640?network_id=mainnet&interval=1h&startTime=1735689600 +``` + +**After:** + +```bash +GET /v1/evm/pools/ohlc?network=mainnet&pool=0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640&interval=1h&start_time=1735689600 +``` + +### Example 6: Batched Query (New Feature) + +Query balances for multiple contracts in a single request: + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +Query transfers from multiple addresses: + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xabc...,0xdef...,0x123...&start_time=1735689600 +``` + +## ⚠️ Important Notes + +1. **Migration Notes:** The old endpoints were deprecated and removed on **October 30, 2025**. Please ensure all integrations have been migrated to the new Token API v1 endpoints. + +2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. + +3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. + +4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/sv/token-api/svm-tokens/_meta.js b/website/src/pages/sv/token-api/svm-tokens/_meta.js index 1de31437004c..001e2d43341a 100644 --- a/website/src/pages/sv/token-api/svm-tokens/_meta.js +++ b/website/src/pages/sv/token-api/svm-tokens/_meta.js @@ -1,6 +1,6 @@ export default { - tokens: '', transfers: '', + tokens: '', balances: '', 'balances-native': '', holders: '', diff --git a/website/src/pages/sv/token-api/upgrade-to-v1.mdx b/website/src/pages/sv/token-api/upgrade-to-v1.mdx deleted file mode 100644 index fbe09101eaa5..000000000000 --- a/website/src/pages/sv/token-api/upgrade-to-v1.mdx +++ /dev/null @@ -1,254 +0,0 @@ ---- -title: Upgrade to v1 ---- - -This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. - -**Note** - -- `EVM` = Ethereum Virtual Machine - -Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). - -- `SVM` = Solana Virtual Machine - -Used to describe endpoints supporting Solana (currently the only SVM chain supported). - -## 🔑 Breaking Changes Summary - -### 1. **API Versioning** - -All endpoints now use the `/v1` prefix. - -**Before:** - -``` -GET /balances/evm -GET /nft/items/contract/:contract/token_id/:token_id -``` - -**After:** - -``` -GET /v1/evm/balances -GET /v1/evm/nft/items -``` - -### 2. **Route Structure Reorganization** - -#### 2.1 EVM Endpoints - -Consolidated under `/v1/evm/*` - -| Old Endpoint | New Endpoint | -| ------------------------------------------------------ | ----------------------------- | -| `/balances/evm` | `/v1/evm/balances` | -| `/historical/balances/evm` | `/v1/evm/balances/historical` | -| `/holders/evm/:contract` | `/v1/evm/holders` | -| `/tokens/evm/:contract` | `/v1/evm/tokens` | -| `/transfers/evm` | `/v1/evm/transfers` | -| `/pools/evm` | `/v1/evm/pools` | -| `/swaps/evm` | `/v1/evm/swaps` | -| `/dexes/evm` | `/v1/evm/dexes` | -| `/ohlc/prices/evm/:contract` | _(removed)_ | -| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | -| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | -| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | -| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | -| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | -| `/nft/activities/evm` | `/v1/evm/nft/transfers` | -| `/nft/sales/evm` | `/v1/evm/nft/sales` | - -**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. - -**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. - ---- - -#### 2.2 New EVM native balances endpoint - -Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. - -Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. - ---- - -#### 2.3 SVM Endpoints - -Consolidated under `/v1/svm/*` - -| Old Endpoint | New Endpoint | -| ------------------------ | ------------------------- | -| `/balances/svm` | `/v1/svm/balances` | -| `/balances/native/svm` | `/v1/svm/balances/native` | -| `/holders/svm/:contract` | `/v1/svm/holders` | -| `/tokens/svm/:mint` | `/v1/svm/tokens` | -| `/transfers/svm` | `/v1/svm/transfers` | -| `/pools/svm` | `/v1/svm/pools` | -| `/swaps/svm` | `/v1/svm/swaps` | -| `/dexes/svm` | `/v1/svm/dexes` | -| `/owner/svm/:account` | `/v1/svm/owner` | -| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | - -## 📝 Parameter Changes - -### 3. **Path Parameters → Query Parameters** - -All path parameters have been moved to query parameters. - -**Before:** - -```bash -GET /balances/evm/:address -GET /holders/evm/:contract -GET /nft/items/evm/contract/:contract/token_id/:token_id -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0x... -GET /v1/evm/holders?network=mainnet&contract=0x... -GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 -``` - -### 4. **Standardized Parameter Naming** - -All query parameters have been standardized to use snake_case naming convention. - -| Old Parameter | New Parameter | Notes | -| --- | --- | --- | -| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | -| `anyAddress` | `address` | Matches either `from` or `to` address | -| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | -| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | -| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | -| `endTime` | `end_time` | Default: `9999999999` | -| - | `start_block` | New parameter, default: `0` | -| - | `end_block` | New parameter, default: `9999999999` | -| - | `include_null_balances` | New parameter, default: `false` | -| `tx_hash` | `transaction_id` | - | -| `token` | `input_token`, `output_token` | More explicit for pool queries | -| `pool` | `amm_pool` | - | -| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | - -**Important:** The `network_id` parameter has been renamed to `network`. - -**Important:** `matic` network has been renamed to `polygon`. - -### 5. **Batched Parameters** - -Many parameters now support batching - accepting single values or comma-separated strings. - -**Supported Batched Parameters:** - -- `address`, `from_address`, `to_address` -- `contract`, `token_id` -- `factory`, `pool` -- `owner`, `token_account`, `mint` -- `transaction_id`, `signature` - -**Examples:** - -```console -# Single value -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 - -# Comma-separated, single parameter -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 - -# Repeated parameter values -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -### 6. **New Parameters** - -#### `include_null_balances` - -Added to balance endpoints to optionally include zero/null balances. - -```bash -?include_null_balances=true -``` - -**Default:** `false` - -## 🔄 Response Changes - -### 7. **Pagination Changes** - -Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. - -**Before:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2, - "next_page": 3, - "total_pages": 10 - }, - "total_results": 1234 -} -``` - -**After:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2 - } -} -``` - -**Removed fields:** - -- `next_page` -- `total_pages` -- `total_results` - -**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. - -### 8. **Removed Parameters** - -The following deprecated parameters have been removed: - -- `orderBy` - Results are now ordered by timestamp/block by default -- `orderDirection` - Always descending (newest first) - -## 📚 Example Migrations - -### Old vs New: Get Token Balances - -**Before:** - -```bash -GET /balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -### New Feature: Batched Queries - -Query balances for multiple contracts in a single request: - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -## ⚠️ Important Notes - -1. **Backward Compatibility:** The old endpoints are deprecated and will be removed in the future. Migrate by **Oct 30, 2025**. - -2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. - -3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. - -4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/tr/token-api/_meta.js b/website/src/pages/tr/token-api/_meta.js index a8624da52e7f..853f9dc09031 100644 --- a/website/src/pages/tr/token-api/_meta.js +++ b/website/src/pages/tr/token-api/_meta.js @@ -2,15 +2,15 @@ import titles from './_meta-titles.json' export default { 'quick-start': '', + 'svm-tokens': titles['svm-tokens'] ?? '', + 'svm-dexs': titles['svm-dexs'] ?? '', 'evm-tokens': titles['evm-tokens'] ?? '', 'evm-dexs': titles['evm-dexs'] ?? '', 'evm-nfts': titles['evm-nfts'] ?? '', - 'svm-tokens': titles['svm-tokens'] ?? '', - 'svm-dexs': titles['svm-dexs'] ?? '', 'tvm-tokens': titles['tvm-tokens'] ?? '', 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', 'endpoint-pricing': '', + guides: 'Guides', faq: '', - 'upgrade-to-v1': '', } diff --git a/website/src/pages/tr/token-api/endpoints/_meta.js b/website/src/pages/tr/token-api/endpoints/_meta.js new file mode 100644 index 000000000000..5d419807937c --- /dev/null +++ b/website/src/pages/tr/token-api/endpoints/_meta.js @@ -0,0 +1,4 @@ +export default { + 'endpoint-pricing': '', + 'endpoint-support': '', +} diff --git a/website/src/pages/tr/token-api/endpoint-pricing.mdx b/website/src/pages/tr/token-api/endpoints/endpoint-pricing.mdx similarity index 100% rename from website/src/pages/tr/token-api/endpoint-pricing.mdx rename to website/src/pages/tr/token-api/endpoints/endpoint-pricing.mdx diff --git a/website/src/pages/tr/token-api/endpoints/endpoint-support.msx b/website/src/pages/tr/token-api/endpoints/endpoint-support.msx new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/website/src/pages/tr/token-api/guides/_meta-titles.json b/website/src/pages/tr/token-api/guides/_meta-titles.json new file mode 100644 index 000000000000..cd93dcc0fc0b --- /dev/null +++ b/website/src/pages/tr/token-api/guides/_meta-titles.json @@ -0,0 +1,4 @@ +{ + "gpt": "Create Custom GPTS", + "upgrade-to-v1": "" +} diff --git a/website/src/pages/tr/token-api/guides/_meta.js b/website/src/pages/tr/token-api/guides/_meta.js new file mode 100644 index 000000000000..e5aaaadd78f2 --- /dev/null +++ b/website/src/pages/tr/token-api/guides/_meta.js @@ -0,0 +1,4 @@ +export default { + gpt: '', + 'upgrade-to-v1': '', +} diff --git a/website/src/pages/tr/token-api/guides/gpt.mdx b/website/src/pages/tr/token-api/guides/gpt.mdx new file mode 100644 index 000000000000..564d013dea20 --- /dev/null +++ b/website/src/pages/tr/token-api/guides/gpt.mdx @@ -0,0 +1,121 @@ +--- +title: How the Token API Powers Custom GPTs +sidebarTitle: Create Custom GPTs +--- + +## Overview + +The Token API is a pre-indexed blockchain data service that provides real-time access to token balances, metadata, prices, liquidity, and volume across multiple chains. Developers use its REST endpoints to build wallets, trading dashboards, DeFi analytics, and AI systems without maintaining their own indexing stack. Custom GPTs can connect directly to the Token API's OpenAPI schema. + +The Token API enables developers to build **Custom GPTs** to reason over live blockchain data inside ChatGPT that can reason over and respond with live blockchain data directly inside ChatGPT. + +## What the Token API Enables in Custom GPTs + +When a Custom GPT is wired to the Token API, it gains access to a machine-readable schema and authenticated endpoints. Developers can use this to: + +- **Query real-time onchain data**: Balances, token prices, liquidity, and transaction history. +- **Automate domain-specific tasks**: Portfolio tracking, accounting, reconciliation, and market analysis. +- **Power AI agents with verifiable blockchain context**: Use the same data sources dapps rely on. + +Because the Token API provides a machine-readable schema and authenticated requests, it serves as a structured data layer that enables GPT-5 agents to combine natural language reasoning with live onchain data from The Graph. + +## When to Use the Token API for Custom GPTs + +Use the Token API when your GPT needs repeatable, domain-specific behavior grounded in blockchain data. This is most effective when the GPT performs the same type of task frequently or enforces a workflow you define. For one-off or exploratory questions, standard ChatGPT prompts are sufficient. + +## Choosing a Use Case + +Start with a clear, narrow objective, then expand as needed. Common patterns include: + +- **Accounting GPT**: Onchain accounting, tax tagging, and portfolio reconciliation. +- **Trading GPT**: Liquidity, pricing, and volume analysis for trading strategies. +- **Protocol Tracking GPT**: Real-time monitoring of transaction activity and liquidity pools. + +A focused initial goal such as “Retrieve token balances and prices for a wallet” makes it easier to configure reliable behavior before adding complex workflows. + +## Requirements + +| Requirement | Description | +| ---------------------- | -------------------------------------------------------- | +| ChatGPT 5 | Custom GPT creation requires GPT-5 tier or Pro. | +| Token API Subscription | Sign up at [The Graph Market](https://thegraph.market./) | +| Token API Key | Available in your dashboard as the Authentication JWT. | + +## Setting Up a Custom GPT + +Below is an explanatory outline of what happens during setup. This section provides conceptual understanding. + +### Create Custom GPT + +1. Visit chat.openai.com/gpts in your browser. 2, Click Create (top right). +2. Under Configure (in the top left panel), set up your GPT's personality and scope. + +### Configure Your GPT + +You define the GPT's role, scope, and metadata so it knows what it is designed to do. This includes: + +- **Name and Description**: Helps users discover your GPT. + - For example: **Name**: Token Tracker GPT **Description**: An onchain analytics assistant that retrieves live token balances, prices, and liquidity data using The Graph's Token API. +- **Instructions**: Tells the GPT what tasks it should perform using the Token API. + - For example: You are a blockchain data assistant retrieving onchain token data from The Graph's Token API. Use endpoints to fetch balances, liquidity, and price history across EVM chains. Present results in tables with token symbols, prices, and USD values. +- **Knowledge**: Optional context files such as wallet references, accounting rules, or code snippets. +- **New Action**: At the bottom, click “Create new action” to connect your GPT to the Token API. + +### Connect the Token API + +To enable live blockchain queries inside ChatGPT, you connect the GPT to the Token API through: + +#### Authentication + +1. Set Authentication to API Key → Bearer. +2. Open [The Graph Market](https://thegraph.market./) and copy your Authentication JWT from your dashboard. +3. Paste the token into the ChatGPT prompt where the field shows [HIDDEN]. + +#### Schema + +1. Above the Schema box, click Import from URL. +2. Paste: https://token-api.thegraph.com/openapi +3. Click Import. You'll now see endpoints like: + - `getV1EvmTokens` + - `getV1EvmDexes` + - `getV1EvmBalances` +4. Click Test on one (for example `getV1EvmDexes`) to verify connection. + +##### Privacy + +1. At the bottom, under Privacy, paste: https://pinax.network/en/legal/privacy + +### Privacy + +You can attach a privacy policy URL such as: https://pinax.network/en/legal/privacy + +## Example Prompt Patterns + +These examples help illustrate how a GPT reasons over Token API data. + +### Wallet and Portfolio + +Get the total USD balance for a wallet across multiple chains, returning token name, symbol, balance, and price. + +### Trading Analysis + +Compare USDC and DAI liquidity across Uniswap and Curve. Return the top 5 pools by TVL. + +### Accounting + +List all ERC-20 transfers for this address in the last 30 days. Group by token and total incoming/outgoing volume. + +## Best Practices + +| Tip | Why It Matters | +| --------------------------------- | ---------------------------------------------------------------------- | +| Scope your GPT narrowly first | Simplifies debugging and validates schema integration. | +| Use clear role instructions | Helps the GPT choose the right endpoints and avoid assumptions. | +| Name endpoints explicitly | Improves routing accuracy when fetching balances, prices, or DEX data. | +| Combine with code | Enables custom parsing or logic for complex workflows. | +| Add Subgraph or Substream context | Provides richer analytics when combined with Token API data. | + +## FAQs & Resources + +- Builders Office Hours (October 23, 2025) +- Watch the full session: https://x.com/i/broadcasts/1mrGmBzBarNJy diff --git a/website/src/pages/tr/token-api/guides/upgrade-to-v1.mdx b/website/src/pages/tr/token-api/guides/upgrade-to-v1.mdx new file mode 100644 index 000000000000..e2a7ccf973fa --- /dev/null +++ b/website/src/pages/tr/token-api/guides/upgrade-to-v1.mdx @@ -0,0 +1,346 @@ +--- +title: Upgrade to v1 +--- + +This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. + +**Note** + +- `EVM` = Ethereum Virtual Machine + +Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). + +- `SVM` = Solana Virtual Machine + +Used to describe endpoints supporting Solana (currently the only SVM chain supported). + +## 🔑 Breaking Changes Summary + +### 1. API Versioning + +All endpoints now use the `/v1` prefix. + +**Before:** + +``` +GET /balances/evm +GET /nft/items/contract/:contract/token_id/:token_id +``` + +**After:** + +``` +GET /v1/evm/balances +GET /v1/evm/nft/items +``` + +### 2. Route Structure Reorganization + +#### 2.1 EVM Endpoints + +Consolidated under `/v1/evm/*` + +| Old Endpoint | New Endpoint | +| ------------------------------------------------------ | ----------------------------- | +| `/balances/evm` | `/v1/evm/balances` | +| `/historical/balances/evm` | `/v1/evm/balances/historical` | +| `/holders/evm/:contract` | `/v1/evm/holders` | +| `/tokens/evm/:contract` | `/v1/evm/tokens` | +| `/transfers/evm` | `/v1/evm/transfers` | +| `/pools/evm` | `/v1/evm/pools` | +| `/swaps/evm` | `/v1/evm/swaps` | +| `/dexes/evm` | `/v1/evm/dexes` | +| `/ohlc/prices/evm/:contract` | _(removed)_ | +| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | +| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | +| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | +| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | +| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | +| `/nft/activities/evm` | `/v1/evm/nft/transfers` | +| `/nft/sales/evm` | `/v1/evm/nft/sales` | + +**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. + +**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. + +--- + +#### 2.2 New EVM native balances endpoint + +Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. + +Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. + +--- + +#### 2.3 SVM Endpoints + +Consolidated under `/v1/svm/*` + +| Old Endpoint | New Endpoint | +| ------------------------ | ------------------------- | +| `/balances/svm` | `/v1/svm/balances` | +| `/balances/native/svm` | `/v1/svm/balances/native` | +| `/holders/svm/:contract` | `/v1/svm/holders` | +| `/tokens/svm/:mint` | `/v1/svm/tokens` | +| `/transfers/svm` | `/v1/svm/transfers` | +| `/pools/svm` | `/v1/svm/pools` | +| `/swaps/svm` | `/v1/svm/swaps` | +| `/dexes/svm` | `/v1/svm/dexes` | +| `/owner/svm/:account` | `/v1/svm/owner` | +| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | + +## 📝 Parameter Changes + +### 3. Path Parameters → Query Parameters + +All path parameters have been moved to query parameters. + +**Before:** + +```bash +GET /balances/evm/:address +GET /holders/evm/:contract +GET /nft/items/evm/contract/:contract/token_id/:token_id +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0x... +GET /v1/evm/holders?network=mainnet&contract=0x... +GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 +``` + +### 4. Standardized Parameter Naming + +All query parameters have been standardized to use snake_case naming convention. + +| Old Parameter | New Parameter | Notes | +| --- | --- | --- | +| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | +| `anyAddress` | `address` | Matches either `from` or `to` address | +| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | +| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | +| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | +| `endTime` | `end_time` | Default: `9999999999` | +| - | `start_block` | New parameter, default: `0` | +| - | `end_block` | New parameter, default: `9999999999` | +| - | `include_null_balances` | New parameter, default: `false` | +| `tx_hash` | `transaction_id` | - | +| `token` | `input_token`, `output_token` | More explicit for pool queries | +| `pool` | `amm_pool` | - | +| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | + +**Important:** The `network_id` parameter has been renamed to `network`. + +**Important:** `matic` network has been renamed to `polygon`. + +### 5. Batched Parameters + +Many parameters now support batching - accepting single values or comma-separated strings. + +**Supported Batched Parameters:** + +- `address`, `from_address`, `to_address` +- `contract`, `token_id` +- `factory`, `pool` +- `owner`, `token_account`, `mint` +- `transaction_id`, `signature` + +**Examples:** + +```console +## Single value +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 + +## Comma-separated, single parameter +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 + +## Repeated parameter values +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +### 6. New Parameters + +#### `include_null_balances` + +Added to balance endpoints to optionally include zero/null balances. + +```bash +?include_null_balances=true +``` + +**Default:** `false` + +## 🔄 Response Changes + +### 7. Pagination Changes + +Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. + +**Before:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2, + "next_page": 3, + "total_pages": 10 + }, + "total_results": 1234 +} +``` + +**After:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2 + } +} +``` + +**Removed fields:** + +- `next_page` +- `total_pages` +- `total_results` + +**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. + +### 8. Removed Parameters + +The following deprecated parameters have been removed: + +- `orderBy` - Results are now ordered by timestamp/block by default +- `orderDirection` - Always descending (newest first) + +### 9. Cached Queries + +Queries are now cached on the ClickHouse side for better performance. + +You can specifically request to not use the cache by setting the `Cache-Control` header to `no-cache`. + +#### Example + +**Cache** + +```console +$ curl -s 'https://token-api.thegraph.com/v1/...' | jq .statistics +{ + "bytes_read": 221, + "rows_read": 1, + "elapsed": 0.002212065 +} +``` + +**No cache** + +```console +$ curl -s 'http://localhost:8000/v1/...' --header 'Cache-Control: no-cache' | jq .statistics +{ + "bytes_read": 14621174348, + "rows_read": 223244390, + "elapsed": 0.971064066 +} +``` + +## 📚 Example Migrations + +### Example 1: Get Token Balances + +**Before:** + +```bash +GET /token/balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +### Example 2: Get NFT Items + +**Before:** + +```bash +GET /nft/items/evm/contract/0xbd3531da5cf5857e7cfaa92426877b022e612cf8/token_id/5712?network_id=mainnet +``` + +**After:** + +```bash +GET /v1/evm/nft/items?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&token_id=5712 +``` + +### Example 3: Get Token Transfers with Time Filter + +**Before:** + +```bash +GET /token/transfers/evm?network_id=mainnet&from=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&startTime=1735689600&endTime=1767225600 +``` + +**After:** + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&start_time=1735689600&end_time=1767225600 +``` + +### Example 4: Get NFT Transfer Activities + +**Before:** + +```bash +GET /nft/activities/evm?network_id=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&anyAddress=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +**After:** + +```bash +GET /v1/evm/nft/transfers?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +### Example 5: Get Pool OHLC Data + +**Before:** + +```bash +GET /token/ohlc/pools/evm/0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640?network_id=mainnet&interval=1h&startTime=1735689600 +``` + +**After:** + +```bash +GET /v1/evm/pools/ohlc?network=mainnet&pool=0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640&interval=1h&start_time=1735689600 +``` + +### Example 6: Batched Query (New Feature) + +Query balances for multiple contracts in a single request: + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +Query transfers from multiple addresses: + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xabc...,0xdef...,0x123...&start_time=1735689600 +``` + +## ⚠️ Important Notes + +1. **Migration Notes:** The old endpoints were deprecated and removed on **October 30, 2025**. Please ensure all integrations have been migrated to the new Token API v1 endpoints. + +2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. + +3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. + +4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/tr/token-api/svm-tokens/_meta.js b/website/src/pages/tr/token-api/svm-tokens/_meta.js index 1de31437004c..001e2d43341a 100644 --- a/website/src/pages/tr/token-api/svm-tokens/_meta.js +++ b/website/src/pages/tr/token-api/svm-tokens/_meta.js @@ -1,6 +1,6 @@ export default { - tokens: '', transfers: '', + tokens: '', balances: '', 'balances-native': '', holders: '', diff --git a/website/src/pages/tr/token-api/upgrade-to-v1.mdx b/website/src/pages/tr/token-api/upgrade-to-v1.mdx deleted file mode 100644 index fbe09101eaa5..000000000000 --- a/website/src/pages/tr/token-api/upgrade-to-v1.mdx +++ /dev/null @@ -1,254 +0,0 @@ ---- -title: Upgrade to v1 ---- - -This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. - -**Note** - -- `EVM` = Ethereum Virtual Machine - -Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). - -- `SVM` = Solana Virtual Machine - -Used to describe endpoints supporting Solana (currently the only SVM chain supported). - -## 🔑 Breaking Changes Summary - -### 1. **API Versioning** - -All endpoints now use the `/v1` prefix. - -**Before:** - -``` -GET /balances/evm -GET /nft/items/contract/:contract/token_id/:token_id -``` - -**After:** - -``` -GET /v1/evm/balances -GET /v1/evm/nft/items -``` - -### 2. **Route Structure Reorganization** - -#### 2.1 EVM Endpoints - -Consolidated under `/v1/evm/*` - -| Old Endpoint | New Endpoint | -| ------------------------------------------------------ | ----------------------------- | -| `/balances/evm` | `/v1/evm/balances` | -| `/historical/balances/evm` | `/v1/evm/balances/historical` | -| `/holders/evm/:contract` | `/v1/evm/holders` | -| `/tokens/evm/:contract` | `/v1/evm/tokens` | -| `/transfers/evm` | `/v1/evm/transfers` | -| `/pools/evm` | `/v1/evm/pools` | -| `/swaps/evm` | `/v1/evm/swaps` | -| `/dexes/evm` | `/v1/evm/dexes` | -| `/ohlc/prices/evm/:contract` | _(removed)_ | -| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | -| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | -| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | -| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | -| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | -| `/nft/activities/evm` | `/v1/evm/nft/transfers` | -| `/nft/sales/evm` | `/v1/evm/nft/sales` | - -**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. - -**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. - ---- - -#### 2.2 New EVM native balances endpoint - -Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. - -Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. - ---- - -#### 2.3 SVM Endpoints - -Consolidated under `/v1/svm/*` - -| Old Endpoint | New Endpoint | -| ------------------------ | ------------------------- | -| `/balances/svm` | `/v1/svm/balances` | -| `/balances/native/svm` | `/v1/svm/balances/native` | -| `/holders/svm/:contract` | `/v1/svm/holders` | -| `/tokens/svm/:mint` | `/v1/svm/tokens` | -| `/transfers/svm` | `/v1/svm/transfers` | -| `/pools/svm` | `/v1/svm/pools` | -| `/swaps/svm` | `/v1/svm/swaps` | -| `/dexes/svm` | `/v1/svm/dexes` | -| `/owner/svm/:account` | `/v1/svm/owner` | -| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | - -## 📝 Parameter Changes - -### 3. **Path Parameters → Query Parameters** - -All path parameters have been moved to query parameters. - -**Before:** - -```bash -GET /balances/evm/:address -GET /holders/evm/:contract -GET /nft/items/evm/contract/:contract/token_id/:token_id -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0x... -GET /v1/evm/holders?network=mainnet&contract=0x... -GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 -``` - -### 4. **Standardized Parameter Naming** - -All query parameters have been standardized to use snake_case naming convention. - -| Old Parameter | New Parameter | Notes | -| --- | --- | --- | -| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | -| `anyAddress` | `address` | Matches either `from` or `to` address | -| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | -| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | -| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | -| `endTime` | `end_time` | Default: `9999999999` | -| - | `start_block` | New parameter, default: `0` | -| - | `end_block` | New parameter, default: `9999999999` | -| - | `include_null_balances` | New parameter, default: `false` | -| `tx_hash` | `transaction_id` | - | -| `token` | `input_token`, `output_token` | More explicit for pool queries | -| `pool` | `amm_pool` | - | -| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | - -**Important:** The `network_id` parameter has been renamed to `network`. - -**Important:** `matic` network has been renamed to `polygon`. - -### 5. **Batched Parameters** - -Many parameters now support batching - accepting single values or comma-separated strings. - -**Supported Batched Parameters:** - -- `address`, `from_address`, `to_address` -- `contract`, `token_id` -- `factory`, `pool` -- `owner`, `token_account`, `mint` -- `transaction_id`, `signature` - -**Examples:** - -```console -# Single value -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 - -# Comma-separated, single parameter -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 - -# Repeated parameter values -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -### 6. **New Parameters** - -#### `include_null_balances` - -Added to balance endpoints to optionally include zero/null balances. - -```bash -?include_null_balances=true -``` - -**Default:** `false` - -## 🔄 Response Changes - -### 7. **Pagination Changes** - -Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. - -**Before:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2, - "next_page": 3, - "total_pages": 10 - }, - "total_results": 1234 -} -``` - -**After:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2 - } -} -``` - -**Removed fields:** - -- `next_page` -- `total_pages` -- `total_results` - -**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. - -### 8. **Removed Parameters** - -The following deprecated parameters have been removed: - -- `orderBy` - Results are now ordered by timestamp/block by default -- `orderDirection` - Always descending (newest first) - -## 📚 Example Migrations - -### Old vs New: Get Token Balances - -**Before:** - -```bash -GET /balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -### New Feature: Batched Queries - -Query balances for multiple contracts in a single request: - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -## ⚠️ Important Notes - -1. **Backward Compatibility:** The old endpoints are deprecated and will be removed in the future. Migrate by **Oct 30, 2025**. - -2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. - -3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. - -4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/uk/token-api/_meta.js b/website/src/pages/uk/token-api/_meta.js index a8624da52e7f..853f9dc09031 100644 --- a/website/src/pages/uk/token-api/_meta.js +++ b/website/src/pages/uk/token-api/_meta.js @@ -2,15 +2,15 @@ import titles from './_meta-titles.json' export default { 'quick-start': '', + 'svm-tokens': titles['svm-tokens'] ?? '', + 'svm-dexs': titles['svm-dexs'] ?? '', 'evm-tokens': titles['evm-tokens'] ?? '', 'evm-dexs': titles['evm-dexs'] ?? '', 'evm-nfts': titles['evm-nfts'] ?? '', - 'svm-tokens': titles['svm-tokens'] ?? '', - 'svm-dexs': titles['svm-dexs'] ?? '', 'tvm-tokens': titles['tvm-tokens'] ?? '', 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', 'endpoint-pricing': '', + guides: 'Guides', faq: '', - 'upgrade-to-v1': '', } diff --git a/website/src/pages/uk/token-api/endpoints/_meta.js b/website/src/pages/uk/token-api/endpoints/_meta.js new file mode 100644 index 000000000000..5d419807937c --- /dev/null +++ b/website/src/pages/uk/token-api/endpoints/_meta.js @@ -0,0 +1,4 @@ +export default { + 'endpoint-pricing': '', + 'endpoint-support': '', +} diff --git a/website/src/pages/uk/token-api/endpoint-pricing.mdx b/website/src/pages/uk/token-api/endpoints/endpoint-pricing.mdx similarity index 100% rename from website/src/pages/uk/token-api/endpoint-pricing.mdx rename to website/src/pages/uk/token-api/endpoints/endpoint-pricing.mdx diff --git a/website/src/pages/uk/token-api/endpoints/endpoint-support.msx b/website/src/pages/uk/token-api/endpoints/endpoint-support.msx new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/website/src/pages/uk/token-api/guides/_meta-titles.json b/website/src/pages/uk/token-api/guides/_meta-titles.json new file mode 100644 index 000000000000..cd93dcc0fc0b --- /dev/null +++ b/website/src/pages/uk/token-api/guides/_meta-titles.json @@ -0,0 +1,4 @@ +{ + "gpt": "Create Custom GPTS", + "upgrade-to-v1": "" +} diff --git a/website/src/pages/uk/token-api/guides/_meta.js b/website/src/pages/uk/token-api/guides/_meta.js new file mode 100644 index 000000000000..e5aaaadd78f2 --- /dev/null +++ b/website/src/pages/uk/token-api/guides/_meta.js @@ -0,0 +1,4 @@ +export default { + gpt: '', + 'upgrade-to-v1': '', +} diff --git a/website/src/pages/uk/token-api/guides/gpt.mdx b/website/src/pages/uk/token-api/guides/gpt.mdx new file mode 100644 index 000000000000..564d013dea20 --- /dev/null +++ b/website/src/pages/uk/token-api/guides/gpt.mdx @@ -0,0 +1,121 @@ +--- +title: How the Token API Powers Custom GPTs +sidebarTitle: Create Custom GPTs +--- + +## Overview + +The Token API is a pre-indexed blockchain data service that provides real-time access to token balances, metadata, prices, liquidity, and volume across multiple chains. Developers use its REST endpoints to build wallets, trading dashboards, DeFi analytics, and AI systems without maintaining their own indexing stack. Custom GPTs can connect directly to the Token API's OpenAPI schema. + +The Token API enables developers to build **Custom GPTs** to reason over live blockchain data inside ChatGPT that can reason over and respond with live blockchain data directly inside ChatGPT. + +## What the Token API Enables in Custom GPTs + +When a Custom GPT is wired to the Token API, it gains access to a machine-readable schema and authenticated endpoints. Developers can use this to: + +- **Query real-time onchain data**: Balances, token prices, liquidity, and transaction history. +- **Automate domain-specific tasks**: Portfolio tracking, accounting, reconciliation, and market analysis. +- **Power AI agents with verifiable blockchain context**: Use the same data sources dapps rely on. + +Because the Token API provides a machine-readable schema and authenticated requests, it serves as a structured data layer that enables GPT-5 agents to combine natural language reasoning with live onchain data from The Graph. + +## When to Use the Token API for Custom GPTs + +Use the Token API when your GPT needs repeatable, domain-specific behavior grounded in blockchain data. This is most effective when the GPT performs the same type of task frequently or enforces a workflow you define. For one-off or exploratory questions, standard ChatGPT prompts are sufficient. + +## Choosing a Use Case + +Start with a clear, narrow objective, then expand as needed. Common patterns include: + +- **Accounting GPT**: Onchain accounting, tax tagging, and portfolio reconciliation. +- **Trading GPT**: Liquidity, pricing, and volume analysis for trading strategies. +- **Protocol Tracking GPT**: Real-time monitoring of transaction activity and liquidity pools. + +A focused initial goal such as “Retrieve token balances and prices for a wallet” makes it easier to configure reliable behavior before adding complex workflows. + +## Requirements + +| Requirement | Description | +| ---------------------- | -------------------------------------------------------- | +| ChatGPT 5 | Custom GPT creation requires GPT-5 tier or Pro. | +| Token API Subscription | Sign up at [The Graph Market](https://thegraph.market./) | +| Token API Key | Available in your dashboard as the Authentication JWT. | + +## Setting Up a Custom GPT + +Below is an explanatory outline of what happens during setup. This section provides conceptual understanding. + +### Create Custom GPT + +1. Visit chat.openai.com/gpts in your browser. 2, Click Create (top right). +2. Under Configure (in the top left panel), set up your GPT's personality and scope. + +### Configure Your GPT + +You define the GPT's role, scope, and metadata so it knows what it is designed to do. This includes: + +- **Name and Description**: Helps users discover your GPT. + - For example: **Name**: Token Tracker GPT **Description**: An onchain analytics assistant that retrieves live token balances, prices, and liquidity data using The Graph's Token API. +- **Instructions**: Tells the GPT what tasks it should perform using the Token API. + - For example: You are a blockchain data assistant retrieving onchain token data from The Graph's Token API. Use endpoints to fetch balances, liquidity, and price history across EVM chains. Present results in tables with token symbols, prices, and USD values. +- **Knowledge**: Optional context files such as wallet references, accounting rules, or code snippets. +- **New Action**: At the bottom, click “Create new action” to connect your GPT to the Token API. + +### Connect the Token API + +To enable live blockchain queries inside ChatGPT, you connect the GPT to the Token API through: + +#### Authentication + +1. Set Authentication to API Key → Bearer. +2. Open [The Graph Market](https://thegraph.market./) and copy your Authentication JWT from your dashboard. +3. Paste the token into the ChatGPT prompt where the field shows [HIDDEN]. + +#### Schema + +1. Above the Schema box, click Import from URL. +2. Paste: https://token-api.thegraph.com/openapi +3. Click Import. You'll now see endpoints like: + - `getV1EvmTokens` + - `getV1EvmDexes` + - `getV1EvmBalances` +4. Click Test on one (for example `getV1EvmDexes`) to verify connection. + +##### Privacy + +1. At the bottom, under Privacy, paste: https://pinax.network/en/legal/privacy + +### Privacy + +You can attach a privacy policy URL such as: https://pinax.network/en/legal/privacy + +## Example Prompt Patterns + +These examples help illustrate how a GPT reasons over Token API data. + +### Wallet and Portfolio + +Get the total USD balance for a wallet across multiple chains, returning token name, symbol, balance, and price. + +### Trading Analysis + +Compare USDC and DAI liquidity across Uniswap and Curve. Return the top 5 pools by TVL. + +### Accounting + +List all ERC-20 transfers for this address in the last 30 days. Group by token and total incoming/outgoing volume. + +## Best Practices + +| Tip | Why It Matters | +| --------------------------------- | ---------------------------------------------------------------------- | +| Scope your GPT narrowly first | Simplifies debugging and validates schema integration. | +| Use clear role instructions | Helps the GPT choose the right endpoints and avoid assumptions. | +| Name endpoints explicitly | Improves routing accuracy when fetching balances, prices, or DEX data. | +| Combine with code | Enables custom parsing or logic for complex workflows. | +| Add Subgraph or Substream context | Provides richer analytics when combined with Token API data. | + +## FAQs & Resources + +- Builders Office Hours (October 23, 2025) +- Watch the full session: https://x.com/i/broadcasts/1mrGmBzBarNJy diff --git a/website/src/pages/uk/token-api/guides/upgrade-to-v1.mdx b/website/src/pages/uk/token-api/guides/upgrade-to-v1.mdx new file mode 100644 index 000000000000..e2a7ccf973fa --- /dev/null +++ b/website/src/pages/uk/token-api/guides/upgrade-to-v1.mdx @@ -0,0 +1,346 @@ +--- +title: Upgrade to v1 +--- + +This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. + +**Note** + +- `EVM` = Ethereum Virtual Machine + +Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). + +- `SVM` = Solana Virtual Machine + +Used to describe endpoints supporting Solana (currently the only SVM chain supported). + +## 🔑 Breaking Changes Summary + +### 1. API Versioning + +All endpoints now use the `/v1` prefix. + +**Before:** + +``` +GET /balances/evm +GET /nft/items/contract/:contract/token_id/:token_id +``` + +**After:** + +``` +GET /v1/evm/balances +GET /v1/evm/nft/items +``` + +### 2. Route Structure Reorganization + +#### 2.1 EVM Endpoints + +Consolidated under `/v1/evm/*` + +| Old Endpoint | New Endpoint | +| ------------------------------------------------------ | ----------------------------- | +| `/balances/evm` | `/v1/evm/balances` | +| `/historical/balances/evm` | `/v1/evm/balances/historical` | +| `/holders/evm/:contract` | `/v1/evm/holders` | +| `/tokens/evm/:contract` | `/v1/evm/tokens` | +| `/transfers/evm` | `/v1/evm/transfers` | +| `/pools/evm` | `/v1/evm/pools` | +| `/swaps/evm` | `/v1/evm/swaps` | +| `/dexes/evm` | `/v1/evm/dexes` | +| `/ohlc/prices/evm/:contract` | _(removed)_ | +| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | +| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | +| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | +| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | +| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | +| `/nft/activities/evm` | `/v1/evm/nft/transfers` | +| `/nft/sales/evm` | `/v1/evm/nft/sales` | + +**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. + +**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. + +--- + +#### 2.2 New EVM native balances endpoint + +Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. + +Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. + +--- + +#### 2.3 SVM Endpoints + +Consolidated under `/v1/svm/*` + +| Old Endpoint | New Endpoint | +| ------------------------ | ------------------------- | +| `/balances/svm` | `/v1/svm/balances` | +| `/balances/native/svm` | `/v1/svm/balances/native` | +| `/holders/svm/:contract` | `/v1/svm/holders` | +| `/tokens/svm/:mint` | `/v1/svm/tokens` | +| `/transfers/svm` | `/v1/svm/transfers` | +| `/pools/svm` | `/v1/svm/pools` | +| `/swaps/svm` | `/v1/svm/swaps` | +| `/dexes/svm` | `/v1/svm/dexes` | +| `/owner/svm/:account` | `/v1/svm/owner` | +| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | + +## 📝 Parameter Changes + +### 3. Path Parameters → Query Parameters + +All path parameters have been moved to query parameters. + +**Before:** + +```bash +GET /balances/evm/:address +GET /holders/evm/:contract +GET /nft/items/evm/contract/:contract/token_id/:token_id +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0x... +GET /v1/evm/holders?network=mainnet&contract=0x... +GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 +``` + +### 4. Standardized Parameter Naming + +All query parameters have been standardized to use snake_case naming convention. + +| Old Parameter | New Parameter | Notes | +| --- | --- | --- | +| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | +| `anyAddress` | `address` | Matches either `from` or `to` address | +| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | +| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | +| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | +| `endTime` | `end_time` | Default: `9999999999` | +| - | `start_block` | New parameter, default: `0` | +| - | `end_block` | New parameter, default: `9999999999` | +| - | `include_null_balances` | New parameter, default: `false` | +| `tx_hash` | `transaction_id` | - | +| `token` | `input_token`, `output_token` | More explicit for pool queries | +| `pool` | `amm_pool` | - | +| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | + +**Important:** The `network_id` parameter has been renamed to `network`. + +**Important:** `matic` network has been renamed to `polygon`. + +### 5. Batched Parameters + +Many parameters now support batching - accepting single values or comma-separated strings. + +**Supported Batched Parameters:** + +- `address`, `from_address`, `to_address` +- `contract`, `token_id` +- `factory`, `pool` +- `owner`, `token_account`, `mint` +- `transaction_id`, `signature` + +**Examples:** + +```console +## Single value +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 + +## Comma-separated, single parameter +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 + +## Repeated parameter values +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +### 6. New Parameters + +#### `include_null_balances` + +Added to balance endpoints to optionally include zero/null balances. + +```bash +?include_null_balances=true +``` + +**Default:** `false` + +## 🔄 Response Changes + +### 7. Pagination Changes + +Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. + +**Before:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2, + "next_page": 3, + "total_pages": 10 + }, + "total_results": 1234 +} +``` + +**After:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2 + } +} +``` + +**Removed fields:** + +- `next_page` +- `total_pages` +- `total_results` + +**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. + +### 8. Removed Parameters + +The following deprecated parameters have been removed: + +- `orderBy` - Results are now ordered by timestamp/block by default +- `orderDirection` - Always descending (newest first) + +### 9. Cached Queries + +Queries are now cached on the ClickHouse side for better performance. + +You can specifically request to not use the cache by setting the `Cache-Control` header to `no-cache`. + +#### Example + +**Cache** + +```console +$ curl -s 'https://token-api.thegraph.com/v1/...' | jq .statistics +{ + "bytes_read": 221, + "rows_read": 1, + "elapsed": 0.002212065 +} +``` + +**No cache** + +```console +$ curl -s 'http://localhost:8000/v1/...' --header 'Cache-Control: no-cache' | jq .statistics +{ + "bytes_read": 14621174348, + "rows_read": 223244390, + "elapsed": 0.971064066 +} +``` + +## 📚 Example Migrations + +### Example 1: Get Token Balances + +**Before:** + +```bash +GET /token/balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +### Example 2: Get NFT Items + +**Before:** + +```bash +GET /nft/items/evm/contract/0xbd3531da5cf5857e7cfaa92426877b022e612cf8/token_id/5712?network_id=mainnet +``` + +**After:** + +```bash +GET /v1/evm/nft/items?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&token_id=5712 +``` + +### Example 3: Get Token Transfers with Time Filter + +**Before:** + +```bash +GET /token/transfers/evm?network_id=mainnet&from=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&startTime=1735689600&endTime=1767225600 +``` + +**After:** + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&start_time=1735689600&end_time=1767225600 +``` + +### Example 4: Get NFT Transfer Activities + +**Before:** + +```bash +GET /nft/activities/evm?network_id=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&anyAddress=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +**After:** + +```bash +GET /v1/evm/nft/transfers?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +### Example 5: Get Pool OHLC Data + +**Before:** + +```bash +GET /token/ohlc/pools/evm/0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640?network_id=mainnet&interval=1h&startTime=1735689600 +``` + +**After:** + +```bash +GET /v1/evm/pools/ohlc?network=mainnet&pool=0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640&interval=1h&start_time=1735689600 +``` + +### Example 6: Batched Query (New Feature) + +Query balances for multiple contracts in a single request: + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +Query transfers from multiple addresses: + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xabc...,0xdef...,0x123...&start_time=1735689600 +``` + +## ⚠️ Important Notes + +1. **Migration Notes:** The old endpoints were deprecated and removed on **October 30, 2025**. Please ensure all integrations have been migrated to the new Token API v1 endpoints. + +2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. + +3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. + +4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/uk/token-api/svm-tokens/_meta.js b/website/src/pages/uk/token-api/svm-tokens/_meta.js index 1de31437004c..001e2d43341a 100644 --- a/website/src/pages/uk/token-api/svm-tokens/_meta.js +++ b/website/src/pages/uk/token-api/svm-tokens/_meta.js @@ -1,6 +1,6 @@ export default { - tokens: '', transfers: '', + tokens: '', balances: '', 'balances-native': '', holders: '', diff --git a/website/src/pages/uk/token-api/upgrade-to-v1.mdx b/website/src/pages/uk/token-api/upgrade-to-v1.mdx deleted file mode 100644 index fbe09101eaa5..000000000000 --- a/website/src/pages/uk/token-api/upgrade-to-v1.mdx +++ /dev/null @@ -1,254 +0,0 @@ ---- -title: Upgrade to v1 ---- - -This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. - -**Note** - -- `EVM` = Ethereum Virtual Machine - -Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). - -- `SVM` = Solana Virtual Machine - -Used to describe endpoints supporting Solana (currently the only SVM chain supported). - -## 🔑 Breaking Changes Summary - -### 1. **API Versioning** - -All endpoints now use the `/v1` prefix. - -**Before:** - -``` -GET /balances/evm -GET /nft/items/contract/:contract/token_id/:token_id -``` - -**After:** - -``` -GET /v1/evm/balances -GET /v1/evm/nft/items -``` - -### 2. **Route Structure Reorganization** - -#### 2.1 EVM Endpoints - -Consolidated under `/v1/evm/*` - -| Old Endpoint | New Endpoint | -| ------------------------------------------------------ | ----------------------------- | -| `/balances/evm` | `/v1/evm/balances` | -| `/historical/balances/evm` | `/v1/evm/balances/historical` | -| `/holders/evm/:contract` | `/v1/evm/holders` | -| `/tokens/evm/:contract` | `/v1/evm/tokens` | -| `/transfers/evm` | `/v1/evm/transfers` | -| `/pools/evm` | `/v1/evm/pools` | -| `/swaps/evm` | `/v1/evm/swaps` | -| `/dexes/evm` | `/v1/evm/dexes` | -| `/ohlc/prices/evm/:contract` | _(removed)_ | -| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | -| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | -| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | -| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | -| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | -| `/nft/activities/evm` | `/v1/evm/nft/transfers` | -| `/nft/sales/evm` | `/v1/evm/nft/sales` | - -**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. - -**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. - ---- - -#### 2.2 New EVM native balances endpoint - -Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. - -Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. - ---- - -#### 2.3 SVM Endpoints - -Consolidated under `/v1/svm/*` - -| Old Endpoint | New Endpoint | -| ------------------------ | ------------------------- | -| `/balances/svm` | `/v1/svm/balances` | -| `/balances/native/svm` | `/v1/svm/balances/native` | -| `/holders/svm/:contract` | `/v1/svm/holders` | -| `/tokens/svm/:mint` | `/v1/svm/tokens` | -| `/transfers/svm` | `/v1/svm/transfers` | -| `/pools/svm` | `/v1/svm/pools` | -| `/swaps/svm` | `/v1/svm/swaps` | -| `/dexes/svm` | `/v1/svm/dexes` | -| `/owner/svm/:account` | `/v1/svm/owner` | -| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | - -## 📝 Parameter Changes - -### 3. **Path Parameters → Query Parameters** - -All path parameters have been moved to query parameters. - -**Before:** - -```bash -GET /balances/evm/:address -GET /holders/evm/:contract -GET /nft/items/evm/contract/:contract/token_id/:token_id -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0x... -GET /v1/evm/holders?network=mainnet&contract=0x... -GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 -``` - -### 4. **Standardized Parameter Naming** - -All query parameters have been standardized to use snake_case naming convention. - -| Old Parameter | New Parameter | Notes | -| --- | --- | --- | -| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | -| `anyAddress` | `address` | Matches either `from` or `to` address | -| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | -| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | -| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | -| `endTime` | `end_time` | Default: `9999999999` | -| - | `start_block` | New parameter, default: `0` | -| - | `end_block` | New parameter, default: `9999999999` | -| - | `include_null_balances` | New parameter, default: `false` | -| `tx_hash` | `transaction_id` | - | -| `token` | `input_token`, `output_token` | More explicit for pool queries | -| `pool` | `amm_pool` | - | -| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | - -**Important:** The `network_id` parameter has been renamed to `network`. - -**Important:** `matic` network has been renamed to `polygon`. - -### 5. **Batched Parameters** - -Many parameters now support batching - accepting single values or comma-separated strings. - -**Supported Batched Parameters:** - -- `address`, `from_address`, `to_address` -- `contract`, `token_id` -- `factory`, `pool` -- `owner`, `token_account`, `mint` -- `transaction_id`, `signature` - -**Examples:** - -```console -# Single value -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 - -# Comma-separated, single parameter -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 - -# Repeated parameter values -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -### 6. **New Parameters** - -#### `include_null_balances` - -Added to balance endpoints to optionally include zero/null balances. - -```bash -?include_null_balances=true -``` - -**Default:** `false` - -## 🔄 Response Changes - -### 7. **Pagination Changes** - -Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. - -**Before:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2, - "next_page": 3, - "total_pages": 10 - }, - "total_results": 1234 -} -``` - -**After:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2 - } -} -``` - -**Removed fields:** - -- `next_page` -- `total_pages` -- `total_results` - -**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. - -### 8. **Removed Parameters** - -The following deprecated parameters have been removed: - -- `orderBy` - Results are now ordered by timestamp/block by default -- `orderDirection` - Always descending (newest first) - -## 📚 Example Migrations - -### Old vs New: Get Token Balances - -**Before:** - -```bash -GET /balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -### New Feature: Batched Queries - -Query balances for multiple contracts in a single request: - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -## ⚠️ Important Notes - -1. **Backward Compatibility:** The old endpoints are deprecated and will be removed in the future. Migrate by **Oct 30, 2025**. - -2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. - -3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. - -4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/ur/token-api/_meta.js b/website/src/pages/ur/token-api/_meta.js index a8624da52e7f..853f9dc09031 100644 --- a/website/src/pages/ur/token-api/_meta.js +++ b/website/src/pages/ur/token-api/_meta.js @@ -2,15 +2,15 @@ import titles from './_meta-titles.json' export default { 'quick-start': '', + 'svm-tokens': titles['svm-tokens'] ?? '', + 'svm-dexs': titles['svm-dexs'] ?? '', 'evm-tokens': titles['evm-tokens'] ?? '', 'evm-dexs': titles['evm-dexs'] ?? '', 'evm-nfts': titles['evm-nfts'] ?? '', - 'svm-tokens': titles['svm-tokens'] ?? '', - 'svm-dexs': titles['svm-dexs'] ?? '', 'tvm-tokens': titles['tvm-tokens'] ?? '', 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', 'endpoint-pricing': '', + guides: 'Guides', faq: '', - 'upgrade-to-v1': '', } diff --git a/website/src/pages/ur/token-api/endpoints/_meta.js b/website/src/pages/ur/token-api/endpoints/_meta.js new file mode 100644 index 000000000000..5d419807937c --- /dev/null +++ b/website/src/pages/ur/token-api/endpoints/_meta.js @@ -0,0 +1,4 @@ +export default { + 'endpoint-pricing': '', + 'endpoint-support': '', +} diff --git a/website/src/pages/ur/token-api/endpoint-pricing.mdx b/website/src/pages/ur/token-api/endpoints/endpoint-pricing.mdx similarity index 100% rename from website/src/pages/ur/token-api/endpoint-pricing.mdx rename to website/src/pages/ur/token-api/endpoints/endpoint-pricing.mdx diff --git a/website/src/pages/ur/token-api/endpoints/endpoint-support.msx b/website/src/pages/ur/token-api/endpoints/endpoint-support.msx new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/website/src/pages/ur/token-api/guides/_meta-titles.json b/website/src/pages/ur/token-api/guides/_meta-titles.json new file mode 100644 index 000000000000..cd93dcc0fc0b --- /dev/null +++ b/website/src/pages/ur/token-api/guides/_meta-titles.json @@ -0,0 +1,4 @@ +{ + "gpt": "Create Custom GPTS", + "upgrade-to-v1": "" +} diff --git a/website/src/pages/ur/token-api/guides/_meta.js b/website/src/pages/ur/token-api/guides/_meta.js new file mode 100644 index 000000000000..e5aaaadd78f2 --- /dev/null +++ b/website/src/pages/ur/token-api/guides/_meta.js @@ -0,0 +1,4 @@ +export default { + gpt: '', + 'upgrade-to-v1': '', +} diff --git a/website/src/pages/ur/token-api/guides/gpt.mdx b/website/src/pages/ur/token-api/guides/gpt.mdx new file mode 100644 index 000000000000..564d013dea20 --- /dev/null +++ b/website/src/pages/ur/token-api/guides/gpt.mdx @@ -0,0 +1,121 @@ +--- +title: How the Token API Powers Custom GPTs +sidebarTitle: Create Custom GPTs +--- + +## Overview + +The Token API is a pre-indexed blockchain data service that provides real-time access to token balances, metadata, prices, liquidity, and volume across multiple chains. Developers use its REST endpoints to build wallets, trading dashboards, DeFi analytics, and AI systems without maintaining their own indexing stack. Custom GPTs can connect directly to the Token API's OpenAPI schema. + +The Token API enables developers to build **Custom GPTs** to reason over live blockchain data inside ChatGPT that can reason over and respond with live blockchain data directly inside ChatGPT. + +## What the Token API Enables in Custom GPTs + +When a Custom GPT is wired to the Token API, it gains access to a machine-readable schema and authenticated endpoints. Developers can use this to: + +- **Query real-time onchain data**: Balances, token prices, liquidity, and transaction history. +- **Automate domain-specific tasks**: Portfolio tracking, accounting, reconciliation, and market analysis. +- **Power AI agents with verifiable blockchain context**: Use the same data sources dapps rely on. + +Because the Token API provides a machine-readable schema and authenticated requests, it serves as a structured data layer that enables GPT-5 agents to combine natural language reasoning with live onchain data from The Graph. + +## When to Use the Token API for Custom GPTs + +Use the Token API when your GPT needs repeatable, domain-specific behavior grounded in blockchain data. This is most effective when the GPT performs the same type of task frequently or enforces a workflow you define. For one-off or exploratory questions, standard ChatGPT prompts are sufficient. + +## Choosing a Use Case + +Start with a clear, narrow objective, then expand as needed. Common patterns include: + +- **Accounting GPT**: Onchain accounting, tax tagging, and portfolio reconciliation. +- **Trading GPT**: Liquidity, pricing, and volume analysis for trading strategies. +- **Protocol Tracking GPT**: Real-time monitoring of transaction activity and liquidity pools. + +A focused initial goal such as “Retrieve token balances and prices for a wallet” makes it easier to configure reliable behavior before adding complex workflows. + +## Requirements + +| Requirement | Description | +| ---------------------- | -------------------------------------------------------- | +| ChatGPT 5 | Custom GPT creation requires GPT-5 tier or Pro. | +| Token API Subscription | Sign up at [The Graph Market](https://thegraph.market./) | +| Token API Key | Available in your dashboard as the Authentication JWT. | + +## Setting Up a Custom GPT + +Below is an explanatory outline of what happens during setup. This section provides conceptual understanding. + +### Create Custom GPT + +1. Visit chat.openai.com/gpts in your browser. 2, Click Create (top right). +2. Under Configure (in the top left panel), set up your GPT's personality and scope. + +### Configure Your GPT + +You define the GPT's role, scope, and metadata so it knows what it is designed to do. This includes: + +- **Name and Description**: Helps users discover your GPT. + - For example: **Name**: Token Tracker GPT **Description**: An onchain analytics assistant that retrieves live token balances, prices, and liquidity data using The Graph's Token API. +- **Instructions**: Tells the GPT what tasks it should perform using the Token API. + - For example: You are a blockchain data assistant retrieving onchain token data from The Graph's Token API. Use endpoints to fetch balances, liquidity, and price history across EVM chains. Present results in tables with token symbols, prices, and USD values. +- **Knowledge**: Optional context files such as wallet references, accounting rules, or code snippets. +- **New Action**: At the bottom, click “Create new action” to connect your GPT to the Token API. + +### Connect the Token API + +To enable live blockchain queries inside ChatGPT, you connect the GPT to the Token API through: + +#### Authentication + +1. Set Authentication to API Key → Bearer. +2. Open [The Graph Market](https://thegraph.market./) and copy your Authentication JWT from your dashboard. +3. Paste the token into the ChatGPT prompt where the field shows [HIDDEN]. + +#### Schema + +1. Above the Schema box, click Import from URL. +2. Paste: https://token-api.thegraph.com/openapi +3. Click Import. You'll now see endpoints like: + - `getV1EvmTokens` + - `getV1EvmDexes` + - `getV1EvmBalances` +4. Click Test on one (for example `getV1EvmDexes`) to verify connection. + +##### Privacy + +1. At the bottom, under Privacy, paste: https://pinax.network/en/legal/privacy + +### Privacy + +You can attach a privacy policy URL such as: https://pinax.network/en/legal/privacy + +## Example Prompt Patterns + +These examples help illustrate how a GPT reasons over Token API data. + +### Wallet and Portfolio + +Get the total USD balance for a wallet across multiple chains, returning token name, symbol, balance, and price. + +### Trading Analysis + +Compare USDC and DAI liquidity across Uniswap and Curve. Return the top 5 pools by TVL. + +### Accounting + +List all ERC-20 transfers for this address in the last 30 days. Group by token and total incoming/outgoing volume. + +## Best Practices + +| Tip | Why It Matters | +| --------------------------------- | ---------------------------------------------------------------------- | +| Scope your GPT narrowly first | Simplifies debugging and validates schema integration. | +| Use clear role instructions | Helps the GPT choose the right endpoints and avoid assumptions. | +| Name endpoints explicitly | Improves routing accuracy when fetching balances, prices, or DEX data. | +| Combine with code | Enables custom parsing or logic for complex workflows. | +| Add Subgraph or Substream context | Provides richer analytics when combined with Token API data. | + +## FAQs & Resources + +- Builders Office Hours (October 23, 2025) +- Watch the full session: https://x.com/i/broadcasts/1mrGmBzBarNJy diff --git a/website/src/pages/ur/token-api/guides/upgrade-to-v1.mdx b/website/src/pages/ur/token-api/guides/upgrade-to-v1.mdx new file mode 100644 index 000000000000..e2a7ccf973fa --- /dev/null +++ b/website/src/pages/ur/token-api/guides/upgrade-to-v1.mdx @@ -0,0 +1,346 @@ +--- +title: Upgrade to v1 +--- + +This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. + +**Note** + +- `EVM` = Ethereum Virtual Machine + +Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). + +- `SVM` = Solana Virtual Machine + +Used to describe endpoints supporting Solana (currently the only SVM chain supported). + +## 🔑 Breaking Changes Summary + +### 1. API Versioning + +All endpoints now use the `/v1` prefix. + +**Before:** + +``` +GET /balances/evm +GET /nft/items/contract/:contract/token_id/:token_id +``` + +**After:** + +``` +GET /v1/evm/balances +GET /v1/evm/nft/items +``` + +### 2. Route Structure Reorganization + +#### 2.1 EVM Endpoints + +Consolidated under `/v1/evm/*` + +| Old Endpoint | New Endpoint | +| ------------------------------------------------------ | ----------------------------- | +| `/balances/evm` | `/v1/evm/balances` | +| `/historical/balances/evm` | `/v1/evm/balances/historical` | +| `/holders/evm/:contract` | `/v1/evm/holders` | +| `/tokens/evm/:contract` | `/v1/evm/tokens` | +| `/transfers/evm` | `/v1/evm/transfers` | +| `/pools/evm` | `/v1/evm/pools` | +| `/swaps/evm` | `/v1/evm/swaps` | +| `/dexes/evm` | `/v1/evm/dexes` | +| `/ohlc/prices/evm/:contract` | _(removed)_ | +| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | +| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | +| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | +| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | +| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | +| `/nft/activities/evm` | `/v1/evm/nft/transfers` | +| `/nft/sales/evm` | `/v1/evm/nft/sales` | + +**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. + +**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. + +--- + +#### 2.2 New EVM native balances endpoint + +Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. + +Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. + +--- + +#### 2.3 SVM Endpoints + +Consolidated under `/v1/svm/*` + +| Old Endpoint | New Endpoint | +| ------------------------ | ------------------------- | +| `/balances/svm` | `/v1/svm/balances` | +| `/balances/native/svm` | `/v1/svm/balances/native` | +| `/holders/svm/:contract` | `/v1/svm/holders` | +| `/tokens/svm/:mint` | `/v1/svm/tokens` | +| `/transfers/svm` | `/v1/svm/transfers` | +| `/pools/svm` | `/v1/svm/pools` | +| `/swaps/svm` | `/v1/svm/swaps` | +| `/dexes/svm` | `/v1/svm/dexes` | +| `/owner/svm/:account` | `/v1/svm/owner` | +| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | + +## 📝 Parameter Changes + +### 3. Path Parameters → Query Parameters + +All path parameters have been moved to query parameters. + +**Before:** + +```bash +GET /balances/evm/:address +GET /holders/evm/:contract +GET /nft/items/evm/contract/:contract/token_id/:token_id +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0x... +GET /v1/evm/holders?network=mainnet&contract=0x... +GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 +``` + +### 4. Standardized Parameter Naming + +All query parameters have been standardized to use snake_case naming convention. + +| Old Parameter | New Parameter | Notes | +| --- | --- | --- | +| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | +| `anyAddress` | `address` | Matches either `from` or `to` address | +| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | +| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | +| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | +| `endTime` | `end_time` | Default: `9999999999` | +| - | `start_block` | New parameter, default: `0` | +| - | `end_block` | New parameter, default: `9999999999` | +| - | `include_null_balances` | New parameter, default: `false` | +| `tx_hash` | `transaction_id` | - | +| `token` | `input_token`, `output_token` | More explicit for pool queries | +| `pool` | `amm_pool` | - | +| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | + +**Important:** The `network_id` parameter has been renamed to `network`. + +**Important:** `matic` network has been renamed to `polygon`. + +### 5. Batched Parameters + +Many parameters now support batching - accepting single values or comma-separated strings. + +**Supported Batched Parameters:** + +- `address`, `from_address`, `to_address` +- `contract`, `token_id` +- `factory`, `pool` +- `owner`, `token_account`, `mint` +- `transaction_id`, `signature` + +**Examples:** + +```console +## Single value +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 + +## Comma-separated, single parameter +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 + +## Repeated parameter values +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +### 6. New Parameters + +#### `include_null_balances` + +Added to balance endpoints to optionally include zero/null balances. + +```bash +?include_null_balances=true +``` + +**Default:** `false` + +## 🔄 Response Changes + +### 7. Pagination Changes + +Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. + +**Before:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2, + "next_page": 3, + "total_pages": 10 + }, + "total_results": 1234 +} +``` + +**After:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2 + } +} +``` + +**Removed fields:** + +- `next_page` +- `total_pages` +- `total_results` + +**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. + +### 8. Removed Parameters + +The following deprecated parameters have been removed: + +- `orderBy` - Results are now ordered by timestamp/block by default +- `orderDirection` - Always descending (newest first) + +### 9. Cached Queries + +Queries are now cached on the ClickHouse side for better performance. + +You can specifically request to not use the cache by setting the `Cache-Control` header to `no-cache`. + +#### Example + +**Cache** + +```console +$ curl -s 'https://token-api.thegraph.com/v1/...' | jq .statistics +{ + "bytes_read": 221, + "rows_read": 1, + "elapsed": 0.002212065 +} +``` + +**No cache** + +```console +$ curl -s 'http://localhost:8000/v1/...' --header 'Cache-Control: no-cache' | jq .statistics +{ + "bytes_read": 14621174348, + "rows_read": 223244390, + "elapsed": 0.971064066 +} +``` + +## 📚 Example Migrations + +### Example 1: Get Token Balances + +**Before:** + +```bash +GET /token/balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +### Example 2: Get NFT Items + +**Before:** + +```bash +GET /nft/items/evm/contract/0xbd3531da5cf5857e7cfaa92426877b022e612cf8/token_id/5712?network_id=mainnet +``` + +**After:** + +```bash +GET /v1/evm/nft/items?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&token_id=5712 +``` + +### Example 3: Get Token Transfers with Time Filter + +**Before:** + +```bash +GET /token/transfers/evm?network_id=mainnet&from=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&startTime=1735689600&endTime=1767225600 +``` + +**After:** + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&start_time=1735689600&end_time=1767225600 +``` + +### Example 4: Get NFT Transfer Activities + +**Before:** + +```bash +GET /nft/activities/evm?network_id=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&anyAddress=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +**After:** + +```bash +GET /v1/evm/nft/transfers?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +### Example 5: Get Pool OHLC Data + +**Before:** + +```bash +GET /token/ohlc/pools/evm/0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640?network_id=mainnet&interval=1h&startTime=1735689600 +``` + +**After:** + +```bash +GET /v1/evm/pools/ohlc?network=mainnet&pool=0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640&interval=1h&start_time=1735689600 +``` + +### Example 6: Batched Query (New Feature) + +Query balances for multiple contracts in a single request: + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +Query transfers from multiple addresses: + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xabc...,0xdef...,0x123...&start_time=1735689600 +``` + +## ⚠️ Important Notes + +1. **Migration Notes:** The old endpoints were deprecated and removed on **October 30, 2025**. Please ensure all integrations have been migrated to the new Token API v1 endpoints. + +2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. + +3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. + +4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/ur/token-api/svm-tokens/_meta.js b/website/src/pages/ur/token-api/svm-tokens/_meta.js index 1de31437004c..001e2d43341a 100644 --- a/website/src/pages/ur/token-api/svm-tokens/_meta.js +++ b/website/src/pages/ur/token-api/svm-tokens/_meta.js @@ -1,6 +1,6 @@ export default { - tokens: '', transfers: '', + tokens: '', balances: '', 'balances-native': '', holders: '', diff --git a/website/src/pages/ur/token-api/upgrade-to-v1.mdx b/website/src/pages/ur/token-api/upgrade-to-v1.mdx deleted file mode 100644 index fbe09101eaa5..000000000000 --- a/website/src/pages/ur/token-api/upgrade-to-v1.mdx +++ /dev/null @@ -1,254 +0,0 @@ ---- -title: Upgrade to v1 ---- - -This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. - -**Note** - -- `EVM` = Ethereum Virtual Machine - -Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). - -- `SVM` = Solana Virtual Machine - -Used to describe endpoints supporting Solana (currently the only SVM chain supported). - -## 🔑 Breaking Changes Summary - -### 1. **API Versioning** - -All endpoints now use the `/v1` prefix. - -**Before:** - -``` -GET /balances/evm -GET /nft/items/contract/:contract/token_id/:token_id -``` - -**After:** - -``` -GET /v1/evm/balances -GET /v1/evm/nft/items -``` - -### 2. **Route Structure Reorganization** - -#### 2.1 EVM Endpoints - -Consolidated under `/v1/evm/*` - -| Old Endpoint | New Endpoint | -| ------------------------------------------------------ | ----------------------------- | -| `/balances/evm` | `/v1/evm/balances` | -| `/historical/balances/evm` | `/v1/evm/balances/historical` | -| `/holders/evm/:contract` | `/v1/evm/holders` | -| `/tokens/evm/:contract` | `/v1/evm/tokens` | -| `/transfers/evm` | `/v1/evm/transfers` | -| `/pools/evm` | `/v1/evm/pools` | -| `/swaps/evm` | `/v1/evm/swaps` | -| `/dexes/evm` | `/v1/evm/dexes` | -| `/ohlc/prices/evm/:contract` | _(removed)_ | -| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | -| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | -| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | -| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | -| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | -| `/nft/activities/evm` | `/v1/evm/nft/transfers` | -| `/nft/sales/evm` | `/v1/evm/nft/sales` | - -**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. - -**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. - ---- - -#### 2.2 New EVM native balances endpoint - -Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. - -Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. - ---- - -#### 2.3 SVM Endpoints - -Consolidated under `/v1/svm/*` - -| Old Endpoint | New Endpoint | -| ------------------------ | ------------------------- | -| `/balances/svm` | `/v1/svm/balances` | -| `/balances/native/svm` | `/v1/svm/balances/native` | -| `/holders/svm/:contract` | `/v1/svm/holders` | -| `/tokens/svm/:mint` | `/v1/svm/tokens` | -| `/transfers/svm` | `/v1/svm/transfers` | -| `/pools/svm` | `/v1/svm/pools` | -| `/swaps/svm` | `/v1/svm/swaps` | -| `/dexes/svm` | `/v1/svm/dexes` | -| `/owner/svm/:account` | `/v1/svm/owner` | -| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | - -## 📝 Parameter Changes - -### 3. **Path Parameters → Query Parameters** - -All path parameters have been moved to query parameters. - -**Before:** - -```bash -GET /balances/evm/:address -GET /holders/evm/:contract -GET /nft/items/evm/contract/:contract/token_id/:token_id -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0x... -GET /v1/evm/holders?network=mainnet&contract=0x... -GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 -``` - -### 4. **Standardized Parameter Naming** - -All query parameters have been standardized to use snake_case naming convention. - -| Old Parameter | New Parameter | Notes | -| --- | --- | --- | -| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | -| `anyAddress` | `address` | Matches either `from` or `to` address | -| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | -| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | -| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | -| `endTime` | `end_time` | Default: `9999999999` | -| - | `start_block` | New parameter, default: `0` | -| - | `end_block` | New parameter, default: `9999999999` | -| - | `include_null_balances` | New parameter, default: `false` | -| `tx_hash` | `transaction_id` | - | -| `token` | `input_token`, `output_token` | More explicit for pool queries | -| `pool` | `amm_pool` | - | -| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | - -**Important:** The `network_id` parameter has been renamed to `network`. - -**Important:** `matic` network has been renamed to `polygon`. - -### 5. **Batched Parameters** - -Many parameters now support batching - accepting single values or comma-separated strings. - -**Supported Batched Parameters:** - -- `address`, `from_address`, `to_address` -- `contract`, `token_id` -- `factory`, `pool` -- `owner`, `token_account`, `mint` -- `transaction_id`, `signature` - -**Examples:** - -```console -# Single value -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 - -# Comma-separated, single parameter -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 - -# Repeated parameter values -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -### 6. **New Parameters** - -#### `include_null_balances` - -Added to balance endpoints to optionally include zero/null balances. - -```bash -?include_null_balances=true -``` - -**Default:** `false` - -## 🔄 Response Changes - -### 7. **Pagination Changes** - -Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. - -**Before:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2, - "next_page": 3, - "total_pages": 10 - }, - "total_results": 1234 -} -``` - -**After:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2 - } -} -``` - -**Removed fields:** - -- `next_page` -- `total_pages` -- `total_results` - -**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. - -### 8. **Removed Parameters** - -The following deprecated parameters have been removed: - -- `orderBy` - Results are now ordered by timestamp/block by default -- `orderDirection` - Always descending (newest first) - -## 📚 Example Migrations - -### Old vs New: Get Token Balances - -**Before:** - -```bash -GET /balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -### New Feature: Batched Queries - -Query balances for multiple contracts in a single request: - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -## ⚠️ Important Notes - -1. **Backward Compatibility:** The old endpoints are deprecated and will be removed in the future. Migrate by **Oct 30, 2025**. - -2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. - -3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. - -4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/vi/token-api/_meta.js b/website/src/pages/vi/token-api/_meta.js index a8624da52e7f..853f9dc09031 100644 --- a/website/src/pages/vi/token-api/_meta.js +++ b/website/src/pages/vi/token-api/_meta.js @@ -2,15 +2,15 @@ import titles from './_meta-titles.json' export default { 'quick-start': '', + 'svm-tokens': titles['svm-tokens'] ?? '', + 'svm-dexs': titles['svm-dexs'] ?? '', 'evm-tokens': titles['evm-tokens'] ?? '', 'evm-dexs': titles['evm-dexs'] ?? '', 'evm-nfts': titles['evm-nfts'] ?? '', - 'svm-tokens': titles['svm-tokens'] ?? '', - 'svm-dexs': titles['svm-dexs'] ?? '', 'tvm-tokens': titles['tvm-tokens'] ?? '', 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', 'endpoint-pricing': '', + guides: 'Guides', faq: '', - 'upgrade-to-v1': '', } diff --git a/website/src/pages/vi/token-api/endpoints/_meta.js b/website/src/pages/vi/token-api/endpoints/_meta.js new file mode 100644 index 000000000000..5d419807937c --- /dev/null +++ b/website/src/pages/vi/token-api/endpoints/_meta.js @@ -0,0 +1,4 @@ +export default { + 'endpoint-pricing': '', + 'endpoint-support': '', +} diff --git a/website/src/pages/vi/token-api/endpoint-pricing.mdx b/website/src/pages/vi/token-api/endpoints/endpoint-pricing.mdx similarity index 100% rename from website/src/pages/vi/token-api/endpoint-pricing.mdx rename to website/src/pages/vi/token-api/endpoints/endpoint-pricing.mdx diff --git a/website/src/pages/vi/token-api/endpoints/endpoint-support.msx b/website/src/pages/vi/token-api/endpoints/endpoint-support.msx new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/website/src/pages/vi/token-api/guides/_meta-titles.json b/website/src/pages/vi/token-api/guides/_meta-titles.json new file mode 100644 index 000000000000..cd93dcc0fc0b --- /dev/null +++ b/website/src/pages/vi/token-api/guides/_meta-titles.json @@ -0,0 +1,4 @@ +{ + "gpt": "Create Custom GPTS", + "upgrade-to-v1": "" +} diff --git a/website/src/pages/vi/token-api/guides/_meta.js b/website/src/pages/vi/token-api/guides/_meta.js new file mode 100644 index 000000000000..e5aaaadd78f2 --- /dev/null +++ b/website/src/pages/vi/token-api/guides/_meta.js @@ -0,0 +1,4 @@ +export default { + gpt: '', + 'upgrade-to-v1': '', +} diff --git a/website/src/pages/vi/token-api/guides/gpt.mdx b/website/src/pages/vi/token-api/guides/gpt.mdx new file mode 100644 index 000000000000..564d013dea20 --- /dev/null +++ b/website/src/pages/vi/token-api/guides/gpt.mdx @@ -0,0 +1,121 @@ +--- +title: How the Token API Powers Custom GPTs +sidebarTitle: Create Custom GPTs +--- + +## Overview + +The Token API is a pre-indexed blockchain data service that provides real-time access to token balances, metadata, prices, liquidity, and volume across multiple chains. Developers use its REST endpoints to build wallets, trading dashboards, DeFi analytics, and AI systems without maintaining their own indexing stack. Custom GPTs can connect directly to the Token API's OpenAPI schema. + +The Token API enables developers to build **Custom GPTs** to reason over live blockchain data inside ChatGPT that can reason over and respond with live blockchain data directly inside ChatGPT. + +## What the Token API Enables in Custom GPTs + +When a Custom GPT is wired to the Token API, it gains access to a machine-readable schema and authenticated endpoints. Developers can use this to: + +- **Query real-time onchain data**: Balances, token prices, liquidity, and transaction history. +- **Automate domain-specific tasks**: Portfolio tracking, accounting, reconciliation, and market analysis. +- **Power AI agents with verifiable blockchain context**: Use the same data sources dapps rely on. + +Because the Token API provides a machine-readable schema and authenticated requests, it serves as a structured data layer that enables GPT-5 agents to combine natural language reasoning with live onchain data from The Graph. + +## When to Use the Token API for Custom GPTs + +Use the Token API when your GPT needs repeatable, domain-specific behavior grounded in blockchain data. This is most effective when the GPT performs the same type of task frequently or enforces a workflow you define. For one-off or exploratory questions, standard ChatGPT prompts are sufficient. + +## Choosing a Use Case + +Start with a clear, narrow objective, then expand as needed. Common patterns include: + +- **Accounting GPT**: Onchain accounting, tax tagging, and portfolio reconciliation. +- **Trading GPT**: Liquidity, pricing, and volume analysis for trading strategies. +- **Protocol Tracking GPT**: Real-time monitoring of transaction activity and liquidity pools. + +A focused initial goal such as “Retrieve token balances and prices for a wallet” makes it easier to configure reliable behavior before adding complex workflows. + +## Requirements + +| Requirement | Description | +| ---------------------- | -------------------------------------------------------- | +| ChatGPT 5 | Custom GPT creation requires GPT-5 tier or Pro. | +| Token API Subscription | Sign up at [The Graph Market](https://thegraph.market./) | +| Token API Key | Available in your dashboard as the Authentication JWT. | + +## Setting Up a Custom GPT + +Below is an explanatory outline of what happens during setup. This section provides conceptual understanding. + +### Create Custom GPT + +1. Visit chat.openai.com/gpts in your browser. 2, Click Create (top right). +2. Under Configure (in the top left panel), set up your GPT's personality and scope. + +### Configure Your GPT + +You define the GPT's role, scope, and metadata so it knows what it is designed to do. This includes: + +- **Name and Description**: Helps users discover your GPT. + - For example: **Name**: Token Tracker GPT **Description**: An onchain analytics assistant that retrieves live token balances, prices, and liquidity data using The Graph's Token API. +- **Instructions**: Tells the GPT what tasks it should perform using the Token API. + - For example: You are a blockchain data assistant retrieving onchain token data from The Graph's Token API. Use endpoints to fetch balances, liquidity, and price history across EVM chains. Present results in tables with token symbols, prices, and USD values. +- **Knowledge**: Optional context files such as wallet references, accounting rules, or code snippets. +- **New Action**: At the bottom, click “Create new action” to connect your GPT to the Token API. + +### Connect the Token API + +To enable live blockchain queries inside ChatGPT, you connect the GPT to the Token API through: + +#### Authentication + +1. Set Authentication to API Key → Bearer. +2. Open [The Graph Market](https://thegraph.market./) and copy your Authentication JWT from your dashboard. +3. Paste the token into the ChatGPT prompt where the field shows [HIDDEN]. + +#### Schema + +1. Above the Schema box, click Import from URL. +2. Paste: https://token-api.thegraph.com/openapi +3. Click Import. You'll now see endpoints like: + - `getV1EvmTokens` + - `getV1EvmDexes` + - `getV1EvmBalances` +4. Click Test on one (for example `getV1EvmDexes`) to verify connection. + +##### Privacy + +1. At the bottom, under Privacy, paste: https://pinax.network/en/legal/privacy + +### Privacy + +You can attach a privacy policy URL such as: https://pinax.network/en/legal/privacy + +## Example Prompt Patterns + +These examples help illustrate how a GPT reasons over Token API data. + +### Wallet and Portfolio + +Get the total USD balance for a wallet across multiple chains, returning token name, symbol, balance, and price. + +### Trading Analysis + +Compare USDC and DAI liquidity across Uniswap and Curve. Return the top 5 pools by TVL. + +### Accounting + +List all ERC-20 transfers for this address in the last 30 days. Group by token and total incoming/outgoing volume. + +## Best Practices + +| Tip | Why It Matters | +| --------------------------------- | ---------------------------------------------------------------------- | +| Scope your GPT narrowly first | Simplifies debugging and validates schema integration. | +| Use clear role instructions | Helps the GPT choose the right endpoints and avoid assumptions. | +| Name endpoints explicitly | Improves routing accuracy when fetching balances, prices, or DEX data. | +| Combine with code | Enables custom parsing or logic for complex workflows. | +| Add Subgraph or Substream context | Provides richer analytics when combined with Token API data. | + +## FAQs & Resources + +- Builders Office Hours (October 23, 2025) +- Watch the full session: https://x.com/i/broadcasts/1mrGmBzBarNJy diff --git a/website/src/pages/vi/token-api/guides/upgrade-to-v1.mdx b/website/src/pages/vi/token-api/guides/upgrade-to-v1.mdx new file mode 100644 index 000000000000..e2a7ccf973fa --- /dev/null +++ b/website/src/pages/vi/token-api/guides/upgrade-to-v1.mdx @@ -0,0 +1,346 @@ +--- +title: Upgrade to v1 +--- + +This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. + +**Note** + +- `EVM` = Ethereum Virtual Machine + +Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). + +- `SVM` = Solana Virtual Machine + +Used to describe endpoints supporting Solana (currently the only SVM chain supported). + +## 🔑 Breaking Changes Summary + +### 1. API Versioning + +All endpoints now use the `/v1` prefix. + +**Before:** + +``` +GET /balances/evm +GET /nft/items/contract/:contract/token_id/:token_id +``` + +**After:** + +``` +GET /v1/evm/balances +GET /v1/evm/nft/items +``` + +### 2. Route Structure Reorganization + +#### 2.1 EVM Endpoints + +Consolidated under `/v1/evm/*` + +| Old Endpoint | New Endpoint | +| ------------------------------------------------------ | ----------------------------- | +| `/balances/evm` | `/v1/evm/balances` | +| `/historical/balances/evm` | `/v1/evm/balances/historical` | +| `/holders/evm/:contract` | `/v1/evm/holders` | +| `/tokens/evm/:contract` | `/v1/evm/tokens` | +| `/transfers/evm` | `/v1/evm/transfers` | +| `/pools/evm` | `/v1/evm/pools` | +| `/swaps/evm` | `/v1/evm/swaps` | +| `/dexes/evm` | `/v1/evm/dexes` | +| `/ohlc/prices/evm/:contract` | _(removed)_ | +| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | +| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | +| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | +| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | +| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | +| `/nft/activities/evm` | `/v1/evm/nft/transfers` | +| `/nft/sales/evm` | `/v1/evm/nft/sales` | + +**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. + +**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. + +--- + +#### 2.2 New EVM native balances endpoint + +Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. + +Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. + +--- + +#### 2.3 SVM Endpoints + +Consolidated under `/v1/svm/*` + +| Old Endpoint | New Endpoint | +| ------------------------ | ------------------------- | +| `/balances/svm` | `/v1/svm/balances` | +| `/balances/native/svm` | `/v1/svm/balances/native` | +| `/holders/svm/:contract` | `/v1/svm/holders` | +| `/tokens/svm/:mint` | `/v1/svm/tokens` | +| `/transfers/svm` | `/v1/svm/transfers` | +| `/pools/svm` | `/v1/svm/pools` | +| `/swaps/svm` | `/v1/svm/swaps` | +| `/dexes/svm` | `/v1/svm/dexes` | +| `/owner/svm/:account` | `/v1/svm/owner` | +| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | + +## 📝 Parameter Changes + +### 3. Path Parameters → Query Parameters + +All path parameters have been moved to query parameters. + +**Before:** + +```bash +GET /balances/evm/:address +GET /holders/evm/:contract +GET /nft/items/evm/contract/:contract/token_id/:token_id +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0x... +GET /v1/evm/holders?network=mainnet&contract=0x... +GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 +``` + +### 4. Standardized Parameter Naming + +All query parameters have been standardized to use snake_case naming convention. + +| Old Parameter | New Parameter | Notes | +| --- | --- | --- | +| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | +| `anyAddress` | `address` | Matches either `from` or `to` address | +| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | +| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | +| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | +| `endTime` | `end_time` | Default: `9999999999` | +| - | `start_block` | New parameter, default: `0` | +| - | `end_block` | New parameter, default: `9999999999` | +| - | `include_null_balances` | New parameter, default: `false` | +| `tx_hash` | `transaction_id` | - | +| `token` | `input_token`, `output_token` | More explicit for pool queries | +| `pool` | `amm_pool` | - | +| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | + +**Important:** The `network_id` parameter has been renamed to `network`. + +**Important:** `matic` network has been renamed to `polygon`. + +### 5. Batched Parameters + +Many parameters now support batching - accepting single values or comma-separated strings. + +**Supported Batched Parameters:** + +- `address`, `from_address`, `to_address` +- `contract`, `token_id` +- `factory`, `pool` +- `owner`, `token_account`, `mint` +- `transaction_id`, `signature` + +**Examples:** + +```console +## Single value +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 + +## Comma-separated, single parameter +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 + +## Repeated parameter values +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +### 6. New Parameters + +#### `include_null_balances` + +Added to balance endpoints to optionally include zero/null balances. + +```bash +?include_null_balances=true +``` + +**Default:** `false` + +## 🔄 Response Changes + +### 7. Pagination Changes + +Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. + +**Before:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2, + "next_page": 3, + "total_pages": 10 + }, + "total_results": 1234 +} +``` + +**After:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2 + } +} +``` + +**Removed fields:** + +- `next_page` +- `total_pages` +- `total_results` + +**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. + +### 8. Removed Parameters + +The following deprecated parameters have been removed: + +- `orderBy` - Results are now ordered by timestamp/block by default +- `orderDirection` - Always descending (newest first) + +### 9. Cached Queries + +Queries are now cached on the ClickHouse side for better performance. + +You can specifically request to not use the cache by setting the `Cache-Control` header to `no-cache`. + +#### Example + +**Cache** + +```console +$ curl -s 'https://token-api.thegraph.com/v1/...' | jq .statistics +{ + "bytes_read": 221, + "rows_read": 1, + "elapsed": 0.002212065 +} +``` + +**No cache** + +```console +$ curl -s 'http://localhost:8000/v1/...' --header 'Cache-Control: no-cache' | jq .statistics +{ + "bytes_read": 14621174348, + "rows_read": 223244390, + "elapsed": 0.971064066 +} +``` + +## 📚 Example Migrations + +### Example 1: Get Token Balances + +**Before:** + +```bash +GET /token/balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +### Example 2: Get NFT Items + +**Before:** + +```bash +GET /nft/items/evm/contract/0xbd3531da5cf5857e7cfaa92426877b022e612cf8/token_id/5712?network_id=mainnet +``` + +**After:** + +```bash +GET /v1/evm/nft/items?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&token_id=5712 +``` + +### Example 3: Get Token Transfers with Time Filter + +**Before:** + +```bash +GET /token/transfers/evm?network_id=mainnet&from=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&startTime=1735689600&endTime=1767225600 +``` + +**After:** + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&start_time=1735689600&end_time=1767225600 +``` + +### Example 4: Get NFT Transfer Activities + +**Before:** + +```bash +GET /nft/activities/evm?network_id=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&anyAddress=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +**After:** + +```bash +GET /v1/evm/nft/transfers?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +### Example 5: Get Pool OHLC Data + +**Before:** + +```bash +GET /token/ohlc/pools/evm/0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640?network_id=mainnet&interval=1h&startTime=1735689600 +``` + +**After:** + +```bash +GET /v1/evm/pools/ohlc?network=mainnet&pool=0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640&interval=1h&start_time=1735689600 +``` + +### Example 6: Batched Query (New Feature) + +Query balances for multiple contracts in a single request: + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +Query transfers from multiple addresses: + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xabc...,0xdef...,0x123...&start_time=1735689600 +``` + +## ⚠️ Important Notes + +1. **Migration Notes:** The old endpoints were deprecated and removed on **October 30, 2025**. Please ensure all integrations have been migrated to the new Token API v1 endpoints. + +2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. + +3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. + +4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/vi/token-api/svm-tokens/_meta.js b/website/src/pages/vi/token-api/svm-tokens/_meta.js index 1de31437004c..001e2d43341a 100644 --- a/website/src/pages/vi/token-api/svm-tokens/_meta.js +++ b/website/src/pages/vi/token-api/svm-tokens/_meta.js @@ -1,6 +1,6 @@ export default { - tokens: '', transfers: '', + tokens: '', balances: '', 'balances-native': '', holders: '', diff --git a/website/src/pages/vi/token-api/upgrade-to-v1.mdx b/website/src/pages/vi/token-api/upgrade-to-v1.mdx deleted file mode 100644 index fbe09101eaa5..000000000000 --- a/website/src/pages/vi/token-api/upgrade-to-v1.mdx +++ /dev/null @@ -1,254 +0,0 @@ ---- -title: Upgrade to v1 ---- - -This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. - -**Note** - -- `EVM` = Ethereum Virtual Machine - -Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). - -- `SVM` = Solana Virtual Machine - -Used to describe endpoints supporting Solana (currently the only SVM chain supported). - -## 🔑 Breaking Changes Summary - -### 1. **API Versioning** - -All endpoints now use the `/v1` prefix. - -**Before:** - -``` -GET /balances/evm -GET /nft/items/contract/:contract/token_id/:token_id -``` - -**After:** - -``` -GET /v1/evm/balances -GET /v1/evm/nft/items -``` - -### 2. **Route Structure Reorganization** - -#### 2.1 EVM Endpoints - -Consolidated under `/v1/evm/*` - -| Old Endpoint | New Endpoint | -| ------------------------------------------------------ | ----------------------------- | -| `/balances/evm` | `/v1/evm/balances` | -| `/historical/balances/evm` | `/v1/evm/balances/historical` | -| `/holders/evm/:contract` | `/v1/evm/holders` | -| `/tokens/evm/:contract` | `/v1/evm/tokens` | -| `/transfers/evm` | `/v1/evm/transfers` | -| `/pools/evm` | `/v1/evm/pools` | -| `/swaps/evm` | `/v1/evm/swaps` | -| `/dexes/evm` | `/v1/evm/dexes` | -| `/ohlc/prices/evm/:contract` | _(removed)_ | -| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | -| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | -| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | -| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | -| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | -| `/nft/activities/evm` | `/v1/evm/nft/transfers` | -| `/nft/sales/evm` | `/v1/evm/nft/sales` | - -**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. - -**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. - ---- - -#### 2.2 New EVM native balances endpoint - -Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. - -Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. - ---- - -#### 2.3 SVM Endpoints - -Consolidated under `/v1/svm/*` - -| Old Endpoint | New Endpoint | -| ------------------------ | ------------------------- | -| `/balances/svm` | `/v1/svm/balances` | -| `/balances/native/svm` | `/v1/svm/balances/native` | -| `/holders/svm/:contract` | `/v1/svm/holders` | -| `/tokens/svm/:mint` | `/v1/svm/tokens` | -| `/transfers/svm` | `/v1/svm/transfers` | -| `/pools/svm` | `/v1/svm/pools` | -| `/swaps/svm` | `/v1/svm/swaps` | -| `/dexes/svm` | `/v1/svm/dexes` | -| `/owner/svm/:account` | `/v1/svm/owner` | -| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | - -## 📝 Parameter Changes - -### 3. **Path Parameters → Query Parameters** - -All path parameters have been moved to query parameters. - -**Before:** - -```bash -GET /balances/evm/:address -GET /holders/evm/:contract -GET /nft/items/evm/contract/:contract/token_id/:token_id -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0x... -GET /v1/evm/holders?network=mainnet&contract=0x... -GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 -``` - -### 4. **Standardized Parameter Naming** - -All query parameters have been standardized to use snake_case naming convention. - -| Old Parameter | New Parameter | Notes | -| --- | --- | --- | -| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | -| `anyAddress` | `address` | Matches either `from` or `to` address | -| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | -| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | -| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | -| `endTime` | `end_time` | Default: `9999999999` | -| - | `start_block` | New parameter, default: `0` | -| - | `end_block` | New parameter, default: `9999999999` | -| - | `include_null_balances` | New parameter, default: `false` | -| `tx_hash` | `transaction_id` | - | -| `token` | `input_token`, `output_token` | More explicit for pool queries | -| `pool` | `amm_pool` | - | -| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | - -**Important:** The `network_id` parameter has been renamed to `network`. - -**Important:** `matic` network has been renamed to `polygon`. - -### 5. **Batched Parameters** - -Many parameters now support batching - accepting single values or comma-separated strings. - -**Supported Batched Parameters:** - -- `address`, `from_address`, `to_address` -- `contract`, `token_id` -- `factory`, `pool` -- `owner`, `token_account`, `mint` -- `transaction_id`, `signature` - -**Examples:** - -```console -# Single value -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 - -# Comma-separated, single parameter -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 - -# Repeated parameter values -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -### 6. **New Parameters** - -#### `include_null_balances` - -Added to balance endpoints to optionally include zero/null balances. - -```bash -?include_null_balances=true -``` - -**Default:** `false` - -## 🔄 Response Changes - -### 7. **Pagination Changes** - -Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. - -**Before:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2, - "next_page": 3, - "total_pages": 10 - }, - "total_results": 1234 -} -``` - -**After:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2 - } -} -``` - -**Removed fields:** - -- `next_page` -- `total_pages` -- `total_results` - -**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. - -### 8. **Removed Parameters** - -The following deprecated parameters have been removed: - -- `orderBy` - Results are now ordered by timestamp/block by default -- `orderDirection` - Always descending (newest first) - -## 📚 Example Migrations - -### Old vs New: Get Token Balances - -**Before:** - -```bash -GET /balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -### New Feature: Batched Queries - -Query balances for multiple contracts in a single request: - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -## ⚠️ Important Notes - -1. **Backward Compatibility:** The old endpoints are deprecated and will be removed in the future. Migrate by **Oct 30, 2025**. - -2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. - -3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. - -4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/zh/token-api/_meta.js b/website/src/pages/zh/token-api/_meta.js index a8624da52e7f..853f9dc09031 100644 --- a/website/src/pages/zh/token-api/_meta.js +++ b/website/src/pages/zh/token-api/_meta.js @@ -2,15 +2,15 @@ import titles from './_meta-titles.json' export default { 'quick-start': '', + 'svm-tokens': titles['svm-tokens'] ?? '', + 'svm-dexs': titles['svm-dexs'] ?? '', 'evm-tokens': titles['evm-tokens'] ?? '', 'evm-dexs': titles['evm-dexs'] ?? '', 'evm-nfts': titles['evm-nfts'] ?? '', - 'svm-tokens': titles['svm-tokens'] ?? '', - 'svm-dexs': titles['svm-dexs'] ?? '', 'tvm-tokens': titles['tvm-tokens'] ?? '', 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', 'endpoint-pricing': '', + guides: 'Guides', faq: '', - 'upgrade-to-v1': '', } diff --git a/website/src/pages/zh/token-api/endpoints/_meta.js b/website/src/pages/zh/token-api/endpoints/_meta.js new file mode 100644 index 000000000000..5d419807937c --- /dev/null +++ b/website/src/pages/zh/token-api/endpoints/_meta.js @@ -0,0 +1,4 @@ +export default { + 'endpoint-pricing': '', + 'endpoint-support': '', +} diff --git a/website/src/pages/zh/token-api/endpoint-pricing.mdx b/website/src/pages/zh/token-api/endpoints/endpoint-pricing.mdx similarity index 100% rename from website/src/pages/zh/token-api/endpoint-pricing.mdx rename to website/src/pages/zh/token-api/endpoints/endpoint-pricing.mdx diff --git a/website/src/pages/zh/token-api/endpoints/endpoint-support.msx b/website/src/pages/zh/token-api/endpoints/endpoint-support.msx new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/website/src/pages/zh/token-api/guides/_meta-titles.json b/website/src/pages/zh/token-api/guides/_meta-titles.json new file mode 100644 index 000000000000..cd93dcc0fc0b --- /dev/null +++ b/website/src/pages/zh/token-api/guides/_meta-titles.json @@ -0,0 +1,4 @@ +{ + "gpt": "Create Custom GPTS", + "upgrade-to-v1": "" +} diff --git a/website/src/pages/zh/token-api/guides/_meta.js b/website/src/pages/zh/token-api/guides/_meta.js new file mode 100644 index 000000000000..e5aaaadd78f2 --- /dev/null +++ b/website/src/pages/zh/token-api/guides/_meta.js @@ -0,0 +1,4 @@ +export default { + gpt: '', + 'upgrade-to-v1': '', +} diff --git a/website/src/pages/zh/token-api/guides/gpt.mdx b/website/src/pages/zh/token-api/guides/gpt.mdx new file mode 100644 index 000000000000..564d013dea20 --- /dev/null +++ b/website/src/pages/zh/token-api/guides/gpt.mdx @@ -0,0 +1,121 @@ +--- +title: How the Token API Powers Custom GPTs +sidebarTitle: Create Custom GPTs +--- + +## Overview + +The Token API is a pre-indexed blockchain data service that provides real-time access to token balances, metadata, prices, liquidity, and volume across multiple chains. Developers use its REST endpoints to build wallets, trading dashboards, DeFi analytics, and AI systems without maintaining their own indexing stack. Custom GPTs can connect directly to the Token API's OpenAPI schema. + +The Token API enables developers to build **Custom GPTs** to reason over live blockchain data inside ChatGPT that can reason over and respond with live blockchain data directly inside ChatGPT. + +## What the Token API Enables in Custom GPTs + +When a Custom GPT is wired to the Token API, it gains access to a machine-readable schema and authenticated endpoints. Developers can use this to: + +- **Query real-time onchain data**: Balances, token prices, liquidity, and transaction history. +- **Automate domain-specific tasks**: Portfolio tracking, accounting, reconciliation, and market analysis. +- **Power AI agents with verifiable blockchain context**: Use the same data sources dapps rely on. + +Because the Token API provides a machine-readable schema and authenticated requests, it serves as a structured data layer that enables GPT-5 agents to combine natural language reasoning with live onchain data from The Graph. + +## When to Use the Token API for Custom GPTs + +Use the Token API when your GPT needs repeatable, domain-specific behavior grounded in blockchain data. This is most effective when the GPT performs the same type of task frequently or enforces a workflow you define. For one-off or exploratory questions, standard ChatGPT prompts are sufficient. + +## Choosing a Use Case + +Start with a clear, narrow objective, then expand as needed. Common patterns include: + +- **Accounting GPT**: Onchain accounting, tax tagging, and portfolio reconciliation. +- **Trading GPT**: Liquidity, pricing, and volume analysis for trading strategies. +- **Protocol Tracking GPT**: Real-time monitoring of transaction activity and liquidity pools. + +A focused initial goal such as “Retrieve token balances and prices for a wallet” makes it easier to configure reliable behavior before adding complex workflows. + +## Requirements + +| Requirement | Description | +| ---------------------- | -------------------------------------------------------- | +| ChatGPT 5 | Custom GPT creation requires GPT-5 tier or Pro. | +| Token API Subscription | Sign up at [The Graph Market](https://thegraph.market./) | +| Token API Key | Available in your dashboard as the Authentication JWT. | + +## Setting Up a Custom GPT + +Below is an explanatory outline of what happens during setup. This section provides conceptual understanding. + +### Create Custom GPT + +1. Visit chat.openai.com/gpts in your browser. 2, Click Create (top right). +2. Under Configure (in the top left panel), set up your GPT's personality and scope. + +### Configure Your GPT + +You define the GPT's role, scope, and metadata so it knows what it is designed to do. This includes: + +- **Name and Description**: Helps users discover your GPT. + - For example: **Name**: Token Tracker GPT **Description**: An onchain analytics assistant that retrieves live token balances, prices, and liquidity data using The Graph's Token API. +- **Instructions**: Tells the GPT what tasks it should perform using the Token API. + - For example: You are a blockchain data assistant retrieving onchain token data from The Graph's Token API. Use endpoints to fetch balances, liquidity, and price history across EVM chains. Present results in tables with token symbols, prices, and USD values. +- **Knowledge**: Optional context files such as wallet references, accounting rules, or code snippets. +- **New Action**: At the bottom, click “Create new action” to connect your GPT to the Token API. + +### Connect the Token API + +To enable live blockchain queries inside ChatGPT, you connect the GPT to the Token API through: + +#### Authentication + +1. Set Authentication to API Key → Bearer. +2. Open [The Graph Market](https://thegraph.market./) and copy your Authentication JWT from your dashboard. +3. Paste the token into the ChatGPT prompt where the field shows [HIDDEN]. + +#### Schema + +1. Above the Schema box, click Import from URL. +2. Paste: https://token-api.thegraph.com/openapi +3. Click Import. You'll now see endpoints like: + - `getV1EvmTokens` + - `getV1EvmDexes` + - `getV1EvmBalances` +4. Click Test on one (for example `getV1EvmDexes`) to verify connection. + +##### Privacy + +1. At the bottom, under Privacy, paste: https://pinax.network/en/legal/privacy + +### Privacy + +You can attach a privacy policy URL such as: https://pinax.network/en/legal/privacy + +## Example Prompt Patterns + +These examples help illustrate how a GPT reasons over Token API data. + +### Wallet and Portfolio + +Get the total USD balance for a wallet across multiple chains, returning token name, symbol, balance, and price. + +### Trading Analysis + +Compare USDC and DAI liquidity across Uniswap and Curve. Return the top 5 pools by TVL. + +### Accounting + +List all ERC-20 transfers for this address in the last 30 days. Group by token and total incoming/outgoing volume. + +## Best Practices + +| Tip | Why It Matters | +| --------------------------------- | ---------------------------------------------------------------------- | +| Scope your GPT narrowly first | Simplifies debugging and validates schema integration. | +| Use clear role instructions | Helps the GPT choose the right endpoints and avoid assumptions. | +| Name endpoints explicitly | Improves routing accuracy when fetching balances, prices, or DEX data. | +| Combine with code | Enables custom parsing or logic for complex workflows. | +| Add Subgraph or Substream context | Provides richer analytics when combined with Token API data. | + +## FAQs & Resources + +- Builders Office Hours (October 23, 2025) +- Watch the full session: https://x.com/i/broadcasts/1mrGmBzBarNJy diff --git a/website/src/pages/zh/token-api/guides/upgrade-to-v1.mdx b/website/src/pages/zh/token-api/guides/upgrade-to-v1.mdx new file mode 100644 index 000000000000..e2a7ccf973fa --- /dev/null +++ b/website/src/pages/zh/token-api/guides/upgrade-to-v1.mdx @@ -0,0 +1,346 @@ +--- +title: Upgrade to v1 +--- + +This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. + +**Note** + +- `EVM` = Ethereum Virtual Machine + +Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). + +- `SVM` = Solana Virtual Machine + +Used to describe endpoints supporting Solana (currently the only SVM chain supported). + +## 🔑 Breaking Changes Summary + +### 1. API Versioning + +All endpoints now use the `/v1` prefix. + +**Before:** + +``` +GET /balances/evm +GET /nft/items/contract/:contract/token_id/:token_id +``` + +**After:** + +``` +GET /v1/evm/balances +GET /v1/evm/nft/items +``` + +### 2. Route Structure Reorganization + +#### 2.1 EVM Endpoints + +Consolidated under `/v1/evm/*` + +| Old Endpoint | New Endpoint | +| ------------------------------------------------------ | ----------------------------- | +| `/balances/evm` | `/v1/evm/balances` | +| `/historical/balances/evm` | `/v1/evm/balances/historical` | +| `/holders/evm/:contract` | `/v1/evm/holders` | +| `/tokens/evm/:contract` | `/v1/evm/tokens` | +| `/transfers/evm` | `/v1/evm/transfers` | +| `/pools/evm` | `/v1/evm/pools` | +| `/swaps/evm` | `/v1/evm/swaps` | +| `/dexes/evm` | `/v1/evm/dexes` | +| `/ohlc/prices/evm/:contract` | _(removed)_ | +| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | +| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | +| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | +| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | +| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | +| `/nft/activities/evm` | `/v1/evm/nft/transfers` | +| `/nft/sales/evm` | `/v1/evm/nft/sales` | + +**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. + +**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. + +--- + +#### 2.2 New EVM native balances endpoint + +Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. + +Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. + +--- + +#### 2.3 SVM Endpoints + +Consolidated under `/v1/svm/*` + +| Old Endpoint | New Endpoint | +| ------------------------ | ------------------------- | +| `/balances/svm` | `/v1/svm/balances` | +| `/balances/native/svm` | `/v1/svm/balances/native` | +| `/holders/svm/:contract` | `/v1/svm/holders` | +| `/tokens/svm/:mint` | `/v1/svm/tokens` | +| `/transfers/svm` | `/v1/svm/transfers` | +| `/pools/svm` | `/v1/svm/pools` | +| `/swaps/svm` | `/v1/svm/swaps` | +| `/dexes/svm` | `/v1/svm/dexes` | +| `/owner/svm/:account` | `/v1/svm/owner` | +| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | + +## 📝 Parameter Changes + +### 3. Path Parameters → Query Parameters + +All path parameters have been moved to query parameters. + +**Before:** + +```bash +GET /balances/evm/:address +GET /holders/evm/:contract +GET /nft/items/evm/contract/:contract/token_id/:token_id +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0x... +GET /v1/evm/holders?network=mainnet&contract=0x... +GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 +``` + +### 4. Standardized Parameter Naming + +All query parameters have been standardized to use snake_case naming convention. + +| Old Parameter | New Parameter | Notes | +| --- | --- | --- | +| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | +| `anyAddress` | `address` | Matches either `from` or `to` address | +| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | +| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | +| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | +| `endTime` | `end_time` | Default: `9999999999` | +| - | `start_block` | New parameter, default: `0` | +| - | `end_block` | New parameter, default: `9999999999` | +| - | `include_null_balances` | New parameter, default: `false` | +| `tx_hash` | `transaction_id` | - | +| `token` | `input_token`, `output_token` | More explicit for pool queries | +| `pool` | `amm_pool` | - | +| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | + +**Important:** The `network_id` parameter has been renamed to `network`. + +**Important:** `matic` network has been renamed to `polygon`. + +### 5. Batched Parameters + +Many parameters now support batching - accepting single values or comma-separated strings. + +**Supported Batched Parameters:** + +- `address`, `from_address`, `to_address` +- `contract`, `token_id` +- `factory`, `pool` +- `owner`, `token_account`, `mint` +- `transaction_id`, `signature` + +**Examples:** + +```console +## Single value +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 + +## Comma-separated, single parameter +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 + +## Repeated parameter values +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +### 6. New Parameters + +#### `include_null_balances` + +Added to balance endpoints to optionally include zero/null balances. + +```bash +?include_null_balances=true +``` + +**Default:** `false` + +## 🔄 Response Changes + +### 7. Pagination Changes + +Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. + +**Before:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2, + "next_page": 3, + "total_pages": 10 + }, + "total_results": 1234 +} +``` + +**After:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2 + } +} +``` + +**Removed fields:** + +- `next_page` +- `total_pages` +- `total_results` + +**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. + +### 8. Removed Parameters + +The following deprecated parameters have been removed: + +- `orderBy` - Results are now ordered by timestamp/block by default +- `orderDirection` - Always descending (newest first) + +### 9. Cached Queries + +Queries are now cached on the ClickHouse side for better performance. + +You can specifically request to not use the cache by setting the `Cache-Control` header to `no-cache`. + +#### Example + +**Cache** + +```console +$ curl -s 'https://token-api.thegraph.com/v1/...' | jq .statistics +{ + "bytes_read": 221, + "rows_read": 1, + "elapsed": 0.002212065 +} +``` + +**No cache** + +```console +$ curl -s 'http://localhost:8000/v1/...' --header 'Cache-Control: no-cache' | jq .statistics +{ + "bytes_read": 14621174348, + "rows_read": 223244390, + "elapsed": 0.971064066 +} +``` + +## 📚 Example Migrations + +### Example 1: Get Token Balances + +**Before:** + +```bash +GET /token/balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +### Example 2: Get NFT Items + +**Before:** + +```bash +GET /nft/items/evm/contract/0xbd3531da5cf5857e7cfaa92426877b022e612cf8/token_id/5712?network_id=mainnet +``` + +**After:** + +```bash +GET /v1/evm/nft/items?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&token_id=5712 +``` + +### Example 3: Get Token Transfers with Time Filter + +**Before:** + +```bash +GET /token/transfers/evm?network_id=mainnet&from=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&startTime=1735689600&endTime=1767225600 +``` + +**After:** + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&start_time=1735689600&end_time=1767225600 +``` + +### Example 4: Get NFT Transfer Activities + +**Before:** + +```bash +GET /nft/activities/evm?network_id=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&anyAddress=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +**After:** + +```bash +GET /v1/evm/nft/transfers?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +### Example 5: Get Pool OHLC Data + +**Before:** + +```bash +GET /token/ohlc/pools/evm/0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640?network_id=mainnet&interval=1h&startTime=1735689600 +``` + +**After:** + +```bash +GET /v1/evm/pools/ohlc?network=mainnet&pool=0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640&interval=1h&start_time=1735689600 +``` + +### Example 6: Batched Query (New Feature) + +Query balances for multiple contracts in a single request: + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +Query transfers from multiple addresses: + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xabc...,0xdef...,0x123...&start_time=1735689600 +``` + +## ⚠️ Important Notes + +1. **Migration Notes:** The old endpoints were deprecated and removed on **October 30, 2025**. Please ensure all integrations have been migrated to the new Token API v1 endpoints. + +2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. + +3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. + +4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/zh/token-api/svm-tokens/_meta.js b/website/src/pages/zh/token-api/svm-tokens/_meta.js index 1de31437004c..001e2d43341a 100644 --- a/website/src/pages/zh/token-api/svm-tokens/_meta.js +++ b/website/src/pages/zh/token-api/svm-tokens/_meta.js @@ -1,6 +1,6 @@ export default { - tokens: '', transfers: '', + tokens: '', balances: '', 'balances-native': '', holders: '', diff --git a/website/src/pages/zh/token-api/upgrade-to-v1.mdx b/website/src/pages/zh/token-api/upgrade-to-v1.mdx deleted file mode 100644 index fbe09101eaa5..000000000000 --- a/website/src/pages/zh/token-api/upgrade-to-v1.mdx +++ /dev/null @@ -1,254 +0,0 @@ ---- -title: Upgrade to v1 ---- - -This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. - -**Note** - -- `EVM` = Ethereum Virtual Machine - -Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). - -- `SVM` = Solana Virtual Machine - -Used to describe endpoints supporting Solana (currently the only SVM chain supported). - -## 🔑 Breaking Changes Summary - -### 1. **API Versioning** - -All endpoints now use the `/v1` prefix. - -**Before:** - -``` -GET /balances/evm -GET /nft/items/contract/:contract/token_id/:token_id -``` - -**After:** - -``` -GET /v1/evm/balances -GET /v1/evm/nft/items -``` - -### 2. **Route Structure Reorganization** - -#### 2.1 EVM Endpoints - -Consolidated under `/v1/evm/*` - -| Old Endpoint | New Endpoint | -| ------------------------------------------------------ | ----------------------------- | -| `/balances/evm` | `/v1/evm/balances` | -| `/historical/balances/evm` | `/v1/evm/balances/historical` | -| `/holders/evm/:contract` | `/v1/evm/holders` | -| `/tokens/evm/:contract` | `/v1/evm/tokens` | -| `/transfers/evm` | `/v1/evm/transfers` | -| `/pools/evm` | `/v1/evm/pools` | -| `/swaps/evm` | `/v1/evm/swaps` | -| `/dexes/evm` | `/v1/evm/dexes` | -| `/ohlc/prices/evm/:contract` | _(removed)_ | -| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | -| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | -| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | -| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | -| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | -| `/nft/activities/evm` | `/v1/evm/nft/transfers` | -| `/nft/sales/evm` | `/v1/evm/nft/sales` | - -**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. - -**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. - ---- - -#### 2.2 New EVM native balances endpoint - -Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. - -Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. - ---- - -#### 2.3 SVM Endpoints - -Consolidated under `/v1/svm/*` - -| Old Endpoint | New Endpoint | -| ------------------------ | ------------------------- | -| `/balances/svm` | `/v1/svm/balances` | -| `/balances/native/svm` | `/v1/svm/balances/native` | -| `/holders/svm/:contract` | `/v1/svm/holders` | -| `/tokens/svm/:mint` | `/v1/svm/tokens` | -| `/transfers/svm` | `/v1/svm/transfers` | -| `/pools/svm` | `/v1/svm/pools` | -| `/swaps/svm` | `/v1/svm/swaps` | -| `/dexes/svm` | `/v1/svm/dexes` | -| `/owner/svm/:account` | `/v1/svm/owner` | -| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | - -## 📝 Parameter Changes - -### 3. **Path Parameters → Query Parameters** - -All path parameters have been moved to query parameters. - -**Before:** - -```bash -GET /balances/evm/:address -GET /holders/evm/:contract -GET /nft/items/evm/contract/:contract/token_id/:token_id -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0x... -GET /v1/evm/holders?network=mainnet&contract=0x... -GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 -``` - -### 4. **Standardized Parameter Naming** - -All query parameters have been standardized to use snake_case naming convention. - -| Old Parameter | New Parameter | Notes | -| --- | --- | --- | -| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | -| `anyAddress` | `address` | Matches either `from` or `to` address | -| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | -| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | -| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | -| `endTime` | `end_time` | Default: `9999999999` | -| - | `start_block` | New parameter, default: `0` | -| - | `end_block` | New parameter, default: `9999999999` | -| - | `include_null_balances` | New parameter, default: `false` | -| `tx_hash` | `transaction_id` | - | -| `token` | `input_token`, `output_token` | More explicit for pool queries | -| `pool` | `amm_pool` | - | -| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | - -**Important:** The `network_id` parameter has been renamed to `network`. - -**Important:** `matic` network has been renamed to `polygon`. - -### 5. **Batched Parameters** - -Many parameters now support batching - accepting single values or comma-separated strings. - -**Supported Batched Parameters:** - -- `address`, `from_address`, `to_address` -- `contract`, `token_id` -- `factory`, `pool` -- `owner`, `token_account`, `mint` -- `transaction_id`, `signature` - -**Examples:** - -```console -# Single value -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 - -# Comma-separated, single parameter -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 - -# Repeated parameter values -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -### 6. **New Parameters** - -#### `include_null_balances` - -Added to balance endpoints to optionally include zero/null balances. - -```bash -?include_null_balances=true -``` - -**Default:** `false` - -## 🔄 Response Changes - -### 7. **Pagination Changes** - -Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. - -**Before:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2, - "next_page": 3, - "total_pages": 10 - }, - "total_results": 1234 -} -``` - -**After:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2 - } -} -``` - -**Removed fields:** - -- `next_page` -- `total_pages` -- `total_results` - -**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. - -### 8. **Removed Parameters** - -The following deprecated parameters have been removed: - -- `orderBy` - Results are now ordered by timestamp/block by default -- `orderDirection` - Always descending (newest first) - -## 📚 Example Migrations - -### Old vs New: Get Token Balances - -**Before:** - -```bash -GET /balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -### New Feature: Batched Queries - -Query balances for multiple contracts in a single request: - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -## ⚠️ Important Notes - -1. **Backward Compatibility:** The old endpoints are deprecated and will be removed in the future. Migrate by **Oct 30, 2025**. - -2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. - -3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. - -4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. From 530b653ae6344f7230ee1271994084b3c31ef73f Mon Sep 17 00:00:00 2001 From: nsjames Date: Thu, 27 Nov 2025 09:28:05 -0500 Subject: [PATCH 02/14] remove bun lock --- website/bun.lock | 2946 ---------------------------------------------- 1 file changed, 2946 deletions(-) delete mode 100644 website/bun.lock diff --git a/website/bun.lock b/website/bun.lock deleted file mode 100644 index 9a3bf41821e2..000000000000 --- a/website/bun.lock +++ /dev/null @@ -1,2946 +0,0 @@ -{ - "lockfileVersion": 1, - "workspaces": { - "": { - "name": "@graphprotocol/docs", - "dependencies": { - "@docsearch/react": "^3.9.0", - "@edgeandnode/common": "^7.0.4", - "@edgeandnode/gds": "^6.7.8", - "@edgeandnode/go": "^10.3.12", - "@emotion/react": "^11.14.0", - "@graphprotocol/contracts": "^7.3.0", - "@pinax/graph-networks-registry": "^0.7.1", - "@react-hookz/web": "^25.2.0", - "@readme/httpsnippet": "^11.0.0", - "@readme/openapi-parser": "^4.1.2", - "fetch-har": "^11.1.1", - "hast": "^1.0.0", - "hast-util-whitespace": "^3.0.0", - "lodash": "^4.17.21", - "mdast-util-mdx-jsx": "^3.2.0", - "mdast-util-to-hast": "^13.2.0", - "mixpanel-browser": "^2.72.0", - "motion": "^12.23.24", - "next": "^14.2.33", - "next-seo": "^6.8.0", - "next-sitemap": "^4.2.3", - "nextra": "^3.3.1", - "openapi-types": "^12.1.3", - "react": "^18.3.1", - "react-dom": "^18.3.1", - "react-ga4": "^2.1.0", - "react-intersection-observer": "^9.16.0", - "react-markdown": "^10.1.0", - "rehype-mdx-code-props": "^3.0.1", - "rehype-raw": "^7.0.0", - "remark-gfm": "^4.0.1", - "theme-ui": "^0.17.2", - "unist-util-visit": "^5.0.0", - "vfile": "^6.0.3", - "zod": "^3.25.76", - }, - "devDependencies": { - "@types/hast": "^3.0.4", - "@types/lodash": "^4.17.20", - "@types/mdast": "^4.0.4", - "@types/mixpanel-browser": "^2.66.0", - "@types/node": "^22.19.1", - "@types/react": "^18.3.27", - "@types/react-dom": "^18.3.7", - "@types/vfile": "^4.0.0", - "autoprefixer": "^10.4.22", - "fast-xml-parser": "^5.3.2", - "postcss": "^8.5.6", - "tailwindcss": "^3.4.18", - "tsup": "^8.5.1", - "tsx": "4.20.4", - }, - }, - }, - "packages": { - "@adraffy/ens-normalize": ["@adraffy/ens-normalize@1.10.1", "", {}, "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw=="], - - "@algolia/abtesting": ["@algolia/abtesting@1.11.0", "", { "dependencies": { "@algolia/client-common": "5.45.0", "@algolia/requester-browser-xhr": "5.45.0", "@algolia/requester-fetch": "5.45.0", "@algolia/requester-node-http": "5.45.0" } }, "sha512-a7oQ8dwiyoyVmzLY0FcuBqyqcNSq78qlcOtHmNBumRlHCSnXDcuoYGBGPN1F6n8JoGhviDDsIaF/oQrzTzs6Lg=="], - - "@algolia/autocomplete-core": ["@algolia/autocomplete-core@1.17.9", "", { "dependencies": { "@algolia/autocomplete-plugin-algolia-insights": "1.17.9", "@algolia/autocomplete-shared": "1.17.9" } }, "sha512-O7BxrpLDPJWWHv/DLA9DRFWs+iY1uOJZkqUwjS5HSZAGcl0hIVCQ97LTLewiZmZ402JYUrun+8NqFP+hCknlbQ=="], - - "@algolia/autocomplete-plugin-algolia-insights": ["@algolia/autocomplete-plugin-algolia-insights@1.17.9", "", { "dependencies": { "@algolia/autocomplete-shared": "1.17.9" }, "peerDependencies": { "search-insights": ">= 1 < 3" } }, "sha512-u1fEHkCbWF92DBeB/KHeMacsjsoI0wFhjZtlCq2ddZbAehshbZST6Hs0Avkc0s+4UyBGbMDnSuXHLuvRWK5iDQ=="], - - "@algolia/autocomplete-preset-algolia": ["@algolia/autocomplete-preset-algolia@1.17.9", "", { "dependencies": { "@algolia/autocomplete-shared": "1.17.9" }, "peerDependencies": { "@algolia/client-search": ">= 4.9.1 < 6", "algoliasearch": ">= 4.9.1 < 6" } }, "sha512-Na1OuceSJeg8j7ZWn5ssMu/Ax3amtOwk76u4h5J4eK2Nx2KB5qt0Z4cOapCsxot9VcEN11ADV5aUSlQF4RhGjQ=="], - - "@algolia/autocomplete-shared": ["@algolia/autocomplete-shared@1.17.9", "", { "peerDependencies": { "@algolia/client-search": ">= 4.9.1 < 6", "algoliasearch": ">= 4.9.1 < 6" } }, "sha512-iDf05JDQ7I0b7JEA/9IektxN/80a2MZ1ToohfmNS3rfeuQnIKI3IJlIafD0xu4StbtQTghx9T3Maa97ytkXenQ=="], - - "@algolia/client-abtesting": ["@algolia/client-abtesting@5.45.0", "", { "dependencies": { "@algolia/client-common": "5.45.0", "@algolia/requester-browser-xhr": "5.45.0", "@algolia/requester-fetch": "5.45.0", "@algolia/requester-node-http": "5.45.0" } }, "sha512-WTW0VZA8xHMbzuQD5b3f41ovKZ0MNTIXkWfm0F2PU+XGcLxmxX15UqODzF2sWab0vSbi3URM1xLhJx+bXbd1eQ=="], - - "@algolia/client-analytics": ["@algolia/client-analytics@5.45.0", "", { "dependencies": { "@algolia/client-common": "5.45.0", "@algolia/requester-browser-xhr": "5.45.0", "@algolia/requester-fetch": "5.45.0", "@algolia/requester-node-http": "5.45.0" } }, "sha512-I3g7VtvG/QJOH3tQO7E7zWTwBfK/nIQXShFLR8RvPgWburZ626JNj332M3wHCYcaAMivN9WJG66S2JNXhm6+Xg=="], - - "@algolia/client-common": ["@algolia/client-common@5.45.0", "", {}, "sha512-/nTqm1tLiPtbUr+8kHKyFiCOfhRfgC+JxLvOCq471gFZZOlsh6VtFRiKI60/zGmHTojFC6B0mD80PB7KeK94og=="], - - "@algolia/client-insights": ["@algolia/client-insights@5.45.0", "", { "dependencies": { "@algolia/client-common": "5.45.0", "@algolia/requester-browser-xhr": "5.45.0", "@algolia/requester-fetch": "5.45.0", "@algolia/requester-node-http": "5.45.0" } }, "sha512-suQTx/1bRL1g/K2hRtbK3ANmbzaZCi13487sxxmqok+alBDKKw0/TI73ZiHjjFXM2NV52inwwcmW4fUR45206Q=="], - - "@algolia/client-personalization": ["@algolia/client-personalization@5.45.0", "", { "dependencies": { "@algolia/client-common": "5.45.0", "@algolia/requester-browser-xhr": "5.45.0", "@algolia/requester-fetch": "5.45.0", "@algolia/requester-node-http": "5.45.0" } }, "sha512-CId/dbjpzI3eoUhPU6rt/z4GrRsDesqFISEMOwrqWNSrf4FJhiUIzN42Ac+Gzg69uC0RnzRYy60K1y4Na5VSMw=="], - - "@algolia/client-query-suggestions": ["@algolia/client-query-suggestions@5.45.0", "", { "dependencies": { "@algolia/client-common": "5.45.0", "@algolia/requester-browser-xhr": "5.45.0", "@algolia/requester-fetch": "5.45.0", "@algolia/requester-node-http": "5.45.0" } }, "sha512-tjbBKfA8fjAiFtvl9g/MpIPiD6pf3fj7rirVfh1eMIUi8ybHP4ovDzIaE216vHuRXoePQVCkMd2CokKvYq1CLw=="], - - "@algolia/client-search": ["@algolia/client-search@5.45.0", "", { "dependencies": { "@algolia/client-common": "5.45.0", "@algolia/requester-browser-xhr": "5.45.0", "@algolia/requester-fetch": "5.45.0", "@algolia/requester-node-http": "5.45.0" } }, "sha512-nxuCid+Nszs4xqwIMDw11pRJPes2c+Th1yup/+LtpjFH8QWXkr3SirNYSD3OXAeM060HgWWPLA8/Fxk+vwxQOA=="], - - "@algolia/ingestion": ["@algolia/ingestion@1.45.0", "", { "dependencies": { "@algolia/client-common": "5.45.0", "@algolia/requester-browser-xhr": "5.45.0", "@algolia/requester-fetch": "5.45.0", "@algolia/requester-node-http": "5.45.0" } }, "sha512-t+1doBzhkQTeOOjLHMlm4slmXBhvgtEGQhOmNpMPTnIgWOyZyESWdm+XD984qM4Ej1i9FRh8VttOGrdGnAjAng=="], - - "@algolia/monitoring": ["@algolia/monitoring@1.45.0", "", { "dependencies": { "@algolia/client-common": "5.45.0", "@algolia/requester-browser-xhr": "5.45.0", "@algolia/requester-fetch": "5.45.0", "@algolia/requester-node-http": "5.45.0" } }, "sha512-IaX3ZX1A/0wlgWZue+1BNWlq5xtJgsRo7uUk/aSiYD7lPbJ7dFuZ+yTLFLKgbl4O0QcyHTj1/mSBj9ryF1Lizg=="], - - "@algolia/recommend": ["@algolia/recommend@5.45.0", "", { "dependencies": { "@algolia/client-common": "5.45.0", "@algolia/requester-browser-xhr": "5.45.0", "@algolia/requester-fetch": "5.45.0", "@algolia/requester-node-http": "5.45.0" } }, "sha512-1jeMLoOhkgezCCPsOqkScwYzAAc1Jr5T2hisZl0s32D94ZV7d1OHozBukgOjf8Dw+6Hgi6j52jlAdUWTtkX9Mg=="], - - "@algolia/requester-browser-xhr": ["@algolia/requester-browser-xhr@5.45.0", "", { "dependencies": { "@algolia/client-common": "5.45.0" } }, "sha512-46FIoUkQ9N7wq4/YkHS5/W9Yjm4Ab+q5kfbahdyMpkBPJ7IBlwuNEGnWUZIQ6JfUZuJVojRujPRHMihX4awUMg=="], - - "@algolia/requester-fetch": ["@algolia/requester-fetch@5.45.0", "", { "dependencies": { "@algolia/client-common": "5.45.0" } }, "sha512-XFTSAtCwy4HdBhSReN2rhSyH/nZOM3q3qe5ERG2FLbYId62heIlJBGVyAPRbltRwNlotlydbvSJ+SQ0ruWC2cw=="], - - "@algolia/requester-node-http": ["@algolia/requester-node-http@5.45.0", "", { "dependencies": { "@algolia/client-common": "5.45.0" } }, "sha512-8mTg6lHx5i44raCU52APsu0EqMsdm4+7Hch/e4ZsYZw0hzwkuaMFh826ngnkYf9XOl58nHoou63aZ874m8AbpQ=="], - - "@alloc/quick-lru": ["@alloc/quick-lru@5.2.0", "", {}, "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw=="], - - "@antfu/install-pkg": ["@antfu/install-pkg@1.1.0", "", { "dependencies": { "package-manager-detector": "^1.3.0", "tinyexec": "^1.0.1" } }, "sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ=="], - - "@antfu/utils": ["@antfu/utils@9.3.0", "", {}, "sha512-9hFT4RauhcUzqOE4f1+frMKLZrgNog5b06I7VmZQV1BkvwvqrbC8EBZf3L1eEL2AKb6rNKjER0sEvJiSP1FXEA=="], - - "@apidevtools/json-schema-ref-parser": ["@apidevtools/json-schema-ref-parser@13.0.5", "", { "dependencies": { "@types/json-schema": "^7.0.15", "js-yaml": "^4.1.0" } }, "sha512-xfh4xVJD62gG6spIc7lwxoWT+l16nZu1ELyU8FkjaP/oD2yP09EvLAU6KhtudN9aML2Khhs9pY6Slr7KGTES3w=="], - - "@asamuzakjp/css-color": ["@asamuzakjp/css-color@3.2.0", "", { "dependencies": { "@csstools/css-calc": "^2.1.3", "@csstools/css-color-parser": "^3.0.9", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3", "lru-cache": "^10.4.3" } }, "sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw=="], - - "@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="], - - "@babel/generator": ["@babel/generator@7.28.5", "", { "dependencies": { "@babel/parser": "^7.28.5", "@babel/types": "^7.28.5", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ=="], - - "@babel/helper-globals": ["@babel/helper-globals@7.28.0", "", {}, "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw=="], - - "@babel/helper-module-imports": ["@babel/helper-module-imports@7.27.1", "", { "dependencies": { "@babel/traverse": "^7.27.1", "@babel/types": "^7.27.1" } }, "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w=="], - - "@babel/helper-string-parser": ["@babel/helper-string-parser@7.27.1", "", {}, "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA=="], - - "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.28.5", "", {}, "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q=="], - - "@babel/parser": ["@babel/parser@7.28.5", "", { "dependencies": { "@babel/types": "^7.28.5" }, "bin": "./bin/babel-parser.js" }, "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ=="], - - "@babel/runtime": ["@babel/runtime@7.28.4", "", {}, "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ=="], - - "@babel/template": ["@babel/template@7.27.2", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/parser": "^7.27.2", "@babel/types": "^7.27.1" } }, "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw=="], - - "@babel/traverse": ["@babel/traverse@7.28.5", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", "@babel/helper-globals": "^7.28.0", "@babel/parser": "^7.28.5", "@babel/template": "^7.27.2", "@babel/types": "^7.28.5", "debug": "^4.3.1" } }, "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ=="], - - "@babel/types": ["@babel/types@7.28.5", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA=="], - - "@base-ui-components/react": ["@base-ui-components/react@1.0.0-alpha.7", "", { "dependencies": { "@babel/runtime": "^7.26.10", "@floating-ui/react": "^0.27.5", "@floating-ui/utils": "^0.2.9", "@react-aria/overlays": "^3.26.1", "prop-types": "^15.8.1", "use-sync-external-store": "^1.4.0" }, "peerDependencies": { "@types/react": "^17 || ^18 || ^19", "react": "^17 || ^18 || ^19", "react-dom": "^17 || ^18 || ^19" }, "optionalPeers": ["@types/react"] }, "sha512-M4MxUvwAfERYSMqrUmTSf4J5yHXXGHqXw5wE7WLz8eCIhFmVWog4j5hYRU6QZ0VhqlyVPhs9KqSnts+FFyPmew=="], - - "@braintree/sanitize-url": ["@braintree/sanitize-url@7.1.1", "", {}, "sha512-i1L7noDNxtFyL5DmZafWy1wRVhGehQmzZaz1HiN5e7iylJMSZR7ekOV7NsIqa5qBldlLrsKv4HbgFUVlQrz8Mw=="], - - "@bramus/style-observer": ["@bramus/style-observer@2.0.2", "", {}, "sha512-oRKamZ9Z637pAZgNGJIbNGiFoYQSeA47PpU4K8hXZq9lQcPu35BCqMG9d9J/ab2CB/0XlXq6ToMnVhHF8mLNqg=="], - - "@chevrotain/cst-dts-gen": ["@chevrotain/cst-dts-gen@11.0.3", "", { "dependencies": { "@chevrotain/gast": "11.0.3", "@chevrotain/types": "11.0.3", "lodash-es": "4.17.21" } }, "sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ=="], - - "@chevrotain/gast": ["@chevrotain/gast@11.0.3", "", { "dependencies": { "@chevrotain/types": "11.0.3", "lodash-es": "4.17.21" } }, "sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q=="], - - "@chevrotain/regexp-to-ast": ["@chevrotain/regexp-to-ast@11.0.3", "", {}, "sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA=="], - - "@chevrotain/types": ["@chevrotain/types@11.0.3", "", {}, "sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ=="], - - "@chevrotain/utils": ["@chevrotain/utils@11.0.3", "", {}, "sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ=="], - - "@corex/deepmerge": ["@corex/deepmerge@4.0.43", "", {}, "sha512-N8uEMrMPL0cu/bdboEWpQYb/0i2K5Qn8eCsxzOmxSggJbbQte7ljMRoXm917AbntqTGOzdTu+vP3KOOzoC70HQ=="], - - "@csstools/color-helpers": ["@csstools/color-helpers@5.1.0", "", {}, "sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA=="], - - "@csstools/css-calc": ["@csstools/css-calc@2.1.4", "", { "peerDependencies": { "@csstools/css-parser-algorithms": "^3.0.5", "@csstools/css-tokenizer": "^3.0.4" } }, "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ=="], - - "@csstools/css-color-parser": ["@csstools/css-color-parser@3.1.0", "", { "dependencies": { "@csstools/color-helpers": "^5.1.0", "@csstools/css-calc": "^2.1.4" }, "peerDependencies": { "@csstools/css-parser-algorithms": "^3.0.5", "@csstools/css-tokenizer": "^3.0.4" } }, "sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA=="], - - "@csstools/css-parser-algorithms": ["@csstools/css-parser-algorithms@3.0.5", "", { "peerDependencies": { "@csstools/css-tokenizer": "^3.0.4" } }, "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ=="], - - "@csstools/css-tokenizer": ["@csstools/css-tokenizer@3.0.4", "", {}, "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw=="], - - "@docsearch/css": ["@docsearch/css@3.9.0", "", {}, "sha512-cQbnVbq0rrBwNAKegIac/t6a8nWoUAn8frnkLFW6YARaRmAQr5/Eoe6Ln2fqkUCZ40KpdrKbpSAmgrkviOxuWA=="], - - "@docsearch/react": ["@docsearch/react@3.9.0", "", { "dependencies": { "@algolia/autocomplete-core": "1.17.9", "@algolia/autocomplete-preset-algolia": "1.17.9", "@docsearch/css": "3.9.0", "algoliasearch": "^5.14.2" }, "peerDependencies": { "@types/react": ">= 16.8.0 < 20.0.0", "react": ">= 16.8.0 < 20.0.0", "react-dom": ">= 16.8.0 < 20.0.0", "search-insights": ">= 1 < 3" }, "optionalPeers": ["@types/react", "react", "react-dom", "search-insights"] }, "sha512-mb5FOZYZIkRQ6s/NWnM98k879vu5pscWqTLubLFBO87igYYT4VzVazh4h5o/zCvTIZgEt3PvsCOMOswOUo9yHQ=="], - - "@edgeandnode/common": ["@edgeandnode/common@7.0.4", "", { "dependencies": { "@ethersproject/providers": "^5.8.0", "@pinax/graph-networks-registry": "^0.6.7", "@uniswap/sdk-core": "^7.7.2", "@uniswap/v3-core": "^1.0.1", "@uniswap/v3-sdk": "^3.25.2", "dataloader": "^2.2.3", "dayjs": "^1.11.13", "decimal.js": "^10.5.0", "ethers": "^5.8.0", "graphql": "^16.10.0", "graphql-tag": "^2.12.6", "numeral": "^2.0.6", "pluralize": "^8.0.0" } }, "sha512-R5i6tPnmUY00nbaWKvrLlfToFciJSm7Kk5boql16f+NzZnvsk6+SxFWi7b/hmQfEbaXm74isD/yfVcLPX6h+Aw=="], - - "@edgeandnode/ens": ["@edgeandnode/ens@2.3.1", "", { "dependencies": { "@ensdomains/ensjs": "^4.0.2", "graphql": "^16.11.0", "graphql-request": "^7.2.0", "zod": "^4.1.11" }, "peerDependencies": { "viem": "^2.37" } }, "sha512-NGwFZ+Imnea8ao7m4vHywZDbcqGXzij8+PCPS5t9t1elWfykkDf6lUP8xopcYkJkYjD9hgUydmlZ0BYH6nrKTQ=="], - - "@edgeandnode/gds": ["@edgeandnode/gds@6.7.8", "", { "dependencies": { "@base-ui-components/react": "1.0.0-alpha.7", "@bramus/style-observer": "^2.0.2", "@edgeandnode/common": "^7.0.4", "@figma/code-connect": "^1.3.2", "@floating-ui/react-dom": "^2.1.2", "@headlessui/react": "^2.2.1", "@phosphor-icons/react": "^2.1.7", "@radix-ui/react-accordion": "^1.2.3", "@radix-ui/react-alert-dialog": "^1.1.6", "@radix-ui/react-dialog": "^1.1.6", "@radix-ui/react-direction": "^1.1.0", "@radix-ui/react-dropdown-menu": "^2.1.6", "@radix-ui/react-label": "^2.1.2", "@radix-ui/react-popover": "^1.1.6", "@radix-ui/react-slider": "^1.2.3", "@radix-ui/react-slot": "^1.1.2", "@radix-ui/react-switch": "^1.1.3", "@radix-ui/react-toast": "^1.2.6", "@radix-ui/react-tooltip": "^1.1.8", "@react-aria/utils": "^3.28.1", "@react-hookz/web": "^25.1.0", "@tailwindcss/container-queries": "^0.1.1", "@tanem/react-nprogress": "^5.0.55", "@theme-ui/css": "^0.17.2", "@theme-ui/match-media": "^0.17.2", "@web3icons/react": "^4.0.28", "@xstate/react": "^3.2.2", "color": "^5.0.0", "escape-string-regexp": "^5.0.0", "ethers": "^5.8.0", "lodash": "^4.17.21", "md5": "^2.3.0", "motion": "^12.6.3", "numeral": "^2.0.6", "prism-react-renderer": "^2.4.1", "prismjs": "^1.30.0", "react-aria": "^3.38.1", "react-device-detect": "^2.2.3", "react-dropzone": "^14.3.8", "react-ga4": "^2.1.0", "react-image-crop": "^11.0.7", "react-keyed-flatten-children": "^5.0.0", "react-transition-group": "^4.4.5", "react-virtuoso": "^4.12.6", "recharts": "^2.15.2", "shiki": "^3.2.1", "tailwindcss": "^3.4.17", "typy": "^3.3.0", "universal-cookie": "^7.2.2", "xstate": "^4.38.3" }, "peerDependencies": { "@emotion/react": "^11", "dayjs": "^1.11", "next": ">=13", "react": "^18", "react-dom": "^18", "theme-ui": ">=0.16" }, "optionalPeers": ["next"] }, "sha512-2tqMNFAIT5tW2SMxjWGci9bQcLyvzOSeHs9RL6iSe6keTVHfnQCyefnQ58FjCEOhwv32Ki3dulN2xM6TGR6++A=="], - - "@edgeandnode/go": ["@edgeandnode/go@10.3.12", "", { "dependencies": { "@graphql-typed-document-node/core": "^3.2.0", "@radix-ui/react-collapsible": "^1.1.3", "@radix-ui/react-dialog": "^1.1.6", "@radix-ui/react-navigation-menu": "^1.2.5", "@radix-ui/react-portal": "^1.1.4", "@react-aria/utils": "^3.28.1", "@theme-ui/css": "^0.17.2", "@web3icons/react": "^4.0.28", "escape-string-regexp": "^5.0.0", "motion": "^12.6.3", "tailwindcss": "^3.4.17" }, "peerDependencies": { "@edgeandnode/common": "^7.0.4", "@edgeandnode/ens": "^2.3.1", "@edgeandnode/gds": "^6.7.8", "@emotion/react": "^11", "@tanstack/react-query": "^5", "graphql": ">=16.9", "graphql-request": ">=7", "next": ">=13", "react": "^18", "react-dom": "^18", "theme-ui": ">=0.16" }, "optionalPeers": ["next"] }, "sha512-6B+Fo9TNYxqdrJ/cmsn9arhcxCTyz9rUPaXsw9dxDjJB5KMciIFphj5RH3BGzF27kJEydDHEaqLKQmyUsWEQeg=="], - - "@emotion/babel-plugin": ["@emotion/babel-plugin@11.13.5", "", { "dependencies": { "@babel/helper-module-imports": "^7.16.7", "@babel/runtime": "^7.18.3", "@emotion/hash": "^0.9.2", "@emotion/memoize": "^0.9.0", "@emotion/serialize": "^1.3.3", "babel-plugin-macros": "^3.1.0", "convert-source-map": "^1.5.0", "escape-string-regexp": "^4.0.0", "find-root": "^1.1.0", "source-map": "^0.5.7", "stylis": "4.2.0" } }, "sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ=="], - - "@emotion/cache": ["@emotion/cache@11.14.0", "", { "dependencies": { "@emotion/memoize": "^0.9.0", "@emotion/sheet": "^1.4.0", "@emotion/utils": "^1.4.2", "@emotion/weak-memoize": "^0.4.0", "stylis": "4.2.0" } }, "sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA=="], - - "@emotion/hash": ["@emotion/hash@0.9.2", "", {}, "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g=="], - - "@emotion/is-prop-valid": ["@emotion/is-prop-valid@0.8.8", "", { "dependencies": { "@emotion/memoize": "0.7.4" } }, "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA=="], - - "@emotion/memoize": ["@emotion/memoize@0.9.0", "", {}, "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ=="], - - "@emotion/react": ["@emotion/react@11.14.0", "", { "dependencies": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.13.5", "@emotion/cache": "^11.14.0", "@emotion/serialize": "^1.3.3", "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0", "@emotion/utils": "^1.4.2", "@emotion/weak-memoize": "^0.4.0", "hoist-non-react-statics": "^3.3.1" }, "peerDependencies": { "react": ">=16.8.0" } }, "sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA=="], - - "@emotion/serialize": ["@emotion/serialize@1.3.3", "", { "dependencies": { "@emotion/hash": "^0.9.2", "@emotion/memoize": "^0.9.0", "@emotion/unitless": "^0.10.0", "@emotion/utils": "^1.4.2", "csstype": "^3.0.2" } }, "sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA=="], - - "@emotion/sheet": ["@emotion/sheet@1.4.0", "", {}, "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg=="], - - "@emotion/unitless": ["@emotion/unitless@0.10.0", "", {}, "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg=="], - - "@emotion/use-insertion-effect-with-fallbacks": ["@emotion/use-insertion-effect-with-fallbacks@1.2.0", "", { "peerDependencies": { "react": ">=16.8.0" } }, "sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg=="], - - "@emotion/utils": ["@emotion/utils@1.4.2", "", {}, "sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA=="], - - "@emotion/weak-memoize": ["@emotion/weak-memoize@0.4.0", "", {}, "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg=="], - - "@ensdomains/address-encoder": ["@ensdomains/address-encoder@1.1.3", "", { "dependencies": { "@noble/curves": "^1.2.0", "@noble/hashes": "^1.3.2", "@scure/base": "^1.1.5" } }, "sha512-QS4ax0YkA8tsbQcWgBNmLLtb3aG0jsOQtED9SRyX9Ixflt1jDMuC/0i3ONMnNJNG5HTIko0Te4Y1JIGXjNcnUg=="], - - "@ensdomains/content-hash": ["@ensdomains/content-hash@3.1.0-rc.1", "", { "dependencies": { "@ensdomains/address-encoder": "1.0.0-rc.3", "@noble/curves": "^1.2.0", "@scure/base": "^1.1.5" } }, "sha512-OzdkXgdFmduzcJKU4KRkkJkQHnm5p7m7FkX8k+bHOEoOIzc0ueGT/Jay4nnb60wNk1wSHRmzY+hHBMpFDiGReg=="], - - "@ensdomains/dnsprovejs": ["@ensdomains/dnsprovejs@0.5.2", "", { "dependencies": { "@noble/hashes": "^1.3.2", "dns-packet": "^5.6.1", "typescript-logging": "^1.0.1" } }, "sha512-lSuYnUvUV+kBviQ82XUldtpiE0lA4gWrCilsoCWbTKtc/fH6re9NaTkhbPEy/7OF96MMAG1BDnuoTsfSMAzFBg=="], - - "@ensdomains/ensjs": ["@ensdomains/ensjs@4.2.0", "", { "dependencies": { "@adraffy/ens-normalize": "1.10.1", "@ensdomains/address-encoder": "1.1.3", "@ensdomains/content-hash": "3.1.0-rc.1", "@ensdomains/dnsprovejs": "^0.5.2", "abitype": "^1.0.0", "dns-packet": "^5.3.1", "graphql": "^16.11.0", "graphql-request": "7.1.2", "pako": "^2.1.0", "ts-pattern": "^5.4.0" }, "peerDependencies": { "viem": "^2.9.2" } }, "sha512-6E8LnKCJ45HySx8PSlepL8VfHJg0PgQRmP1xM8Snu9IcOkSpwI1LEiGOUYfEHX/I7yEglGSYMyGgeiqk0LeCcw=="], - - "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.27.0", "", { "os": "aix", "cpu": "ppc64" }, "sha512-KuZrd2hRjz01y5JK9mEBSD3Vj3mbCvemhT466rSuJYeE/hjuBrHfjjcjMdTm/sz7au+++sdbJZJmuBwQLuw68A=="], - - "@esbuild/android-arm": ["@esbuild/android-arm@0.27.0", "", { "os": "android", "cpu": "arm" }, "sha512-j67aezrPNYWJEOHUNLPj9maeJte7uSMM6gMoxfPC9hOg8N02JuQi/T7ewumf4tNvJadFkvLZMlAq73b9uwdMyQ=="], - - "@esbuild/android-arm64": ["@esbuild/android-arm64@0.27.0", "", { "os": "android", "cpu": "arm64" }, "sha512-CC3vt4+1xZrs97/PKDkl0yN7w8edvU2vZvAFGD16n9F0Cvniy5qvzRXjfO1l94efczkkQE6g1x0i73Qf5uthOQ=="], - - "@esbuild/android-x64": ["@esbuild/android-x64@0.27.0", "", { "os": "android", "cpu": "x64" }, "sha512-wurMkF1nmQajBO1+0CJmcN17U4BP6GqNSROP8t0X/Jiw2ltYGLHpEksp9MpoBqkrFR3kv2/te6Sha26k3+yZ9Q=="], - - "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.27.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-uJOQKYCcHhg07DL7i8MzjvS2LaP7W7Pn/7uA0B5S1EnqAirJtbyw4yC5jQ5qcFjHK9l6o/MX9QisBg12kNkdHg=="], - - "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.27.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-8mG6arH3yB/4ZXiEnXof5MK72dE6zM9cDvUcPtxhUZsDjESl9JipZYW60C3JGreKCEP+p8P/72r69m4AZGJd5g=="], - - "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.27.0", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-9FHtyO988CwNMMOE3YIeci+UV+x5Zy8fI2qHNpsEtSF83YPBmE8UWmfYAQg6Ux7Gsmd4FejZqnEUZCMGaNQHQw=="], - - "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.27.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-zCMeMXI4HS/tXvJz8vWGexpZj2YVtRAihHLk1imZj4efx1BQzN76YFeKqlDr3bUWI26wHwLWPd3rwh6pe4EV7g=="], - - "@esbuild/linux-arm": ["@esbuild/linux-arm@0.27.0", "", { "os": "linux", "cpu": "arm" }, "sha512-t76XLQDpxgmq2cNXKTVEB7O7YMb42atj2Re2Haf45HkaUpjM2J0UuJZDuaGbPbamzZ7bawyGFUkodL+zcE+jvQ=="], - - "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.27.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-AS18v0V+vZiLJyi/4LphvBE+OIX682Pu7ZYNsdUHyUKSoRwdnOsMf6FDekwoAFKej14WAkOef3zAORJgAtXnlQ=="], - - "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.27.0", "", { "os": "linux", "cpu": "ia32" }, "sha512-Mz1jxqm/kfgKkc/KLHC5qIujMvnnarD9ra1cEcrs7qshTUSksPihGrWHVG5+osAIQ68577Zpww7SGapmzSt4Nw=="], - - "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.27.0", "", { "os": "linux", "cpu": "none" }, "sha512-QbEREjdJeIreIAbdG2hLU1yXm1uu+LTdzoq1KCo4G4pFOLlvIspBm36QrQOar9LFduavoWX2msNFAAAY9j4BDg=="], - - "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.27.0", "", { "os": "linux", "cpu": "none" }, "sha512-sJz3zRNe4tO2wxvDpH/HYJilb6+2YJxo/ZNbVdtFiKDufzWq4JmKAiHy9iGoLjAV7r/W32VgaHGkk35cUXlNOg=="], - - "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.27.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-z9N10FBD0DCS2dmSABDBb5TLAyF1/ydVb+N4pi88T45efQ/w4ohr/F/QYCkxDPnkhkp6AIpIcQKQ8F0ANoA2JA=="], - - "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.27.0", "", { "os": "linux", "cpu": "none" }, "sha512-pQdyAIZ0BWIC5GyvVFn5awDiO14TkT/19FTmFcPdDec94KJ1uZcmFs21Fo8auMXzD4Tt+diXu1LW1gHus9fhFQ=="], - - "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.27.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-hPlRWR4eIDDEci953RI1BLZitgi5uqcsjKMxwYfmi4LcwyWo2IcRP+lThVnKjNtk90pLS8nKdroXYOqW+QQH+w=="], - - "@esbuild/linux-x64": ["@esbuild/linux-x64@0.27.0", "", { "os": "linux", "cpu": "x64" }, "sha512-1hBWx4OUJE2cab++aVZ7pObD6s+DK4mPGpemtnAORBvb5l/g5xFGk0vc0PjSkrDs0XaXj9yyob3d14XqvnQ4gw=="], - - "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.27.0", "", { "os": "none", "cpu": "arm64" }, "sha512-6m0sfQfxfQfy1qRuecMkJlf1cIzTOgyaeXaiVaaki8/v+WB+U4hc6ik15ZW6TAllRlg/WuQXxWj1jx6C+dfy3w=="], - - "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.27.0", "", { "os": "none", "cpu": "x64" }, "sha512-xbbOdfn06FtcJ9d0ShxxvSn2iUsGd/lgPIO2V3VZIPDbEaIj1/3nBBe1AwuEZKXVXkMmpr6LUAgMkLD/4D2PPA=="], - - "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.27.0", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-fWgqR8uNbCQ/GGv0yhzttj6sU/9Z5/Sv/VGU3F5OuXK6J6SlriONKrQ7tNlwBrJZXRYk5jUhuWvF7GYzGguBZQ=="], - - "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.27.0", "", { "os": "openbsd", "cpu": "x64" }, "sha512-aCwlRdSNMNxkGGqQajMUza6uXzR/U0dIl1QmLjPtRbLOx3Gy3otfFu/VjATy4yQzo9yFDGTxYDo1FfAD9oRD2A=="], - - "@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.27.0", "", { "os": "none", "cpu": "arm64" }, "sha512-nyvsBccxNAsNYz2jVFYwEGuRRomqZ149A39SHWk4hV0jWxKM0hjBPm3AmdxcbHiFLbBSwG6SbpIcUbXjgyECfA=="], - - "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.27.0", "", { "os": "sunos", "cpu": "x64" }, "sha512-Q1KY1iJafM+UX6CFEL+F4HRTgygmEW568YMqDA5UV97AuZSm21b7SXIrRJDwXWPzr8MGr75fUZPV67FdtMHlHA=="], - - "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.27.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-W1eyGNi6d+8kOmZIwi/EDjrL9nxQIQ0MiGqe/AWc6+IaHloxHSGoeRgDRKHFISThLmsewZ5nHFvGFWdBYlgKPg=="], - - "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.27.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-30z1aKL9h22kQhilnYkORFYt+3wp7yZsHWus+wSKAJR8JtdfI76LJ4SBdMsCopTR3z/ORqVu5L1vtnHZWVj4cQ=="], - - "@esbuild/win32-x64": ["@esbuild/win32-x64@0.27.0", "", { "os": "win32", "cpu": "x64" }, "sha512-aIitBcjQeyOhMTImhLZmtxfdOcuNRpwlPNmlFKPcHQYPhEssw75Cl1TSXJXpMkzaua9FUetx/4OQKq7eJul5Cg=="], - - "@ethereumjs/rlp": ["@ethereumjs/rlp@5.0.2", "", { "bin": { "rlp": "bin/rlp.cjs" } }, "sha512-DziebCdg4JpGlEqEdGgXmjqcFoJi+JGulUXwEjsZGAscAQ7MyD/7LE/GVCP29vEQxKc7AAwjT3A2ywHp2xfoCA=="], - - "@ethereumjs/util": ["@ethereumjs/util@9.1.0", "", { "dependencies": { "@ethereumjs/rlp": "^5.0.2", "ethereum-cryptography": "^2.2.1" } }, "sha512-XBEKsYqLGXLah9PNJbgdkigthkG7TAGvlD/sH12beMXEyHDyigfcbdvHhmLyDWgDyOJn4QwiQUaF7yeuhnjdog=="], - - "@ethersproject/abi": ["@ethersproject/abi@5.8.0", "", { "dependencies": { "@ethersproject/address": "^5.8.0", "@ethersproject/bignumber": "^5.8.0", "@ethersproject/bytes": "^5.8.0", "@ethersproject/constants": "^5.8.0", "@ethersproject/hash": "^5.8.0", "@ethersproject/keccak256": "^5.8.0", "@ethersproject/logger": "^5.8.0", "@ethersproject/properties": "^5.8.0", "@ethersproject/strings": "^5.8.0" } }, "sha512-b9YS/43ObplgyV6SlyQsG53/vkSal0MNA1fskSC4mbnCMi8R+NkcH8K9FPYNESf6jUefBUniE4SOKms0E/KK1Q=="], - - "@ethersproject/abstract-provider": ["@ethersproject/abstract-provider@5.8.0", "", { "dependencies": { "@ethersproject/bignumber": "^5.8.0", "@ethersproject/bytes": "^5.8.0", "@ethersproject/logger": "^5.8.0", "@ethersproject/networks": "^5.8.0", "@ethersproject/properties": "^5.8.0", "@ethersproject/transactions": "^5.8.0", "@ethersproject/web": "^5.8.0" } }, "sha512-wC9SFcmh4UK0oKuLJQItoQdzS/qZ51EJegK6EmAWlh+OptpQ/npECOR3QqECd8iGHC0RJb4WKbVdSfif4ammrg=="], - - "@ethersproject/abstract-signer": ["@ethersproject/abstract-signer@5.8.0", "", { "dependencies": { "@ethersproject/abstract-provider": "^5.8.0", "@ethersproject/bignumber": "^5.8.0", "@ethersproject/bytes": "^5.8.0", "@ethersproject/logger": "^5.8.0", "@ethersproject/properties": "^5.8.0" } }, "sha512-N0XhZTswXcmIZQdYtUnd79VJzvEwXQw6PK0dTl9VoYrEBxxCPXqS0Eod7q5TNKRxe1/5WUMuR0u0nqTF/avdCA=="], - - "@ethersproject/address": ["@ethersproject/address@5.8.0", "", { "dependencies": { "@ethersproject/bignumber": "^5.8.0", "@ethersproject/bytes": "^5.8.0", "@ethersproject/keccak256": "^5.8.0", "@ethersproject/logger": "^5.8.0", "@ethersproject/rlp": "^5.8.0" } }, "sha512-GhH/abcC46LJwshoN+uBNoKVFPxUuZm6dA257z0vZkKmU1+t8xTn8oK7B9qrj8W2rFRMch4gbJl6PmVxjxBEBA=="], - - "@ethersproject/base64": ["@ethersproject/base64@5.8.0", "", { "dependencies": { "@ethersproject/bytes": "^5.8.0" } }, "sha512-lN0oIwfkYj9LbPx4xEkie6rAMJtySbpOAFXSDVQaBnAzYfB4X2Qr+FXJGxMoc3Bxp2Sm8OwvzMrywxyw0gLjIQ=="], - - "@ethersproject/basex": ["@ethersproject/basex@5.8.0", "", { "dependencies": { "@ethersproject/bytes": "^5.8.0", "@ethersproject/properties": "^5.8.0" } }, "sha512-PIgTszMlDRmNwW9nhS6iqtVfdTAKosA7llYXNmGPw4YAI1PUyMv28988wAb41/gHF/WqGdoLv0erHaRcHRKW2Q=="], - - "@ethersproject/bignumber": ["@ethersproject/bignumber@5.8.0", "", { "dependencies": { "@ethersproject/bytes": "^5.8.0", "@ethersproject/logger": "^5.8.0", "bn.js": "^5.2.1" } }, "sha512-ZyaT24bHaSeJon2tGPKIiHszWjD/54Sz8t57Toch475lCLljC6MgPmxk7Gtzz+ddNN5LuHea9qhAe0x3D+uYPA=="], - - "@ethersproject/bytes": ["@ethersproject/bytes@5.8.0", "", { "dependencies": { "@ethersproject/logger": "^5.8.0" } }, "sha512-vTkeohgJVCPVHu5c25XWaWQOZ4v+DkGoC42/TS2ond+PARCxTJvgTFUNDZovyQ/uAQ4EcpqqowKydcdmRKjg7A=="], - - "@ethersproject/constants": ["@ethersproject/constants@5.8.0", "", { "dependencies": { "@ethersproject/bignumber": "^5.8.0" } }, "sha512-wigX4lrf5Vu+axVTIvNsuL6YrV4O5AXl5ubcURKMEME5TnWBouUh0CDTWxZ2GpnRn1kcCgE7l8O5+VbV9QTTcg=="], - - "@ethersproject/contracts": ["@ethersproject/contracts@5.8.0", "", { "dependencies": { "@ethersproject/abi": "^5.8.0", "@ethersproject/abstract-provider": "^5.8.0", "@ethersproject/abstract-signer": "^5.8.0", "@ethersproject/address": "^5.8.0", "@ethersproject/bignumber": "^5.8.0", "@ethersproject/bytes": "^5.8.0", "@ethersproject/constants": "^5.8.0", "@ethersproject/logger": "^5.8.0", "@ethersproject/properties": "^5.8.0", "@ethersproject/transactions": "^5.8.0" } }, "sha512-0eFjGz9GtuAi6MZwhb4uvUM216F38xiuR0yYCjKJpNfSEy4HUM8hvqqBj9Jmm0IUz8l0xKEhWwLIhPgxNY0yvQ=="], - - "@ethersproject/hash": ["@ethersproject/hash@5.8.0", "", { "dependencies": { "@ethersproject/abstract-signer": "^5.8.0", "@ethersproject/address": "^5.8.0", "@ethersproject/base64": "^5.8.0", "@ethersproject/bignumber": "^5.8.0", "@ethersproject/bytes": "^5.8.0", "@ethersproject/keccak256": "^5.8.0", "@ethersproject/logger": "^5.8.0", "@ethersproject/properties": "^5.8.0", "@ethersproject/strings": "^5.8.0" } }, "sha512-ac/lBcTbEWW/VGJij0CNSw/wPcw9bSRgCB0AIBz8CvED/jfvDoV9hsIIiWfvWmFEi8RcXtlNwp2jv6ozWOsooA=="], - - "@ethersproject/hdnode": ["@ethersproject/hdnode@5.8.0", "", { "dependencies": { "@ethersproject/abstract-signer": "^5.8.0", "@ethersproject/basex": "^5.8.0", "@ethersproject/bignumber": "^5.8.0", "@ethersproject/bytes": "^5.8.0", "@ethersproject/logger": "^5.8.0", "@ethersproject/pbkdf2": "^5.8.0", "@ethersproject/properties": "^5.8.0", "@ethersproject/sha2": "^5.8.0", "@ethersproject/signing-key": "^5.8.0", "@ethersproject/strings": "^5.8.0", "@ethersproject/transactions": "^5.8.0", "@ethersproject/wordlists": "^5.8.0" } }, "sha512-4bK1VF6E83/3/Im0ERnnUeWOY3P1BZml4ZD3wcH8Ys0/d1h1xaFt6Zc+Dh9zXf9TapGro0T4wvO71UTCp3/uoA=="], - - "@ethersproject/json-wallets": ["@ethersproject/json-wallets@5.8.0", "", { "dependencies": { "@ethersproject/abstract-signer": "^5.8.0", "@ethersproject/address": "^5.8.0", "@ethersproject/bytes": "^5.8.0", "@ethersproject/hdnode": "^5.8.0", "@ethersproject/keccak256": "^5.8.0", "@ethersproject/logger": "^5.8.0", "@ethersproject/pbkdf2": "^5.8.0", "@ethersproject/properties": "^5.8.0", "@ethersproject/random": "^5.8.0", "@ethersproject/strings": "^5.8.0", "@ethersproject/transactions": "^5.8.0", "aes-js": "3.0.0", "scrypt-js": "3.0.1" } }, "sha512-HxblNck8FVUtNxS3VTEYJAcwiKYsBIF77W15HufqlBF9gGfhmYOJtYZp8fSDZtn9y5EaXTE87zDwzxRoTFk11w=="], - - "@ethersproject/keccak256": ["@ethersproject/keccak256@5.7.0", "", { "dependencies": { "@ethersproject/bytes": "^5.7.0", "js-sha3": "0.8.0" } }, "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg=="], - - "@ethersproject/logger": ["@ethersproject/logger@5.8.0", "", {}, "sha512-Qe6knGmY+zPPWTC+wQrpitodgBfH7XoceCGL5bJVejmH+yCS3R8jJm8iiWuvWbG76RUmyEG53oqv6GMVWqunjA=="], - - "@ethersproject/networks": ["@ethersproject/networks@5.8.0", "", { "dependencies": { "@ethersproject/logger": "^5.8.0" } }, "sha512-egPJh3aPVAzbHwq8DD7Po53J4OUSsA1MjQp8Vf/OZPav5rlmWUaFLiq8cvQiGK0Z5K6LYzm29+VA/p4RL1FzNg=="], - - "@ethersproject/pbkdf2": ["@ethersproject/pbkdf2@5.8.0", "", { "dependencies": { "@ethersproject/bytes": "^5.8.0", "@ethersproject/sha2": "^5.8.0" } }, "sha512-wuHiv97BrzCmfEaPbUFpMjlVg/IDkZThp9Ri88BpjRleg4iePJaj2SW8AIyE8cXn5V1tuAaMj6lzvsGJkGWskg=="], - - "@ethersproject/properties": ["@ethersproject/properties@5.8.0", "", { "dependencies": { "@ethersproject/logger": "^5.8.0" } }, "sha512-PYuiEoQ+FMaZZNGrStmN7+lWjlsoufGIHdww7454FIaGdbe/p5rnaCXTr5MtBYl3NkeoVhHZuyzChPeGeKIpQw=="], - - "@ethersproject/providers": ["@ethersproject/providers@5.8.0", "", { "dependencies": { "@ethersproject/abstract-provider": "^5.8.0", "@ethersproject/abstract-signer": "^5.8.0", "@ethersproject/address": "^5.8.0", "@ethersproject/base64": "^5.8.0", "@ethersproject/basex": "^5.8.0", "@ethersproject/bignumber": "^5.8.0", "@ethersproject/bytes": "^5.8.0", "@ethersproject/constants": "^5.8.0", "@ethersproject/hash": "^5.8.0", "@ethersproject/logger": "^5.8.0", "@ethersproject/networks": "^5.8.0", "@ethersproject/properties": "^5.8.0", "@ethersproject/random": "^5.8.0", "@ethersproject/rlp": "^5.8.0", "@ethersproject/sha2": "^5.8.0", "@ethersproject/strings": "^5.8.0", "@ethersproject/transactions": "^5.8.0", "@ethersproject/web": "^5.8.0", "bech32": "1.1.4", "ws": "8.18.0" } }, "sha512-3Il3oTzEx3o6kzcg9ZzbE+oCZYyY+3Zh83sKkn4s1DZfTUjIegHnN2Cm0kbn9YFy45FDVcuCLLONhU7ny0SsCw=="], - - "@ethersproject/random": ["@ethersproject/random@5.8.0", "", { "dependencies": { "@ethersproject/bytes": "^5.8.0", "@ethersproject/logger": "^5.8.0" } }, "sha512-E4I5TDl7SVqyg4/kkA/qTfuLWAQGXmSOgYyO01So8hLfwgKvYK5snIlzxJMk72IFdG/7oh8yuSqY2KX7MMwg+A=="], - - "@ethersproject/rlp": ["@ethersproject/rlp@5.8.0", "", { "dependencies": { "@ethersproject/bytes": "^5.8.0", "@ethersproject/logger": "^5.8.0" } }, "sha512-LqZgAznqDbiEunaUvykH2JAoXTT9NV0Atqk8rQN9nx9SEgThA/WMx5DnW8a9FOufo//6FZOCHZ+XiClzgbqV9Q=="], - - "@ethersproject/sha2": ["@ethersproject/sha2@5.8.0", "", { "dependencies": { "@ethersproject/bytes": "^5.8.0", "@ethersproject/logger": "^5.8.0", "hash.js": "1.1.7" } }, "sha512-dDOUrXr9wF/YFltgTBYS0tKslPEKr6AekjqDW2dbn1L1xmjGR+9GiKu4ajxovnrDbwxAKdHjW8jNcwfz8PAz4A=="], - - "@ethersproject/signing-key": ["@ethersproject/signing-key@5.8.0", "", { "dependencies": { "@ethersproject/bytes": "^5.8.0", "@ethersproject/logger": "^5.8.0", "@ethersproject/properties": "^5.8.0", "bn.js": "^5.2.1", "elliptic": "6.6.1", "hash.js": "1.1.7" } }, "sha512-LrPW2ZxoigFi6U6aVkFN/fa9Yx/+4AtIUe4/HACTvKJdhm0eeb107EVCIQcrLZkxaSIgc/eCrX8Q1GtbH+9n3w=="], - - "@ethersproject/solidity": ["@ethersproject/solidity@5.8.0", "", { "dependencies": { "@ethersproject/bignumber": "^5.8.0", "@ethersproject/bytes": "^5.8.0", "@ethersproject/keccak256": "^5.8.0", "@ethersproject/logger": "^5.8.0", "@ethersproject/sha2": "^5.8.0", "@ethersproject/strings": "^5.8.0" } }, "sha512-4CxFeCgmIWamOHwYN9d+QWGxye9qQLilpgTU0XhYs1OahkclF+ewO+3V1U0mvpiuQxm5EHHmv8f7ClVII8EHsA=="], - - "@ethersproject/strings": ["@ethersproject/strings@5.8.0", "", { "dependencies": { "@ethersproject/bytes": "^5.8.0", "@ethersproject/constants": "^5.8.0", "@ethersproject/logger": "^5.8.0" } }, "sha512-qWEAk0MAvl0LszjdfnZ2uC8xbR2wdv4cDabyHiBh3Cldq/T8dPH3V4BbBsAYJUeonwD+8afVXld274Ls+Y1xXg=="], - - "@ethersproject/transactions": ["@ethersproject/transactions@5.8.0", "", { "dependencies": { "@ethersproject/address": "^5.8.0", "@ethersproject/bignumber": "^5.8.0", "@ethersproject/bytes": "^5.8.0", "@ethersproject/constants": "^5.8.0", "@ethersproject/keccak256": "^5.8.0", "@ethersproject/logger": "^5.8.0", "@ethersproject/properties": "^5.8.0", "@ethersproject/rlp": "^5.8.0", "@ethersproject/signing-key": "^5.8.0" } }, "sha512-UglxSDjByHG0TuU17bDfCemZ3AnKO2vYrL5/2n2oXvKzvb7Cz+W9gOWXKARjp2URVwcWlQlPOEQyAviKwT4AHg=="], - - "@ethersproject/units": ["@ethersproject/units@5.8.0", "", { "dependencies": { "@ethersproject/bignumber": "^5.8.0", "@ethersproject/constants": "^5.8.0", "@ethersproject/logger": "^5.8.0" } }, "sha512-lxq0CAnc5kMGIiWW4Mr041VT8IhNM+Pn5T3haO74XZWFulk7wH1Gv64HqE96hT4a7iiNMdOCFEBgaxWuk8ETKQ=="], - - "@ethersproject/wallet": ["@ethersproject/wallet@5.8.0", "", { "dependencies": { "@ethersproject/abstract-provider": "^5.8.0", "@ethersproject/abstract-signer": "^5.8.0", "@ethersproject/address": "^5.8.0", "@ethersproject/bignumber": "^5.8.0", "@ethersproject/bytes": "^5.8.0", "@ethersproject/hash": "^5.8.0", "@ethersproject/hdnode": "^5.8.0", "@ethersproject/json-wallets": "^5.8.0", "@ethersproject/keccak256": "^5.8.0", "@ethersproject/logger": "^5.8.0", "@ethersproject/properties": "^5.8.0", "@ethersproject/random": "^5.8.0", "@ethersproject/signing-key": "^5.8.0", "@ethersproject/transactions": "^5.8.0", "@ethersproject/wordlists": "^5.8.0" } }, "sha512-G+jnzmgg6UxurVKRKvw27h0kvG75YKXZKdlLYmAHeF32TGUzHkOFd7Zn6QHOTYRFWnfjtSSFjBowKo7vfrXzPA=="], - - "@ethersproject/web": ["@ethersproject/web@5.8.0", "", { "dependencies": { "@ethersproject/base64": "^5.8.0", "@ethersproject/bytes": "^5.8.0", "@ethersproject/logger": "^5.8.0", "@ethersproject/properties": "^5.8.0", "@ethersproject/strings": "^5.8.0" } }, "sha512-j7+Ksi/9KfGviws6Qtf9Q7KCqRhpwrYKQPs+JBA/rKVFF/yaWLHJEH3zfVP2plVu+eys0d2DlFmhoQJayFewcw=="], - - "@ethersproject/wordlists": ["@ethersproject/wordlists@5.8.0", "", { "dependencies": { "@ethersproject/bytes": "^5.8.0", "@ethersproject/hash": "^5.8.0", "@ethersproject/logger": "^5.8.0", "@ethersproject/properties": "^5.8.0", "@ethersproject/strings": "^5.8.0" } }, "sha512-2df9bbXicZws2Sb5S6ET493uJ0Z84Fjr3pC4tu/qlnZERibZCeUVuqdtt+7Tv9xxhUxHoIekIA7avrKUWHrezg=="], - - "@fastify/busboy": ["@fastify/busboy@2.1.1", "", {}, "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA=="], - - "@figma/code-connect": ["@figma/code-connect@1.3.11", "", { "dependencies": { "boxen": "5.1.1", "chalk": "^4.1.2", "commander": "^11.1.0", "compare-versions": "^6.1.0", "cross-spawn": "^7.0.3", "dotenv": "^16.3.1", "fast-fuzzy": "^1.12.0", "find-up": "^5.0.0", "glob": "^11.0.4", "jsdom": "^24.1.1", "lodash": "4.17.21", "minimatch": "^9.0.3", "ora": "^5.4.1", "parse5": "^7.1.2", "prettier": "^2.8.8", "prompts": "^2.4.2", "strip-ansi": "^6.0.0", "ts-morph": "^27.0.0", "typescript": "5.9.3", "undici": "^5.29.0", "zod": "3.25.58", "zod-validation-error": "^3.2.0" }, "bin": { "figma": "bin/figma" } }, "sha512-JhQwWGX8Jr6aGGUsQlX4Wuq2RKEym7es6QUXzvQkZM5ZiYAHhOpqbsTSSH+w771UTi2nQahTbQsHkxlFX5MTJg=="], - - "@floating-ui/core": ["@floating-ui/core@1.7.3", "", { "dependencies": { "@floating-ui/utils": "^0.2.10" } }, "sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w=="], - - "@floating-ui/dom": ["@floating-ui/dom@1.7.4", "", { "dependencies": { "@floating-ui/core": "^1.7.3", "@floating-ui/utils": "^0.2.10" } }, "sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA=="], - - "@floating-ui/react": ["@floating-ui/react@0.27.16", "", { "dependencies": { "@floating-ui/react-dom": "^2.1.6", "@floating-ui/utils": "^0.2.10", "tabbable": "^6.0.0" }, "peerDependencies": { "react": ">=17.0.0", "react-dom": ">=17.0.0" } }, "sha512-9O8N4SeG2z++TSM8QA/KTeKFBVCNEz/AGS7gWPJf6KFRzmRWixFRnCnkPHRDwSVZW6QPDO6uT0P2SpWNKCc9/g=="], - - "@floating-ui/react-dom": ["@floating-ui/react-dom@2.1.6", "", { "dependencies": { "@floating-ui/dom": "^1.7.4" }, "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw=="], - - "@floating-ui/utils": ["@floating-ui/utils@0.2.10", "", {}, "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ=="], - - "@formatjs/ecma402-abstract": ["@formatjs/ecma402-abstract@2.3.6", "", { "dependencies": { "@formatjs/fast-memoize": "2.2.7", "@formatjs/intl-localematcher": "0.6.2", "decimal.js": "^10.4.3", "tslib": "^2.8.0" } }, "sha512-HJnTFeRM2kVFVr5gr5kH1XP6K0JcJtE7Lzvtr3FS/so5f1kpsqqqxy5JF+FRaO6H2qmcMfAUIox7AJteieRtVw=="], - - "@formatjs/fast-memoize": ["@formatjs/fast-memoize@2.2.7", "", { "dependencies": { "tslib": "^2.8.0" } }, "sha512-Yabmi9nSvyOMrlSeGGWDiH7rf3a7sIwplbvo/dlz9WCIjzIQAfy1RMf4S0X3yG724n5Ghu2GmEl5NJIV6O9sZQ=="], - - "@formatjs/icu-messageformat-parser": ["@formatjs/icu-messageformat-parser@2.11.4", "", { "dependencies": { "@formatjs/ecma402-abstract": "2.3.6", "@formatjs/icu-skeleton-parser": "1.8.16", "tslib": "^2.8.0" } }, "sha512-7kR78cRrPNB4fjGFZg3Rmj5aah8rQj9KPzuLsmcSn4ipLXQvC04keycTI1F7kJYDwIXtT2+7IDEto842CfZBtw=="], - - "@formatjs/icu-skeleton-parser": ["@formatjs/icu-skeleton-parser@1.8.16", "", { "dependencies": { "@formatjs/ecma402-abstract": "2.3.6", "tslib": "^2.8.0" } }, "sha512-H13E9Xl+PxBd8D5/6TVUluSpxGNvFSlN/b3coUp0e0JpuWXXnQDiavIpY3NnvSp4xhEMoXyyBvVfdFX8jglOHQ=="], - - "@formatjs/intl-localematcher": ["@formatjs/intl-localematcher@0.5.10", "", { "dependencies": { "tslib": "2" } }, "sha512-af3qATX+m4Rnd9+wHcjJ4w2ijq+rAVP3CCinJQvFv1kgSu1W6jypUmvleJxcewdxmutM8dmIRZFxO/IQBZmP2Q=="], - - "@graphprotocol/contracts": ["@graphprotocol/contracts@7.3.0", "", {}, "sha512-uEjgrBN4WCkJhSrUi5O64cNbU5OWI7iwy/03Er9n+J7o3WEspizpLJvSGXql8E0XtI0ygBaHBTwJfPo7SUphkg=="], - - "@graphql-typed-document-node/core": ["@graphql-typed-document-node/core@3.2.0", "", { "peerDependencies": { "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ=="], - - "@headlessui/react": ["@headlessui/react@2.2.9", "", { "dependencies": { "@floating-ui/react": "^0.26.16", "@react-aria/focus": "^3.20.2", "@react-aria/interactions": "^3.25.0", "@tanstack/react-virtual": "^3.13.9", "use-sync-external-store": "^1.5.0" }, "peerDependencies": { "react": "^18 || ^19 || ^19.0.0-rc", "react-dom": "^18 || ^19 || ^19.0.0-rc" } }, "sha512-Mb+Un58gwBn0/yWZfyrCh0TJyurtT+dETj7YHleylHk5od3dv2XqETPGWMyQ5/7sYN7oWdyM1u9MvC0OC8UmzQ=="], - - "@humanwhocodes/momoa": ["@humanwhocodes/momoa@2.0.4", "", {}, "sha512-RE815I4arJFtt+FVeU1Tgp9/Xvecacji8w/V6XtXsWWH/wz/eNkNbhb+ny/+PlVZjV0rxQpRSQKNKE3lcktHEA=="], - - "@iconify/types": ["@iconify/types@2.0.0", "", {}, "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg=="], - - "@iconify/utils": ["@iconify/utils@3.0.2", "", { "dependencies": { "@antfu/install-pkg": "^1.1.0", "@antfu/utils": "^9.2.0", "@iconify/types": "^2.0.0", "debug": "^4.4.1", "globals": "^15.15.0", "kolorist": "^1.8.0", "local-pkg": "^1.1.1", "mlly": "^1.7.4" } }, "sha512-EfJS0rLfVuRuJRn4psJHtK2A9TqVnkxPpHY6lYHiB9+8eSuudsxbwMiavocG45ujOo6FJ+CIRlRnlOGinzkaGQ=="], - - "@internationalized/date": ["@internationalized/date@3.10.0", "", { "dependencies": { "@swc/helpers": "^0.5.0" } }, "sha512-oxDR/NTEJ1k+UFVQElaNIk65E/Z83HK1z1WI3lQyhTtnNg4R5oVXaPzK3jcpKG8UHKDVuDQHzn+wsxSz8RP3aw=="], - - "@internationalized/message": ["@internationalized/message@3.1.8", "", { "dependencies": { "@swc/helpers": "^0.5.0", "intl-messageformat": "^10.1.0" } }, "sha512-Rwk3j/TlYZhn3HQ6PyXUV0XP9Uv42jqZGNegt0BXlxjE6G3+LwHjbQZAGHhCnCPdaA6Tvd3ma/7QzLlLkJxAWA=="], - - "@internationalized/number": ["@internationalized/number@3.6.5", "", { "dependencies": { "@swc/helpers": "^0.5.0" } }, "sha512-6hY4Kl4HPBvtfS62asS/R22JzNNy8vi/Ssev7x6EobfCp+9QIB2hKvI2EtbdJ0VSQacxVNtqhE/NmF/NZ0gm6g=="], - - "@internationalized/string": ["@internationalized/string@3.2.7", "", { "dependencies": { "@swc/helpers": "^0.5.0" } }, "sha512-D4OHBjrinH+PFZPvfCXvG28n2LSykWcJ7GIioQL+ok0LON15SdfoUssoHzzOUmVZLbRoREsQXVzA6r8JKsbP6A=="], - - "@isaacs/balanced-match": ["@isaacs/balanced-match@4.0.1", "", {}, "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ=="], - - "@isaacs/brace-expansion": ["@isaacs/brace-expansion@5.0.0", "", { "dependencies": { "@isaacs/balanced-match": "^4.0.1" } }, "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA=="], - - "@isaacs/cliui": ["@isaacs/cliui@8.0.2", "", { "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", "strip-ansi": "^7.0.1", "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", "wrap-ansi": "^8.1.0", "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" } }, "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA=="], - - "@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.13", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA=="], - - "@jridgewell/resolve-uri": ["@jridgewell/resolve-uri@3.1.2", "", {}, "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="], - - "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.5", "", {}, "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="], - - "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.31", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw=="], - - "@leichtgewicht/ip-codec": ["@leichtgewicht/ip-codec@2.0.5", "", {}, "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw=="], - - "@mdx-js/mdx": ["@mdx-js/mdx@3.1.1", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdx": "^2.0.0", "acorn": "^8.0.0", "collapse-white-space": "^2.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "estree-util-scope": "^1.0.0", "estree-walker": "^3.0.0", "hast-util-to-jsx-runtime": "^2.0.0", "markdown-extensions": "^2.0.0", "recma-build-jsx": "^1.0.0", "recma-jsx": "^1.0.0", "recma-stringify": "^1.0.0", "rehype-recma": "^1.0.0", "remark-mdx": "^3.0.0", "remark-parse": "^11.0.0", "remark-rehype": "^11.0.0", "source-map": "^0.7.0", "unified": "^11.0.0", "unist-util-position-from-estree": "^2.0.0", "unist-util-stringify-position": "^4.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.0" } }, "sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ=="], - - "@mdx-js/react": ["@mdx-js/react@3.1.1", "", { "dependencies": { "@types/mdx": "^2.0.0" }, "peerDependencies": { "@types/react": ">=16", "react": ">=16" } }, "sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw=="], - - "@mermaid-js/parser": ["@mermaid-js/parser@0.6.3", "", { "dependencies": { "langium": "3.3.1" } }, "sha512-lnjOhe7zyHjc+If7yT4zoedx2vo4sHaTmtkl1+or8BRTnCtDmcTpAjpzDSfCZrshM5bCoz0GyidzadJAH1xobA=="], - - "@mixpanel/rrdom": ["@mixpanel/rrdom@2.0.0-alpha.18.2", "", { "dependencies": { "@mixpanel/rrweb-snapshot": "^2.0.0-alpha.18" } }, "sha512-vX/tbnS14ZzzatC7vOyvAm9tOLU8tof0BuppBlphzEx1YHTSw8DQiAmyAc0AmXidchLV0W+cUHV/WsehPLh2hQ=="], - - "@mixpanel/rrweb": ["@mixpanel/rrweb@2.0.0-alpha.18.2", "", { "dependencies": { "@mixpanel/rrdom": "^2.0.0-alpha.18", "@mixpanel/rrweb-snapshot": "^2.0.0-alpha.18", "@mixpanel/rrweb-types": "^2.0.0-alpha.18", "@mixpanel/rrweb-utils": "^2.0.0-alpha.18", "@types/css-font-loading-module": "0.0.7", "@xstate/fsm": "^1.4.0", "base64-arraybuffer": "^1.0.1", "mitt": "^3.0.0" } }, "sha512-J3dVTEu6Z4p8di7y9KKvUooNuBjX97DdG6XGWoPEPi07A9512h9M8MEtvlY3mK0PGfuC0Mz5Pv/Ws6gjGYfKQg=="], - - "@mixpanel/rrweb-plugin-console-record": ["@mixpanel/rrweb-plugin-console-record@2.0.0-alpha.18.2", "", { "peerDependencies": { "@mixpanel/rrweb": "^2.0.0-alpha.18", "@mixpanel/rrweb-utils": "^2.0.0-alpha.18" } }, "sha512-Xkwh2gSdLqHRkWSXv8CPVCPQj5L85KnWc5DZQ0CXNRFgm2hTl5/YP6zfUubVs2JVXZHGcSGU+g7JVO2WcFJyyg=="], - - "@mixpanel/rrweb-snapshot": ["@mixpanel/rrweb-snapshot@2.0.0-alpha.18.2", "", { "dependencies": { "postcss": "^8.4.38" } }, "sha512-2kSnjZZ3QZ9zOz/isOt8s54mXUUDgXk/u0eEi/rE0xBWDeuA0NHrBcqiMc+w4F/yWWUpo5F5zcuPeYpc6ufAsw=="], - - "@mixpanel/rrweb-types": ["@mixpanel/rrweb-types@2.0.0-alpha.18.2", "", {}, "sha512-ucIYe1mfJ2UksvXW+d3bOySTB2/0yUSqQJlUydvbBz6OO2Bhq3nJHyLXV9ExkgUMZm1ZyDcvvmNUd1+5tAXlpA=="], - - "@mixpanel/rrweb-utils": ["@mixpanel/rrweb-utils@2.0.0-alpha.18.2", "", {}, "sha512-OomKIB6GTx5xvCLJ7iic2khT/t/tnCJUex13aEqsbSqIT/UzUUsqf+LTrgUK5ex+f6odmkCNjre2y5jvpNqn+g=="], - - "@napi-rs/simple-git": ["@napi-rs/simple-git@0.1.22", "", { "optionalDependencies": { "@napi-rs/simple-git-android-arm-eabi": "0.1.22", "@napi-rs/simple-git-android-arm64": "0.1.22", "@napi-rs/simple-git-darwin-arm64": "0.1.22", "@napi-rs/simple-git-darwin-x64": "0.1.22", "@napi-rs/simple-git-freebsd-x64": "0.1.22", "@napi-rs/simple-git-linux-arm-gnueabihf": "0.1.22", "@napi-rs/simple-git-linux-arm64-gnu": "0.1.22", "@napi-rs/simple-git-linux-arm64-musl": "0.1.22", "@napi-rs/simple-git-linux-ppc64-gnu": "0.1.22", "@napi-rs/simple-git-linux-s390x-gnu": "0.1.22", "@napi-rs/simple-git-linux-x64-gnu": "0.1.22", "@napi-rs/simple-git-linux-x64-musl": "0.1.22", "@napi-rs/simple-git-win32-arm64-msvc": "0.1.22", "@napi-rs/simple-git-win32-ia32-msvc": "0.1.22", "@napi-rs/simple-git-win32-x64-msvc": "0.1.22" } }, "sha512-bMVoAKhpjTOPHkW/lprDPwv5aD4R4C3Irt8vn+SKA9wudLe9COLxOhurrKRsxmZccUbWXRF7vukNeGUAj5P8kA=="], - - "@napi-rs/simple-git-android-arm-eabi": ["@napi-rs/simple-git-android-arm-eabi@0.1.22", "", { "os": "android", "cpu": "arm" }, "sha512-JQZdnDNm8o43A5GOzwN/0Tz3CDBQtBUNqzVwEopm32uayjdjxev1Csp1JeaqF3v9djLDIvsSE39ecsN2LhCKKQ=="], - - "@napi-rs/simple-git-android-arm64": ["@napi-rs/simple-git-android-arm64@0.1.22", "", { "os": "android", "cpu": "arm64" }, "sha512-46OZ0SkhnvM+fapWjzg/eqbJvClxynUpWYyYBn4jAj7GQs1/Yyc8431spzDmkA8mL0M7Xo8SmbkzTDE7WwYAfg=="], - - "@napi-rs/simple-git-darwin-arm64": ["@napi-rs/simple-git-darwin-arm64@0.1.22", "", { "os": "darwin", "cpu": "arm64" }, "sha512-zH3h0C8Mkn9//MajPI6kHnttywjsBmZ37fhLX/Fiw5XKu84eHA6dRyVtMzoZxj6s+bjNTgaMgMUucxPn9ktxTQ=="], - - "@napi-rs/simple-git-darwin-x64": ["@napi-rs/simple-git-darwin-x64@0.1.22", "", { "os": "darwin", "cpu": "x64" }, "sha512-GZN7lRAkGKB6PJxWsoyeYJhh85oOOjVNyl+/uipNX8bR+mFDCqRsCE3rRCFGV9WrZUHXkcuRL2laIRn7lLi3ag=="], - - "@napi-rs/simple-git-freebsd-x64": ["@napi-rs/simple-git-freebsd-x64@0.1.22", "", { "os": "freebsd", "cpu": "x64" }, "sha512-xyqX1C5I0WBrUgZONxHjZH5a4LqQ9oki3SKFAVpercVYAcx3pq6BkZy1YUOP4qx78WxU1CCNfHBN7V+XO7D99A=="], - - "@napi-rs/simple-git-linux-arm-gnueabihf": ["@napi-rs/simple-git-linux-arm-gnueabihf@0.1.22", "", { "os": "linux", "cpu": "arm" }, "sha512-4LOtbp9ll93B9fxRvXiUJd1/RM3uafMJE7dGBZGKWBMGM76+BAcCEUv2BY85EfsU/IgopXI6n09TycRfPWOjxA=="], - - "@napi-rs/simple-git-linux-arm64-gnu": ["@napi-rs/simple-git-linux-arm64-gnu@0.1.22", "", { "os": "linux", "cpu": "arm64" }, "sha512-GVOjP/JjCzbQ0kSqao7ctC/1sodVtv5VF57rW9BFpo2y6tEYPCqHnkQkTpieuwMNe+TVOhBUC1+wH0d9/knIHg=="], - - "@napi-rs/simple-git-linux-arm64-musl": ["@napi-rs/simple-git-linux-arm64-musl@0.1.22", "", { "os": "linux", "cpu": "arm64" }, "sha512-MOs7fPyJiU/wqOpKzAOmOpxJ/TZfP4JwmvPad/cXTOWYwwyppMlXFRms3i98EU3HOazI/wMU2Ksfda3+TBluWA=="], - - "@napi-rs/simple-git-linux-ppc64-gnu": ["@napi-rs/simple-git-linux-ppc64-gnu@0.1.22", "", { "os": "linux", "cpu": "ppc64" }, "sha512-L59dR30VBShRUIZ5/cQHU25upNgKS0AMQ7537J6LCIUEFwwXrKORZKJ8ceR+s3Sr/4jempWVvMdjEpFDE4HYww=="], - - "@napi-rs/simple-git-linux-s390x-gnu": ["@napi-rs/simple-git-linux-s390x-gnu@0.1.22", "", { "os": "linux", "cpu": "s390x" }, "sha512-4FHkPlCSIZUGC6HiADffbe6NVoTBMd65pIwcd40IDbtFKOgFMBA+pWRqKiQ21FERGH16Zed7XHJJoY3jpOqtmQ=="], - - "@napi-rs/simple-git-linux-x64-gnu": ["@napi-rs/simple-git-linux-x64-gnu@0.1.22", "", { "os": "linux", "cpu": "x64" }, "sha512-Ei1tM5Ho/dwknF3pOzqkNW9Iv8oFzRxE8uOhrITcdlpxRxVrBVptUF6/0WPdvd7R9747D/q61QG/AVyWsWLFKw=="], - - "@napi-rs/simple-git-linux-x64-musl": ["@napi-rs/simple-git-linux-x64-musl@0.1.22", "", { "os": "linux", "cpu": "x64" }, "sha512-zRYxg7it0p3rLyEJYoCoL2PQJNgArVLyNavHW03TFUAYkYi5bxQ/UFNVpgxMaXohr5yu7qCBqeo9j4DWeysalg=="], - - "@napi-rs/simple-git-win32-arm64-msvc": ["@napi-rs/simple-git-win32-arm64-msvc@0.1.22", "", { "os": "win32", "cpu": "arm64" }, "sha512-XGFR1fj+Y9cWACcovV2Ey/R2xQOZKs8t+7KHPerYdJ4PtjVzGznI4c2EBHXtdOIYvkw7tL5rZ7FN1HJKdD5Quw=="], - - "@napi-rs/simple-git-win32-ia32-msvc": ["@napi-rs/simple-git-win32-ia32-msvc@0.1.22", "", { "os": "win32", "cpu": "ia32" }, "sha512-Gqr9Y0gs6hcNBA1IXBpoqTFnnIoHuZGhrYqaZzEvGMLrTrpbXrXVEtX3DAAD2RLc1b87CPcJ49a7sre3PU3Rfw=="], - - "@napi-rs/simple-git-win32-x64-msvc": ["@napi-rs/simple-git-win32-x64-msvc@0.1.22", "", { "os": "win32", "cpu": "x64" }, "sha512-hQjcreHmUcpw4UrtkOron1/TQObfe484lxiXFLLUj7aWnnnOVs1mnXq5/Bo9+3NYZldFpFRJPdPBeHCisXkKJg=="], - - "@next/env": ["@next/env@14.2.33", "", {}, "sha512-CgVHNZ1fRIlxkLhIX22flAZI/HmpDaZ8vwyJ/B0SDPTBuLZ1PJ+DWMjCHhqnExfmSQzA/PbZi8OAc7PAq2w9IA=="], - - "@next/swc-darwin-arm64": ["@next/swc-darwin-arm64@14.2.33", "", { "os": "darwin", "cpu": "arm64" }, "sha512-HqYnb6pxlsshoSTubdXKu15g3iivcbsMXg4bYpjL2iS/V6aQot+iyF4BUc2qA/J/n55YtvE4PHMKWBKGCF/+wA=="], - - "@next/swc-darwin-x64": ["@next/swc-darwin-x64@14.2.33", "", { "os": "darwin", "cpu": "x64" }, "sha512-8HGBeAE5rX3jzKvF593XTTFg3gxeU4f+UWnswa6JPhzaR6+zblO5+fjltJWIZc4aUalqTclvN2QtTC37LxvZAA=="], - - "@next/swc-linux-arm64-gnu": ["@next/swc-linux-arm64-gnu@14.2.33", "", { "os": "linux", "cpu": "arm64" }, "sha512-JXMBka6lNNmqbkvcTtaX8Gu5by9547bukHQvPoLe9VRBx1gHwzf5tdt4AaezW85HAB3pikcvyqBToRTDA4DeLw=="], - - "@next/swc-linux-arm64-musl": ["@next/swc-linux-arm64-musl@14.2.33", "", { "os": "linux", "cpu": "arm64" }, "sha512-Bm+QulsAItD/x6Ih8wGIMfRJy4G73tu1HJsrccPW6AfqdZd0Sfm5Imhgkgq2+kly065rYMnCOxTBvmvFY1BKfg=="], - - "@next/swc-linux-x64-gnu": ["@next/swc-linux-x64-gnu@14.2.33", "", { "os": "linux", "cpu": "x64" }, "sha512-FnFn+ZBgsVMbGDsTqo8zsnRzydvsGV8vfiWwUo1LD8FTmPTdV+otGSWKc4LJec0oSexFnCYVO4hX8P8qQKaSlg=="], - - "@next/swc-linux-x64-musl": ["@next/swc-linux-x64-musl@14.2.33", "", { "os": "linux", "cpu": "x64" }, "sha512-345tsIWMzoXaQndUTDv1qypDRiebFxGYx9pYkhwY4hBRaOLt8UGfiWKr9FSSHs25dFIf8ZqIFaPdy5MljdoawA=="], - - "@next/swc-win32-arm64-msvc": ["@next/swc-win32-arm64-msvc@14.2.33", "", { "os": "win32", "cpu": "arm64" }, "sha512-nscpt0G6UCTkrT2ppnJnFsYbPDQwmum4GNXYTeoTIdsmMydSKFz9Iny2jpaRupTb+Wl298+Rh82WKzt9LCcqSQ=="], - - "@next/swc-win32-ia32-msvc": ["@next/swc-win32-ia32-msvc@14.2.33", "", { "os": "win32", "cpu": "ia32" }, "sha512-pc9LpGNKhJ0dXQhZ5QMmYxtARwwmWLpeocFmVG5Z0DzWq5Uf0izcI8tLc+qOpqxO1PWqZ5A7J1blrUIKrIFc7Q=="], - - "@next/swc-win32-x64-msvc": ["@next/swc-win32-x64-msvc@14.2.33", "", { "os": "win32", "cpu": "x64" }, "sha512-nOjfZMy8B94MdisuzZo9/57xuFVLHJaDj5e/xrduJp9CV2/HrfxTRH2fbyLe+K9QT41WBLUd4iXX3R7jBp0EUg=="], - - "@noble/ciphers": ["@noble/ciphers@1.3.0", "", {}, "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw=="], - - "@noble/curves": ["@noble/curves@1.9.1", "", { "dependencies": { "@noble/hashes": "1.8.0" } }, "sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA=="], - - "@noble/hashes": ["@noble/hashes@1.8.0", "", {}, "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A=="], - - "@noble/secp256k1": ["@noble/secp256k1@1.7.1", "", {}, "sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw=="], - - "@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="], - - "@nodelib/fs.stat": ["@nodelib/fs.stat@2.0.5", "", {}, "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="], - - "@nodelib/fs.walk": ["@nodelib/fs.walk@1.2.8", "", { "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg=="], - - "@nomicfoundation/edr": ["@nomicfoundation/edr@0.12.0-next.16", "", { "dependencies": { "@nomicfoundation/edr-darwin-arm64": "0.12.0-next.16", "@nomicfoundation/edr-darwin-x64": "0.12.0-next.16", "@nomicfoundation/edr-linux-arm64-gnu": "0.12.0-next.16", "@nomicfoundation/edr-linux-arm64-musl": "0.12.0-next.16", "@nomicfoundation/edr-linux-x64-gnu": "0.12.0-next.16", "@nomicfoundation/edr-linux-x64-musl": "0.12.0-next.16", "@nomicfoundation/edr-win32-x64-msvc": "0.12.0-next.16" } }, "sha512-bBL/nHmQwL1WCveALwg01VhJcpVVklJyunG1d/bhJbHgbjzAn6kohVJc7A6gFZegw+Rx38vdxpBkeCDjAEprzw=="], - - "@nomicfoundation/edr-darwin-arm64": ["@nomicfoundation/edr-darwin-arm64@0.12.0-next.16", "", {}, "sha512-no/8BPVBzVxDGGbDba0zsAxQmVNIq6SLjKzzhCxVKt4tatArXa6+24mr4jXJEmhVBvTNpQsNBO+MMpuEDVaTzQ=="], - - "@nomicfoundation/edr-darwin-x64": ["@nomicfoundation/edr-darwin-x64@0.12.0-next.16", "", {}, "sha512-tf36YbcC6po3XYRbi+v0gjwzqg1MvyRqVUujNMXPHgjNWATXNRNOLyjwt2qDn+RD15qtzk70SHVnz9n9mPWzwg=="], - - "@nomicfoundation/edr-linux-arm64-gnu": ["@nomicfoundation/edr-linux-arm64-gnu@0.12.0-next.16", "", {}, "sha512-Kr6t9icKSaKtPVbb0TjUcbn3XHqXOGIn+KjKKSSpm6542OkL0HyOi06amh6/8CNke9Gf6Lwion8UJ0aGQhnFwA=="], - - "@nomicfoundation/edr-linux-arm64-musl": ["@nomicfoundation/edr-linux-arm64-musl@0.12.0-next.16", "", {}, "sha512-HaStgfxctSg5PYF+6ooDICL1O59KrgM4XEUsIqoRrjrQax9HnMBXcB8eAj+0O52FWiO9FlchBni2dzh4RjQR2g=="], - - "@nomicfoundation/edr-linux-x64-gnu": ["@nomicfoundation/edr-linux-x64-gnu@0.12.0-next.16", "", {}, "sha512-8JPTxEZkwOPTgnN4uTWut9ze9R8rp7+T4IfmsKK9i+lDtdbJIxkrFY275YHG2BEYLd7Y5jTa/I4nC74ZpTAvpA=="], - - "@nomicfoundation/edr-linux-x64-musl": ["@nomicfoundation/edr-linux-x64-musl@0.12.0-next.16", "", {}, "sha512-KugTrq3iHukbG64DuCYg8uPgiBtrrtX4oZSLba5sjocp0Ul6WWI1FeP1Qule+vClUrHSpJ+wR1G6SE7G0lyS/Q=="], - - "@nomicfoundation/edr-win32-x64-msvc": ["@nomicfoundation/edr-win32-x64-msvc@0.12.0-next.16", "", {}, "sha512-Idy0ZjurxElfSmepUKXh6QdptLbW5vUNeIaydvqNogWoTbkJIM6miqZd9lXUy1TYxY7G4Rx5O50c52xc4pFwXQ=="], - - "@nomicfoundation/solidity-analyzer": ["@nomicfoundation/solidity-analyzer@0.1.2", "", { "optionalDependencies": { "@nomicfoundation/solidity-analyzer-darwin-arm64": "0.1.2", "@nomicfoundation/solidity-analyzer-darwin-x64": "0.1.2", "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": "0.1.2", "@nomicfoundation/solidity-analyzer-linux-arm64-musl": "0.1.2", "@nomicfoundation/solidity-analyzer-linux-x64-gnu": "0.1.2", "@nomicfoundation/solidity-analyzer-linux-x64-musl": "0.1.2", "@nomicfoundation/solidity-analyzer-win32-x64-msvc": "0.1.2" } }, "sha512-q4n32/FNKIhQ3zQGGw5CvPF6GTvDCpYwIf7bEY/dZTZbgfDsHyjJwURxUJf3VQuuJj+fDIFl4+KkBVbw4Ef6jA=="], - - "@nomicfoundation/solidity-analyzer-darwin-arm64": ["@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.2", "", {}, "sha512-JaqcWPDZENCvm++lFFGjrDd8mxtf+CtLd2MiXvMNTBD33dContTZ9TWETwNFwg7JTJT5Q9HEecH7FA+HTSsIUw=="], - - "@nomicfoundation/solidity-analyzer-darwin-x64": ["@nomicfoundation/solidity-analyzer-darwin-x64@0.1.2", "", {}, "sha512-fZNmVztrSXC03e9RONBT+CiksSeYcxI1wlzqyr0L7hsQlK1fzV+f04g2JtQ1c/Fe74ZwdV6aQBdd6Uwl1052sw=="], - - "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": ["@nomicfoundation/solidity-analyzer-linux-arm64-gnu@0.1.2", "", {}, "sha512-3d54oc+9ZVBuB6nbp8wHylk4xh0N0Gc+bk+/uJae+rUgbOBwQSfuGIbAZt1wBXs5REkSmynEGcqx6DutoK0tPA=="], - - "@nomicfoundation/solidity-analyzer-linux-arm64-musl": ["@nomicfoundation/solidity-analyzer-linux-arm64-musl@0.1.2", "", {}, "sha512-iDJfR2qf55vgsg7BtJa7iPiFAsYf2d0Tv/0B+vhtnI16+wfQeTbP7teookbGvAo0eJo7aLLm0xfS/GTkvHIucA=="], - - "@nomicfoundation/solidity-analyzer-linux-x64-gnu": ["@nomicfoundation/solidity-analyzer-linux-x64-gnu@0.1.2", "", {}, "sha512-9dlHMAt5/2cpWyuJ9fQNOUXFB/vgSFORg1jpjX1Mh9hJ/MfZXlDdHQ+DpFCs32Zk5pxRBb07yGvSHk9/fezL+g=="], - - "@nomicfoundation/solidity-analyzer-linux-x64-musl": ["@nomicfoundation/solidity-analyzer-linux-x64-musl@0.1.2", "", {}, "sha512-GzzVeeJob3lfrSlDKQw2bRJ8rBf6mEYaWY+gW0JnTDHINA0s2gPR4km5RLIj1xeZZOYz4zRw+AEeYgLRqB2NXg=="], - - "@nomicfoundation/solidity-analyzer-win32-x64-msvc": ["@nomicfoundation/solidity-analyzer-win32-x64-msvc@0.1.2", "", {}, "sha512-Fdjli4DCcFHb4Zgsz0uEJXZ2K7VEO+w5KVv7HmT7WO10iODdU9csC2az4jrhEsRtiR9Gfd74FlG0NYlw1BMdyA=="], - - "@openzeppelin/contracts": ["@openzeppelin/contracts@3.4.2-solc-0.7", "", {}, "sha512-W6QmqgkADuFcTLzHL8vVoNBtkwjvQRpYIAom7KiUNoLKghyx3FgH0GBjt8NRvigV1ZmMOBllvE1By1C+bi8WpA=="], - - "@phosphor-icons/react": ["@phosphor-icons/react@2.1.10", "", { "peerDependencies": { "react": ">= 16.8", "react-dom": ">= 16.8" } }, "sha512-vt8Tvq8GLjheAZZYa+YG/pW7HDbov8El/MANW8pOAz4eGxrwhnbfrQZq0Cp4q8zBEu8NIhHdnr+r8thnfRSNYA=="], - - "@pinax/graph-networks-registry": ["@pinax/graph-networks-registry@0.7.1", "", {}, "sha512-Gn2kXRiEd5COAaMY/aDCRO0V+zfb1uQKCu5HFPoWka+EsZW27AlTINA7JctYYYEMuCbjMia5FBOzskjgEvj6LA=="], - - "@radix-ui/number": ["@radix-ui/number@1.1.1", "", {}, "sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g=="], - - "@radix-ui/primitive": ["@radix-ui/primitive@1.1.3", "", {}, "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg=="], - - "@radix-ui/react-accordion": ["@radix-ui/react-accordion@1.2.12", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collapsible": "1.1.12", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-T4nygeh9YE9dLRPhAHSeOZi7HBXo+0kYIPJXayZfvWOWA0+n3dESrZbjfDPUABkUNym6Hd+f2IR113To8D2GPA=="], - - "@radix-ui/react-alert-dialog": ["@radix-ui/react-alert-dialog@1.1.15", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-dialog": "1.1.15", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-oTVLkEw5GpdRe29BqJ0LSDFWI3qu0vR1M0mUkOQWDIUnY/QIkLpgDMWuKxP94c2NAC2LGcgVhG1ImF3jkZ5wXw=="], - - "@radix-ui/react-arrow": ["@radix-ui/react-arrow@1.1.7", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w=="], - - "@radix-ui/react-collapsible": ["@radix-ui/react-collapsible@1.1.12", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Uu+mSh4agx2ib1uIGPP4/CKNULyajb3p92LsVXmH2EHVMTfZWpll88XJ0j4W0z3f8NK1eYl1+Mf/szHPmcHzyA=="], - - "@radix-ui/react-collection": ["@radix-ui/react-collection@1.1.7", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw=="], - - "@radix-ui/react-compose-refs": ["@radix-ui/react-compose-refs@1.1.2", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg=="], - - "@radix-ui/react-context": ["@radix-ui/react-context@1.1.2", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA=="], - - "@radix-ui/react-dialog": ["@radix-ui/react-dialog@1.1.15", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-focus-guards": "1.1.3", "@radix-ui/react-focus-scope": "1.1.7", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-portal": "1.1.9", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.3", "@radix-ui/react-use-controllable-state": "1.2.2", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.6.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw=="], - - "@radix-ui/react-direction": ["@radix-ui/react-direction@1.1.1", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw=="], - - "@radix-ui/react-dismissable-layer": ["@radix-ui/react-dismissable-layer@1.1.11", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-escape-keydown": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg=="], - - "@radix-ui/react-dropdown-menu": ["@radix-ui/react-dropdown-menu@2.1.16", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-menu": "2.1.16", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-1PLGQEynI/3OX/ftV54COn+3Sud/Mn8vALg2rWnBLnRaGtJDduNW/22XjlGgPdpcIbiQxjKtb7BkcjP00nqfJw=="], - - "@radix-ui/react-focus-guards": ["@radix-ui/react-focus-guards@1.1.3", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw=="], - - "@radix-ui/react-focus-scope": ["@radix-ui/react-focus-scope@1.1.7", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw=="], - - "@radix-ui/react-id": ["@radix-ui/react-id@1.1.1", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg=="], - - "@radix-ui/react-label": ["@radix-ui/react-label@2.1.8", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-FmXs37I6hSBVDlO4y764TNz1rLgKwjJMQ0EGte6F3Cb3f4bIuHB/iLa/8I9VKkmOy+gNHq8rql3j686ACVV21A=="], - - "@radix-ui/react-menu": ["@radix-ui/react-menu@2.1.16", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-focus-guards": "1.1.3", "@radix-ui/react-focus-scope": "1.1.7", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-popper": "1.2.8", "@radix-ui/react-portal": "1.1.9", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-roving-focus": "1.1.11", "@radix-ui/react-slot": "1.2.3", "@radix-ui/react-use-callback-ref": "1.1.1", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.6.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-72F2T+PLlphrqLcAotYPp0uJMr5SjP5SL01wfEspJbru5Zs5vQaSHb4VB3ZMJPimgHHCHG7gMOeOB9H3Hdmtxg=="], - - "@radix-ui/react-navigation-menu": ["@radix-ui/react-navigation-menu@1.2.14", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-use-layout-effect": "1.1.1", "@radix-ui/react-use-previous": "1.1.1", "@radix-ui/react-visually-hidden": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-YB9mTFQvCOAQMHU+C/jVl96WmuWeltyUEpRJJky51huhds5W2FQr1J8D/16sQlf0ozxkPK8uF3niQMdUwZPv5w=="], - - "@radix-ui/react-popover": ["@radix-ui/react-popover@1.1.15", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-focus-guards": "1.1.3", "@radix-ui/react-focus-scope": "1.1.7", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-popper": "1.2.8", "@radix-ui/react-portal": "1.1.9", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.3", "@radix-ui/react-use-controllable-state": "1.2.2", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.6.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-kr0X2+6Yy/vJzLYJUPCZEc8SfQcf+1COFoAqauJm74umQhta9M7lNJHP7QQS3vkvcGLQUbWpMzwrXYwrYztHKA=="], - - "@radix-ui/react-popper": ["@radix-ui/react-popper@1.2.8", "", { "dependencies": { "@floating-ui/react-dom": "^2.0.0", "@radix-ui/react-arrow": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-layout-effect": "1.1.1", "@radix-ui/react-use-rect": "1.1.1", "@radix-ui/react-use-size": "1.1.1", "@radix-ui/rect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw=="], - - "@radix-ui/react-portal": ["@radix-ui/react-portal@1.1.10", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.4", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-4kY9IVa6+9nJPsYmngK5Uk2kUmZnv7ChhHAFeQ5oaj8jrR1bIi3xww8nH71pz1/Ve4d/cXO3YxT8eikt1B0a8w=="], - - "@radix-ui/react-presence": ["@radix-ui/react-presence@1.1.5", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ=="], - - "@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], - - "@radix-ui/react-roving-focus": ["@radix-ui/react-roving-focus@1.1.11", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA=="], - - "@radix-ui/react-slider": ["@radix-ui/react-slider@1.3.6", "", { "dependencies": { "@radix-ui/number": "1.1.1", "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-use-layout-effect": "1.1.1", "@radix-ui/react-use-previous": "1.1.1", "@radix-ui/react-use-size": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-JPYb1GuM1bxfjMRlNLE+BcmBC8onfCi60Blk7OBqi2MLTFdS+8401U4uFjnwkOr49BLmXxLC6JHkvAsx5OJvHw=="], - - "@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.4", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA=="], - - "@radix-ui/react-switch": ["@radix-ui/react-switch@1.2.6", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-use-previous": "1.1.1", "@radix-ui/react-use-size": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-bByzr1+ep1zk4VubeEVViV592vu2lHE2BZY5OnzehZqOOgogN80+mNtCqPkhn2gklJqOpxWgPoYTSnhBCqpOXQ=="], - - "@radix-ui/react-toast": ["@radix-ui/react-toast@1.2.15", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-portal": "1.1.9", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-use-layout-effect": "1.1.1", "@radix-ui/react-visually-hidden": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-3OSz3TacUWy4WtOXV38DggwxoqJK4+eDkNMl5Z/MJZaoUPaP4/9lf81xXMe1I2ReTAptverZUpbPY4wWwWyL5g=="], - - "@radix-ui/react-tooltip": ["@radix-ui/react-tooltip@1.2.8", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-popper": "1.2.8", "@radix-ui/react-portal": "1.1.9", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.3", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-visually-hidden": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-tY7sVt1yL9ozIxvmbtN5qtmH2krXcBCfjEiCgKGLqunJHvgvZG2Pcl2oQ3kbcZARb1BGEHdkLzcYGO8ynVlieg=="], - - "@radix-ui/react-use-callback-ref": ["@radix-ui/react-use-callback-ref@1.1.1", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg=="], - - "@radix-ui/react-use-controllable-state": ["@radix-ui/react-use-controllable-state@1.2.2", "", { "dependencies": { "@radix-ui/react-use-effect-event": "0.0.2", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg=="], - - "@radix-ui/react-use-effect-event": ["@radix-ui/react-use-effect-event@0.0.2", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA=="], - - "@radix-ui/react-use-escape-keydown": ["@radix-ui/react-use-escape-keydown@1.1.1", "", { "dependencies": { "@radix-ui/react-use-callback-ref": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g=="], - - "@radix-ui/react-use-layout-effect": ["@radix-ui/react-use-layout-effect@1.1.1", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ=="], - - "@radix-ui/react-use-previous": ["@radix-ui/react-use-previous@1.1.1", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ=="], - - "@radix-ui/react-use-rect": ["@radix-ui/react-use-rect@1.1.1", "", { "dependencies": { "@radix-ui/rect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w=="], - - "@radix-ui/react-use-size": ["@radix-ui/react-use-size@1.1.1", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ=="], - - "@radix-ui/react-visually-hidden": ["@radix-ui/react-visually-hidden@1.2.3", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug=="], - - "@radix-ui/rect": ["@radix-ui/rect@1.1.1", "", {}, "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw=="], - - "@react-aria/breadcrumbs": ["@react-aria/breadcrumbs@3.5.29", "", { "dependencies": { "@react-aria/i18n": "^3.12.13", "@react-aria/link": "^3.8.6", "@react-aria/utils": "^3.31.0", "@react-types/breadcrumbs": "^3.7.17", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-rKS0dryllaZJqrr3f/EAf2liz8CBEfmL5XACj+Z1TAig6GIYe1QuA3BtkX0cV9OkMugXdX8e3cbA7nD10ORRqg=="], - - "@react-aria/button": ["@react-aria/button@3.14.2", "", { "dependencies": { "@react-aria/interactions": "^3.25.6", "@react-aria/toolbar": "3.0.0-beta.21", "@react-aria/utils": "^3.31.0", "@react-stately/toggle": "^3.9.2", "@react-types/button": "^3.14.1", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-VbLIA+Kd6f/MDjd+TJBUg2+vNDw66pnvsj2E4RLomjI9dfBuN7d+Yo2UnsqKVyhePjCUZ6xxa2yDuD63IOSIYA=="], - - "@react-aria/calendar": ["@react-aria/calendar@3.9.2", "", { "dependencies": { "@internationalized/date": "^3.10.0", "@react-aria/i18n": "^3.12.13", "@react-aria/interactions": "^3.25.6", "@react-aria/live-announcer": "^3.4.4", "@react-aria/utils": "^3.31.0", "@react-stately/calendar": "^3.9.0", "@react-types/button": "^3.14.1", "@react-types/calendar": "^3.8.0", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-uSLxLgOPRnEU4Jg59lAhUVA+uDx/55NBg4lpfsP2ynazyiJ5LCXmYceJi+VuOqMml7d9W0dB87OldOeLdIxYVA=="], - - "@react-aria/checkbox": ["@react-aria/checkbox@3.16.2", "", { "dependencies": { "@react-aria/form": "^3.1.2", "@react-aria/interactions": "^3.25.6", "@react-aria/label": "^3.7.22", "@react-aria/toggle": "^3.12.2", "@react-aria/utils": "^3.31.0", "@react-stately/checkbox": "^3.7.2", "@react-stately/form": "^3.2.2", "@react-stately/toggle": "^3.9.2", "@react-types/checkbox": "^3.10.2", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-29Mj9ZqXioJ0bcMnNGooHztnTau5pikZqX3qCRj5bYR3by/ZFFavYoMroh9F7s/MbFm/tsKX+Sf02lYFEdXRjA=="], - - "@react-aria/color": ["@react-aria/color@3.1.2", "", { "dependencies": { "@react-aria/i18n": "^3.12.13", "@react-aria/interactions": "^3.25.6", "@react-aria/numberfield": "^3.12.2", "@react-aria/slider": "^3.8.2", "@react-aria/spinbutton": "^3.6.19", "@react-aria/textfield": "^3.18.2", "@react-aria/utils": "^3.31.0", "@react-aria/visually-hidden": "^3.8.28", "@react-stately/color": "^3.9.2", "@react-stately/form": "^3.2.2", "@react-types/color": "^3.1.2", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-jCC+Q7rAQGLQBkHjkPAeDuGYuMbc4neifjlNRiyZ9as1z4gg63H8MteoWYYk6K4vCKKxSixgt8MfI29XWMOWPQ=="], - - "@react-aria/combobox": ["@react-aria/combobox@3.14.0", "", { "dependencies": { "@react-aria/focus": "^3.21.2", "@react-aria/i18n": "^3.12.13", "@react-aria/listbox": "^3.15.0", "@react-aria/live-announcer": "^3.4.4", "@react-aria/menu": "^3.19.3", "@react-aria/overlays": "^3.30.0", "@react-aria/selection": "^3.26.0", "@react-aria/textfield": "^3.18.2", "@react-aria/utils": "^3.31.0", "@react-stately/collections": "^3.12.8", "@react-stately/combobox": "^3.12.0", "@react-stately/form": "^3.2.2", "@react-types/button": "^3.14.1", "@react-types/combobox": "^3.13.9", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-z4ro0Hma//p4nL2IJx5iUa7NwxeXbzSoZ0se5uTYjG1rUUMszg+wqQh/AQoL+eiULn7rs18JY9wwNbVIkRNKWA=="], - - "@react-aria/datepicker": ["@react-aria/datepicker@3.15.2", "", { "dependencies": { "@internationalized/date": "^3.10.0", "@internationalized/number": "^3.6.5", "@internationalized/string": "^3.2.7", "@react-aria/focus": "^3.21.2", "@react-aria/form": "^3.1.2", "@react-aria/i18n": "^3.12.13", "@react-aria/interactions": "^3.25.6", "@react-aria/label": "^3.7.22", "@react-aria/spinbutton": "^3.6.19", "@react-aria/utils": "^3.31.0", "@react-stately/datepicker": "^3.15.2", "@react-stately/form": "^3.2.2", "@react-types/button": "^3.14.1", "@react-types/calendar": "^3.8.0", "@react-types/datepicker": "^3.13.2", "@react-types/dialog": "^3.5.22", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-th078hyNqPf4P2K10su/y32zPDjs3lOYVdHvsL9/+5K1dnTvLHCK5vgUyLuyn8FchhF7cmHV49D+LZVv65PEpQ=="], - - "@react-aria/dialog": ["@react-aria/dialog@3.5.31", "", { "dependencies": { "@react-aria/interactions": "^3.25.6", "@react-aria/overlays": "^3.30.0", "@react-aria/utils": "^3.31.0", "@react-types/dialog": "^3.5.22", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-inxQMyrzX0UBW9Mhraq0nZ4HjHdygQvllzloT1E/RlDd61lr3RbmJR6pLsrbKOTtSvDIBJpCso1xEdHCFNmA0Q=="], - - "@react-aria/disclosure": ["@react-aria/disclosure@3.1.0", "", { "dependencies": { "@react-aria/ssr": "^3.9.10", "@react-aria/utils": "^3.31.0", "@react-stately/disclosure": "^3.0.8", "@react-types/button": "^3.14.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-5996BeBpnj+yKXYysz+UuhFQxGFPvaZZ3zNBd052wz/i+TVFVGSqqYJ6cwZyO1AfBR8zOT0ZIiK4EC3ETwSvtQ=="], - - "@react-aria/dnd": ["@react-aria/dnd@3.11.3", "", { "dependencies": { "@internationalized/string": "^3.2.7", "@react-aria/i18n": "^3.12.13", "@react-aria/interactions": "^3.25.6", "@react-aria/live-announcer": "^3.4.4", "@react-aria/overlays": "^3.30.0", "@react-aria/utils": "^3.31.0", "@react-stately/collections": "^3.12.8", "@react-stately/dnd": "^3.7.1", "@react-types/button": "^3.14.1", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-MyTziciik1Owz3rqDghu0K3ZtTFvmj/R2ZsLDwbU9N4hKqGX/BKnrI8SytTn8RDqVv5LmA/GhApLngiupTAsXw=="], - - "@react-aria/focus": ["@react-aria/focus@3.21.2", "", { "dependencies": { "@react-aria/interactions": "^3.25.6", "@react-aria/utils": "^3.31.0", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0", "clsx": "^2.0.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-JWaCR7wJVggj+ldmM/cb/DXFg47CXR55lznJhZBh4XVqJjMKwaOOqpT5vNN7kpC1wUpXicGNuDnJDN1S/+6dhQ=="], - - "@react-aria/form": ["@react-aria/form@3.1.2", "", { "dependencies": { "@react-aria/interactions": "^3.25.6", "@react-aria/utils": "^3.31.0", "@react-stately/form": "^3.2.2", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-R3i7L7Ci61PqZQvOrnL9xJeWEbh28UkTVgkj72EvBBn39y4h7ReH++0stv7rRs8p5ozETSKezBbGfu4UsBewWw=="], - - "@react-aria/grid": ["@react-aria/grid@3.14.5", "", { "dependencies": { "@react-aria/focus": "^3.21.2", "@react-aria/i18n": "^3.12.13", "@react-aria/interactions": "^3.25.6", "@react-aria/live-announcer": "^3.4.4", "@react-aria/selection": "^3.26.0", "@react-aria/utils": "^3.31.0", "@react-stately/collections": "^3.12.8", "@react-stately/grid": "^3.11.6", "@react-stately/selection": "^3.20.6", "@react-types/checkbox": "^3.10.2", "@react-types/grid": "^3.3.6", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-XHw6rgjlTqc85e3zjsWo3U0EVwjN5MOYtrolCKc/lc2ItNdcY3OlMhpsU9+6jHwg/U3VCSWkGvwAz9hg7krd8Q=="], - - "@react-aria/gridlist": ["@react-aria/gridlist@3.14.1", "", { "dependencies": { "@react-aria/focus": "^3.21.2", "@react-aria/grid": "^3.14.5", "@react-aria/i18n": "^3.12.13", "@react-aria/interactions": "^3.25.6", "@react-aria/selection": "^3.26.0", "@react-aria/utils": "^3.31.0", "@react-stately/list": "^3.13.1", "@react-stately/tree": "^3.9.3", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-keS03Am07aOn7RuNaRsMOyh0jscyhDn95asCVy4lxhl9A9TFk1Jw0o2L6q6cWRj1gFiKeacj/otG5H8ZKQQ2Wg=="], - - "@react-aria/i18n": ["@react-aria/i18n@3.12.13", "", { "dependencies": { "@internationalized/date": "^3.10.0", "@internationalized/message": "^3.1.8", "@internationalized/number": "^3.6.5", "@internationalized/string": "^3.2.7", "@react-aria/ssr": "^3.9.10", "@react-aria/utils": "^3.31.0", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-YTM2BPg0v1RvmP8keHenJBmlx8FXUKsdYIEX7x6QWRd1hKlcDwphfjzvt0InX9wiLiPHsT5EoBTpuUk8SXc0Mg=="], - - "@react-aria/interactions": ["@react-aria/interactions@3.25.6", "", { "dependencies": { "@react-aria/ssr": "^3.9.10", "@react-aria/utils": "^3.31.0", "@react-stately/flags": "^3.1.2", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-5UgwZmohpixwNMVkMvn9K1ceJe6TzlRlAfuYoQDUuOkk62/JVJNDLAPKIf5YMRc7d2B0rmfgaZLMtbREb0Zvkw=="], - - "@react-aria/label": ["@react-aria/label@3.7.22", "", { "dependencies": { "@react-aria/utils": "^3.31.0", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-jLquJeA5ZNqDT64UpTc9XJ7kQYltUlNcgxZ37/v4mHe0UZ7QohCKdKQhXHONb0h2jjNUpp2HOZI8J9++jOpzxA=="], - - "@react-aria/landmark": ["@react-aria/landmark@3.0.7", "", { "dependencies": { "@react-aria/utils": "^3.31.0", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0", "use-sync-external-store": "^1.4.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-t8c610b8hPLS6Vwv+rbuSyljZosI1s5+Tosfa0Fk4q7d+Ex6Yj7hLfUFy59GxZAufhUYfGX396fT0gPqAbU1tg=="], - - "@react-aria/link": ["@react-aria/link@3.8.6", "", { "dependencies": { "@react-aria/interactions": "^3.25.6", "@react-aria/utils": "^3.31.0", "@react-types/link": "^3.6.5", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-7F7UDJnwbU9IjfoAdl6f3Hho5/WB7rwcydUOjUux0p7YVWh/fTjIFjfAGyIir7MJhPapun1D0t97QQ3+8jXVcg=="], - - "@react-aria/listbox": ["@react-aria/listbox@3.15.0", "", { "dependencies": { "@react-aria/interactions": "^3.25.6", "@react-aria/label": "^3.7.22", "@react-aria/selection": "^3.26.0", "@react-aria/utils": "^3.31.0", "@react-stately/collections": "^3.12.8", "@react-stately/list": "^3.13.1", "@react-types/listbox": "^3.7.4", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-Ub1Wu79R9sgxM7h4HeEdjOgOKDHwduvYcnDqsSddGXgpkL8ADjsy2YUQ0hHY5VnzA4BxK36bLp4mzSna8Qvj1w=="], - - "@react-aria/live-announcer": ["@react-aria/live-announcer@3.4.4", "", { "dependencies": { "@swc/helpers": "^0.5.0" } }, "sha512-PTTBIjNRnrdJOIRTDGNifY2d//kA7GUAwRFJNOEwSNG4FW+Bq9awqLiflw0JkpyB0VNIwou6lqKPHZVLsGWOXA=="], - - "@react-aria/menu": ["@react-aria/menu@3.19.3", "", { "dependencies": { "@react-aria/focus": "^3.21.2", "@react-aria/i18n": "^3.12.13", "@react-aria/interactions": "^3.25.6", "@react-aria/overlays": "^3.30.0", "@react-aria/selection": "^3.26.0", "@react-aria/utils": "^3.31.0", "@react-stately/collections": "^3.12.8", "@react-stately/menu": "^3.9.8", "@react-stately/selection": "^3.20.6", "@react-stately/tree": "^3.9.3", "@react-types/button": "^3.14.1", "@react-types/menu": "^3.10.5", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-52fh8y8b2776R2VrfZPpUBJYC9oTP7XDy+zZuZTxPEd7Ywk0JNUl5F92y6ru22yPkS13sdhrNM/Op+V/KulmAg=="], - - "@react-aria/meter": ["@react-aria/meter@3.4.27", "", { "dependencies": { "@react-aria/progress": "^3.4.27", "@react-types/meter": "^3.4.13", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-andOOdJkgRJF9vBi5VWRmFodK+GT+5X1lLeNUmb4qOX8/MVfX/RbK72LDeIhd7xC7rSCFHj3WvZ198rK4q0k3w=="], - - "@react-aria/numberfield": ["@react-aria/numberfield@3.12.2", "", { "dependencies": { "@react-aria/i18n": "^3.12.13", "@react-aria/interactions": "^3.25.6", "@react-aria/spinbutton": "^3.6.19", "@react-aria/textfield": "^3.18.2", "@react-aria/utils": "^3.31.0", "@react-stately/form": "^3.2.2", "@react-stately/numberfield": "^3.10.2", "@react-types/button": "^3.14.1", "@react-types/numberfield": "^3.8.15", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-M2b+z0HIXiXpGAWOQkO2kpIjaLNUXJ5Q3/GMa3Fkr+B1piFX0VuOynYrtddKVrmXCe+r5t+XcGb0KS29uqv7nQ=="], - - "@react-aria/overlays": ["@react-aria/overlays@3.30.0", "", { "dependencies": { "@react-aria/focus": "^3.21.2", "@react-aria/i18n": "^3.12.13", "@react-aria/interactions": "^3.25.6", "@react-aria/ssr": "^3.9.10", "@react-aria/utils": "^3.31.0", "@react-aria/visually-hidden": "^3.8.28", "@react-stately/overlays": "^3.6.20", "@react-types/button": "^3.14.1", "@react-types/overlays": "^3.9.2", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-UpjqSjYZx5FAhceWCRVsW6fX1sEwya1fQ/TKkL53FAlLFR8QKuoKqFlmiL43YUFTcGK3UdEOy3cWTleLQwdSmQ=="], - - "@react-aria/progress": ["@react-aria/progress@3.4.27", "", { "dependencies": { "@react-aria/i18n": "^3.12.13", "@react-aria/label": "^3.7.22", "@react-aria/utils": "^3.31.0", "@react-types/progress": "^3.5.16", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-0OA1shs1575g1zmO8+rWozdbTnxThFFhOfuoL1m7UV5Dley6FHpueoKB1ECv7B+Qm4dQt6DoEqLg7wsbbQDhmg=="], - - "@react-aria/radio": ["@react-aria/radio@3.12.2", "", { "dependencies": { "@react-aria/focus": "^3.21.2", "@react-aria/form": "^3.1.2", "@react-aria/i18n": "^3.12.13", "@react-aria/interactions": "^3.25.6", "@react-aria/label": "^3.7.22", "@react-aria/utils": "^3.31.0", "@react-stately/radio": "^3.11.2", "@react-types/radio": "^3.9.2", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-I11f6I90neCh56rT/6ieAs3XyDKvEfbj/QmbU5cX3p+SJpRRPN0vxQi5D1hkh0uxDpeClxygSr31NmZsd4sqfg=="], - - "@react-aria/searchfield": ["@react-aria/searchfield@3.8.9", "", { "dependencies": { "@react-aria/i18n": "^3.12.13", "@react-aria/textfield": "^3.18.2", "@react-aria/utils": "^3.31.0", "@react-stately/searchfield": "^3.5.16", "@react-types/button": "^3.14.1", "@react-types/searchfield": "^3.6.6", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-Yt2pj8Wb5/XsUr2T0DQqFv+DlFpzzWIWnNr9cJATUcWV/xw6ok7YFEg9+7EHtBmsCQxFFJtock1QfZzBw6qLtQ=="], - - "@react-aria/select": ["@react-aria/select@3.17.0", "", { "dependencies": { "@react-aria/form": "^3.1.2", "@react-aria/i18n": "^3.12.13", "@react-aria/interactions": "^3.25.6", "@react-aria/label": "^3.7.22", "@react-aria/listbox": "^3.15.0", "@react-aria/menu": "^3.19.3", "@react-aria/selection": "^3.26.0", "@react-aria/utils": "^3.31.0", "@react-aria/visually-hidden": "^3.8.28", "@react-stately/select": "^3.8.0", "@react-types/button": "^3.14.1", "@react-types/select": "^3.11.0", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-q5ZuyAn5jSOeI0Ys99951TaGcF4O7u1SSBVxPMwVVXOU8ZhToCNx+WG3n/JDYHEjqdo7sbsVRaPA7LkBzBGf5w=="], - - "@react-aria/selection": ["@react-aria/selection@3.26.0", "", { "dependencies": { "@react-aria/focus": "^3.21.2", "@react-aria/i18n": "^3.12.13", "@react-aria/interactions": "^3.25.6", "@react-aria/utils": "^3.31.0", "@react-stately/selection": "^3.20.6", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-ZBH3EfWZ+RfhTj01dH8L17uT7iNbXWS8u77/fUpHgtrm0pwNVhx0TYVnLU1YpazQ/3WVpvWhmBB8sWwD1FlD/g=="], - - "@react-aria/separator": ["@react-aria/separator@3.4.13", "", { "dependencies": { "@react-aria/utils": "^3.31.0", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-0NlcrdBfQbcjWEXdHl3+uSY1272n2ljT1gWL2RIf6aQsQWTZ0gz0rTgRHy0MTXN+y+tICItUERJT4vmTLtIzVg=="], - - "@react-aria/slider": ["@react-aria/slider@3.8.2", "", { "dependencies": { "@react-aria/i18n": "^3.12.13", "@react-aria/interactions": "^3.25.6", "@react-aria/label": "^3.7.22", "@react-aria/utils": "^3.31.0", "@react-stately/slider": "^3.7.2", "@react-types/shared": "^3.32.1", "@react-types/slider": "^3.8.2", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-6KyUGaVzRE4xAz1LKHbNh1q5wzxe58pdTHFSnxNe6nk1SCoHw7NfI4h2s2m6LgJ0megFxsT0Ir8aHaFyyxmbgg=="], - - "@react-aria/spinbutton": ["@react-aria/spinbutton@3.6.19", "", { "dependencies": { "@react-aria/i18n": "^3.12.13", "@react-aria/live-announcer": "^3.4.4", "@react-aria/utils": "^3.31.0", "@react-types/button": "^3.14.1", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-xOIXegDpts9t3RSHdIN0iYQpdts0FZ3LbpYJIYVvdEHo9OpDS+ElnDzCGtwZLguvZlwc5s1LAKuKopDUsAEMkw=="], - - "@react-aria/ssr": ["@react-aria/ssr@3.9.10", "", { "dependencies": { "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-hvTm77Pf+pMBhuBm760Li0BVIO38jv1IBws1xFm1NoL26PU+fe+FMW5+VZWyANR6nYL65joaJKZqOdTQMkO9IQ=="], - - "@react-aria/switch": ["@react-aria/switch@3.7.8", "", { "dependencies": { "@react-aria/toggle": "^3.12.2", "@react-stately/toggle": "^3.9.2", "@react-types/shared": "^3.32.1", "@react-types/switch": "^3.5.15", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-AfsUq1/YiuoprhcBUD9vDPyWaigAwctQNW1fMb8dROL+i/12B+Zekj8Ml+jbU69/kIVtfL0Jl7/0Bo9KK3X0xQ=="], - - "@react-aria/table": ["@react-aria/table@3.17.8", "", { "dependencies": { "@react-aria/focus": "^3.21.2", "@react-aria/grid": "^3.14.5", "@react-aria/i18n": "^3.12.13", "@react-aria/interactions": "^3.25.6", "@react-aria/live-announcer": "^3.4.4", "@react-aria/utils": "^3.31.0", "@react-aria/visually-hidden": "^3.8.28", "@react-stately/collections": "^3.12.8", "@react-stately/flags": "^3.1.2", "@react-stately/table": "^3.15.1", "@react-types/checkbox": "^3.10.2", "@react-types/grid": "^3.3.6", "@react-types/shared": "^3.32.1", "@react-types/table": "^3.13.4", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-bXiZoxTMbsqUJsYDhHPzKc3jw0HFJ/xMsJ49a0f7mp5r9zACxNLeIU0wJ4Uvx37dnYOHKzGliG+rj5l4sph7MA=="], - - "@react-aria/tabs": ["@react-aria/tabs@3.10.8", "", { "dependencies": { "@react-aria/focus": "^3.21.2", "@react-aria/i18n": "^3.12.13", "@react-aria/selection": "^3.26.0", "@react-aria/utils": "^3.31.0", "@react-stately/tabs": "^3.8.6", "@react-types/shared": "^3.32.1", "@react-types/tabs": "^3.3.19", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-sPPJyTyoAqsBh76JinBAxStOcbjZvyWFYKpJ9Uqw+XT0ObshAPPFSGeh8DiQemPs02RwJdrfARPMhyqiX8t59A=="], - - "@react-aria/tag": ["@react-aria/tag@3.7.2", "", { "dependencies": { "@react-aria/gridlist": "^3.14.1", "@react-aria/i18n": "^3.12.13", "@react-aria/interactions": "^3.25.6", "@react-aria/label": "^3.7.22", "@react-aria/selection": "^3.26.0", "@react-aria/utils": "^3.31.0", "@react-stately/list": "^3.13.1", "@react-types/button": "^3.14.1", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-JV679P5r4DftbqyNBRt7Nw9mP7dxaKPfikjyQuvUoEOa06wBLbM/hU9RJUPRvqK+Un6lgBDAmXD9NNf4N2xpdw=="], - - "@react-aria/textfield": ["@react-aria/textfield@3.18.2", "", { "dependencies": { "@react-aria/form": "^3.1.2", "@react-aria/interactions": "^3.25.6", "@react-aria/label": "^3.7.22", "@react-aria/utils": "^3.31.0", "@react-stately/form": "^3.2.2", "@react-stately/utils": "^3.10.8", "@react-types/shared": "^3.32.1", "@react-types/textfield": "^3.12.6", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-G+lM8VYSor6g9Yptc6hLZ6BF+0cq0pYol1z6wdQUQgJN8tg4HPtzq75lsZtlCSIznL3amgRAxJtd0dUrsAnvaQ=="], - - "@react-aria/toast": ["@react-aria/toast@3.0.8", "", { "dependencies": { "@react-aria/i18n": "^3.12.13", "@react-aria/interactions": "^3.25.6", "@react-aria/landmark": "^3.0.7", "@react-aria/utils": "^3.31.0", "@react-stately/toast": "^3.1.2", "@react-types/button": "^3.14.1", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-rfJIms6AkMyQ7ZgKrMZgGfPwGcB/t1JoEwbc1PAmXcAvFI/hzF6YF7ZFDXiq38ucFsP9PnHmbXIzM9w4ccl18A=="], - - "@react-aria/toggle": ["@react-aria/toggle@3.12.2", "", { "dependencies": { "@react-aria/interactions": "^3.25.6", "@react-aria/utils": "^3.31.0", "@react-stately/toggle": "^3.9.2", "@react-types/checkbox": "^3.10.2", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-g25XLYqJuJpt0/YoYz2Rab8ax+hBfbssllcEFh0v0jiwfk2gwTWfRU9KAZUvxIqbV8Nm8EBmrYychDpDcvW1kw=="], - - "@react-aria/toolbar": ["@react-aria/toolbar@3.0.0-beta.21", "", { "dependencies": { "@react-aria/focus": "^3.21.2", "@react-aria/i18n": "^3.12.13", "@react-aria/utils": "^3.31.0", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-yRCk/GD8g+BhdDgxd3I0a0c8Ni4Wyo6ERzfSoBkPkwQ4X2E2nkopmraM9D0fXw4UcIr4bnmvADzkHXtBN0XrBg=="], - - "@react-aria/tooltip": ["@react-aria/tooltip@3.8.8", "", { "dependencies": { "@react-aria/interactions": "^3.25.6", "@react-aria/utils": "^3.31.0", "@react-stately/tooltip": "^3.5.8", "@react-types/shared": "^3.32.1", "@react-types/tooltip": "^3.4.21", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-CmHUqtXtFWmG4AHMEr9hIVex+oscK6xcM2V47gq9ijNInxe3M6UBu/dBdkgGP/jYv9N7tzCAjTR8nNIHQXwvWw=="], - - "@react-aria/tree": ["@react-aria/tree@3.1.4", "", { "dependencies": { "@react-aria/gridlist": "^3.14.1", "@react-aria/i18n": "^3.12.13", "@react-aria/selection": "^3.26.0", "@react-aria/utils": "^3.31.0", "@react-stately/tree": "^3.9.3", "@react-types/button": "^3.14.1", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-6pbFeN0dAsCOrFGUKU39CNjft20zCAjLfMqfkRWisL+JkUHI2nq6odUJF5jJTsU1C+1951+3oFOmVxPX+K+akQ=="], - - "@react-aria/utils": ["@react-aria/utils@3.31.0", "", { "dependencies": { "@react-aria/ssr": "^3.9.10", "@react-stately/flags": "^3.1.2", "@react-stately/utils": "^3.10.8", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0", "clsx": "^2.0.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-ABOzCsZrWzf78ysswmguJbx3McQUja7yeGj6/vZo4JVsZNlxAN+E9rs381ExBRI0KzVo6iBTeX5De8eMZPJXig=="], - - "@react-aria/visually-hidden": ["@react-aria/visually-hidden@3.8.28", "", { "dependencies": { "@react-aria/interactions": "^3.25.6", "@react-aria/utils": "^3.31.0", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-KRRjbVVob2CeBidF24dzufMxBveEUtUu7IM+hpdZKB+gxVROoh4XRLPv9SFmaH89Z7D9To3QoykVZoWD0lan6Q=="], - - "@react-hookz/web": ["@react-hookz/web@25.2.0", "", { "dependencies": { "@ver0/deep-equal": "^1.0.0" }, "peerDependencies": { "js-cookie": "^3.0.5", "react": "^16.8 || ^17 || ^18 || ^19", "react-dom": "^16.8 || ^17 || ^18 || ^19" }, "optionalPeers": ["js-cookie"] }, "sha512-60iU7lGnZOjdkNVpu/8xNEnTPVQQ5ckauIEvsh9S+58v2j/mY1lhgNas+w+9UF8VoUhWC4/cpaxT64EUC6DgsQ=="], - - "@react-stately/calendar": ["@react-stately/calendar@3.9.0", "", { "dependencies": { "@internationalized/date": "^3.10.0", "@react-stately/utils": "^3.10.8", "@react-types/calendar": "^3.8.0", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-U5Nf2kx9gDhJRxdDUm5gjfyUlt/uUfOvM1vDW2UA62cA6+2k2cavMLc2wNlXOb/twFtl6p0joYKHG7T4xnEFkg=="], - - "@react-stately/checkbox": ["@react-stately/checkbox@3.7.2", "", { "dependencies": { "@react-stately/form": "^3.2.2", "@react-stately/utils": "^3.10.8", "@react-types/checkbox": "^3.10.2", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-j1ycUVz5JmqhaL6mDZgDNZqBilOB8PBW096sDPFaTtuYreDx2HOd1igxiIvwlvPESZwsJP7FVM3mYnaoXtpKPA=="], - - "@react-stately/collections": ["@react-stately/collections@3.12.8", "", { "dependencies": { "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-AceJYLLXt1Y2XIcOPi6LEJSs4G/ubeYW3LqOCQbhfIgMaNqKfQMIfagDnPeJX9FVmPFSlgoCBxb1pTJW2vjCAQ=="], - - "@react-stately/color": ["@react-stately/color@3.9.2", "", { "dependencies": { "@internationalized/number": "^3.6.5", "@internationalized/string": "^3.2.7", "@react-stately/form": "^3.2.2", "@react-stately/numberfield": "^3.10.2", "@react-stately/slider": "^3.7.2", "@react-stately/utils": "^3.10.8", "@react-types/color": "^3.1.2", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-F+6Do8W3yu/4n7MpzZtbXwVukcLTFYYDIUtpoR+Jl52UmAr9Hf1CQgkyTI2azv1ZMzj1mVrTBhpBL0q27kFZig=="], - - "@react-stately/combobox": ["@react-stately/combobox@3.12.0", "", { "dependencies": { "@react-stately/collections": "^3.12.8", "@react-stately/form": "^3.2.2", "@react-stately/list": "^3.13.1", "@react-stately/overlays": "^3.6.20", "@react-stately/utils": "^3.10.8", "@react-types/combobox": "^3.13.9", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-A6q9R/7cEa/qoQsBkdslXWvD7ztNLLQ9AhBhVN9QvzrmrH5B4ymUwcTU8lWl22ykH7RRwfonLeLXJL4C+/L2oQ=="], - - "@react-stately/datepicker": ["@react-stately/datepicker@3.15.2", "", { "dependencies": { "@internationalized/date": "^3.10.0", "@internationalized/string": "^3.2.7", "@react-stately/form": "^3.2.2", "@react-stately/overlays": "^3.6.20", "@react-stately/utils": "^3.10.8", "@react-types/datepicker": "^3.13.2", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-S5GL+W37chvV8knv9v0JRv0L6hKo732qqabCCHXzOpYxkLIkV4f/y3cHdEzFWzpZ0O0Gkg7WgeYo160xOdBKYg=="], - - "@react-stately/disclosure": ["@react-stately/disclosure@3.0.8", "", { "dependencies": { "@react-stately/utils": "^3.10.8", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-/Ce/Z76y85eSBZiemfU/uEyXkBBa1RdfLRaKD13rnfUV7/nS3ae1VtNlsXgmwQjWv2pmAiSuEKYMbZfVL7q/lQ=="], - - "@react-stately/dnd": ["@react-stately/dnd@3.7.1", "", { "dependencies": { "@react-stately/selection": "^3.20.6", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-O1JBJ4HI1rVNKuoa5NXiC5FCrCEkr9KVBoKNlTZU8/cnQselhbEsUfMglAakO2EuwIaM1tIXoNF5J/N5P+6lTA=="], - - "@react-stately/flags": ["@react-stately/flags@3.1.2", "", { "dependencies": { "@swc/helpers": "^0.5.0" } }, "sha512-2HjFcZx1MyQXoPqcBGALwWWmgFVUk2TuKVIQxCbRq7fPyWXIl6VHcakCLurdtYC2Iks7zizvz0Idv48MQ38DWg=="], - - "@react-stately/form": ["@react-stately/form@3.2.2", "", { "dependencies": { "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-soAheOd7oaTO6eNs6LXnfn0tTqvOoe3zN9FvtIhhrErKz9XPc5sUmh3QWwR45+zKbitOi1HOjfA/gifKhZcfWw=="], - - "@react-stately/grid": ["@react-stately/grid@3.11.6", "", { "dependencies": { "@react-stately/collections": "^3.12.8", "@react-stately/selection": "^3.20.6", "@react-types/grid": "^3.3.6", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-vWPAkzpeTIsrurHfMubzMuqEw7vKzFhIJeEK5sEcLunyr1rlADwTzeWrHNbPMl66NAIAi70Dr1yNq+kahQyvMA=="], - - "@react-stately/list": ["@react-stately/list@3.13.1", "", { "dependencies": { "@react-stately/collections": "^3.12.8", "@react-stately/selection": "^3.20.6", "@react-stately/utils": "^3.10.8", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-eHaoauh21twbcl0kkwULhVJ+CzYcy1jUjMikNVMHOQdhr4WIBdExf7PmSgKHKqsSPhpGg6IpTCY2dUX3RycjDg=="], - - "@react-stately/menu": ["@react-stately/menu@3.9.8", "", { "dependencies": { "@react-stately/overlays": "^3.6.20", "@react-types/menu": "^3.10.5", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-bo0NOhofnTHLESiYfsSSw6gyXiPVJJ0UlN2igUXtJk5PmyhWjFzUzTzcnd7B028OB0si9w3LIWM3stqz5271Eg=="], - - "@react-stately/numberfield": ["@react-stately/numberfield@3.10.2", "", { "dependencies": { "@internationalized/number": "^3.6.5", "@react-stately/form": "^3.2.2", "@react-stately/utils": "^3.10.8", "@react-types/numberfield": "^3.8.15", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-jlKVFYaH3RX5KvQ7a+SAMQuPccZCzxLkeYkBE64u1Zvi7YhJ8hkTMHG/fmZMbk1rHlseE2wfBdk0Rlya3MvoNQ=="], - - "@react-stately/overlays": ["@react-stately/overlays@3.6.20", "", { "dependencies": { "@react-stately/utils": "^3.10.8", "@react-types/overlays": "^3.9.2", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-YAIe+uI8GUXX8F/0Pzr53YeC5c/bjqbzDFlV8NKfdlCPa6+Jp4B/IlYVjIooBj9+94QvbQdjylegvYWK/iPwlg=="], - - "@react-stately/radio": ["@react-stately/radio@3.11.2", "", { "dependencies": { "@react-stately/form": "^3.2.2", "@react-stately/utils": "^3.10.8", "@react-types/radio": "^3.9.2", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-UM7L6AW+k8edhSBUEPZAqiWNRNadfOKK7BrCXyBiG79zTz0zPcXRR+N+gzkDn7EMSawDeyK1SHYUuoSltTactg=="], - - "@react-stately/searchfield": ["@react-stately/searchfield@3.5.16", "", { "dependencies": { "@react-stately/utils": "^3.10.8", "@react-types/searchfield": "^3.6.6", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-MRfqT1lZ24r94GuFNcGJXsfijZoWjSMySCT60T6NXtbOzVPuAF3K+pL70Rayq/EWLJjS2NPHND11VTs0VdcE0Q=="], - - "@react-stately/select": ["@react-stately/select@3.8.0", "", { "dependencies": { "@react-stately/form": "^3.2.2", "@react-stately/list": "^3.13.1", "@react-stately/overlays": "^3.6.20", "@react-stately/utils": "^3.10.8", "@react-types/select": "^3.11.0", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-A721nlt0DSCDit0wKvhcrXFTG5Vv1qkEVkeKvobmETZy6piKvwh0aaN8iQno5AFuZaj1iOZeNjZ/20TsDJR/4A=="], - - "@react-stately/selection": ["@react-stately/selection@3.20.6", "", { "dependencies": { "@react-stately/collections": "^3.12.8", "@react-stately/utils": "^3.10.8", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-a0bjuP2pJYPKEiedz2Us1W1aSz0iHRuyeQEdBOyL6Z6VUa6hIMq9H60kvseir2T85cOa4QggizuRV7mcO6bU5w=="], - - "@react-stately/slider": ["@react-stately/slider@3.7.2", "", { "dependencies": { "@react-stately/utils": "^3.10.8", "@react-types/shared": "^3.32.1", "@react-types/slider": "^3.8.2", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-EVBHUdUYwj++XqAEiQg2fGi8Reccznba0uyQ3gPejF0pAc390Q/J5aqiTEDfiCM7uJ6WHxTM6lcCqHQBISk2dQ=="], - - "@react-stately/table": ["@react-stately/table@3.15.1", "", { "dependencies": { "@react-stately/collections": "^3.12.8", "@react-stately/flags": "^3.1.2", "@react-stately/grid": "^3.11.6", "@react-stately/selection": "^3.20.6", "@react-stately/utils": "^3.10.8", "@react-types/grid": "^3.3.6", "@react-types/shared": "^3.32.1", "@react-types/table": "^3.13.4", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-MhMAgE/LgAzHcAn1P3p/nQErzJ6DiixSJ1AOt2JlnAKEb5YJg4ATKWCb2IjBLwywt9ZCzfm3KMUzkctZqAoxwA=="], - - "@react-stately/tabs": ["@react-stately/tabs@3.8.6", "", { "dependencies": { "@react-stately/list": "^3.13.1", "@react-types/shared": "^3.32.1", "@react-types/tabs": "^3.3.19", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-9RYxmgjVIxUpIsGKPIF7uRoHWOEz8muwaYiStCVeyiYBPmarvZoIYtTXcwSMN/vEs7heVN5uGCL6/bfdY4+WiA=="], - - "@react-stately/toast": ["@react-stately/toast@3.1.2", "", { "dependencies": { "@swc/helpers": "^0.5.0", "use-sync-external-store": "^1.4.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-HiInm7bck32khFBHZThTQaAF6e6/qm57F4mYRWdTq8IVeGDzpkbUYibnLxRhk0UZ5ybc6me+nqqPkG/lVmM42Q=="], - - "@react-stately/toggle": ["@react-stately/toggle@3.9.2", "", { "dependencies": { "@react-stately/utils": "^3.10.8", "@react-types/checkbox": "^3.10.2", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-dOxs9wrVXHUmA7lc8l+N9NbTJMAaXcYsnNGsMwfXIXQ3rdq+IjWGNYJ52UmNQyRYFcg0jrzRrU16TyGbNjOdNQ=="], - - "@react-stately/tooltip": ["@react-stately/tooltip@3.5.8", "", { "dependencies": { "@react-stately/overlays": "^3.6.20", "@react-types/tooltip": "^3.4.21", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-gkcUx2ROhCiGNAYd2BaTejakXUUNLPnnoJ5+V/mN480pN+OrO8/2V9pqb/IQmpqxLsso93zkM3A4wFHHLBBmPQ=="], - - "@react-stately/tree": ["@react-stately/tree@3.9.3", "", { "dependencies": { "@react-stately/collections": "^3.12.8", "@react-stately/selection": "^3.20.6", "@react-stately/utils": "^3.10.8", "@react-types/shared": "^3.32.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-ZngG79nLFxE/GYmpwX6E/Rma2MMkzdoJPRI3iWk3dgqnGMMzpPnUp/cvjDsU3UHF7xDVusC5BT6pjWN0uxCIFQ=="], - - "@react-stately/utils": ["@react-stately/utils@3.10.8", "", { "dependencies": { "@swc/helpers": "^0.5.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-SN3/h7SzRsusVQjQ4v10LaVsDc81jyyR0DD5HnsQitm/I5WDpaSr2nRHtyloPFU48jlql1XX/S04T2DLQM7Y3g=="], - - "@react-types/breadcrumbs": ["@react-types/breadcrumbs@3.7.17", "", { "dependencies": { "@react-types/link": "^3.6.5", "@react-types/shared": "^3.32.1" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-IhvVTcfli5o/UDlGACXxjlor2afGlMQA8pNR3faH0bBUay1Fmm3IWktVw9Xwmk+KraV2RTAg9e+E6p8DOQZfiw=="], - - "@react-types/button": ["@react-types/button@3.14.1", "", { "dependencies": { "@react-types/shared": "^3.32.1" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-D8C4IEwKB7zEtiWYVJ3WE/5HDcWlze9mLWQ5hfsBfpePyWCgO3bT/+wjb/7pJvcAocrkXo90QrMm85LcpBtrpg=="], - - "@react-types/calendar": ["@react-types/calendar@3.8.0", "", { "dependencies": { "@internationalized/date": "^3.10.0", "@react-types/shared": "^3.32.1" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-ZDZgfZgbz1ydWOFs1mH7QFfX3ioJrmb3Y/lkoubQE0HWXLZzyYNvhhKyFJRS1QJ40IofLSBHriwbQb/tsUnGlw=="], - - "@react-types/checkbox": ["@react-types/checkbox@3.10.2", "", { "dependencies": { "@react-types/shared": "^3.32.1" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-ktPkl6ZfIdGS1tIaGSU/2S5Agf2NvXI9qAgtdMDNva0oLyAZ4RLQb6WecPvofw1J7YKXu0VA5Mu7nlX+FM2weQ=="], - - "@react-types/color": ["@react-types/color@3.1.2", "", { "dependencies": { "@react-types/shared": "^3.32.1", "@react-types/slider": "^3.8.2" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-NP0TAY3j4tlMztOp/bBfMlPwC9AQKTjSiTFmc2oQNkx5M4sl3QpPqFPosdt7jZ8M4nItvfCWZrlZGjST4SB83A=="], - - "@react-types/combobox": ["@react-types/combobox@3.13.9", "", { "dependencies": { "@react-types/shared": "^3.32.1" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-G6GmLbzVkLW6VScxPAr/RtliEyPhBClfYaIllK1IZv+Z42SVnOpKzhnoe79BpmiFqy1AaC3+LjZX783mrsHCwA=="], - - "@react-types/datepicker": ["@react-types/datepicker@3.13.2", "", { "dependencies": { "@internationalized/date": "^3.10.0", "@react-types/calendar": "^3.8.0", "@react-types/overlays": "^3.9.2", "@react-types/shared": "^3.32.1" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-+M6UZxJnejYY8kz0spbY/hP08QJ5rsZ3aNarRQQHc48xV2oelFLX5MhAqizfLEsvyfb0JYrhWoh4z1xZtAmYCg=="], - - "@react-types/dialog": ["@react-types/dialog@3.5.22", "", { "dependencies": { "@react-types/overlays": "^3.9.2", "@react-types/shared": "^3.32.1" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-smSvzOcqKE196rWk0oqJDnz+ox5JM5+OT0PmmJXiUD4q7P5g32O6W5Bg7hMIFUI9clBtngo8kLaX2iMg+GqAzg=="], - - "@react-types/grid": ["@react-types/grid@3.3.6", "", { "dependencies": { "@react-types/shared": "^3.32.1" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-vIZJlYTii2n1We9nAugXwM2wpcpsC6JigJFBd6vGhStRdRWRoU4yv1Gc98Usbx0FQ/J7GLVIgeG8+1VMTKBdxw=="], - - "@react-types/link": ["@react-types/link@3.6.5", "", { "dependencies": { "@react-types/shared": "^3.32.1" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-+I2s3XWBEvLrzts0GnNeA84mUkwo+a7kLUWoaJkW0TOBDG7my95HFYxF9WnqKye7NgpOkCqz4s3oW96xPdIniQ=="], - - "@react-types/listbox": ["@react-types/listbox@3.7.4", "", { "dependencies": { "@react-types/shared": "^3.32.1" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-p4YEpTl/VQGrqVE8GIfqTS5LkT5jtjDTbVeZgrkPnX/fiPhsfbTPiZ6g0FNap4+aOGJFGEEZUv2q4vx+rCORww=="], - - "@react-types/menu": ["@react-types/menu@3.10.5", "", { "dependencies": { "@react-types/overlays": "^3.9.2", "@react-types/shared": "^3.32.1" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-HBTrKll2hm0VKJNM4ubIv1L9MNo8JuOnm2G3M+wXvb6EYIyDNxxJkhjsqsGpUXJdAOSkacHBDcNh2HsZABNX4A=="], - - "@react-types/meter": ["@react-types/meter@3.4.13", "", { "dependencies": { "@react-types/progress": "^3.5.16" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-EiarfbpHcvmeyXvXcr6XLaHkNHuGc4g7fBVEiDPwssFJKKfbUzqnnknDxPjyspqUVRcXC08CokS98J1jYobqDg=="], - - "@react-types/numberfield": ["@react-types/numberfield@3.8.15", "", { "dependencies": { "@react-types/shared": "^3.32.1" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-97r92D23GKCOjGIGMeW9nt+/KlfM3GeWH39Czcmd2/D5y3k6z4j0avbsfx2OttCtJszrnENjw3GraYGYI2KosQ=="], - - "@react-types/overlays": ["@react-types/overlays@3.9.2", "", { "dependencies": { "@react-types/shared": "^3.32.1" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-Q0cRPcBGzNGmC8dBuHyoPR7N3057KTS5g+vZfQ53k8WwmilXBtemFJPLsogJbspuewQ/QJ3o2HYsp2pne7/iNw=="], - - "@react-types/progress": ["@react-types/progress@3.5.16", "", { "dependencies": { "@react-types/shared": "^3.32.1" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-I9tSdCFfvQ7gHJtm90VAKgwdTWXQgVNvLRStEc0z9h+bXBxdvZb+QuiRPERChwFQ9VkK4p4rDqaFo69nDqWkpw=="], - - "@react-types/radio": ["@react-types/radio@3.9.2", "", { "dependencies": { "@react-types/shared": "^3.32.1" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-3UcJXu37JrTkRyP4GJPDBU7NmDTInrEdOe+bVzA1j4EegzdkJmLBkLg5cLDAbpiEHB+xIsvbJdx6dxeMuc+H3g=="], - - "@react-types/searchfield": ["@react-types/searchfield@3.6.6", "", { "dependencies": { "@react-types/shared": "^3.32.1", "@react-types/textfield": "^3.12.6" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-cl3itr/fk7wbIQc2Gz5Ie8aVeUmPjVX/mRGS5/EXlmzycAKNYTvqf2mlxwObLndtLISmt7IgNjRRhbUUDI8Ang=="], - - "@react-types/select": ["@react-types/select@3.11.0", "", { "dependencies": { "@react-types/shared": "^3.32.1" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-SzIsMFVPCbXE1Z1TLfpdfiwJ1xnIkcL1/CjGilmUKkNk5uT7rYX1xCJqWCjXI0vAU1xM4Qn+T3n8de4fw6HRBg=="], - - "@react-types/shared": ["@react-types/shared@3.32.1", "", { "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-famxyD5emrGGpFuUlgOP6fVW2h/ZaF405G5KDi3zPHzyjAWys/8W6NAVJtNbkCkhedmvL0xOhvt8feGXyXaw5w=="], - - "@react-types/slider": ["@react-types/slider@3.8.2", "", { "dependencies": { "@react-types/shared": "^3.32.1" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-MQYZP76OEOYe7/yA2To+Dl0LNb0cKKnvh5JtvNvDnAvEprn1RuLiay8Oi/rTtXmc2KmBa4VdTcsXsmkbbkeN2Q=="], - - "@react-types/switch": ["@react-types/switch@3.5.15", "", { "dependencies": { "@react-types/shared": "^3.32.1" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-r/ouGWQmIeHyYSP1e5luET+oiR7N7cLrAlWsrAfYRWHxqXOSNQloQnZJ3PLHrKFT02fsrQhx2rHaK2LfKeyN3A=="], - - "@react-types/table": ["@react-types/table@3.13.4", "", { "dependencies": { "@react-types/grid": "^3.3.6", "@react-types/shared": "^3.32.1" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-I/DYiZQl6aNbMmjk90J9SOhkzVDZvyA3Vn3wMWCiajkMNjvubFhTfda5DDf2SgFP5l0Yh6TGGH5XumRv9LqL5Q=="], - - "@react-types/tabs": ["@react-types/tabs@3.3.19", "", { "dependencies": { "@react-types/shared": "^3.32.1" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-fE+qI43yR5pAMpeqPxGqQq9jDHXEPqXskuxNHERMW0PYMdPyem2Cw6goc5F4qeZO3Hf6uPZgHkvJz2OAq7TbBw=="], - - "@react-types/textfield": ["@react-types/textfield@3.12.6", "", { "dependencies": { "@react-types/shared": "^3.32.1" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-hpEVKE+M3uUkTjw2WrX1NrH/B3rqDJFUa+ViNK2eVranLY4ZwFqbqaYXSzHupOF3ecSjJJv2C103JrwFvx6TPQ=="], - - "@react-types/tooltip": ["@react-types/tooltip@3.4.21", "", { "dependencies": { "@react-types/overlays": "^3.9.2", "@react-types/shared": "^3.32.1" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-ugGHOZU6WbOdeTdbjnaEc+Ms7/WhsUCg+T3PCOIeOT9FG02Ce189yJ/+hd7oqL/tVwIhEMYJIqSCgSELFox+QA=="], - - "@readme/better-ajv-errors": ["@readme/better-ajv-errors@2.4.0", "", { "dependencies": { "@babel/code-frame": "^7.22.5", "@babel/runtime": "^7.22.5", "@humanwhocodes/momoa": "^2.0.3", "jsonpointer": "^5.0.0", "leven": "^3.1.0", "picocolors": "^1.1.1" }, "peerDependencies": { "ajv": "4.11.8 - 8" } }, "sha512-9WODaOAKSl/mU+MYNZ2aHCrkoRSvmQ+1YkLj589OEqqjOAhbn8j7Z+ilYoiTu/he6X63/clsxxAB4qny9/dDzg=="], - - "@readme/data-urls": ["@readme/data-urls@3.0.1", "", {}, "sha512-N0JGQe7cmD3hqHwfsvkIsUOdUyUMVl3ezVFkMRuvYakNx47wGSkS83EiZR2gpidceOb9xZ3FVnst2D1sCqpRIg=="], - - "@readme/httpsnippet": ["@readme/httpsnippet@11.0.0", "", { "dependencies": { "qs": "^6.11.2", "stringify-object": "^3.3.0" } }, "sha512-XSyaAsJkZfmMO9R4WDlVJARZgd4wlImftSkMkKclidniXA1h6DTya9iTqJenQo9mHQLh3u6kAC3CDRaIV+LbLw=="], - - "@readme/openapi-parser": ["@readme/openapi-parser@4.1.2", "", { "dependencies": { "@apidevtools/json-schema-ref-parser": "^13.0.5", "@readme/better-ajv-errors": "^2.3.2", "@readme/openapi-schemas": "^3.1.0", "@types/json-schema": "^7.0.15", "ajv": "^8.12.0", "ajv-draft-04": "^1.0.0" }, "peerDependencies": { "openapi-types": ">=7" } }, "sha512-lAFH88r/CHs5VZDUocEda0OSMSQsr6801sziIjOKyVA+0hSFN+BPuelPF5XvkMROHecnPd+XEJN1iNQqCgER/g=="], - - "@readme/openapi-schemas": ["@readme/openapi-schemas@3.1.0", "", {}, "sha512-9FC/6ho8uFa8fV50+FPy/ngWN53jaUu4GRXlAjcxIRrzhltJnpKkBG2Tp0IDraFJeWrOpk84RJ9EMEEYzaI1Bw=="], - - "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.53.3", "", { "os": "android", "cpu": "arm" }, "sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w=="], - - "@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.53.3", "", { "os": "android", "cpu": "arm64" }, "sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w=="], - - "@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.53.3", "", { "os": "darwin", "cpu": "arm64" }, "sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA=="], - - "@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.53.3", "", { "os": "darwin", "cpu": "x64" }, "sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ=="], - - "@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.53.3", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w=="], - - "@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.53.3", "", { "os": "freebsd", "cpu": "x64" }, "sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q=="], - - "@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.53.3", "", { "os": "linux", "cpu": "arm" }, "sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw=="], - - "@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.53.3", "", { "os": "linux", "cpu": "arm" }, "sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg=="], - - "@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.53.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w=="], - - "@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.53.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A=="], - - "@rollup/rollup-linux-loong64-gnu": ["@rollup/rollup-linux-loong64-gnu@4.53.3", "", { "os": "linux", "cpu": "none" }, "sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g=="], - - "@rollup/rollup-linux-ppc64-gnu": ["@rollup/rollup-linux-ppc64-gnu@4.53.3", "", { "os": "linux", "cpu": "ppc64" }, "sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw=="], - - "@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.53.3", "", { "os": "linux", "cpu": "none" }, "sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g=="], - - "@rollup/rollup-linux-riscv64-musl": ["@rollup/rollup-linux-riscv64-musl@4.53.3", "", { "os": "linux", "cpu": "none" }, "sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A=="], - - "@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.53.3", "", { "os": "linux", "cpu": "s390x" }, "sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg=="], - - "@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.53.3", "", { "os": "linux", "cpu": "x64" }, "sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w=="], - - "@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.53.3", "", { "os": "linux", "cpu": "x64" }, "sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q=="], - - "@rollup/rollup-openharmony-arm64": ["@rollup/rollup-openharmony-arm64@4.53.3", "", { "os": "none", "cpu": "arm64" }, "sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw=="], - - "@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.53.3", "", { "os": "win32", "cpu": "arm64" }, "sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw=="], - - "@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.53.3", "", { "os": "win32", "cpu": "ia32" }, "sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA=="], - - "@rollup/rollup-win32-x64-gnu": ["@rollup/rollup-win32-x64-gnu@4.53.3", "", { "os": "win32", "cpu": "x64" }, "sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg=="], - - "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.53.3", "", { "os": "win32", "cpu": "x64" }, "sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ=="], - - "@scure/base": ["@scure/base@1.2.6", "", {}, "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg=="], - - "@scure/bip32": ["@scure/bip32@1.7.0", "", { "dependencies": { "@noble/curves": "~1.9.0", "@noble/hashes": "~1.8.0", "@scure/base": "~1.2.5" } }, "sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw=="], - - "@scure/bip39": ["@scure/bip39@1.6.0", "", { "dependencies": { "@noble/hashes": "~1.8.0", "@scure/base": "~1.2.5" } }, "sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A=="], - - "@sentry/core": ["@sentry/core@5.30.0", "", { "dependencies": { "@sentry/hub": "5.30.0", "@sentry/minimal": "5.30.0", "@sentry/types": "5.30.0", "@sentry/utils": "5.30.0", "tslib": "^1.9.3" } }, "sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg=="], - - "@sentry/hub": ["@sentry/hub@5.30.0", "", { "dependencies": { "@sentry/types": "5.30.0", "@sentry/utils": "5.30.0", "tslib": "^1.9.3" } }, "sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ=="], - - "@sentry/minimal": ["@sentry/minimal@5.30.0", "", { "dependencies": { "@sentry/hub": "5.30.0", "@sentry/types": "5.30.0", "tslib": "^1.9.3" } }, "sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw=="], - - "@sentry/node": ["@sentry/node@5.30.0", "", { "dependencies": { "@sentry/core": "5.30.0", "@sentry/hub": "5.30.0", "@sentry/tracing": "5.30.0", "@sentry/types": "5.30.0", "@sentry/utils": "5.30.0", "cookie": "^0.4.1", "https-proxy-agent": "^5.0.0", "lru_map": "^0.3.3", "tslib": "^1.9.3" } }, "sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg=="], - - "@sentry/tracing": ["@sentry/tracing@5.30.0", "", { "dependencies": { "@sentry/hub": "5.30.0", "@sentry/minimal": "5.30.0", "@sentry/types": "5.30.0", "@sentry/utils": "5.30.0", "tslib": "^1.9.3" } }, "sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw=="], - - "@sentry/types": ["@sentry/types@5.30.0", "", {}, "sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw=="], - - "@sentry/utils": ["@sentry/utils@5.30.0", "", { "dependencies": { "@sentry/types": "5.30.0", "tslib": "^1.9.3" } }, "sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww=="], - - "@shikijs/core": ["@shikijs/core@3.15.0", "", { "dependencies": { "@shikijs/types": "3.15.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" } }, "sha512-8TOG6yG557q+fMsSVa8nkEDOZNTSxjbbR8l6lF2gyr6Np+jrPlslqDxQkN6rMXCECQ3isNPZAGszAfYoJOPGlg=="], - - "@shikijs/engine-javascript": ["@shikijs/engine-javascript@3.15.0", "", { "dependencies": { "@shikijs/types": "3.15.0", "@shikijs/vscode-textmate": "^10.0.2", "oniguruma-to-es": "^4.3.3" } }, "sha512-ZedbOFpopibdLmvTz2sJPJgns8Xvyabe2QbmqMTz07kt1pTzfEvKZc5IqPVO/XFiEbbNyaOpjPBkkr1vlwS+qg=="], - - "@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@3.15.0", "", { "dependencies": { "@shikijs/types": "3.15.0", "@shikijs/vscode-textmate": "^10.0.2" } }, "sha512-HnqFsV11skAHvOArMZdLBZZApRSYS4LSztk2K3016Y9VCyZISnlYUYsL2hzlS7tPqKHvNqmI5JSUJZprXloMvA=="], - - "@shikijs/langs": ["@shikijs/langs@3.15.0", "", { "dependencies": { "@shikijs/types": "3.15.0" } }, "sha512-WpRvEFvkVvO65uKYW4Rzxs+IG0gToyM8SARQMtGGsH4GDMNZrr60qdggXrFOsdfOVssG/QQGEl3FnJ3EZ+8w8A=="], - - "@shikijs/themes": ["@shikijs/themes@3.15.0", "", { "dependencies": { "@shikijs/types": "3.15.0" } }, "sha512-8ow2zWb1IDvCKjYb0KiLNrK4offFdkfNVPXb1OZykpLCzRU6j+efkY+Y7VQjNlNFXonSw+4AOdGYtmqykDbRiQ=="], - - "@shikijs/twoslash": ["@shikijs/twoslash@1.29.2", "", { "dependencies": { "@shikijs/core": "1.29.2", "@shikijs/types": "1.29.2", "twoslash": "^0.2.12" } }, "sha512-2S04ppAEa477tiaLfGEn1QJWbZUmbk8UoPbAEw4PifsrxkBXtAtOflIZJNtuCwz8ptc/TPxy7CO7gW4Uoi6o/g=="], - - "@shikijs/types": ["@shikijs/types@3.15.0", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-BnP+y/EQnhihgHy4oIAN+6FFtmfTekwOLsQbRw9hOKwqgNy8Bdsjq8B05oAt/ZgvIWWFrshV71ytOrlPfYjIJw=="], - - "@shikijs/vscode-textmate": ["@shikijs/vscode-textmate@10.0.2", "", {}, "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg=="], - - "@styled-system/background": ["@styled-system/background@5.1.2", "", { "dependencies": { "@styled-system/core": "^5.1.2" } }, "sha512-jtwH2C/U6ssuGSvwTN3ri/IyjdHb8W9X/g8Y0JLcrH02G+BW3OS8kZdHphF1/YyRklnrKrBT2ngwGUK6aqqV3A=="], - - "@styled-system/border": ["@styled-system/border@5.1.5", "", { "dependencies": { "@styled-system/core": "^5.1.2" } }, "sha512-JvddhNrnhGigtzWRCVuAHepniyVi6hBlimxWDVAdcTuk7aRn9BYJUwfHslURtwYFsF5FoEs8Zmr1oZq2M1AP0A=="], - - "@styled-system/color": ["@styled-system/color@5.1.2", "", { "dependencies": { "@styled-system/core": "^5.1.2" } }, "sha512-1kCkeKDZkt4GYkuFNKc7vJQMcOmTl3bJY3YBUs7fCNM6mMYJeT1pViQ2LwBSBJytj3AB0o4IdLBoepgSgGl5MA=="], - - "@styled-system/core": ["@styled-system/core@5.1.2", "", { "dependencies": { "object-assign": "^4.1.1" } }, "sha512-XclBDdNIy7OPOsN4HBsawG2eiWfCcuFt6gxKn1x4QfMIgeO6TOlA2pZZ5GWZtIhCUqEPTgIBta6JXsGyCkLBYw=="], - - "@styled-system/css": ["@styled-system/css@5.1.5", "", {}, "sha512-XkORZdS5kypzcBotAMPBoeckDs9aSZVkvrAlq5K3xP8IMAUek+x2O4NtwoSgkYkWWzVBu6DGdFZLR790QWGG+A=="], - - "@styled-system/flexbox": ["@styled-system/flexbox@5.1.2", "", { "dependencies": { "@styled-system/core": "^5.1.2" } }, "sha512-6hHV52+eUk654Y1J2v77B8iLeBNtc+SA3R4necsu2VVinSD7+XY5PCCEzBFaWs42dtOEDIa2lMrgL0YBC01mDQ=="], - - "@styled-system/grid": ["@styled-system/grid@5.1.2", "", { "dependencies": { "@styled-system/core": "^5.1.2" } }, "sha512-K3YiV1KyHHzgdNuNlaw8oW2ktMuGga99o1e/NAfTEi5Zsa7JXxzwEnVSDSBdJC+z6R8WYTCYRQC6bkVFcvdTeg=="], - - "@styled-system/layout": ["@styled-system/layout@5.1.2", "", { "dependencies": { "@styled-system/core": "^5.1.2" } }, "sha512-wUhkMBqSeacPFhoE9S6UF3fsMEKFv91gF4AdDWp0Aym1yeMPpqz9l9qS/6vjSsDPF7zOb5cOKC3tcKKOMuDCPw=="], - - "@styled-system/position": ["@styled-system/position@5.1.2", "", { "dependencies": { "@styled-system/core": "^5.1.2" } }, "sha512-60IZfMXEOOZe3l1mCu6sj/2NAyUmES2kR9Kzp7s2D3P4qKsZWxD1Se1+wJvevb+1TP+ZMkGPEYYXRyU8M1aF5A=="], - - "@styled-system/shadow": ["@styled-system/shadow@5.1.2", "", { "dependencies": { "@styled-system/core": "^5.1.2" } }, "sha512-wqniqYb7XuZM7K7C0d1Euxc4eGtqEe/lvM0WjuAFsQVImiq6KGT7s7is+0bNI8O4Dwg27jyu4Lfqo/oIQXNzAg=="], - - "@styled-system/should-forward-prop": ["@styled-system/should-forward-prop@5.1.5", "", { "dependencies": { "@emotion/is-prop-valid": "^0.8.1", "@emotion/memoize": "^0.7.1", "styled-system": "^5.1.5" } }, "sha512-+rPRomgCGYnUIaFabDoOgpSDc4UUJ1KsmlnzcEp0tu5lFrBQKgZclSo18Z1URhaZm7a6agGtS5Xif7tuC2s52Q=="], - - "@styled-system/space": ["@styled-system/space@5.1.2", "", { "dependencies": { "@styled-system/core": "^5.1.2" } }, "sha512-+zzYpR8uvfhcAbaPXhH8QgDAV//flxqxSjHiS9cDFQQUSznXMQmxJegbhcdEF7/eNnJgHeIXv1jmny78kipgBA=="], - - "@styled-system/typography": ["@styled-system/typography@5.1.2", "", { "dependencies": { "@styled-system/core": "^5.1.2" } }, "sha512-BxbVUnN8N7hJ4aaPOd7wEsudeT7CxarR+2hns8XCX1zp0DFfbWw4xYa/olA0oQaqx7F1hzDg+eRaGzAJbF+jOg=="], - - "@styled-system/variant": ["@styled-system/variant@5.1.5", "", { "dependencies": { "@styled-system/core": "^5.1.2", "@styled-system/css": "^5.1.5" } }, "sha512-Yn8hXAFoWIro8+Q5J8YJd/mP85Teiut3fsGVR9CAxwgNfIAiqlYxsk5iHU7VHJks/0KjL4ATSjmbtCDC/4l1qw=="], - - "@swc/counter": ["@swc/counter@0.1.3", "", {}, "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ=="], - - "@swc/helpers": ["@swc/helpers@0.5.5", "", { "dependencies": { "@swc/counter": "^0.1.3", "tslib": "^2.4.0" } }, "sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A=="], - - "@tailwindcss/container-queries": ["@tailwindcss/container-queries@0.1.1", "", { "peerDependencies": { "tailwindcss": ">=3.2.0" } }, "sha512-p18dswChx6WnTSaJCSGx6lTmrGzNNvm2FtXmiO6AuA1V4U5REyoqwmT6kgAsIMdjo07QdAfYXHJ4hnMtfHzWgA=="], - - "@tanem/react-nprogress": ["@tanem/react-nprogress@5.0.56", "", { "dependencies": { "@babel/runtime": "^7.28.4", "hoist-non-react-statics": "^3.3.2" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-OI5rXB6jxC/RLJqnIuaKNXu3qQ6Lf3+g1HqkqGz01E25iV3pZFYBihMdGsEeg/4pAm0O7xo/umcAA3jsdeibHA=="], - - "@tanstack/query-core": ["@tanstack/query-core@5.90.11", "", {}, "sha512-f9z/nXhCgWDF4lHqgIE30jxLe4sYv15QodfdPDKYAk7nAEjNcndy4dHz3ezhdUaR23BpWa4I2EH4/DZ0//Uf8A=="], - - "@tanstack/react-query": ["@tanstack/react-query@5.90.11", "", { "dependencies": { "@tanstack/query-core": "5.90.11" }, "peerDependencies": { "react": "^18 || ^19" } }, "sha512-3uyzz01D1fkTLXuxF3JfoJoHQMU2fxsfJwE+6N5hHy0dVNoZOvwKP8Z2k7k1KDeD54N20apcJnG75TBAStIrBA=="], - - "@tanstack/react-virtual": ["@tanstack/react-virtual@3.13.12", "", { "dependencies": { "@tanstack/virtual-core": "3.13.12" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-Gd13QdxPSukP8ZrkbgS2RwoZseTTbQPLnQEn7HY/rqtM+8Zt95f7xKC7N0EsKs7aoz0WzZ+fditZux+F8EzYxA=="], - - "@tanstack/virtual-core": ["@tanstack/virtual-core@3.13.12", "", {}, "sha512-1YBOJfRHV4sXUmWsFSf5rQor4Ss82G8dQWLRbnk3GA4jeP8hQt1hxXh0tmflpC0dz3VgEv/1+qwPyLeWkQuPFA=="], - - "@theguild/remark-mermaid": ["@theguild/remark-mermaid@0.1.3", "", { "dependencies": { "mermaid": "^11.0.0", "unist-util-visit": "^5.0.0" }, "peerDependencies": { "react": "^18.2.0" } }, "sha512-2FjVlaaKXK7Zj7UJAgOVTyaahn/3/EAfqYhyXg0BfDBVUl+lXcoIWRaxzqfnDr2rv8ax6GsC5mNh6hAaT86PDw=="], - - "@theguild/remark-npm2yarn": ["@theguild/remark-npm2yarn@0.3.3", "", { "dependencies": { "npm-to-yarn": "^3.0.0", "unist-util-visit": "^5.0.0" } }, "sha512-ma6DvR03gdbvwqfKx1omqhg9May/VYGdMHvTzB4VuxkyS7KzfZ/lzrj43hmcsggpMje0x7SADA/pcMph0ejRnA=="], - - "@theme-ui/color-modes": ["@theme-ui/color-modes@0.17.2", "", { "dependencies": { "@theme-ui/core": "^0.17.2", "@theme-ui/css": "^0.17.2", "deepmerge": "^4.2.2" }, "peerDependencies": { "@emotion/react": "^11.13.3", "react": ">=18" } }, "sha512-VSycDWzmEPZwZyJGbA83yKPzjzWzE88FQPRKT3QMHsvoD5dUXlF5tFOg0gEPu2cMhKbSWLCFi/Rtj7ANJDSF/w=="], - - "@theme-ui/components": ["@theme-ui/components@0.17.2", "", { "dependencies": { "@styled-system/color": "^5.1.2", "@styled-system/should-forward-prop": "^5.1.2", "@styled-system/space": "^5.1.2", "@theme-ui/core": "^0.17.2", "@theme-ui/css": "^0.17.2", "@types/styled-system": "^5.1.13" }, "peerDependencies": { "@emotion/react": "^11.13.3", "@theme-ui/theme-provider": "^0.17.2", "react": ">=18" } }, "sha512-CJeflLU2P6g+B7xn0NsAaWBiRlN3BknYX8lozTBlRwg53sHlHsbQzumtVerlWUlIa+muMx8kCxJYypYBAiaHhg=="], - - "@theme-ui/core": ["@theme-ui/core@0.17.2", "", { "dependencies": { "@theme-ui/css": "^0.17.2", "deepmerge": "^4.2.2" }, "peerDependencies": { "@emotion/react": "^11.13.3", "react": ">=18" } }, "sha512-PMBaFCh/9HTlUZJFZRxZJoy+w/SVOJCr7v3s7XF5qyGcCuAB5tLv+fjcKpALaZ6QBT1SkHWd07AyTHrs0V2uRw=="], - - "@theme-ui/css": ["@theme-ui/css@0.17.2", "", { "dependencies": { "csstype": "^3.0.10" }, "peerDependencies": { "@emotion/react": "^11.11.1" } }, "sha512-sYeurC8WbZBLumt8qO7rM6ZDyvneMh6JojeZov3uwu4Ty2iis8rhqGGK8LD1SfwsWcV8pu3AivQ9xyvWZeaQrw=="], - - "@theme-ui/global": ["@theme-ui/global@0.17.2", "", { "dependencies": { "@theme-ui/core": "^0.17.2", "@theme-ui/css": "^0.17.2" }, "peerDependencies": { "@emotion/react": "^11.13.3", "react": ">=18" } }, "sha512-yH4Gv/ESDKlxDLz0u5lR3EWAZLfnb4T0Zn1d1LnO7mHv/9dVbF+MA/ogCWLi8Xvs5/u1+RMSJkPfHWfw+Xp5AQ=="], - - "@theme-ui/match-media": ["@theme-ui/match-media@0.17.2", "", { "peerDependencies": { "@theme-ui/core": "^0.17.2", "@theme-ui/css": "^0.17.2", "react": ">=18" } }, "sha512-kfCcSh35OQ/oPlKYnmipW3ZdgxgbNdejwjtYnKaQtGBQrE/Z/IiSg5MJuztI7w35dfOPtbbUZMTe8JMa34C/iA=="], - - "@theme-ui/theme-provider": ["@theme-ui/theme-provider@0.17.2", "", { "dependencies": { "@theme-ui/color-modes": "^0.17.2", "@theme-ui/core": "^0.17.2", "@theme-ui/css": "^0.17.2" }, "peerDependencies": { "@emotion/react": "^11.13.3", "react": ">=18" } }, "sha512-Y454eONQU42xHaA6oyWmc3+ViRnKjpi0SAh9zFcz+WmJ2SJVZQ4A8XWXnJHjpq38DFju/AyeEfI4puZRHTkgjQ=="], - - "@ts-morph/common": ["@ts-morph/common@0.28.1", "", { "dependencies": { "minimatch": "^10.0.1", "path-browserify": "^1.0.1", "tinyglobby": "^0.2.14" } }, "sha512-W74iWf7ILp1ZKNYXY5qbddNaml7e9Sedv5lvU1V8lftlitkc9Pq1A+jlH23ltDgWYeZFFEqGCD1Ies9hqu3O+g=="], - - "@types/cookie": ["@types/cookie@0.6.0", "", {}, "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA=="], - - "@types/css-font-loading-module": ["@types/css-font-loading-module@0.0.7", "", {}, "sha512-nl09VhutdjINdWyXxHWN/w9zlNCfr60JUqJbd24YXUuCwgeL0TpFSdElCwb6cxfB6ybE19Gjj4g0jsgkXxKv1Q=="], - - "@types/d3": ["@types/d3@7.4.3", "", { "dependencies": { "@types/d3-array": "*", "@types/d3-axis": "*", "@types/d3-brush": "*", "@types/d3-chord": "*", "@types/d3-color": "*", "@types/d3-contour": "*", "@types/d3-delaunay": "*", "@types/d3-dispatch": "*", "@types/d3-drag": "*", "@types/d3-dsv": "*", "@types/d3-ease": "*", "@types/d3-fetch": "*", "@types/d3-force": "*", "@types/d3-format": "*", "@types/d3-geo": "*", "@types/d3-hierarchy": "*", "@types/d3-interpolate": "*", "@types/d3-path": "*", "@types/d3-polygon": "*", "@types/d3-quadtree": "*", "@types/d3-random": "*", "@types/d3-scale": "*", "@types/d3-scale-chromatic": "*", "@types/d3-selection": "*", "@types/d3-shape": "*", "@types/d3-time": "*", "@types/d3-time-format": "*", "@types/d3-timer": "*", "@types/d3-transition": "*", "@types/d3-zoom": "*" } }, "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww=="], - - "@types/d3-array": ["@types/d3-array@3.2.2", "", {}, "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw=="], - - "@types/d3-axis": ["@types/d3-axis@3.0.6", "", { "dependencies": { "@types/d3-selection": "*" } }, "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw=="], - - "@types/d3-brush": ["@types/d3-brush@3.0.6", "", { "dependencies": { "@types/d3-selection": "*" } }, "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A=="], - - "@types/d3-chord": ["@types/d3-chord@3.0.6", "", {}, "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg=="], - - "@types/d3-color": ["@types/d3-color@3.1.3", "", {}, "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A=="], - - "@types/d3-contour": ["@types/d3-contour@3.0.6", "", { "dependencies": { "@types/d3-array": "*", "@types/geojson": "*" } }, "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg=="], - - "@types/d3-delaunay": ["@types/d3-delaunay@6.0.4", "", {}, "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw=="], - - "@types/d3-dispatch": ["@types/d3-dispatch@3.0.7", "", {}, "sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA=="], - - "@types/d3-drag": ["@types/d3-drag@3.0.7", "", { "dependencies": { "@types/d3-selection": "*" } }, "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ=="], - - "@types/d3-dsv": ["@types/d3-dsv@3.0.7", "", {}, "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g=="], - - "@types/d3-ease": ["@types/d3-ease@3.0.2", "", {}, "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA=="], - - "@types/d3-fetch": ["@types/d3-fetch@3.0.7", "", { "dependencies": { "@types/d3-dsv": "*" } }, "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA=="], - - "@types/d3-force": ["@types/d3-force@3.0.10", "", {}, "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw=="], - - "@types/d3-format": ["@types/d3-format@3.0.4", "", {}, "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g=="], - - "@types/d3-geo": ["@types/d3-geo@3.1.0", "", { "dependencies": { "@types/geojson": "*" } }, "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ=="], - - "@types/d3-hierarchy": ["@types/d3-hierarchy@3.1.7", "", {}, "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg=="], - - "@types/d3-interpolate": ["@types/d3-interpolate@3.0.4", "", { "dependencies": { "@types/d3-color": "*" } }, "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA=="], - - "@types/d3-path": ["@types/d3-path@3.1.1", "", {}, "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg=="], - - "@types/d3-polygon": ["@types/d3-polygon@3.0.2", "", {}, "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA=="], - - "@types/d3-quadtree": ["@types/d3-quadtree@3.0.6", "", {}, "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg=="], - - "@types/d3-random": ["@types/d3-random@3.0.3", "", {}, "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ=="], - - "@types/d3-scale": ["@types/d3-scale@4.0.9", "", { "dependencies": { "@types/d3-time": "*" } }, "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw=="], - - "@types/d3-scale-chromatic": ["@types/d3-scale-chromatic@3.1.0", "", {}, "sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ=="], - - "@types/d3-selection": ["@types/d3-selection@3.0.11", "", {}, "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w=="], - - "@types/d3-shape": ["@types/d3-shape@3.1.7", "", { "dependencies": { "@types/d3-path": "*" } }, "sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg=="], - - "@types/d3-time": ["@types/d3-time@3.0.4", "", {}, "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g=="], - - "@types/d3-time-format": ["@types/d3-time-format@4.0.3", "", {}, "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg=="], - - "@types/d3-timer": ["@types/d3-timer@3.0.2", "", {}, "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw=="], - - "@types/d3-transition": ["@types/d3-transition@3.0.9", "", { "dependencies": { "@types/d3-selection": "*" } }, "sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg=="], - - "@types/d3-zoom": ["@types/d3-zoom@3.0.8", "", { "dependencies": { "@types/d3-interpolate": "*", "@types/d3-selection": "*" } }, "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw=="], - - "@types/debug": ["@types/debug@4.1.12", "", { "dependencies": { "@types/ms": "*" } }, "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ=="], - - "@types/estree": ["@types/estree@1.0.8", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="], - - "@types/estree-jsx": ["@types/estree-jsx@1.0.5", "", { "dependencies": { "@types/estree": "*" } }, "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg=="], - - "@types/geojson": ["@types/geojson@7946.0.16", "", {}, "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg=="], - - "@types/har-format": ["@types/har-format@1.2.16", "", {}, "sha512-fluxdy7ryD3MV6h8pTfTYpy/xQzCFC7m89nOH9y94cNqJ1mDIDPut7MnRHI3F6qRmh/cT2fUjG1MLdCNb4hE9A=="], - - "@types/hast": ["@types/hast@3.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ=="], - - "@types/json-schema": ["@types/json-schema@7.0.15", "", {}, "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="], - - "@types/katex": ["@types/katex@0.16.7", "", {}, "sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ=="], - - "@types/lodash": ["@types/lodash@4.17.21", "", {}, "sha512-FOvQ0YPD5NOfPgMzJihoT+Za5pdkDJWcbpuj1DjaKZIr/gxodQjY/uWEFlTNqW2ugXHUiL8lRQgw63dzKHZdeQ=="], - - "@types/mdast": ["@types/mdast@4.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA=="], - - "@types/mdx": ["@types/mdx@2.0.13", "", {}, "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw=="], - - "@types/mixpanel-browser": ["@types/mixpanel-browser@2.66.0", "", { "dependencies": { "mixpanel-browser": "*" } }, "sha512-07zYZZ9ZVHc7R4ktM+3a2clZvKkj+EJcYZ/FevTs011Fr9tdp59lVgAskMf6ZQUp3lOHLqi7K3f+9QtmEsqh1w=="], - - "@types/ms": ["@types/ms@2.1.0", "", {}, "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA=="], - - "@types/nlcst": ["@types/nlcst@2.0.3", "", { "dependencies": { "@types/unist": "*" } }, "sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA=="], - - "@types/node": ["@types/node@22.19.1", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-LCCV0HdSZZZb34qifBsyWlUmok6W7ouER+oQIGBScS8EsZsQbrtFTUrDX4hOl+CS6p7cnNC4td+qrSVGSCTUfQ=="], - - "@types/parse-json": ["@types/parse-json@4.0.2", "", {}, "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw=="], - - "@types/prismjs": ["@types/prismjs@1.26.5", "", {}, "sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ=="], - - "@types/prop-types": ["@types/prop-types@15.7.15", "", {}, "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw=="], - - "@types/react": ["@types/react@18.3.27", "", { "dependencies": { "@types/prop-types": "*", "csstype": "^3.2.2" } }, "sha512-cisd7gxkzjBKU2GgdYrTdtQx1SORymWyaAFhaxQPK9bYO9ot3Y5OikQRvY0VYQtvwjeQnizCINJAenh/V7MK2w=="], - - "@types/react-dom": ["@types/react-dom@18.3.7", "", { "peerDependencies": { "@types/react": "^18.0.0" } }, "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ=="], - - "@types/styled-system": ["@types/styled-system@5.1.25", "", { "dependencies": { "csstype": "^3.2.2" } }, "sha512-B1oyjE4oeAbVnkigcB0WqU2gPFuTwLV/KkLa/uJZWFB9JWVKq1Fs0QwodZXZ9Sq6cb9ngY4kDqRY/dictIchjA=="], - - "@types/trusted-types": ["@types/trusted-types@2.0.7", "", {}, "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw=="], - - "@types/unist": ["@types/unist@3.0.3", "", {}, "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q=="], - - "@types/vfile": ["@types/vfile@4.0.0", "", { "dependencies": { "vfile": "*" } }, "sha512-eleP0/Cz8uVWxARDLi3Axq2+fDdN4ibAXoC6Pv8p6s7znXaUL7XvhgeIhjCiNMnvlLNP+tmCLd+RuCryGgmtEg=="], - - "@typescript/vfs": ["@typescript/vfs@1.6.2", "", { "dependencies": { "debug": "^4.1.1" }, "peerDependencies": { "typescript": "*" } }, "sha512-hoBwJwcbKHmvd2QVebiytN1aELvpk9B74B4L1mFm/XT1Q/VOYAWl2vQ9AWRFtQq8zmz6enTpfTV8WRc4ATjW/g=="], - - "@ungap/structured-clone": ["@ungap/structured-clone@1.3.0", "", {}, "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g=="], - - "@uniswap/lib": ["@uniswap/lib@4.0.1-alpha", "", {}, "sha512-f6UIliwBbRsgVLxIaBANF6w09tYqc6Y/qXdsrbEmXHyFA7ILiKrIwRFXe1yOg8M3cksgVsO9N7yuL2DdCGQKBA=="], - - "@uniswap/sdk-core": ["@uniswap/sdk-core@7.9.0", "", { "dependencies": { "@ethersproject/address": "^5.0.2", "@ethersproject/bytes": "^5.7.0", "@ethersproject/keccak256": "5.7.0", "@ethersproject/strings": "5.7.0", "big.js": "^5.2.2", "decimal.js-light": "^2.5.0", "jsbi": "^3.1.4", "tiny-invariant": "^1.1.0", "toformat": "^2.0.0" } }, "sha512-HHUFNK3LMi4KMQCAiHkdUyL62g/nrZLvNT44CY8RN4p8kWO6XYWzqdQt6OcjCsIbhMZ/Ifhe6Py5oOoccg/jUQ=="], - - "@uniswap/swap-router-contracts": ["@uniswap/swap-router-contracts@1.3.1", "", { "dependencies": { "@openzeppelin/contracts": "3.4.2-solc-0.7", "@uniswap/v2-core": "^1.0.1", "@uniswap/v3-core": "^1.0.0", "@uniswap/v3-periphery": "^1.4.4", "dotenv": "^14.2.0", "hardhat-watcher": "^2.1.1" } }, "sha512-mh/YNbwKb7Mut96VuEtL+Z5bRe0xVIbjjiryn+iMMrK2sFKhR4duk/86mEz0UO5gSx4pQIw9G5276P5heY/7Rg=="], - - "@uniswap/v2-core": ["@uniswap/v2-core@1.0.1", "", {}, "sha512-MtybtkUPSyysqLY2U210NBDeCHX+ltHt3oADGdjqoThZaFRDKwM6k1Nb3F0A3hk5hwuQvytFWhrWHOEq6nVJ8Q=="], - - "@uniswap/v3-core": ["@uniswap/v3-core@1.0.1", "", {}, "sha512-7pVk4hEm00j9tc71Y9+ssYpO6ytkeI0y7WE9P6UcmNzhxPePwyAxImuhVsTqWK9YFvzgtvzJHi64pBl4jUzKMQ=="], - - "@uniswap/v3-periphery": ["@uniswap/v3-periphery@1.4.4", "", { "dependencies": { "@openzeppelin/contracts": "3.4.2-solc-0.7", "@uniswap/lib": "^4.0.1-alpha", "@uniswap/v2-core": "^1.0.1", "@uniswap/v3-core": "^1.0.0", "base64-sol": "1.0.1" } }, "sha512-S4+m+wh8HbWSO3DKk4LwUCPZJTpCugIsHrWR86m/OrUyvSqGDTXKFfc2sMuGXCZrD1ZqO3rhQsKgdWg3Hbb2Kw=="], - - "@uniswap/v3-sdk": ["@uniswap/v3-sdk@3.26.0", "", { "dependencies": { "@ethersproject/abi": "^5.5.0", "@ethersproject/solidity": "^5.0.9", "@uniswap/sdk-core": "^7.8.0", "@uniswap/swap-router-contracts": "^1.3.0", "@uniswap/v3-periphery": "^1.1.1", "@uniswap/v3-staker": "1.0.0", "tiny-invariant": "^1.1.0", "tiny-warning": "^1.0.3" } }, "sha512-bcoWNE7ntNNTHMOnDPscIqtIN67fUyrbBKr6eswI2gD2wm5b0YYFBDeh+Qc5Q3117o9i8S7QdftqrU8YSMQUfQ=="], - - "@uniswap/v3-staker": ["@uniswap/v3-staker@1.0.0", "", { "dependencies": { "@openzeppelin/contracts": "3.4.1-solc-0.7-2", "@uniswap/v3-core": "1.0.0", "@uniswap/v3-periphery": "^1.0.1" } }, "sha512-JV0Qc46Px5alvg6YWd+UIaGH9lDuYG/Js7ngxPit1SPaIP30AlVer1UYB7BRYeUVVxE+byUyIeN5jeQ7LLDjIw=="], - - "@ver0/deep-equal": ["@ver0/deep-equal@1.0.1", "", {}, "sha512-XSvL5wKXBZIv7fflMqhQx936sRpEtzxeV25xAEt0rLLXzbF6RCQaRA1jrVIn8JCubMyn/y0TaidphUtilLzl1A=="], - - "@web3icons/common": ["@web3icons/common@0.11.31", "", { "peerDependencies": { "typescript": "^5.0.0" } }, "sha512-POTnYcB+yuKVY65C1+hSu5LViRgS1hs8njx6gFLKdjMquyNfWWvwQtKMDjz0Y509yiZDeT93QFV8U/clr1Jwcw=="], - - "@web3icons/react": ["@web3icons/react@4.1.1", "", { "dependencies": { "@web3icons/common": "0.11.31" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0" } }, "sha512-6vqi3w2J22WBJJG0EHS/6SauM72c9qyLwjy767FKdT6l60rPD43sBAxvE1fncOleiSlxNA/vY3L1c5kDTjmP+w=="], - - "@xmldom/xmldom": ["@xmldom/xmldom@0.9.8", "", {}, "sha512-p96FSY54r+WJ50FIOsCOjyj/wavs8921hG5+kVMmZgKcvIKxMXHTrjNJvRgWa/zuX3B6t2lijLNFaOyuxUH+2A=="], - - "@xstate/fsm": ["@xstate/fsm@1.6.5", "", {}, "sha512-b5o1I6aLNeYlU/3CPlj/Z91ybk1gUsKT+5NAJI+2W4UjvS5KLG28K9v5UvNoFVjHV8PajVZ00RH3vnjyQO7ZAw=="], - - "@xstate/react": ["@xstate/react@3.2.2", "", { "dependencies": { "use-isomorphic-layout-effect": "^1.1.2", "use-sync-external-store": "^1.0.0" }, "peerDependencies": { "@xstate/fsm": "^2.0.0", "react": "^16.8.0 || ^17.0.0 || ^18.0.0", "xstate": "^4.37.2" }, "optionalPeers": ["@xstate/fsm", "xstate"] }, "sha512-feghXWLedyq8JeL13yda3XnHPZKwYDN5HPBLykpLeuNpr9178tQd2/3d0NrH6gSd0sG5mLuLeuD+ck830fgzLQ=="], - - "abitype": ["abitype@1.1.0", "", { "peerDependencies": { "typescript": ">=5.0.4", "zod": "^3.22.0 || ^4.0.0" }, "optionalPeers": ["typescript", "zod"] }, "sha512-6Vh4HcRxNMLA0puzPjM5GBgT4aAcFGKZzSgAXvuZ27shJP6NEpielTuqbBmZILR5/xd0PizkBGy5hReKz9jl5A=="], - - "acorn": ["acorn@8.15.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg=="], - - "acorn-jsx": ["acorn-jsx@5.3.2", "", { "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="], - - "adm-zip": ["adm-zip@0.4.16", "", {}, "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg=="], - - "aes-js": ["aes-js@3.0.0", "", {}, "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw=="], - - "agent-base": ["agent-base@7.1.4", "", {}, "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ=="], - - "aggregate-error": ["aggregate-error@3.1.0", "", { "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" } }, "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA=="], - - "ajv": ["ajv@8.17.1", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g=="], - - "ajv-draft-04": ["ajv-draft-04@1.0.0", "", { "peerDependencies": { "ajv": "^8.5.0" }, "optionalPeers": ["ajv"] }, "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw=="], - - "algoliasearch": ["algoliasearch@5.45.0", "", { "dependencies": { "@algolia/abtesting": "1.11.0", "@algolia/client-abtesting": "5.45.0", "@algolia/client-analytics": "5.45.0", "@algolia/client-common": "5.45.0", "@algolia/client-insights": "5.45.0", "@algolia/client-personalization": "5.45.0", "@algolia/client-query-suggestions": "5.45.0", "@algolia/client-search": "5.45.0", "@algolia/ingestion": "1.45.0", "@algolia/monitoring": "1.45.0", "@algolia/recommend": "5.45.0", "@algolia/requester-browser-xhr": "5.45.0", "@algolia/requester-fetch": "5.45.0", "@algolia/requester-node-http": "5.45.0" } }, "sha512-wrj4FGr14heLOYkBKV3Fbq5ZBGuIFeDJkTilYq/G+hH1CSlQBtYvG2X1j67flwv0fUeQJwnWxxRIunSemAZirA=="], - - "ansi-align": ["ansi-align@3.0.1", "", { "dependencies": { "string-width": "^4.1.0" } }, "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w=="], - - "ansi-colors": ["ansi-colors@4.1.3", "", {}, "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw=="], - - "ansi-escapes": ["ansi-escapes@4.3.2", "", { "dependencies": { "type-fest": "^0.21.3" } }, "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ=="], - - "ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], - - "ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], - - "any-promise": ["any-promise@1.3.0", "", {}, "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A=="], - - "anymatch": ["anymatch@3.1.3", "", { "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" } }, "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw=="], - - "arg": ["arg@5.0.2", "", {}, "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg=="], - - "argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], - - "aria-hidden": ["aria-hidden@1.2.6", "", { "dependencies": { "tslib": "^2.0.0" } }, "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA=="], - - "array-iterate": ["array-iterate@2.0.1", "", {}, "sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg=="], - - "astring": ["astring@1.9.0", "", { "bin": { "astring": "bin/astring" } }, "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg=="], - - "asynckit": ["asynckit@0.4.0", "", {}, "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="], - - "attr-accept": ["attr-accept@2.2.5", "", {}, "sha512-0bDNnY/u6pPwHDMoF0FieU354oBi0a8rD9FcsLwzcGWbc8KS8KPIi7y+s13OlVY+gMWc/9xEMUgNE6Qm8ZllYQ=="], - - "autoprefixer": ["autoprefixer@10.4.22", "", { "dependencies": { "browserslist": "^4.27.0", "caniuse-lite": "^1.0.30001754", "fraction.js": "^5.3.4", "normalize-range": "^0.1.2", "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.1.0" }, "bin": { "autoprefixer": "bin/autoprefixer" } }, "sha512-ARe0v/t9gO28Bznv6GgqARmVqcWOV3mfgUPn9becPHMiD3o9BwlRgaeccZnwTpZ7Zwqrm+c1sUSsMxIzQzc8Xg=="], - - "babel-plugin-macros": ["babel-plugin-macros@3.1.0", "", { "dependencies": { "@babel/runtime": "^7.12.5", "cosmiconfig": "^7.0.0", "resolve": "^1.19.0" } }, "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg=="], - - "bail": ["bail@2.0.2", "", {}, "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw=="], - - "balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], - - "base64-arraybuffer": ["base64-arraybuffer@1.0.2", "", {}, "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ=="], - - "base64-js": ["base64-js@1.5.1", "", {}, "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="], - - "base64-sol": ["base64-sol@1.0.1", "", {}, "sha512-ld3cCNMeXt4uJXmLZBHFGMvVpK9KsLVEhPpFRXnvSVAqABKbuNZg/+dsq3NuM+wxFLb/UrVkz7m1ciWmkMfTbg=="], - - "baseline-browser-mapping": ["baseline-browser-mapping@2.8.31", "", { "bin": { "baseline-browser-mapping": "dist/cli.js" } }, "sha512-a28v2eWrrRWPpJSzxc+mKwm0ZtVx/G8SepdQZDArnXYU/XS+IF6mp8aB/4E+hH1tyGCoDo3KlUCdlSxGDsRkAw=="], - - "bech32": ["bech32@1.1.4", "", {}, "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ=="], - - "better-react-mathjax": ["better-react-mathjax@2.3.0", "", { "dependencies": { "mathjax-full": "^3.2.2" }, "peerDependencies": { "react": ">=16.8" } }, "sha512-K0ceQC+jQmB+NLDogO5HCpqmYf18AU2FxDbLdduYgkHYWZApFggkHE4dIaXCV1NqeoscESYXXo1GSkY6fA295w=="], - - "big.js": ["big.js@5.2.2", "", {}, "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ=="], - - "binary-extensions": ["binary-extensions@2.3.0", "", {}, "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw=="], - - "bl": ["bl@4.1.0", "", { "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", "readable-stream": "^3.4.0" } }, "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w=="], - - "bn.js": ["bn.js@5.2.2", "", {}, "sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw=="], - - "boxen": ["boxen@5.1.1", "", { "dependencies": { "ansi-align": "^3.0.0", "camelcase": "^6.2.0", "chalk": "^4.1.0", "cli-boxes": "^2.2.1", "string-width": "^4.2.2", "type-fest": "^0.20.2", "widest-line": "^3.1.0", "wrap-ansi": "^7.0.0" } }, "sha512-JtIQYts08AFAYGF4eSh3pUt3NQkYV/e75pRtQmAVTLNWR/1L7Bsswxlgzgk8nmLEM+gFszsIlA9BgD3XnSqp3g=="], - - "brace-expansion": ["brace-expansion@2.0.2", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ=="], - - "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="], - - "brorand": ["brorand@1.1.0", "", {}, "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w=="], - - "browser-stdout": ["browser-stdout@1.3.1", "", {}, "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw=="], - - "browserslist": ["browserslist@4.28.0", "", { "dependencies": { "baseline-browser-mapping": "^2.8.25", "caniuse-lite": "^1.0.30001754", "electron-to-chromium": "^1.5.249", "node-releases": "^2.0.27", "update-browserslist-db": "^1.1.4" }, "bin": { "browserslist": "cli.js" } }, "sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ=="], - - "buffer": ["buffer@5.7.1", "", { "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" } }, "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ=="], - - "buffer-from": ["buffer-from@1.1.2", "", {}, "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="], - - "bundle-require": ["bundle-require@5.1.0", "", { "dependencies": { "load-tsconfig": "^0.2.3" }, "peerDependencies": { "esbuild": ">=0.18" } }, "sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA=="], - - "busboy": ["busboy@1.6.0", "", { "dependencies": { "streamsearch": "^1.1.0" } }, "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA=="], - - "bytes": ["bytes@3.1.2", "", {}, "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="], - - "cac": ["cac@6.7.14", "", {}, "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ=="], - - "call-bind-apply-helpers": ["call-bind-apply-helpers@1.0.2", "", { "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" } }, "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ=="], - - "call-bound": ["call-bound@1.0.4", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "get-intrinsic": "^1.3.0" } }, "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg=="], - - "callsites": ["callsites@3.1.0", "", {}, "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="], - - "camelcase": ["camelcase@6.3.0", "", {}, "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA=="], - - "camelcase-css": ["camelcase-css@2.0.1", "", {}, "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA=="], - - "caniuse-lite": ["caniuse-lite@1.0.30001757", "", {}, "sha512-r0nnL/I28Zi/yjk1el6ilj27tKcdjLsNqAOZr0yVjWPrSQyHgKI2INaEWw21bAQSv2LXRt1XuCS/GomNpWOxsQ=="], - - "ccount": ["ccount@2.0.1", "", {}, "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg=="], - - "chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], - - "character-entities": ["character-entities@2.0.2", "", {}, "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ=="], - - "character-entities-html4": ["character-entities-html4@2.1.0", "", {}, "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA=="], - - "character-entities-legacy": ["character-entities-legacy@3.0.0", "", {}, "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ=="], - - "character-reference-invalid": ["character-reference-invalid@2.0.1", "", {}, "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw=="], - - "charenc": ["charenc@0.0.2", "", {}, "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA=="], - - "chevrotain": ["chevrotain@11.0.3", "", { "dependencies": { "@chevrotain/cst-dts-gen": "11.0.3", "@chevrotain/gast": "11.0.3", "@chevrotain/regexp-to-ast": "11.0.3", "@chevrotain/types": "11.0.3", "@chevrotain/utils": "11.0.3", "lodash-es": "4.17.21" } }, "sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw=="], - - "chevrotain-allstar": ["chevrotain-allstar@0.3.1", "", { "dependencies": { "lodash-es": "^4.17.21" }, "peerDependencies": { "chevrotain": "^11.0.0" } }, "sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw=="], - - "chokidar": ["chokidar@3.6.0", "", { "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" }, "optionalDependencies": { "fsevents": "~2.3.2" } }, "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw=="], - - "ci-info": ["ci-info@2.0.0", "", {}, "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ=="], - - "clean-stack": ["clean-stack@2.2.0", "", {}, "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A=="], - - "cli-boxes": ["cli-boxes@2.2.1", "", {}, "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw=="], - - "cli-cursor": ["cli-cursor@3.1.0", "", { "dependencies": { "restore-cursor": "^3.1.0" } }, "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw=="], - - "cli-spinners": ["cli-spinners@2.9.2", "", {}, "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg=="], - - "client-only": ["client-only@0.0.1", "", {}, "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA=="], - - "clipboardy": ["clipboardy@4.0.0", "", { "dependencies": { "execa": "^8.0.1", "is-wsl": "^3.1.0", "is64bit": "^2.0.0" } }, "sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w=="], - - "cliui": ["cliui@7.0.4", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", "wrap-ansi": "^7.0.0" } }, "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ=="], - - "clone": ["clone@1.0.4", "", {}, "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg=="], - - "clsx": ["clsx@2.1.1", "", {}, "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="], - - "code-block-writer": ["code-block-writer@13.0.3", "", {}, "sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg=="], - - "collapse-white-space": ["collapse-white-space@2.1.0", "", {}, "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw=="], - - "color": ["color@5.0.3", "", { "dependencies": { "color-convert": "^3.1.3", "color-string": "^2.1.3" } }, "sha512-ezmVcLR3xAVp8kYOm4GS45ZLLgIE6SPAFoduLr6hTDajwb3KZ2F46gulK3XpcwRFb5KKGCSezCBAY4Dw4HsyXA=="], - - "color-convert": ["color-convert@3.1.3", "", { "dependencies": { "color-name": "^2.0.0" } }, "sha512-fasDH2ont2GqF5HpyO4w0+BcewlhHEZOFn9c1ckZdHpJ56Qb7MHhH/IcJZbBGgvdtwdwNbLvxiBEdg336iA9Sg=="], - - "color-name": ["color-name@2.1.0", "", {}, "sha512-1bPaDNFm0axzE4MEAzKPuqKWeRaT43U/hyxKPBdqTfmPF+d6n7FSoTFxLVULUJOmiLp01KjhIPPH+HrXZJN4Rg=="], - - "color-string": ["color-string@2.1.4", "", { "dependencies": { "color-name": "^2.0.0" } }, "sha512-Bb6Cq8oq0IjDOe8wJmi4JeNn763Xs9cfrBcaylK1tPypWzyoy2G3l90v9k64kjphl/ZJjPIShFztenRomi8WTg=="], - - "combined-stream": ["combined-stream@1.0.8", "", { "dependencies": { "delayed-stream": "~1.0.0" } }, "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg=="], - - "comma-separated-tokens": ["comma-separated-tokens@2.0.3", "", {}, "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg=="], - - "command-exists": ["command-exists@1.2.9", "", {}, "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w=="], - - "commander": ["commander@4.1.1", "", {}, "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA=="], - - "compare-versions": ["compare-versions@6.1.1", "", {}, "sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg=="], - - "confbox": ["confbox@0.1.8", "", {}, "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w=="], - - "consola": ["consola@3.4.2", "", {}, "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA=="], - - "convert-source-map": ["convert-source-map@1.9.0", "", {}, "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A=="], - - "cookie": ["cookie@0.7.2", "", {}, "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w=="], - - "cose-base": ["cose-base@1.0.3", "", { "dependencies": { "layout-base": "^1.0.0" } }, "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg=="], - - "cosmiconfig": ["cosmiconfig@7.1.0", "", { "dependencies": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", "parse-json": "^5.0.0", "path-type": "^4.0.0", "yaml": "^1.10.0" } }, "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA=="], - - "cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="], - - "crypt": ["crypt@0.0.2", "", {}, "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow=="], - - "cssesc": ["cssesc@3.0.0", "", { "bin": { "cssesc": "bin/cssesc" } }, "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="], - - "cssstyle": ["cssstyle@4.6.0", "", { "dependencies": { "@asamuzakjp/css-color": "^3.2.0", "rrweb-cssom": "^0.8.0" } }, "sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg=="], - - "csstype": ["csstype@3.2.3", "", {}, "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ=="], - - "cytoscape": ["cytoscape@3.33.1", "", {}, "sha512-iJc4TwyANnOGR1OmWhsS9ayRS3s+XQ185FmuHObThD+5AeJCakAAbWv8KimMTt08xCCLNgneQwFp+JRJOr9qGQ=="], - - "cytoscape-cose-bilkent": ["cytoscape-cose-bilkent@4.1.0", "", { "dependencies": { "cose-base": "^1.0.0" }, "peerDependencies": { "cytoscape": "^3.2.0" } }, "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ=="], - - "cytoscape-fcose": ["cytoscape-fcose@2.2.0", "", { "dependencies": { "cose-base": "^2.2.0" }, "peerDependencies": { "cytoscape": "^3.2.0" } }, "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ=="], - - "d3": ["d3@7.9.0", "", { "dependencies": { "d3-array": "3", "d3-axis": "3", "d3-brush": "3", "d3-chord": "3", "d3-color": "3", "d3-contour": "4", "d3-delaunay": "6", "d3-dispatch": "3", "d3-drag": "3", "d3-dsv": "3", "d3-ease": "3", "d3-fetch": "3", "d3-force": "3", "d3-format": "3", "d3-geo": "3", "d3-hierarchy": "3", "d3-interpolate": "3", "d3-path": "3", "d3-polygon": "3", "d3-quadtree": "3", "d3-random": "3", "d3-scale": "4", "d3-scale-chromatic": "3", "d3-selection": "3", "d3-shape": "3", "d3-time": "3", "d3-time-format": "4", "d3-timer": "3", "d3-transition": "3", "d3-zoom": "3" } }, "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA=="], - - "d3-array": ["d3-array@3.2.4", "", { "dependencies": { "internmap": "1 - 2" } }, "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg=="], - - "d3-axis": ["d3-axis@3.0.0", "", {}, "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw=="], - - "d3-brush": ["d3-brush@3.0.0", "", { "dependencies": { "d3-dispatch": "1 - 3", "d3-drag": "2 - 3", "d3-interpolate": "1 - 3", "d3-selection": "3", "d3-transition": "3" } }, "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ=="], - - "d3-chord": ["d3-chord@3.0.1", "", { "dependencies": { "d3-path": "1 - 3" } }, "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g=="], - - "d3-color": ["d3-color@3.1.0", "", {}, "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA=="], - - "d3-contour": ["d3-contour@4.0.2", "", { "dependencies": { "d3-array": "^3.2.0" } }, "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA=="], - - "d3-delaunay": ["d3-delaunay@6.0.4", "", { "dependencies": { "delaunator": "5" } }, "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A=="], - - "d3-dispatch": ["d3-dispatch@3.0.1", "", {}, "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg=="], - - "d3-drag": ["d3-drag@3.0.0", "", { "dependencies": { "d3-dispatch": "1 - 3", "d3-selection": "3" } }, "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg=="], - - "d3-dsv": ["d3-dsv@3.0.1", "", { "dependencies": { "commander": "7", "iconv-lite": "0.6", "rw": "1" }, "bin": { "csv2json": "bin/dsv2json.js", "csv2tsv": "bin/dsv2dsv.js", "dsv2dsv": "bin/dsv2dsv.js", "dsv2json": "bin/dsv2json.js", "json2csv": "bin/json2dsv.js", "json2dsv": "bin/json2dsv.js", "json2tsv": "bin/json2dsv.js", "tsv2csv": "bin/dsv2dsv.js", "tsv2json": "bin/dsv2json.js" } }, "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q=="], - - "d3-ease": ["d3-ease@3.0.1", "", {}, "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w=="], - - "d3-fetch": ["d3-fetch@3.0.1", "", { "dependencies": { "d3-dsv": "1 - 3" } }, "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw=="], - - "d3-force": ["d3-force@3.0.0", "", { "dependencies": { "d3-dispatch": "1 - 3", "d3-quadtree": "1 - 3", "d3-timer": "1 - 3" } }, "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg=="], - - "d3-format": ["d3-format@3.1.0", "", {}, "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA=="], - - "d3-geo": ["d3-geo@3.1.1", "", { "dependencies": { "d3-array": "2.5.0 - 3" } }, "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q=="], - - "d3-hierarchy": ["d3-hierarchy@3.1.2", "", {}, "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA=="], - - "d3-interpolate": ["d3-interpolate@3.0.1", "", { "dependencies": { "d3-color": "1 - 3" } }, "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g=="], - - "d3-path": ["d3-path@3.1.0", "", {}, "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ=="], - - "d3-polygon": ["d3-polygon@3.0.1", "", {}, "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg=="], - - "d3-quadtree": ["d3-quadtree@3.0.1", "", {}, "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw=="], - - "d3-random": ["d3-random@3.0.1", "", {}, "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ=="], - - "d3-sankey": ["d3-sankey@0.12.3", "", { "dependencies": { "d3-array": "1 - 2", "d3-shape": "^1.2.0" } }, "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ=="], - - "d3-scale": ["d3-scale@4.0.2", "", { "dependencies": { "d3-array": "2.10.0 - 3", "d3-format": "1 - 3", "d3-interpolate": "1.2.0 - 3", "d3-time": "2.1.1 - 3", "d3-time-format": "2 - 4" } }, "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ=="], - - "d3-scale-chromatic": ["d3-scale-chromatic@3.1.0", "", { "dependencies": { "d3-color": "1 - 3", "d3-interpolate": "1 - 3" } }, "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ=="], - - "d3-selection": ["d3-selection@3.0.0", "", {}, "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ=="], - - "d3-shape": ["d3-shape@3.2.0", "", { "dependencies": { "d3-path": "^3.1.0" } }, "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA=="], - - "d3-time": ["d3-time@3.1.0", "", { "dependencies": { "d3-array": "2 - 3" } }, "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q=="], - - "d3-time-format": ["d3-time-format@4.1.0", "", { "dependencies": { "d3-time": "1 - 3" } }, "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg=="], - - "d3-timer": ["d3-timer@3.0.1", "", {}, "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA=="], - - "d3-transition": ["d3-transition@3.0.1", "", { "dependencies": { "d3-color": "1 - 3", "d3-dispatch": "1 - 3", "d3-ease": "1 - 3", "d3-interpolate": "1 - 3", "d3-timer": "1 - 3" }, "peerDependencies": { "d3-selection": "2 - 3" } }, "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w=="], - - "d3-zoom": ["d3-zoom@3.0.0", "", { "dependencies": { "d3-dispatch": "1 - 3", "d3-drag": "2 - 3", "d3-interpolate": "1 - 3", "d3-selection": "2 - 3", "d3-transition": "2 - 3" } }, "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw=="], - - "dagre-d3-es": ["dagre-d3-es@7.0.13", "", { "dependencies": { "d3": "^7.9.0", "lodash-es": "^4.17.21" } }, "sha512-efEhnxpSuwpYOKRm/L5KbqoZmNNukHa/Flty4Wp62JRvgH2ojwVgPgdYyr4twpieZnyRDdIH7PY2mopX26+j2Q=="], - - "data-urls": ["data-urls@5.0.0", "", { "dependencies": { "whatwg-mimetype": "^4.0.0", "whatwg-url": "^14.0.0" } }, "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg=="], - - "dataloader": ["dataloader@2.2.3", "", {}, "sha512-y2krtASINtPFS1rSDjacrFgn1dcUuoREVabwlOGOe4SdxenREqwjwjElAdwvbGM7kgZz9a3KVicWR7vcz8rnzA=="], - - "dayjs": ["dayjs@1.11.19", "", {}, "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw=="], - - "debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], - - "decamelize": ["decamelize@4.0.0", "", {}, "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ=="], - - "decimal.js": ["decimal.js@10.6.0", "", {}, "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg=="], - - "decimal.js-light": ["decimal.js-light@2.5.1", "", {}, "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg=="], - - "decode-named-character-reference": ["decode-named-character-reference@1.2.0", "", { "dependencies": { "character-entities": "^2.0.0" } }, "sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q=="], - - "deepmerge": ["deepmerge@4.3.1", "", {}, "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A=="], - - "defaults": ["defaults@1.0.4", "", { "dependencies": { "clone": "^1.0.2" } }, "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A=="], - - "delaunator": ["delaunator@5.0.1", "", { "dependencies": { "robust-predicates": "^3.0.2" } }, "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw=="], - - "delayed-stream": ["delayed-stream@1.0.0", "", {}, "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="], - - "depd": ["depd@2.0.0", "", {}, "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="], - - "dequal": ["dequal@2.0.3", "", {}, "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA=="], - - "detect-node-es": ["detect-node-es@1.1.0", "", {}, "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ=="], - - "devlop": ["devlop@1.1.0", "", { "dependencies": { "dequal": "^2.0.0" } }, "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA=="], - - "didyoumean": ["didyoumean@1.2.2", "", {}, "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw=="], - - "diff": ["diff@5.2.0", "", {}, "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A=="], - - "dlv": ["dlv@1.1.3", "", {}, "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA=="], - - "dns-packet": ["dns-packet@5.6.1", "", { "dependencies": { "@leichtgewicht/ip-codec": "^2.0.1" } }, "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw=="], - - "dom-helpers": ["dom-helpers@5.2.1", "", { "dependencies": { "@babel/runtime": "^7.8.7", "csstype": "^3.0.2" } }, "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA=="], - - "dompurify": ["dompurify@3.3.0", "", { "optionalDependencies": { "@types/trusted-types": "^2.0.7" } }, "sha512-r+f6MYR1gGN1eJv0TVQbhA7if/U7P87cdPl3HN5rikqaBSBxLiCb/b9O+2eG0cxz0ghyU+mU1QkbsOwERMYlWQ=="], - - "dotenv": ["dotenv@16.6.1", "", {}, "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow=="], - - "dunder-proto": ["dunder-proto@1.0.1", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" } }, "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A=="], - - "eastasianwidth": ["eastasianwidth@0.2.0", "", {}, "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="], - - "electron-to-chromium": ["electron-to-chromium@1.5.260", "", {}, "sha512-ov8rBoOBhVawpzdre+Cmz4FB+y66Eqrk6Gwqd8NGxuhv99GQ8XqMAr351KEkOt7gukXWDg6gJWEMKgL2RLMPtA=="], - - "elliptic": ["elliptic@6.6.1", "", { "dependencies": { "bn.js": "^4.11.9", "brorand": "^1.1.0", "hash.js": "^1.0.0", "hmac-drbg": "^1.0.1", "inherits": "^2.0.4", "minimalistic-assert": "^1.0.1", "minimalistic-crypto-utils": "^1.0.1" } }, "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g=="], - - "emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], - - "emoji-regex-xs": ["emoji-regex-xs@1.0.0", "", {}, "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg=="], - - "enquirer": ["enquirer@2.4.1", "", { "dependencies": { "ansi-colors": "^4.1.1", "strip-ansi": "^6.0.1" } }, "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ=="], - - "entities": ["entities@6.0.1", "", {}, "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g=="], - - "env-paths": ["env-paths@2.2.1", "", {}, "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A=="], - - "error-ex": ["error-ex@1.3.4", "", { "dependencies": { "is-arrayish": "^0.2.1" } }, "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ=="], - - "error-stack-parser": ["error-stack-parser@1.3.6", "", { "dependencies": { "stackframe": "^0.3.1" } }, "sha512-xhuSYd8wLgOXwNgjcPeXMPL/IiiA1Huck+OPvClpJViVNNlJVtM41o+1emp7bPvlCJwCatFX2DWc05/DgfbWzA=="], - - "es-define-property": ["es-define-property@1.0.1", "", {}, "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="], - - "es-errors": ["es-errors@1.3.0", "", {}, "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="], - - "es-object-atoms": ["es-object-atoms@1.1.1", "", { "dependencies": { "es-errors": "^1.3.0" } }, "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA=="], - - "es-set-tostringtag": ["es-set-tostringtag@2.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" } }, "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA=="], - - "esast-util-from-estree": ["esast-util-from-estree@2.0.0", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "devlop": "^1.0.0", "estree-util-visit": "^2.0.0", "unist-util-position-from-estree": "^2.0.0" } }, "sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ=="], - - "esast-util-from-js": ["esast-util-from-js@2.0.1", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "acorn": "^8.0.0", "esast-util-from-estree": "^2.0.0", "vfile-message": "^4.0.0" } }, "sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw=="], - - "esbuild": ["esbuild@0.27.0", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.27.0", "@esbuild/android-arm": "0.27.0", "@esbuild/android-arm64": "0.27.0", "@esbuild/android-x64": "0.27.0", "@esbuild/darwin-arm64": "0.27.0", "@esbuild/darwin-x64": "0.27.0", "@esbuild/freebsd-arm64": "0.27.0", "@esbuild/freebsd-x64": "0.27.0", "@esbuild/linux-arm": "0.27.0", "@esbuild/linux-arm64": "0.27.0", "@esbuild/linux-ia32": "0.27.0", "@esbuild/linux-loong64": "0.27.0", "@esbuild/linux-mips64el": "0.27.0", "@esbuild/linux-ppc64": "0.27.0", "@esbuild/linux-riscv64": "0.27.0", "@esbuild/linux-s390x": "0.27.0", "@esbuild/linux-x64": "0.27.0", "@esbuild/netbsd-arm64": "0.27.0", "@esbuild/netbsd-x64": "0.27.0", "@esbuild/openbsd-arm64": "0.27.0", "@esbuild/openbsd-x64": "0.27.0", "@esbuild/openharmony-arm64": "0.27.0", "@esbuild/sunos-x64": "0.27.0", "@esbuild/win32-arm64": "0.27.0", "@esbuild/win32-ia32": "0.27.0", "@esbuild/win32-x64": "0.27.0" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-jd0f4NHbD6cALCyGElNpGAOtWxSq46l9X/sWB0Nzd5er4Kz2YTm+Vl0qKFT9KUJvD8+fiO8AvoHhFvEatfVixA=="], - - "escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="], - - "escape-string-regexp": ["escape-string-regexp@5.0.0", "", {}, "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="], - - "esm": ["esm@3.2.25", "", {}, "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA=="], - - "esprima": ["esprima@4.0.1", "", { "bin": { "esparse": "./bin/esparse.js", "esvalidate": "./bin/esvalidate.js" } }, "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="], - - "estree-util-attach-comments": ["estree-util-attach-comments@3.0.0", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw=="], - - "estree-util-build-jsx": ["estree-util-build-jsx@3.0.1", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "estree-walker": "^3.0.0" } }, "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ=="], - - "estree-util-is-identifier-name": ["estree-util-is-identifier-name@3.0.0", "", {}, "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg=="], - - "estree-util-scope": ["estree-util-scope@1.0.0", "", { "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0" } }, "sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ=="], - - "estree-util-to-js": ["estree-util-to-js@2.0.0", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "astring": "^1.8.0", "source-map": "^0.7.0" } }, "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg=="], - - "estree-util-value-to-estree": ["estree-util-value-to-estree@3.5.0", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-aMV56R27Gv3QmfmF1MY12GWkGzzeAezAX+UplqHVASfjc9wNzI/X6hC0S9oxq61WT4aQesLGslWP9tKk6ghRZQ=="], - - "estree-util-visit": ["estree-util-visit@2.0.0", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/unist": "^3.0.0" } }, "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww=="], - - "estree-walker": ["estree-walker@3.0.3", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g=="], - - "ethereum-cryptography": ["ethereum-cryptography@1.2.0", "", { "dependencies": { "@noble/hashes": "1.2.0", "@noble/secp256k1": "1.7.1", "@scure/bip32": "1.1.5", "@scure/bip39": "1.1.1" } }, "sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw=="], - - "ethers": ["ethers@5.8.0", "", { "dependencies": { "@ethersproject/abi": "5.8.0", "@ethersproject/abstract-provider": "5.8.0", "@ethersproject/abstract-signer": "5.8.0", "@ethersproject/address": "5.8.0", "@ethersproject/base64": "5.8.0", "@ethersproject/basex": "5.8.0", "@ethersproject/bignumber": "5.8.0", "@ethersproject/bytes": "5.8.0", "@ethersproject/constants": "5.8.0", "@ethersproject/contracts": "5.8.0", "@ethersproject/hash": "5.8.0", "@ethersproject/hdnode": "5.8.0", "@ethersproject/json-wallets": "5.8.0", "@ethersproject/keccak256": "5.8.0", "@ethersproject/logger": "5.8.0", "@ethersproject/networks": "5.8.0", "@ethersproject/pbkdf2": "5.8.0", "@ethersproject/properties": "5.8.0", "@ethersproject/providers": "5.8.0", "@ethersproject/random": "5.8.0", "@ethersproject/rlp": "5.8.0", "@ethersproject/sha2": "5.8.0", "@ethersproject/signing-key": "5.8.0", "@ethersproject/solidity": "5.8.0", "@ethersproject/strings": "5.8.0", "@ethersproject/transactions": "5.8.0", "@ethersproject/units": "5.8.0", "@ethersproject/wallet": "5.8.0", "@ethersproject/web": "5.8.0", "@ethersproject/wordlists": "5.8.0" } }, "sha512-DUq+7fHrCg1aPDFCHx6UIPb3nmt2XMpM7Y/g2gLhsl3lIBqeAfOJIl1qEvRf2uq3BiKxmh6Fh5pfp2ieyek7Kg=="], - - "eventemitter3": ["eventemitter3@4.0.7", "", {}, "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw=="], - - "execa": ["execa@8.0.1", "", { "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^8.0.1", "human-signals": "^5.0.0", "is-stream": "^3.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^5.1.0", "onetime": "^6.0.0", "signal-exit": "^4.1.0", "strip-final-newline": "^3.0.0" } }, "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg=="], - - "exsolve": ["exsolve@1.0.8", "", {}, "sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA=="], - - "extend": ["extend@3.0.2", "", {}, "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="], - - "extend-shallow": ["extend-shallow@2.0.1", "", { "dependencies": { "is-extendable": "^0.1.0" } }, "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug=="], - - "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="], - - "fast-equals": ["fast-equals@5.3.3", "", {}, "sha512-/boTcHZeIAQ2r/tL11voclBHDeP9WPxLt+tyAbVSyyXuUFyh0Tne7gJZTqGbxnvj79TjLdCXLOY7UIPhyG5MTw=="], - - "fast-fuzzy": ["fast-fuzzy@1.12.0", "", { "dependencies": { "graphemesplit": "^2.4.1" } }, "sha512-sXxGgHS+ubYpsdLnvOvJ9w5GYYZrtL9mkosG3nfuD446ahvoWEsSKBP7ieGmWIKVLnaxRDgUJkZMdxRgA2Ni+Q=="], - - "fast-glob": ["fast-glob@3.3.3", "", { "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.8" } }, "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg=="], - - "fast-uri": ["fast-uri@3.1.0", "", {}, "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA=="], - - "fast-xml-parser": ["fast-xml-parser@5.3.2", "", { "dependencies": { "strnum": "^2.1.0" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-n8v8b6p4Z1sMgqRmqLJm3awW4NX7NkaKPfb3uJIBTSH7Pdvufi3PQ3/lJLQrvxcMYl7JI2jnDO90siPEpD8JBA=="], - - "fastq": ["fastq@1.19.1", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ=="], - - "fault": ["fault@2.0.1", "", { "dependencies": { "format": "^0.2.0" } }, "sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ=="], - - "fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="], - - "fetch-har": ["fetch-har@11.1.1", "", { "dependencies": { "@readme/data-urls": "^3.0.0", "@types/har-format": "^1.2.13" } }, "sha512-FXmC4o6bqnMJ/ru/F1R+ik7QqYq8aWx7NZk6Xx4iQ/4jiVb4N/HUtd3BDBP8RT+UXFEndei4diHVqUd4vwsKGA=="], - - "file-selector": ["file-selector@2.1.2", "", { "dependencies": { "tslib": "^2.7.0" } }, "sha512-QgXo+mXTe8ljeqUFaX3QVHc5osSItJ/Km+xpocx0aSqWGMSCf6qYs/VnzZgS864Pjn5iceMRFigeAV7AfTlaig=="], - - "fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="], - - "find-root": ["find-root@1.1.0", "", {}, "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng=="], - - "find-up": ["find-up@5.0.0", "", { "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" } }, "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="], - - "fix-dts-default-cjs-exports": ["fix-dts-default-cjs-exports@1.0.1", "", { "dependencies": { "magic-string": "^0.30.17", "mlly": "^1.7.4", "rollup": "^4.34.8" } }, "sha512-pVIECanWFC61Hzl2+oOCtoJ3F17kglZC/6N94eRWycFgBH35hHx0Li604ZIzhseh97mf2p0cv7vVrOZGoqhlEg=="], - - "flat": ["flat@5.0.2", "", { "bin": { "flat": "cli.js" } }, "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ=="], - - "follow-redirects": ["follow-redirects@1.15.11", "", {}, "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ=="], - - "foreground-child": ["foreground-child@3.3.1", "", { "dependencies": { "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" } }, "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw=="], - - "form-data": ["form-data@4.0.5", "", { "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", "hasown": "^2.0.2", "mime-types": "^2.1.12" } }, "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w=="], - - "format": ["format@0.2.2", "", {}, "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww=="], - - "fp-ts": ["fp-ts@1.19.3", "", {}, "sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg=="], - - "fraction.js": ["fraction.js@5.3.4", "", {}, "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ=="], - - "framer-motion": ["framer-motion@12.23.24", "", { "dependencies": { "motion-dom": "^12.23.23", "motion-utils": "^12.23.6", "tslib": "^2.4.0" }, "peerDependencies": { "@emotion/is-prop-valid": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/is-prop-valid", "react", "react-dom"] }, "sha512-HMi5HRoRCTou+3fb3h9oTLyJGBxHfW+HnNE25tAXOvVx/IvwMHK0cx7IR4a2ZU6sh3IX1Z+4ts32PcYBOqka8w=="], - - "fs-extra": ["fs-extra@7.0.1", "", { "dependencies": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", "universalify": "^0.1.0" } }, "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw=="], - - "fs.realpath": ["fs.realpath@1.0.0", "", {}, "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="], - - "fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="], - - "function-bind": ["function-bind@1.1.2", "", {}, "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="], - - "get-caller-file": ["get-caller-file@2.0.5", "", {}, "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="], - - "get-intrinsic": ["get-intrinsic@1.3.0", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "math-intrinsics": "^1.1.0" } }, "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ=="], - - "get-nonce": ["get-nonce@1.0.1", "", {}, "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q=="], - - "get-own-enumerable-property-symbols": ["get-own-enumerable-property-symbols@3.0.2", "", {}, "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g=="], - - "get-proto": ["get-proto@1.0.1", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" } }, "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g=="], - - "get-stream": ["get-stream@8.0.1", "", {}, "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA=="], - - "get-tsconfig": ["get-tsconfig@4.13.0", "", { "dependencies": { "resolve-pkg-maps": "^1.0.0" } }, "sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ=="], - - "github-slugger": ["github-slugger@2.0.0", "", {}, "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw=="], - - "glob": ["glob@11.1.0", "", { "dependencies": { "foreground-child": "^3.3.1", "jackspeak": "^4.1.1", "minimatch": "^10.1.1", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^2.0.0" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw=="], - - "glob-parent": ["glob-parent@6.0.2", "", { "dependencies": { "is-glob": "^4.0.3" } }, "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="], - - "globals": ["globals@15.15.0", "", {}, "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg=="], - - "gopd": ["gopd@1.2.0", "", {}, "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="], - - "graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="], - - "graphemesplit": ["graphemesplit@2.6.0", "", { "dependencies": { "js-base64": "^3.6.0", "unicode-trie": "^2.0.0" } }, "sha512-rG9w2wAfkpg0DILa1pjnjNfucng3usON360shisqIMUBw/87pojcBSrHmeE4UwryAuBih7g8m1oilf5/u8EWdQ=="], - - "graphql": ["graphql@16.12.0", "", {}, "sha512-DKKrynuQRne0PNpEbzuEdHlYOMksHSUI8Zc9Unei5gTsMNA2/vMpoMz/yKba50pejK56qj98qM0SjYxAKi13gQ=="], - - "graphql-request": ["graphql-request@7.3.5", "", { "dependencies": { "@graphql-typed-document-node/core": "^3.2.0" }, "peerDependencies": { "graphql": "14 - 16" } }, "sha512-yrikPPBQFrHTCEw+Nr89vcKkhSOaKk1a4i1aoK0q2pJp0TkkH+HxJXKeVDqzHSYAEoFoNqKmNuqda1tubgaGZQ=="], - - "graphql-tag": ["graphql-tag@2.12.6", "", { "dependencies": { "tslib": "^2.1.0" }, "peerDependencies": { "graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg=="], - - "gray-matter": ["gray-matter@4.0.3", "", { "dependencies": { "js-yaml": "^3.13.1", "kind-of": "^6.0.2", "section-matter": "^1.0.0", "strip-bom-string": "^1.0.0" } }, "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q=="], - - "hachure-fill": ["hachure-fill@0.5.2", "", {}, "sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg=="], - - "hardhat": ["hardhat@2.27.0", "", { "dependencies": { "@ethereumjs/util": "^9.1.0", "@ethersproject/abi": "^5.1.2", "@nomicfoundation/edr": "^0.12.0-next.7", "@nomicfoundation/solidity-analyzer": "^0.1.0", "@sentry/node": "^5.18.1", "adm-zip": "^0.4.16", "aggregate-error": "^3.0.0", "ansi-escapes": "^4.3.0", "boxen": "^5.1.2", "chokidar": "^4.0.0", "ci-info": "^2.0.0", "debug": "^4.1.1", "enquirer": "^2.3.0", "env-paths": "^2.2.0", "ethereum-cryptography": "^1.0.3", "find-up": "^5.0.0", "fp-ts": "1.19.3", "fs-extra": "^7.0.1", "immutable": "^4.0.0-rc.12", "io-ts": "1.10.4", "json-stream-stringify": "^3.1.4", "keccak": "^3.0.2", "lodash": "^4.17.11", "micro-eth-signer": "^0.14.0", "mnemonist": "^0.38.0", "mocha": "^10.0.0", "p-map": "^4.0.0", "picocolors": "^1.1.0", "raw-body": "^2.4.1", "resolve": "1.17.0", "semver": "^6.3.0", "solc": "0.8.26", "source-map-support": "^0.5.13", "stacktrace-parser": "^0.1.10", "tinyglobby": "^0.2.6", "tsort": "0.0.1", "undici": "^5.14.0", "uuid": "^8.3.2", "ws": "^7.4.6" }, "peerDependencies": { "ts-node": "*", "typescript": "*" }, "optionalPeers": ["ts-node", "typescript"], "bin": { "hardhat": "internal/cli/bootstrap.js" } }, "sha512-du7ecjx1/ueAUjvtZhVkJvWytPCjlagG3ZktYTphfzAbc1Flc6sRolw5mhKL/Loub1EIFRaflutM4bdB/YsUUw=="], - - "hardhat-watcher": ["hardhat-watcher@2.5.0", "", { "dependencies": { "chokidar": "^3.5.3" }, "peerDependencies": { "hardhat": "^2.0.0" } }, "sha512-Su2qcSMIo2YO2PrmJ0/tdkf+6pSt8zf9+4URR5edMVti6+ShI8T3xhPrwugdyTOFuyj8lKHrcTZNKUFYowYiyA=="], - - "has-flag": ["has-flag@4.0.0", "", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="], - - "has-symbols": ["has-symbols@1.1.0", "", {}, "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ=="], - - "has-tostringtag": ["has-tostringtag@1.0.2", "", { "dependencies": { "has-symbols": "^1.0.3" } }, "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw=="], - - "hash.js": ["hash.js@1.1.7", "", { "dependencies": { "inherits": "^2.0.3", "minimalistic-assert": "^1.0.1" } }, "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA=="], - - "hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="], - - "hast": ["hast@1.0.0", "", {}, "sha512-vFUqlRV5C+xqP76Wwq2SrM0kipnmpxJm7OfvVXpB35Fp+Fn4MV+ozr+JZr5qFvyR1q/U+Foim2x+3P+x9S1PLA=="], - - "hast-util-from-dom": ["hast-util-from-dom@5.0.1", "", { "dependencies": { "@types/hast": "^3.0.0", "hastscript": "^9.0.0", "web-namespaces": "^2.0.0" } }, "sha512-N+LqofjR2zuzTjCPzyDUdSshy4Ma6li7p/c3pA78uTwzFgENbgbUrm2ugwsOdcjI1muO+o6Dgzp9p8WHtn/39Q=="], - - "hast-util-from-html": ["hast-util-from-html@2.0.3", "", { "dependencies": { "@types/hast": "^3.0.0", "devlop": "^1.1.0", "hast-util-from-parse5": "^8.0.0", "parse5": "^7.0.0", "vfile": "^6.0.0", "vfile-message": "^4.0.0" } }, "sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw=="], - - "hast-util-from-html-isomorphic": ["hast-util-from-html-isomorphic@2.0.0", "", { "dependencies": { "@types/hast": "^3.0.0", "hast-util-from-dom": "^5.0.0", "hast-util-from-html": "^2.0.0", "unist-util-remove-position": "^5.0.0" } }, "sha512-zJfpXq44yff2hmE0XmwEOzdWin5xwH+QIhMLOScpX91e/NSGPsAzNCvLQDIEPyO2TXi+lBmU6hjLIhV8MwP2kw=="], - - "hast-util-from-parse5": ["hast-util-from-parse5@8.0.3", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "devlop": "^1.0.0", "hastscript": "^9.0.0", "property-information": "^7.0.0", "vfile": "^6.0.0", "vfile-location": "^5.0.0", "web-namespaces": "^2.0.0" } }, "sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg=="], - - "hast-util-is-element": ["hast-util-is-element@3.0.0", "", { "dependencies": { "@types/hast": "^3.0.0" } }, "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g=="], - - "hast-util-parse-selector": ["hast-util-parse-selector@4.0.0", "", { "dependencies": { "@types/hast": "^3.0.0" } }, "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A=="], - - "hast-util-properties-to-mdx-jsx-attributes": ["hast-util-properties-to-mdx-jsx-attributes@1.0.1", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", "estree-util-value-to-estree": "^3.0.0", "mdast-util-mdx-jsx": "^3.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "style-to-js": "^1.0.0" } }, "sha512-ZzxhjHZ+gyxaPIFp/nuRpVL4GIFoqzfH6vNgjaA3CuUAV6XCxYwAQfRczrZRkgL6msi6DdOl+/QEduOdzszvbg=="], - - "hast-util-raw": ["hast-util-raw@9.1.0", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "@ungap/structured-clone": "^1.0.0", "hast-util-from-parse5": "^8.0.0", "hast-util-to-parse5": "^8.0.0", "html-void-elements": "^3.0.0", "mdast-util-to-hast": "^13.0.0", "parse5": "^7.0.0", "unist-util-position": "^5.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.0", "web-namespaces": "^2.0.0", "zwitch": "^2.0.0" } }, "sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw=="], - - "hast-util-to-estree": ["hast-util-to-estree@3.1.3", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", "devlop": "^1.0.0", "estree-util-attach-comments": "^3.0.0", "estree-util-is-identifier-name": "^3.0.0", "hast-util-whitespace": "^3.0.0", "mdast-util-mdx-expression": "^2.0.0", "mdast-util-mdx-jsx": "^3.0.0", "mdast-util-mdxjs-esm": "^2.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "style-to-js": "^1.0.0", "unist-util-position": "^5.0.0", "zwitch": "^2.0.0" } }, "sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w=="], - - "hast-util-to-html": ["hast-util-to-html@9.0.5", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "ccount": "^2.0.0", "comma-separated-tokens": "^2.0.0", "hast-util-whitespace": "^3.0.0", "html-void-elements": "^3.0.0", "mdast-util-to-hast": "^13.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "stringify-entities": "^4.0.0", "zwitch": "^2.0.4" } }, "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw=="], - - "hast-util-to-jsx-runtime": ["hast-util-to-jsx-runtime@2.3.6", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "comma-separated-tokens": "^2.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "hast-util-whitespace": "^3.0.0", "mdast-util-mdx-expression": "^2.0.0", "mdast-util-mdx-jsx": "^3.0.0", "mdast-util-mdxjs-esm": "^2.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "style-to-js": "^1.0.0", "unist-util-position": "^5.0.0", "vfile-message": "^4.0.0" } }, "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg=="], - - "hast-util-to-parse5": ["hast-util-to-parse5@8.0.0", "", { "dependencies": { "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", "devlop": "^1.0.0", "property-information": "^6.0.0", "space-separated-tokens": "^2.0.0", "web-namespaces": "^2.0.0", "zwitch": "^2.0.0" } }, "sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw=="], - - "hast-util-to-string": ["hast-util-to-string@3.0.1", "", { "dependencies": { "@types/hast": "^3.0.0" } }, "sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A=="], - - "hast-util-to-text": ["hast-util-to-text@4.0.2", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "hast-util-is-element": "^3.0.0", "unist-util-find-after": "^5.0.0" } }, "sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A=="], - - "hast-util-whitespace": ["hast-util-whitespace@3.0.0", "", { "dependencies": { "@types/hast": "^3.0.0" } }, "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw=="], - - "hastscript": ["hastscript@9.0.1", "", { "dependencies": { "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", "hast-util-parse-selector": "^4.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0" } }, "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w=="], - - "he": ["he@1.2.0", "", { "bin": { "he": "bin/he" } }, "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw=="], - - "hmac-drbg": ["hmac-drbg@1.0.1", "", { "dependencies": { "hash.js": "^1.0.3", "minimalistic-assert": "^1.0.0", "minimalistic-crypto-utils": "^1.0.1" } }, "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg=="], - - "hoist-non-react-statics": ["hoist-non-react-statics@3.3.2", "", { "dependencies": { "react-is": "^16.7.0" } }, "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw=="], - - "html-encoding-sniffer": ["html-encoding-sniffer@4.0.0", "", { "dependencies": { "whatwg-encoding": "^3.1.1" } }, "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ=="], - - "html-url-attributes": ["html-url-attributes@3.0.1", "", {}, "sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ=="], - - "html-void-elements": ["html-void-elements@3.0.0", "", {}, "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg=="], - - "http-errors": ["http-errors@2.0.1", "", { "dependencies": { "depd": "~2.0.0", "inherits": "~2.0.4", "setprototypeof": "~1.2.0", "statuses": "~2.0.2", "toidentifier": "~1.0.1" } }, "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ=="], - - "http-proxy-agent": ["http-proxy-agent@7.0.2", "", { "dependencies": { "agent-base": "^7.1.0", "debug": "^4.3.4" } }, "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig=="], - - "https-proxy-agent": ["https-proxy-agent@7.0.6", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "4" } }, "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw=="], - - "human-signals": ["human-signals@5.0.0", "", {}, "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ=="], - - "iconv-lite": ["iconv-lite@0.6.3", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw=="], - - "ieee754": ["ieee754@1.2.1", "", {}, "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="], - - "immutable": ["immutable@4.3.7", "", {}, "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw=="], - - "import-fresh": ["import-fresh@3.3.1", "", { "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" } }, "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ=="], - - "indent-string": ["indent-string@4.0.0", "", {}, "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg=="], - - "inflight": ["inflight@1.0.6", "", { "dependencies": { "once": "^1.3.0", "wrappy": "1" } }, "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA=="], - - "inherits": ["inherits@2.0.4", "", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="], - - "inline-style-parser": ["inline-style-parser@0.2.7", "", {}, "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA=="], - - "internmap": ["internmap@2.0.3", "", {}, "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg=="], - - "intl-messageformat": ["intl-messageformat@10.7.18", "", { "dependencies": { "@formatjs/ecma402-abstract": "2.3.6", "@formatjs/fast-memoize": "2.2.7", "@formatjs/icu-messageformat-parser": "2.11.4", "tslib": "^2.8.0" } }, "sha512-m3Ofv/X/tV8Y3tHXLohcuVuhWKo7BBq62cqY15etqmLxg2DZ34AGGgQDeR+SCta2+zICb1NX83af0GJmbQ1++g=="], - - "io-ts": ["io-ts@1.10.4", "", { "dependencies": { "fp-ts": "^1.0.0" } }, "sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g=="], - - "is-alphabetical": ["is-alphabetical@2.0.1", "", {}, "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ=="], - - "is-alphanumerical": ["is-alphanumerical@2.0.1", "", { "dependencies": { "is-alphabetical": "^2.0.0", "is-decimal": "^2.0.0" } }, "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw=="], - - "is-arrayish": ["is-arrayish@0.2.1", "", {}, "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="], - - "is-binary-path": ["is-binary-path@2.1.0", "", { "dependencies": { "binary-extensions": "^2.0.0" } }, "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw=="], - - "is-buffer": ["is-buffer@1.1.6", "", {}, "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="], - - "is-core-module": ["is-core-module@2.16.1", "", { "dependencies": { "hasown": "^2.0.2" } }, "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w=="], - - "is-decimal": ["is-decimal@2.0.1", "", {}, "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A=="], - - "is-docker": ["is-docker@3.0.0", "", { "bin": { "is-docker": "cli.js" } }, "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ=="], - - "is-extendable": ["is-extendable@0.1.1", "", {}, "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw=="], - - "is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="], - - "is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="], - - "is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="], - - "is-hexadecimal": ["is-hexadecimal@2.0.1", "", {}, "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg=="], - - "is-inside-container": ["is-inside-container@1.0.0", "", { "dependencies": { "is-docker": "^3.0.0" }, "bin": { "is-inside-container": "cli.js" } }, "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA=="], - - "is-interactive": ["is-interactive@1.0.0", "", {}, "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w=="], - - "is-number": ["is-number@7.0.0", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="], - - "is-obj": ["is-obj@1.0.1", "", {}, "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg=="], - - "is-plain-obj": ["is-plain-obj@4.1.0", "", {}, "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg=="], - - "is-potential-custom-element-name": ["is-potential-custom-element-name@1.0.1", "", {}, "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ=="], - - "is-regexp": ["is-regexp@1.0.0", "", {}, "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA=="], - - "is-stream": ["is-stream@3.0.0", "", {}, "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA=="], - - "is-unicode-supported": ["is-unicode-supported@0.1.0", "", {}, "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw=="], - - "is-wsl": ["is-wsl@3.1.0", "", { "dependencies": { "is-inside-container": "^1.0.0" } }, "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw=="], - - "is64bit": ["is64bit@2.0.0", "", { "dependencies": { "system-architecture": "^0.1.0" } }, "sha512-jv+8jaWCl0g2lSBkNSVXdzfBA0npK1HGC2KtWM9FumFRoGS94g3NbCCLVnCYHLjp4GrW2KZeeSTMo5ddtznmGw=="], - - "isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], - - "isows": ["isows@1.0.7", "", { "peerDependencies": { "ws": "*" } }, "sha512-I1fSfDCZL5P0v33sVqeTDSpcstAg/N+wF5HS033mogOVIp4B+oHC7oOCsA3axAbBSGTJ8QubbNmnIRN/h8U7hg=="], - - "jackspeak": ["jackspeak@4.1.1", "", { "dependencies": { "@isaacs/cliui": "^8.0.2" } }, "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ=="], - - "jiti": ["jiti@1.21.7", "", { "bin": { "jiti": "bin/jiti.js" } }, "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A=="], - - "joycon": ["joycon@3.1.1", "", {}, "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw=="], - - "js-base64": ["js-base64@3.7.8", "", {}, "sha512-hNngCeKxIUQiEUN3GPJOkz4wF/YvdUdbNL9hsBcMQTkKzboD7T/q3OYOuuPZLUE6dBxSGpwhk5mwuDud7JVAow=="], - - "js-sha3": ["js-sha3@0.8.0", "", {}, "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q=="], - - "js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - - "js-yaml": ["js-yaml@4.1.1", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA=="], - - "jsbi": ["jsbi@3.2.5", "", {}, "sha512-aBE4n43IPvjaddScbvWRA2YlTzKEynHzu7MqOyTipdHucf/VxS63ViCjxYRg86M8Rxwbt/GfzHl1kKERkt45fQ=="], - - "jsdom": ["jsdom@24.1.3", "", { "dependencies": { "cssstyle": "^4.0.1", "data-urls": "^5.0.0", "decimal.js": "^10.4.3", "form-data": "^4.0.0", "html-encoding-sniffer": "^4.0.0", "http-proxy-agent": "^7.0.2", "https-proxy-agent": "^7.0.5", "is-potential-custom-element-name": "^1.0.1", "nwsapi": "^2.2.12", "parse5": "^7.1.2", "rrweb-cssom": "^0.7.1", "saxes": "^6.0.0", "symbol-tree": "^3.2.4", "tough-cookie": "^4.1.4", "w3c-xmlserializer": "^5.0.0", "webidl-conversions": "^7.0.0", "whatwg-encoding": "^3.1.1", "whatwg-mimetype": "^4.0.0", "whatwg-url": "^14.0.0", "ws": "^8.18.0", "xml-name-validator": "^5.0.0" }, "peerDependencies": { "canvas": "^2.11.2" }, "optionalPeers": ["canvas"] }, "sha512-MyL55p3Ut3cXbeBEG7Hcv0mVM8pp8PBNWxRqchZnSfAiES1v1mRnMeFfaHWIPULpwsYfvO+ZmMZz5tGCnjzDUQ=="], - - "jsesc": ["jsesc@3.1.0", "", { "bin": { "jsesc": "bin/jsesc" } }, "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA=="], - - "json-parse-even-better-errors": ["json-parse-even-better-errors@2.3.1", "", {}, "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="], - - "json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="], - - "json-stream-stringify": ["json-stream-stringify@3.1.6", "", {}, "sha512-x7fpwxOkbhFCaJDJ8vb1fBY3DdSa4AlITaz+HHILQJzdPMnHEFjxPwVUi1ALIbcIxDE0PNe/0i7frnY8QnBQog=="], - - "jsonfile": ["jsonfile@4.0.0", "", { "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg=="], - - "jsonpointer": ["jsonpointer@5.0.1", "", {}, "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ=="], - - "katex": ["katex@0.16.25", "", { "dependencies": { "commander": "^8.3.0" }, "bin": { "katex": "cli.js" } }, "sha512-woHRUZ/iF23GBP1dkDQMh1QBad9dmr8/PAwNA54VrSOVYgI12MAcE14TqnDdQOdzyEonGzMepYnqBMYdsoAr8Q=="], - - "keccak": ["keccak@3.0.4", "", { "dependencies": { "node-addon-api": "^2.0.0", "node-gyp-build": "^4.2.0", "readable-stream": "^3.6.0" } }, "sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q=="], - - "khroma": ["khroma@2.1.0", "", {}, "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw=="], - - "kind-of": ["kind-of@6.0.3", "", {}, "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw=="], - - "kleur": ["kleur@3.0.3", "", {}, "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w=="], - - "kolorist": ["kolorist@1.8.0", "", {}, "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ=="], - - "langium": ["langium@3.3.1", "", { "dependencies": { "chevrotain": "~11.0.3", "chevrotain-allstar": "~0.3.0", "vscode-languageserver": "~9.0.1", "vscode-languageserver-textdocument": "~1.0.11", "vscode-uri": "~3.0.8" } }, "sha512-QJv/h939gDpvT+9SiLVlY7tZC3xB2qK57v0J04Sh9wpMb6MP1q8gB21L3WIo8T5P1MSMg3Ep14L7KkDCFG3y4w=="], - - "layout-base": ["layout-base@1.0.2", "", {}, "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg=="], - - "leven": ["leven@3.1.0", "", {}, "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A=="], - - "lilconfig": ["lilconfig@3.1.3", "", {}, "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw=="], - - "lines-and-columns": ["lines-and-columns@1.2.4", "", {}, "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="], - - "load-tsconfig": ["load-tsconfig@0.2.5", "", {}, "sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg=="], - - "local-pkg": ["local-pkg@1.1.2", "", { "dependencies": { "mlly": "^1.7.4", "pkg-types": "^2.3.0", "quansync": "^0.2.11" } }, "sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A=="], - - "locate-path": ["locate-path@6.0.0", "", { "dependencies": { "p-locate": "^5.0.0" } }, "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw=="], - - "lodash": ["lodash@4.17.21", "", {}, "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="], - - "lodash-es": ["lodash-es@4.17.21", "", {}, "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="], - - "log-symbols": ["log-symbols@4.1.0", "", { "dependencies": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" } }, "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg=="], - - "longest-streak": ["longest-streak@3.1.0", "", {}, "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g=="], - - "loose-envify": ["loose-envify@1.4.0", "", { "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, "bin": { "loose-envify": "cli.js" } }, "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q=="], - - "lru-cache": ["lru-cache@11.2.2", "", {}, "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg=="], - - "lru_map": ["lru_map@0.3.3", "", {}, "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ=="], - - "magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="], - - "markdown-extensions": ["markdown-extensions@2.0.0", "", {}, "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q=="], - - "markdown-table": ["markdown-table@3.0.4", "", {}, "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw=="], - - "marked": ["marked@16.4.2", "", { "bin": { "marked": "bin/marked.js" } }, "sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA=="], - - "math-intrinsics": ["math-intrinsics@1.1.0", "", {}, "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="], - - "mathjax-full": ["mathjax-full@3.2.2", "", { "dependencies": { "esm": "^3.2.25", "mhchemparser": "^4.1.0", "mj-context-menu": "^0.6.1", "speech-rule-engine": "^4.0.6" } }, "sha512-+LfG9Fik+OuI8SLwsiR02IVdjcnRCy5MufYLi0C3TdMT56L/pjB0alMVGgoWJF8pN9Rc7FESycZB9BMNWIid5w=="], - - "md5": ["md5@2.3.0", "", { "dependencies": { "charenc": "0.0.2", "crypt": "0.0.2", "is-buffer": "~1.1.6" } }, "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g=="], - - "mdast-util-find-and-replace": ["mdast-util-find-and-replace@3.0.2", "", { "dependencies": { "@types/mdast": "^4.0.0", "escape-string-regexp": "^5.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg=="], - - "mdast-util-from-markdown": ["mdast-util-from-markdown@2.0.2", "", { "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "mdast-util-to-string": "^4.0.0", "micromark": "^4.0.0", "micromark-util-decode-numeric-character-reference": "^2.0.0", "micromark-util-decode-string": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "unist-util-stringify-position": "^4.0.0" } }, "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA=="], - - "mdast-util-frontmatter": ["mdast-util-frontmatter@2.0.1", "", { "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "escape-string-regexp": "^5.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0", "micromark-extension-frontmatter": "^2.0.0" } }, "sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA=="], - - "mdast-util-gfm": ["mdast-util-gfm@3.1.0", "", { "dependencies": { "mdast-util-from-markdown": "^2.0.0", "mdast-util-gfm-autolink-literal": "^2.0.0", "mdast-util-gfm-footnote": "^2.0.0", "mdast-util-gfm-strikethrough": "^2.0.0", "mdast-util-gfm-table": "^2.0.0", "mdast-util-gfm-task-list-item": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ=="], - - "mdast-util-gfm-autolink-literal": ["mdast-util-gfm-autolink-literal@2.0.1", "", { "dependencies": { "@types/mdast": "^4.0.0", "ccount": "^2.0.0", "devlop": "^1.0.0", "mdast-util-find-and-replace": "^3.0.0", "micromark-util-character": "^2.0.0" } }, "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ=="], - - "mdast-util-gfm-footnote": ["mdast-util-gfm-footnote@2.1.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.1.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0" } }, "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ=="], - - "mdast-util-gfm-strikethrough": ["mdast-util-gfm-strikethrough@2.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg=="], - - "mdast-util-gfm-table": ["mdast-util-gfm-table@2.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "markdown-table": "^3.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg=="], - - "mdast-util-gfm-task-list-item": ["mdast-util-gfm-task-list-item@2.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ=="], - - "mdast-util-math": ["mdast-util-math@3.0.0", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "longest-streak": "^3.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.1.0", "unist-util-remove-position": "^5.0.0" } }, "sha512-Tl9GBNeG/AhJnQM221bJR2HPvLOSnLE/T9cJI9tlc6zwQk2nPk/4f0cHkOdEixQPC/j8UtKDdITswvLAy1OZ1w=="], - - "mdast-util-mdx": ["mdast-util-mdx@3.0.0", "", { "dependencies": { "mdast-util-from-markdown": "^2.0.0", "mdast-util-mdx-expression": "^2.0.0", "mdast-util-mdx-jsx": "^3.0.0", "mdast-util-mdxjs-esm": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w=="], - - "mdast-util-mdx-expression": ["mdast-util-mdx-expression@2.0.1", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ=="], - - "mdast-util-mdx-jsx": ["mdast-util-mdx-jsx@3.2.0", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", "ccount": "^2.0.0", "devlop": "^1.1.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0", "parse-entities": "^4.0.0", "stringify-entities": "^4.0.0", "unist-util-stringify-position": "^4.0.0", "vfile-message": "^4.0.0" } }, "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q=="], - - "mdast-util-mdxjs-esm": ["mdast-util-mdxjs-esm@2.0.1", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg=="], - - "mdast-util-phrasing": ["mdast-util-phrasing@4.1.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "unist-util-is": "^6.0.0" } }, "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w=="], - - "mdast-util-to-hast": ["mdast-util-to-hast@13.2.1", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "@ungap/structured-clone": "^1.0.0", "devlop": "^1.0.0", "micromark-util-sanitize-uri": "^2.0.0", "trim-lines": "^3.0.0", "unist-util-position": "^5.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.0" } }, "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA=="], - - "mdast-util-to-markdown": ["mdast-util-to-markdown@2.1.2", "", { "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", "longest-streak": "^3.0.0", "mdast-util-phrasing": "^4.0.0", "mdast-util-to-string": "^4.0.0", "micromark-util-classify-character": "^2.0.0", "micromark-util-decode-string": "^2.0.0", "unist-util-visit": "^5.0.0", "zwitch": "^2.0.0" } }, "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA=="], - - "mdast-util-to-string": ["mdast-util-to-string@4.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0" } }, "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg=="], - - "memorystream": ["memorystream@0.3.1", "", {}, "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw=="], - - "merge-stream": ["merge-stream@2.0.0", "", {}, "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="], - - "merge2": ["merge2@1.4.1", "", {}, "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="], - - "mermaid": ["mermaid@11.12.1", "", { "dependencies": { "@braintree/sanitize-url": "^7.1.1", "@iconify/utils": "^3.0.1", "@mermaid-js/parser": "^0.6.3", "@types/d3": "^7.4.3", "cytoscape": "^3.29.3", "cytoscape-cose-bilkent": "^4.1.0", "cytoscape-fcose": "^2.2.0", "d3": "^7.9.0", "d3-sankey": "^0.12.3", "dagre-d3-es": "7.0.13", "dayjs": "^1.11.18", "dompurify": "^3.2.5", "katex": "^0.16.22", "khroma": "^2.1.0", "lodash-es": "^4.17.21", "marked": "^16.2.1", "roughjs": "^4.6.6", "stylis": "^4.3.6", "ts-dedent": "^2.2.0", "uuid": "^11.1.0" } }, "sha512-UlIZrRariB11TY1RtTgUWp65tphtBv4CSq7vyS2ZZ2TgoMjs2nloq+wFqxiwcxlhHUvs7DPGgMjs2aeQxz5h9g=="], - - "mhchemparser": ["mhchemparser@4.2.1", "", {}, "sha512-kYmyrCirqJf3zZ9t/0wGgRZ4/ZJw//VwaRVGA75C4nhE60vtnIzhl9J9ndkX/h6hxSN7pjg/cE0VxbnNM+bnDQ=="], - - "micro-eth-signer": ["micro-eth-signer@0.14.0", "", { "dependencies": { "@noble/curves": "~1.8.1", "@noble/hashes": "~1.7.1", "micro-packed": "~0.7.2" } }, "sha512-5PLLzHiVYPWClEvZIXXFu5yutzpadb73rnQCpUqIHu3No3coFuWQNfE5tkBQJ7djuLYl6aRLaS0MgWJYGoqiBw=="], - - "micro-packed": ["micro-packed@0.7.3", "", { "dependencies": { "@scure/base": "~1.2.5" } }, "sha512-2Milxs+WNC00TRlem41oRswvw31146GiSaoCT7s3Xi2gMUglW5QBeqlQaZeHr5tJx9nm3i57LNXPqxOOaWtTYg=="], - - "micromark": ["micromark@4.0.2", "", { "dependencies": { "@types/debug": "^4.0.0", "debug": "^4.0.0", "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "micromark-core-commonmark": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-combine-extensions": "^2.0.0", "micromark-util-decode-numeric-character-reference": "^2.0.0", "micromark-util-encode": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", "micromark-util-subtokenize": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA=="], - - "micromark-core-commonmark": ["micromark-core-commonmark@2.0.3", "", { "dependencies": { "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "micromark-factory-destination": "^2.0.0", "micromark-factory-label": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-factory-title": "^2.0.0", "micromark-factory-whitespace": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-classify-character": "^2.0.0", "micromark-util-html-tag-name": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-subtokenize": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg=="], - - "micromark-extension-frontmatter": ["micromark-extension-frontmatter@2.0.0", "", { "dependencies": { "fault": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg=="], - - "micromark-extension-gfm": ["micromark-extension-gfm@3.0.0", "", { "dependencies": { "micromark-extension-gfm-autolink-literal": "^2.0.0", "micromark-extension-gfm-footnote": "^2.0.0", "micromark-extension-gfm-strikethrough": "^2.0.0", "micromark-extension-gfm-table": "^2.0.0", "micromark-extension-gfm-tagfilter": "^2.0.0", "micromark-extension-gfm-task-list-item": "^2.0.0", "micromark-util-combine-extensions": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w=="], - - "micromark-extension-gfm-autolink-literal": ["micromark-extension-gfm-autolink-literal@2.1.0", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw=="], - - "micromark-extension-gfm-footnote": ["micromark-extension-gfm-footnote@2.1.0", "", { "dependencies": { "devlop": "^1.0.0", "micromark-core-commonmark": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw=="], - - "micromark-extension-gfm-strikethrough": ["micromark-extension-gfm-strikethrough@2.1.0", "", { "dependencies": { "devlop": "^1.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-classify-character": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw=="], - - "micromark-extension-gfm-table": ["micromark-extension-gfm-table@2.1.1", "", { "dependencies": { "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg=="], - - "micromark-extension-gfm-tagfilter": ["micromark-extension-gfm-tagfilter@2.0.0", "", { "dependencies": { "micromark-util-types": "^2.0.0" } }, "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg=="], - - "micromark-extension-gfm-task-list-item": ["micromark-extension-gfm-task-list-item@2.1.0", "", { "dependencies": { "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw=="], - - "micromark-extension-math": ["micromark-extension-math@3.1.0", "", { "dependencies": { "@types/katex": "^0.16.0", "devlop": "^1.0.0", "katex": "^0.16.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-lvEqd+fHjATVs+2v/8kg9i5Q0AP2k85H0WUOwpIVvUML8BapsMvh1XAogmQjOCsLpoKRCVQqEkQBB3NhVBcsOg=="], - - "micromark-extension-mdx-expression": ["micromark-extension-mdx-expression@3.0.1", "", { "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", "micromark-factory-mdx-expression": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-events-to-acorn": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q=="], - - "micromark-extension-mdx-jsx": ["micromark-extension-mdx-jsx@3.0.2", "", { "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "micromark-factory-mdx-expression": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-events-to-acorn": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "vfile-message": "^4.0.0" } }, "sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ=="], - - "micromark-extension-mdx-md": ["micromark-extension-mdx-md@2.0.0", "", { "dependencies": { "micromark-util-types": "^2.0.0" } }, "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ=="], - - "micromark-extension-mdxjs": ["micromark-extension-mdxjs@3.0.0", "", { "dependencies": { "acorn": "^8.0.0", "acorn-jsx": "^5.0.0", "micromark-extension-mdx-expression": "^3.0.0", "micromark-extension-mdx-jsx": "^3.0.0", "micromark-extension-mdx-md": "^2.0.0", "micromark-extension-mdxjs-esm": "^3.0.0", "micromark-util-combine-extensions": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ=="], - - "micromark-extension-mdxjs-esm": ["micromark-extension-mdxjs-esm@3.0.0", "", { "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", "micromark-core-commonmark": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-events-to-acorn": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "unist-util-position-from-estree": "^2.0.0", "vfile-message": "^4.0.0" } }, "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A=="], - - "micromark-factory-destination": ["micromark-factory-destination@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA=="], - - "micromark-factory-label": ["micromark-factory-label@2.0.1", "", { "dependencies": { "devlop": "^1.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg=="], - - "micromark-factory-mdx-expression": ["micromark-factory-mdx-expression@2.0.3", "", { "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-events-to-acorn": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "unist-util-position-from-estree": "^2.0.0", "vfile-message": "^4.0.0" } }, "sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ=="], - - "micromark-factory-space": ["micromark-factory-space@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg=="], - - "micromark-factory-title": ["micromark-factory-title@2.0.1", "", { "dependencies": { "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw=="], - - "micromark-factory-whitespace": ["micromark-factory-whitespace@2.0.1", "", { "dependencies": { "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ=="], - - "micromark-util-character": ["micromark-util-character@2.1.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q=="], - - "micromark-util-chunked": ["micromark-util-chunked@2.0.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA=="], - - "micromark-util-classify-character": ["micromark-util-classify-character@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q=="], - - "micromark-util-combine-extensions": ["micromark-util-combine-extensions@2.0.1", "", { "dependencies": { "micromark-util-chunked": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg=="], - - "micromark-util-decode-numeric-character-reference": ["micromark-util-decode-numeric-character-reference@2.0.2", "", { "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw=="], - - "micromark-util-decode-string": ["micromark-util-decode-string@2.0.1", "", { "dependencies": { "decode-named-character-reference": "^1.0.0", "micromark-util-character": "^2.0.0", "micromark-util-decode-numeric-character-reference": "^2.0.0", "micromark-util-symbol": "^2.0.0" } }, "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ=="], - - "micromark-util-encode": ["micromark-util-encode@2.0.1", "", {}, "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw=="], - - "micromark-util-events-to-acorn": ["micromark-util-events-to-acorn@2.0.3", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/unist": "^3.0.0", "devlop": "^1.0.0", "estree-util-visit": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "vfile-message": "^4.0.0" } }, "sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg=="], - - "micromark-util-html-tag-name": ["micromark-util-html-tag-name@2.0.1", "", {}, "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA=="], - - "micromark-util-normalize-identifier": ["micromark-util-normalize-identifier@2.0.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q=="], - - "micromark-util-resolve-all": ["micromark-util-resolve-all@2.0.1", "", { "dependencies": { "micromark-util-types": "^2.0.0" } }, "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg=="], - - "micromark-util-sanitize-uri": ["micromark-util-sanitize-uri@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-encode": "^2.0.0", "micromark-util-symbol": "^2.0.0" } }, "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ=="], - - "micromark-util-subtokenize": ["micromark-util-subtokenize@2.1.0", "", { "dependencies": { "devlop": "^1.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA=="], - - "micromark-util-symbol": ["micromark-util-symbol@2.0.1", "", {}, "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q=="], - - "micromark-util-types": ["micromark-util-types@2.0.2", "", {}, "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA=="], - - "micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="], - - "mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="], - - "mime-types": ["mime-types@2.1.35", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="], - - "mimic-fn": ["mimic-fn@4.0.0", "", {}, "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw=="], - - "minimalistic-assert": ["minimalistic-assert@1.0.1", "", {}, "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A=="], - - "minimalistic-crypto-utils": ["minimalistic-crypto-utils@1.0.1", "", {}, "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg=="], - - "minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], - - "minimist": ["minimist@1.2.8", "", {}, "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="], - - "minipass": ["minipass@7.1.2", "", {}, "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw=="], - - "mitt": ["mitt@3.0.1", "", {}, "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw=="], - - "mixpanel-browser": ["mixpanel-browser@2.72.0", "", { "dependencies": { "@mixpanel/rrweb": "2.0.0-alpha.18.2", "@mixpanel/rrweb-plugin-console-record": "2.0.0-alpha.18.2" } }, "sha512-Olc+1ebVBSVBjtR/Pp4t8Pc1wAI9AfA5e668B0MsI/gKJ43QcndzfQ/AT/TiP1Klup8O1C9vwykoWjvPqX+SRA=="], - - "mj-context-menu": ["mj-context-menu@0.6.1", "", {}, "sha512-7NO5s6n10TIV96d4g2uDpG7ZDpIhMh0QNfGdJw/W47JswFcosz457wqz/b5sAKvl12sxINGFCn80NZHKwxQEXA=="], - - "mlly": ["mlly@1.8.0", "", { "dependencies": { "acorn": "^8.15.0", "pathe": "^2.0.3", "pkg-types": "^1.3.1", "ufo": "^1.6.1" } }, "sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g=="], - - "mnemonist": ["mnemonist@0.38.5", "", { "dependencies": { "obliterator": "^2.0.0" } }, "sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg=="], - - "mocha": ["mocha@10.8.2", "", { "dependencies": { "ansi-colors": "^4.1.3", "browser-stdout": "^1.3.1", "chokidar": "^3.5.3", "debug": "^4.3.5", "diff": "^5.2.0", "escape-string-regexp": "^4.0.0", "find-up": "^5.0.0", "glob": "^8.1.0", "he": "^1.2.0", "js-yaml": "^4.1.0", "log-symbols": "^4.1.0", "minimatch": "^5.1.6", "ms": "^2.1.3", "serialize-javascript": "^6.0.2", "strip-json-comments": "^3.1.1", "supports-color": "^8.1.1", "workerpool": "^6.5.1", "yargs": "^16.2.0", "yargs-parser": "^20.2.9", "yargs-unparser": "^2.0.0" }, "bin": { "mocha": "bin/mocha.js", "_mocha": "bin/_mocha" } }, "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg=="], - - "motion": ["motion@12.23.24", "", { "dependencies": { "framer-motion": "^12.23.24", "tslib": "^2.4.0" }, "peerDependencies": { "@emotion/is-prop-valid": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/is-prop-valid", "react", "react-dom"] }, "sha512-Rc5E7oe2YZ72N//S3QXGzbnXgqNrTESv8KKxABR20q2FLch9gHLo0JLyYo2hZ238bZ9Gx6cWhj9VO0IgwbMjCw=="], - - "motion-dom": ["motion-dom@12.23.23", "", { "dependencies": { "motion-utils": "^12.23.6" } }, "sha512-n5yolOs0TQQBRUFImrRfs/+6X4p3Q4n1dUEqt/H58Vx7OW6RF+foWEgmTVDhIWJIMXOuNNL0apKH2S16en9eiA=="], - - "motion-utils": ["motion-utils@12.23.6", "", {}, "sha512-eAWoPgr4eFEOFfg2WjIsMoqJTW6Z8MTUCgn/GZ3VRpClWBdnbjryiA3ZSNLyxCTmCQx4RmYX6jX1iWHbenUPNQ=="], - - "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], - - "mz": ["mz@2.7.0", "", { "dependencies": { "any-promise": "^1.0.0", "object-assign": "^4.0.1", "thenify-all": "^1.0.0" } }, "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q=="], - - "nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], - - "negotiator": ["negotiator@1.0.0", "", {}, "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg=="], - - "next": ["next@14.2.33", "", { "dependencies": { "@next/env": "14.2.33", "@swc/helpers": "0.5.5", "busboy": "1.6.0", "caniuse-lite": "^1.0.30001579", "graceful-fs": "^4.2.11", "postcss": "8.4.31", "styled-jsx": "5.1.1" }, "optionalDependencies": { "@next/swc-darwin-arm64": "14.2.33", "@next/swc-darwin-x64": "14.2.33", "@next/swc-linux-arm64-gnu": "14.2.33", "@next/swc-linux-arm64-musl": "14.2.33", "@next/swc-linux-x64-gnu": "14.2.33", "@next/swc-linux-x64-musl": "14.2.33", "@next/swc-win32-arm64-msvc": "14.2.33", "@next/swc-win32-ia32-msvc": "14.2.33", "@next/swc-win32-x64-msvc": "14.2.33" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "@playwright/test": "^1.41.2", "react": "^18.2.0", "react-dom": "^18.2.0", "sass": "^1.3.0" }, "optionalPeers": ["@opentelemetry/api", "@playwright/test", "sass"], "bin": { "next": "dist/bin/next" } }, "sha512-GiKHLsD00t4ACm1p00VgrI0rUFAC9cRDGReKyERlM57aeEZkOQGcZTpIbsGn0b562FTPJWmYfKwplfO9EaT6ng=="], - - "next-seo": ["next-seo@6.8.0", "", { "peerDependencies": { "next": "^8.1.1-canary.54 || >=9.0.0", "react": ">=16.0.0", "react-dom": ">=16.0.0" } }, "sha512-zcxaV67PFXCSf8e6SXxbxPaOTgc8St/esxfsYXfQXMM24UESUVSXFm7f2A9HMkAwa0Gqn4s64HxYZAGfdF4Vhg=="], - - "next-sitemap": ["next-sitemap@4.2.3", "", { "dependencies": { "@corex/deepmerge": "^4.0.43", "@next/env": "^13.4.3", "fast-glob": "^3.2.12", "minimist": "^1.2.8" }, "peerDependencies": { "next": "*" }, "bin": { "next-sitemap": "bin/next-sitemap.mjs", "next-sitemap-cjs": "bin/next-sitemap.cjs" } }, "sha512-vjdCxeDuWDzldhCnyFCQipw5bfpl4HmZA7uoo3GAaYGjGgfL4Cxb1CiztPuWGmS+auYs7/8OekRS8C2cjdAsjQ=="], - - "nextra": ["nextra@3.3.1", "", { "dependencies": { "@formatjs/intl-localematcher": "^0.5.4", "@headlessui/react": "^2.1.2", "@mdx-js/mdx": "^3.0.0", "@mdx-js/react": "^3.0.0", "@napi-rs/simple-git": "^0.1.9", "@shikijs/twoslash": "^1.0.0", "@theguild/remark-mermaid": "^0.1.3", "@theguild/remark-npm2yarn": "^0.3.2", "better-react-mathjax": "^2.0.3", "clsx": "^2.0.0", "estree-util-to-js": "^2.0.0", "estree-util-value-to-estree": "^3.0.1", "github-slugger": "^2.0.0", "graceful-fs": "^4.2.11", "gray-matter": "^4.0.3", "hast-util-to-estree": "^3.1.0", "katex": "^0.16.9", "mdast-util-from-markdown": "^2.0.1", "mdast-util-gfm": "^3.0.0", "mdast-util-to-hast": "^13.2.0", "negotiator": "^1.0.0", "p-limit": "^6.0.0", "react-medium-image-zoom": "^5.2.12", "rehype-katex": "^7.0.0", "rehype-pretty-code": "0.14.0", "rehype-raw": "^7.0.0", "remark-frontmatter": "^5.0.0", "remark-gfm": "^4.0.0", "remark-math": "^6.0.0", "remark-reading-time": "^2.0.1", "remark-smartypants": "^3.0.0", "shiki": "^1.0.0", "slash": "^5.1.0", "title": "^4.0.0", "unist-util-remove": "^4.0.0", "unist-util-visit": "^5.0.0", "yaml": "^2.3.2", "zod": "^3.22.3", "zod-validation-error": "^3.0.0" }, "peerDependencies": { "next": ">=13", "react": ">=18", "react-dom": ">=18" } }, "sha512-jiwj+LfUPHHeAxJAEqFuglxnbjFgzAOnDWFsjv7iv3BWiX8OksDwd3I2Sv3j2zba00iIBDEPdNeylfzTtTLZVg=="], - - "nlcst-to-string": ["nlcst-to-string@4.0.0", "", { "dependencies": { "@types/nlcst": "^2.0.0" } }, "sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA=="], - - "node-addon-api": ["node-addon-api@2.0.2", "", {}, "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA=="], - - "node-gyp-build": ["node-gyp-build@4.8.4", "", { "bin": { "node-gyp-build": "bin.js", "node-gyp-build-optional": "optional.js", "node-gyp-build-test": "build-test.js" } }, "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ=="], - - "node-releases": ["node-releases@2.0.27", "", {}, "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA=="], - - "normalize-path": ["normalize-path@3.0.0", "", {}, "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="], - - "normalize-range": ["normalize-range@0.1.2", "", {}, "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA=="], - - "npm-run-path": ["npm-run-path@5.3.0", "", { "dependencies": { "path-key": "^4.0.0" } }, "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ=="], - - "npm-to-yarn": ["npm-to-yarn@3.0.1", "", {}, "sha512-tt6PvKu4WyzPwWUzy/hvPFqn+uwXO0K1ZHka8az3NnrhWJDmSqI8ncWq0fkL0k/lmmi5tAC11FXwXuh0rFbt1A=="], - - "numeral": ["numeral@2.0.6", "", {}, "sha512-qaKRmtYPZ5qdw4jWJD6bxEf1FJEqllJrwxCLIm0sQU/A7v2/czigzOb+C2uSiFsa9lBUzeH7M1oK+Q+OLxL3kA=="], - - "nwsapi": ["nwsapi@2.2.22", "", {}, "sha512-ujSMe1OWVn55euT1ihwCI1ZcAaAU3nxUiDwfDQldc51ZXaB9m2AyOn6/jh1BLe2t/G8xd6uKG1UBF2aZJeg2SQ=="], - - "object-assign": ["object-assign@4.1.1", "", {}, "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="], - - "object-hash": ["object-hash@3.0.0", "", {}, "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw=="], - - "object-inspect": ["object-inspect@1.13.4", "", {}, "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew=="], - - "obliterator": ["obliterator@2.0.5", "", {}, "sha512-42CPE9AhahZRsMNslczq0ctAEtqk8Eka26QofnqC346BZdHDySk3LWka23LI7ULIw11NmltpiLagIq8gBozxTw=="], - - "once": ["once@1.4.0", "", { "dependencies": { "wrappy": "1" } }, "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="], - - "onetime": ["onetime@6.0.0", "", { "dependencies": { "mimic-fn": "^4.0.0" } }, "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ=="], - - "oniguruma-parser": ["oniguruma-parser@0.12.1", "", {}, "sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w=="], - - "oniguruma-to-es": ["oniguruma-to-es@4.3.4", "", { "dependencies": { "oniguruma-parser": "^0.12.1", "regex": "^6.0.1", "regex-recursion": "^6.0.2" } }, "sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA=="], - - "openapi-types": ["openapi-types@12.1.3", "", {}, "sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw=="], - - "ora": ["ora@5.4.1", "", { "dependencies": { "bl": "^4.1.0", "chalk": "^4.1.0", "cli-cursor": "^3.1.0", "cli-spinners": "^2.5.0", "is-interactive": "^1.0.0", "is-unicode-supported": "^0.1.0", "log-symbols": "^4.1.0", "strip-ansi": "^6.0.0", "wcwidth": "^1.0.1" } }, "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ=="], - - "os-tmpdir": ["os-tmpdir@1.0.2", "", {}, "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g=="], - - "ox": ["ox@0.9.6", "", { "dependencies": { "@adraffy/ens-normalize": "^1.11.0", "@noble/ciphers": "^1.3.0", "@noble/curves": "1.9.1", "@noble/hashes": "^1.8.0", "@scure/bip32": "^1.7.0", "@scure/bip39": "^1.6.0", "abitype": "^1.0.9", "eventemitter3": "5.0.1" }, "peerDependencies": { "typescript": ">=5.4.0" }, "optionalPeers": ["typescript"] }, "sha512-8SuCbHPvv2eZLYXrNmC0EC12rdzXQLdhnOMlHDW2wiCPLxBrOOJwX5L5E61by+UjTPOryqQiRSnjIKCI+GykKg=="], - - "p-limit": ["p-limit@6.2.0", "", { "dependencies": { "yocto-queue": "^1.1.1" } }, "sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA=="], - - "p-locate": ["p-locate@5.0.0", "", { "dependencies": { "p-limit": "^3.0.2" } }, "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw=="], - - "p-map": ["p-map@4.0.0", "", { "dependencies": { "aggregate-error": "^3.0.0" } }, "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ=="], - - "package-json-from-dist": ["package-json-from-dist@1.0.1", "", {}, "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw=="], - - "package-manager-detector": ["package-manager-detector@1.5.0", "", {}, "sha512-uBj69dVlYe/+wxj8JOpr97XfsxH/eumMt6HqjNTmJDf/6NO9s+0uxeOneIz3AsPt2m6y9PqzDzd3ATcU17MNfw=="], - - "pako": ["pako@2.1.0", "", {}, "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug=="], - - "parent-module": ["parent-module@1.0.1", "", { "dependencies": { "callsites": "^3.0.0" } }, "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g=="], - - "parse-entities": ["parse-entities@4.0.2", "", { "dependencies": { "@types/unist": "^2.0.0", "character-entities-legacy": "^3.0.0", "character-reference-invalid": "^2.0.0", "decode-named-character-reference": "^1.0.0", "is-alphanumerical": "^2.0.0", "is-decimal": "^2.0.0", "is-hexadecimal": "^2.0.0" } }, "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw=="], - - "parse-json": ["parse-json@5.2.0", "", { "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", "json-parse-even-better-errors": "^2.3.0", "lines-and-columns": "^1.1.6" } }, "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg=="], - - "parse-latin": ["parse-latin@7.0.0", "", { "dependencies": { "@types/nlcst": "^2.0.0", "@types/unist": "^3.0.0", "nlcst-to-string": "^4.0.0", "unist-util-modify-children": "^4.0.0", "unist-util-visit-children": "^3.0.0", "vfile": "^6.0.0" } }, "sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ=="], - - "parse-numeric-range": ["parse-numeric-range@1.3.0", "", {}, "sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ=="], - - "parse5": ["parse5@7.3.0", "", { "dependencies": { "entities": "^6.0.0" } }, "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw=="], - - "path-browserify": ["path-browserify@1.0.1", "", {}, "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g=="], - - "path-data-parser": ["path-data-parser@0.1.0", "", {}, "sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w=="], - - "path-exists": ["path-exists@4.0.0", "", {}, "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="], - - "path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="], - - "path-parse": ["path-parse@1.0.7", "", {}, "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="], - - "path-scurry": ["path-scurry@2.0.1", "", { "dependencies": { "lru-cache": "^11.0.0", "minipass": "^7.1.2" } }, "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA=="], - - "path-type": ["path-type@4.0.0", "", {}, "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw=="], - - "pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], - - "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], - - "picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], - - "pify": ["pify@2.3.0", "", {}, "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog=="], - - "pirates": ["pirates@4.0.7", "", {}, "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA=="], - - "pkg-types": ["pkg-types@1.3.1", "", { "dependencies": { "confbox": "^0.1.8", "mlly": "^1.7.4", "pathe": "^2.0.1" } }, "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ=="], - - "pluralize": ["pluralize@8.0.0", "", {}, "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA=="], - - "points-on-curve": ["points-on-curve@0.2.0", "", {}, "sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A=="], - - "points-on-path": ["points-on-path@0.2.1", "", { "dependencies": { "path-data-parser": "0.1.0", "points-on-curve": "0.2.0" } }, "sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g=="], - - "postcss": ["postcss@8.5.6", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg=="], - - "postcss-import": ["postcss-import@15.1.0", "", { "dependencies": { "postcss-value-parser": "^4.0.0", "read-cache": "^1.0.0", "resolve": "^1.1.7" }, "peerDependencies": { "postcss": "^8.0.0" } }, "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew=="], - - "postcss-js": ["postcss-js@4.1.0", "", { "dependencies": { "camelcase-css": "^2.0.1" }, "peerDependencies": { "postcss": "^8.4.21" } }, "sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw=="], - - "postcss-load-config": ["postcss-load-config@6.0.1", "", { "dependencies": { "lilconfig": "^3.1.1" }, "peerDependencies": { "jiti": ">=1.21.0", "postcss": ">=8.0.9", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["jiti", "postcss", "tsx", "yaml"] }, "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g=="], - - "postcss-nested": ["postcss-nested@6.2.0", "", { "dependencies": { "postcss-selector-parser": "^6.1.1" }, "peerDependencies": { "postcss": "^8.2.14" } }, "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ=="], - - "postcss-selector-parser": ["postcss-selector-parser@6.1.2", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg=="], - - "postcss-value-parser": ["postcss-value-parser@4.2.0", "", {}, "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="], - - "prettier": ["prettier@2.8.8", "", { "bin": { "prettier": "bin-prettier.js" } }, "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q=="], - - "prism-react-renderer": ["prism-react-renderer@2.4.1", "", { "dependencies": { "@types/prismjs": "^1.26.0", "clsx": "^2.0.0" }, "peerDependencies": { "react": ">=16.0.0" } }, "sha512-ey8Ls/+Di31eqzUxC46h8MksNuGx/n0AAC8uKpwFau4RPDYLuE3EXTp8N8G2vX2N7UC/+IXeNUnlWBGGcAG+Ig=="], - - "prismjs": ["prismjs@1.30.0", "", {}, "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw=="], - - "prompts": ["prompts@2.4.2", "", { "dependencies": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" } }, "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q=="], - - "prop-types": ["prop-types@15.8.1", "", { "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", "react-is": "^16.13.1" } }, "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg=="], - - "property-information": ["property-information@7.1.0", "", {}, "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ=="], - - "psl": ["psl@1.15.0", "", { "dependencies": { "punycode": "^2.3.1" } }, "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w=="], - - "punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="], - - "qs": ["qs@6.14.0", "", { "dependencies": { "side-channel": "^1.1.0" } }, "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w=="], - - "quansync": ["quansync@0.2.11", "", {}, "sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA=="], - - "querystringify": ["querystringify@2.2.0", "", {}, "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ=="], - - "queue-microtask": ["queue-microtask@1.2.3", "", {}, "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="], - - "randombytes": ["randombytes@2.1.0", "", { "dependencies": { "safe-buffer": "^5.1.0" } }, "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ=="], - - "raw-body": ["raw-body@2.5.3", "", { "dependencies": { "bytes": "~3.1.2", "http-errors": "~2.0.1", "iconv-lite": "~0.4.24", "unpipe": "~1.0.0" } }, "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA=="], - - "react": ["react@18.3.1", "", { "dependencies": { "loose-envify": "^1.1.0" } }, "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ=="], - - "react-aria": ["react-aria@3.44.0", "", { "dependencies": { "@internationalized/string": "^3.2.7", "@react-aria/breadcrumbs": "^3.5.29", "@react-aria/button": "^3.14.2", "@react-aria/calendar": "^3.9.2", "@react-aria/checkbox": "^3.16.2", "@react-aria/color": "^3.1.2", "@react-aria/combobox": "^3.14.0", "@react-aria/datepicker": "^3.15.2", "@react-aria/dialog": "^3.5.31", "@react-aria/disclosure": "^3.1.0", "@react-aria/dnd": "^3.11.3", "@react-aria/focus": "^3.21.2", "@react-aria/gridlist": "^3.14.1", "@react-aria/i18n": "^3.12.13", "@react-aria/interactions": "^3.25.6", "@react-aria/label": "^3.7.22", "@react-aria/landmark": "^3.0.7", "@react-aria/link": "^3.8.6", "@react-aria/listbox": "^3.15.0", "@react-aria/menu": "^3.19.3", "@react-aria/meter": "^3.4.27", "@react-aria/numberfield": "^3.12.2", "@react-aria/overlays": "^3.30.0", "@react-aria/progress": "^3.4.27", "@react-aria/radio": "^3.12.2", "@react-aria/searchfield": "^3.8.9", "@react-aria/select": "^3.17.0", "@react-aria/selection": "^3.26.0", "@react-aria/separator": "^3.4.13", "@react-aria/slider": "^3.8.2", "@react-aria/ssr": "^3.9.10", "@react-aria/switch": "^3.7.8", "@react-aria/table": "^3.17.8", "@react-aria/tabs": "^3.10.8", "@react-aria/tag": "^3.7.2", "@react-aria/textfield": "^3.18.2", "@react-aria/toast": "^3.0.8", "@react-aria/tooltip": "^3.8.8", "@react-aria/tree": "^3.1.4", "@react-aria/utils": "^3.31.0", "@react-aria/visually-hidden": "^3.8.28", "@react-types/shared": "^3.32.1" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "sha512-2Pq3GQxBgM4/2BlpKYXeaZ47a3tdIcYSW/AYvKgypE3XipxOdQMDG5Sr/NBn7zuJq+thzmtfRb0lB9bTbsmaRw=="], - - "react-device-detect": ["react-device-detect@2.2.3", "", { "dependencies": { "ua-parser-js": "^1.0.33" }, "peerDependencies": { "react": ">= 0.14.0", "react-dom": ">= 0.14.0" } }, "sha512-buYY3qrCnQVlIFHrC5UcUoAj7iANs/+srdkwsnNjI7anr3Tt7UY6MqNxtMLlr0tMBied0O49UZVK8XKs3ZIiPw=="], - - "react-dom": ["react-dom@18.3.1", "", { "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.2" }, "peerDependencies": { "react": "^18.3.1" } }, "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw=="], - - "react-dropzone": ["react-dropzone@14.3.8", "", { "dependencies": { "attr-accept": "^2.2.4", "file-selector": "^2.1.0", "prop-types": "^15.8.1" }, "peerDependencies": { "react": ">= 16.8 || 18.0.0" } }, "sha512-sBgODnq+lcA4P296DY4wacOZz3JFpD99fp+hb//iBO2HHnyeZU3FwWyXJ6salNpqQdsZrgMrotuko/BdJMV8Ug=="], - - "react-ga4": ["react-ga4@2.1.0", "", {}, "sha512-ZKS7PGNFqqMd3PJ6+C2Jtz/o1iU9ggiy8Y8nUeksgVuvNISbmrQtJiZNvC/TjDsqD0QlU5Wkgs7i+w9+OjHhhQ=="], - - "react-image-crop": ["react-image-crop@11.0.10", "", { "peerDependencies": { "react": ">=16.13.1" } }, "sha512-+5FfDXUgYLLqBh1Y/uQhIycpHCbXkI50a+nbfkB1C0xXXUTwkisHDo2QCB1SQJyHCqIuia4FeyReqXuMDKWQTQ=="], - - "react-intersection-observer": ["react-intersection-observer@9.16.0", "", { "peerDependencies": { "react": "^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" }, "optionalPeers": ["react-dom"] }, "sha512-w9nJSEp+DrW9KmQmeWHQyfaP6b03v+TdXynaoA964Wxt7mdR3An11z4NNCQgL4gKSK7y1ver2Fq+JKH6CWEzUA=="], - - "react-is": ["react-is@18.3.1", "", {}, "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg=="], - - "react-keyed-flatten-children": ["react-keyed-flatten-children@5.0.1", "", { "peerDependencies": { "react": ">=18.0.0", "react-is": ">=18.0.0" } }, "sha512-bZhTocogwo+q6zz3+HAQexckXhm+Ko8CaujKO6A138kVpRtF4xN8OmLE7F1Qv9YcDJrZ8gPXkJdM/VgcKjJimg=="], - - "react-markdown": ["react-markdown@10.1.0", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "hast-util-to-jsx-runtime": "^2.0.0", "html-url-attributes": "^3.0.0", "mdast-util-to-hast": "^13.0.0", "remark-parse": "^11.0.0", "remark-rehype": "^11.0.0", "unified": "^11.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.0" }, "peerDependencies": { "@types/react": ">=18", "react": ">=18" } }, "sha512-qKxVopLT/TyA6BX3Ue5NwabOsAzm0Q7kAPwq6L+wWDwisYs7R8vZ0nRXqq6rkueboxpkjvLGU9fWifiX/ZZFxQ=="], - - "react-medium-image-zoom": ["react-medium-image-zoom@5.4.0", "", { "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-BsE+EnFVQzFIlyuuQrZ9iTwyKpKkqdFZV1ImEQN573QPqGrIUuNni7aF+sZwDcxlsuOMayCr6oO/PZR/yJnbRg=="], - - "react-remove-scroll": ["react-remove-scroll@2.7.1", "", { "dependencies": { "react-remove-scroll-bar": "^2.3.7", "react-style-singleton": "^2.2.3", "tslib": "^2.1.0", "use-callback-ref": "^1.3.3", "use-sidecar": "^1.1.3" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-HpMh8+oahmIdOuS5aFKKY6Pyog+FNaZV/XyJOq7b4YFwsFHe5yYfdbIalI4k3vU2nSDql7YskmUseHsRrJqIPA=="], - - "react-remove-scroll-bar": ["react-remove-scroll-bar@2.3.8", "", { "dependencies": { "react-style-singleton": "^2.2.2", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" }, "optionalPeers": ["@types/react"] }, "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q=="], - - "react-smooth": ["react-smooth@4.0.4", "", { "dependencies": { "fast-equals": "^5.0.1", "prop-types": "^15.8.1", "react-transition-group": "^4.4.5" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-gnGKTpYwqL0Iii09gHobNolvX4Kiq4PKx6eWBCYYix+8cdw+cGo3do906l1NBPKkSWx1DghC1dlWG9L2uGd61Q=="], - - "react-style-singleton": ["react-style-singleton@2.2.3", "", { "dependencies": { "get-nonce": "^1.0.0", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ=="], - - "react-transition-group": ["react-transition-group@4.4.5", "", { "dependencies": { "@babel/runtime": "^7.5.5", "dom-helpers": "^5.0.1", "loose-envify": "^1.4.0", "prop-types": "^15.6.2" }, "peerDependencies": { "react": ">=16.6.0", "react-dom": ">=16.6.0" } }, "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g=="], - - "react-virtuoso": ["react-virtuoso@4.15.0", "", { "peerDependencies": { "react": ">=16 || >=17 || >= 18 || >= 19", "react-dom": ">=16 || >=17 || >= 18 || >=19" } }, "sha512-yDVJqOXf3N1GlSoXj/hMhslA6EyUmgCUVzS9u8MpdZs/KIwdTtbQnttZ0yzx8ZKdKeVdd0NPJG4pTINHbAyhyw=="], - - "read-cache": ["read-cache@1.0.0", "", { "dependencies": { "pify": "^2.3.0" } }, "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA=="], - - "readable-stream": ["readable-stream@3.6.2", "", { "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } }, "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA=="], - - "readdirp": ["readdirp@3.6.0", "", { "dependencies": { "picomatch": "^2.2.1" } }, "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="], - - "reading-time": ["reading-time@1.5.0", "", {}, "sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg=="], - - "recharts": ["recharts@2.15.4", "", { "dependencies": { "clsx": "^2.0.0", "eventemitter3": "^4.0.1", "lodash": "^4.17.21", "react-is": "^18.3.1", "react-smooth": "^4.0.4", "recharts-scale": "^0.4.4", "tiny-invariant": "^1.3.1", "victory-vendor": "^36.6.8" }, "peerDependencies": { "react": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-UT/q6fwS3c1dHbXv2uFgYJ9BMFHu3fwnd7AYZaEQhXuYQ4hgsxLvsUXzGdKeZrW5xopzDCvuA2N41WJ88I7zIw=="], - - "recharts-scale": ["recharts-scale@0.4.5", "", { "dependencies": { "decimal.js-light": "^2.4.1" } }, "sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w=="], - - "recma-build-jsx": ["recma-build-jsx@1.0.0", "", { "dependencies": { "@types/estree": "^1.0.0", "estree-util-build-jsx": "^3.0.0", "vfile": "^6.0.0" } }, "sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew=="], - - "recma-jsx": ["recma-jsx@1.0.1", "", { "dependencies": { "acorn-jsx": "^5.0.0", "estree-util-to-js": "^2.0.0", "recma-parse": "^1.0.0", "recma-stringify": "^1.0.0", "unified": "^11.0.0" }, "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w=="], - - "recma-parse": ["recma-parse@1.0.0", "", { "dependencies": { "@types/estree": "^1.0.0", "esast-util-from-js": "^2.0.0", "unified": "^11.0.0", "vfile": "^6.0.0" } }, "sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ=="], - - "recma-stringify": ["recma-stringify@1.0.0", "", { "dependencies": { "@types/estree": "^1.0.0", "estree-util-to-js": "^2.0.0", "unified": "^11.0.0", "vfile": "^6.0.0" } }, "sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g=="], - - "regex": ["regex@6.0.1", "", { "dependencies": { "regex-utilities": "^2.3.0" } }, "sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA=="], - - "regex-recursion": ["regex-recursion@6.0.2", "", { "dependencies": { "regex-utilities": "^2.3.0" } }, "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg=="], - - "regex-utilities": ["regex-utilities@2.3.0", "", {}, "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng=="], - - "rehype-katex": ["rehype-katex@7.0.1", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/katex": "^0.16.0", "hast-util-from-html-isomorphic": "^2.0.0", "hast-util-to-text": "^4.0.0", "katex": "^0.16.0", "unist-util-visit-parents": "^6.0.0", "vfile": "^6.0.0" } }, "sha512-OiM2wrZ/wuhKkigASodFoo8wimG3H12LWQaH8qSPVJn9apWKFSH3YOCtbKpBorTVw/eI7cuT21XBbvwEswbIOA=="], - - "rehype-mdx-code-props": ["rehype-mdx-code-props@3.0.1", "", { "dependencies": { "@types/hast": "^3.0.0", "hast-util-properties-to-mdx-jsx-attributes": "^1.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-mdx": "^3.0.0", "micromark-extension-mdxjs": "^3.0.0", "unified": "^11.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-BWWKn0N6r7/qd7lbLgv5J8of7imz1l1PyCNoY7BH0AOR9JdJlQIfA9cKqTZVEb2h2GPKh473qrBajF0i01fq3A=="], - - "rehype-parse": ["rehype-parse@9.0.1", "", { "dependencies": { "@types/hast": "^3.0.0", "hast-util-from-html": "^2.0.0", "unified": "^11.0.0" } }, "sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag=="], - - "rehype-pretty-code": ["rehype-pretty-code@0.14.0", "", { "dependencies": { "@types/hast": "^3.0.4", "hast-util-to-string": "^3.0.0", "parse-numeric-range": "^1.3.0", "rehype-parse": "^9.0.0", "unified": "^11.0.5", "unist-util-visit": "^5.0.0" }, "peerDependencies": { "shiki": "^1.3.0" } }, "sha512-hBeKF/Wkkf3zyUS8lal9RCUuhypDWLQc+h9UrP9Pav25FUm/AQAVh4m5gdvJxh4Oz+U+xKvdsV01p1LdvsZTiQ=="], - - "rehype-raw": ["rehype-raw@7.0.0", "", { "dependencies": { "@types/hast": "^3.0.0", "hast-util-raw": "^9.0.0", "vfile": "^6.0.0" } }, "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww=="], - - "rehype-recma": ["rehype-recma@1.0.0", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/hast": "^3.0.0", "hast-util-to-estree": "^3.0.0" } }, "sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw=="], - - "remark-frontmatter": ["remark-frontmatter@5.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-frontmatter": "^2.0.0", "micromark-extension-frontmatter": "^2.0.0", "unified": "^11.0.0" } }, "sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ=="], - - "remark-gfm": ["remark-gfm@4.0.1", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-gfm": "^3.0.0", "micromark-extension-gfm": "^3.0.0", "remark-parse": "^11.0.0", "remark-stringify": "^11.0.0", "unified": "^11.0.0" } }, "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg=="], - - "remark-math": ["remark-math@6.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-math": "^3.0.0", "micromark-extension-math": "^3.0.0", "unified": "^11.0.0" } }, "sha512-MMqgnP74Igy+S3WwnhQ7kqGlEerTETXMvJhrUzDikVZ2/uogJCb+WHUg97hK9/jcfc0dkD73s3LN8zU49cTEtA=="], - - "remark-mdx": ["remark-mdx@3.1.1", "", { "dependencies": { "mdast-util-mdx": "^3.0.0", "micromark-extension-mdxjs": "^3.0.0" } }, "sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg=="], - - "remark-parse": ["remark-parse@11.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-from-markdown": "^2.0.0", "micromark-util-types": "^2.0.0", "unified": "^11.0.0" } }, "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA=="], - - "remark-reading-time": ["remark-reading-time@2.0.2", "", { "dependencies": { "estree-util-is-identifier-name": "^2.0.0", "estree-util-value-to-estree": "^3.3.3", "reading-time": "^1.3.0", "unist-util-visit": "^3.1.0" } }, "sha512-ILjIuR0dQQ8pELPgaFvz7ralcSN62rD/L1pTUJgWb4gfua3ZwYEI8mnKGxEQCbrXSUF/OvycTkcUbifGOtOn5A=="], - - "remark-rehype": ["remark-rehype@11.1.2", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "mdast-util-to-hast": "^13.0.0", "unified": "^11.0.0", "vfile": "^6.0.0" } }, "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw=="], - - "remark-smartypants": ["remark-smartypants@3.0.2", "", { "dependencies": { "retext": "^9.0.0", "retext-smartypants": "^6.0.0", "unified": "^11.0.4", "unist-util-visit": "^5.0.0" } }, "sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA=="], - - "remark-stringify": ["remark-stringify@11.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-to-markdown": "^2.0.0", "unified": "^11.0.0" } }, "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw=="], - - "require-directory": ["require-directory@2.1.1", "", {}, "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="], - - "require-from-string": ["require-from-string@2.0.2", "", {}, "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="], - - "requires-port": ["requires-port@1.0.0", "", {}, "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ=="], - - "resolve": ["resolve@1.22.11", "", { "dependencies": { "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ=="], - - "resolve-from": ["resolve-from@5.0.0", "", {}, "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw=="], - - "resolve-pkg-maps": ["resolve-pkg-maps@1.0.0", "", {}, "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw=="], - - "restore-cursor": ["restore-cursor@3.1.0", "", { "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" } }, "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA=="], - - "retext": ["retext@9.0.0", "", { "dependencies": { "@types/nlcst": "^2.0.0", "retext-latin": "^4.0.0", "retext-stringify": "^4.0.0", "unified": "^11.0.0" } }, "sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA=="], - - "retext-latin": ["retext-latin@4.0.0", "", { "dependencies": { "@types/nlcst": "^2.0.0", "parse-latin": "^7.0.0", "unified": "^11.0.0" } }, "sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA=="], - - "retext-smartypants": ["retext-smartypants@6.2.0", "", { "dependencies": { "@types/nlcst": "^2.0.0", "nlcst-to-string": "^4.0.0", "unist-util-visit": "^5.0.0" } }, "sha512-kk0jOU7+zGv//kfjXEBjdIryL1Acl4i9XNkHxtM7Tm5lFiCog576fjNC9hjoR7LTKQ0DsPWy09JummSsH1uqfQ=="], - - "retext-stringify": ["retext-stringify@4.0.0", "", { "dependencies": { "@types/nlcst": "^2.0.0", "nlcst-to-string": "^4.0.0", "unified": "^11.0.0" } }, "sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA=="], - - "reusify": ["reusify@1.1.0", "", {}, "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw=="], - - "robust-predicates": ["robust-predicates@3.0.2", "", {}, "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg=="], - - "rollup": ["rollup@4.53.3", "", { "dependencies": { "@types/estree": "1.0.8" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.53.3", "@rollup/rollup-android-arm64": "4.53.3", "@rollup/rollup-darwin-arm64": "4.53.3", "@rollup/rollup-darwin-x64": "4.53.3", "@rollup/rollup-freebsd-arm64": "4.53.3", "@rollup/rollup-freebsd-x64": "4.53.3", "@rollup/rollup-linux-arm-gnueabihf": "4.53.3", "@rollup/rollup-linux-arm-musleabihf": "4.53.3", "@rollup/rollup-linux-arm64-gnu": "4.53.3", "@rollup/rollup-linux-arm64-musl": "4.53.3", "@rollup/rollup-linux-loong64-gnu": "4.53.3", "@rollup/rollup-linux-ppc64-gnu": "4.53.3", "@rollup/rollup-linux-riscv64-gnu": "4.53.3", "@rollup/rollup-linux-riscv64-musl": "4.53.3", "@rollup/rollup-linux-s390x-gnu": "4.53.3", "@rollup/rollup-linux-x64-gnu": "4.53.3", "@rollup/rollup-linux-x64-musl": "4.53.3", "@rollup/rollup-openharmony-arm64": "4.53.3", "@rollup/rollup-win32-arm64-msvc": "4.53.3", "@rollup/rollup-win32-ia32-msvc": "4.53.3", "@rollup/rollup-win32-x64-gnu": "4.53.3", "@rollup/rollup-win32-x64-msvc": "4.53.3", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA=="], - - "roughjs": ["roughjs@4.6.6", "", { "dependencies": { "hachure-fill": "^0.5.2", "path-data-parser": "^0.1.0", "points-on-curve": "^0.2.0", "points-on-path": "^0.2.1" } }, "sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ=="], - - "rrweb-cssom": ["rrweb-cssom@0.7.1", "", {}, "sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg=="], - - "run-parallel": ["run-parallel@1.2.0", "", { "dependencies": { "queue-microtask": "^1.2.2" } }, "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="], - - "rw": ["rw@1.3.3", "", {}, "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ=="], - - "safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="], - - "safer-buffer": ["safer-buffer@2.1.2", "", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="], - - "saxes": ["saxes@6.0.0", "", { "dependencies": { "xmlchars": "^2.2.0" } }, "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA=="], - - "scheduler": ["scheduler@0.23.2", "", { "dependencies": { "loose-envify": "^1.1.0" } }, "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ=="], - - "scrypt-js": ["scrypt-js@3.0.1", "", {}, "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA=="], - - "search-insights": ["search-insights@2.17.3", "", {}, "sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ=="], - - "section-matter": ["section-matter@1.0.0", "", { "dependencies": { "extend-shallow": "^2.0.1", "kind-of": "^6.0.0" } }, "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA=="], - - "semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], - - "serialize-javascript": ["serialize-javascript@6.0.2", "", { "dependencies": { "randombytes": "^2.1.0" } }, "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g=="], - - "setprototypeof": ["setprototypeof@1.2.0", "", {}, "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="], - - "shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="], - - "shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="], - - "shiki": ["shiki@3.15.0", "", { "dependencies": { "@shikijs/core": "3.15.0", "@shikijs/engine-javascript": "3.15.0", "@shikijs/engine-oniguruma": "3.15.0", "@shikijs/langs": "3.15.0", "@shikijs/themes": "3.15.0", "@shikijs/types": "3.15.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-kLdkY6iV3dYbtPwS9KXU7mjfmDm25f5m0IPNFnaXO7TBPcvbUOY72PYXSuSqDzwp+vlH/d7MXpHlKO/x+QoLXw=="], - - "side-channel": ["side-channel@1.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3", "side-channel-list": "^1.0.0", "side-channel-map": "^1.0.1", "side-channel-weakmap": "^1.0.2" } }, "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw=="], - - "side-channel-list": ["side-channel-list@1.0.0", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3" } }, "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA=="], - - "side-channel-map": ["side-channel-map@1.0.1", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.5", "object-inspect": "^1.13.3" } }, "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA=="], - - "side-channel-weakmap": ["side-channel-weakmap@1.0.2", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.5", "object-inspect": "^1.13.3", "side-channel-map": "^1.0.1" } }, "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A=="], - - "signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="], - - "sisteransi": ["sisteransi@1.0.5", "", {}, "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg=="], - - "slash": ["slash@5.1.0", "", {}, "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg=="], - - "solc": ["solc@0.8.26", "", { "dependencies": { "command-exists": "^1.2.8", "commander": "^8.1.0", "follow-redirects": "^1.12.1", "js-sha3": "0.8.0", "memorystream": "^0.3.1", "semver": "^5.5.0", "tmp": "0.0.33" }, "bin": { "solcjs": "solc.js" } }, "sha512-yiPQNVf5rBFHwN6SIf3TUUvVAFKcQqmSUFeq+fb6pNRCo0ZCgpYOZDi3BVoezCPIAcKrVYd/qXlBLUP9wVrZ9g=="], - - "source-map": ["source-map@0.7.6", "", {}, "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ=="], - - "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], - - "source-map-support": ["source-map-support@0.5.21", "", { "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" } }, "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w=="], - - "space-separated-tokens": ["space-separated-tokens@2.0.2", "", {}, "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q=="], - - "speech-rule-engine": ["speech-rule-engine@4.1.2", "", { "dependencies": { "@xmldom/xmldom": "0.9.8", "commander": "13.1.0", "wicked-good-xpath": "1.3.0" }, "bin": { "sre": "bin/sre" } }, "sha512-S6ji+flMEga+1QU79NDbwZ8Ivf0S/MpupQQiIC0rTpU/ZTKgcajijJJb1OcByBQDjrXCN1/DJtGz4ZJeBMPGJw=="], - - "sprintf-js": ["sprintf-js@1.0.3", "", {}, "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="], - - "stack-generator": ["stack-generator@1.1.0", "", { "dependencies": { "stackframe": "^1.0.2" } }, "sha512-sZDVjwC56vZoo+a5t0LH/1sMQLWYLi/r+Z2ztyCAOhOX3QBP34GWxK0FWf2eU1TIU2CJKCKBAtDZycUh/ZKMlw=="], - - "stackframe": ["stackframe@0.3.1", "", {}, "sha512-XmoiF4T5nuWEp2x2w92WdGjdHGY/cZa6LIbRsDRQR/Xlk4uW0PAUlH1zJYVffocwKpCdwyuypIp25xsSXEtZHw=="], - - "stacktrace-gps": ["stacktrace-gps@2.4.4", "", { "dependencies": { "source-map": "0.5.6", "stackframe": "~0.3" } }, "sha512-msFhuMEEklQLUtaJ+GeCDjzUN+PamfHWQiK3C1LnbHjoxSeF5dAxiE+aJkptNMmMNOropGFJ7G3ZT7dPZHgDaQ=="], - - "stacktrace-js": ["stacktrace-js@1.3.1", "", { "dependencies": { "error-stack-parser": "^1.3.6", "stack-generator": "^1.0.7", "stacktrace-gps": "^2.4.3" } }, "sha512-b+5voFnXqg9TWdOE50soXL+WuOreYUm1Ukg9U7rzEWGL4+gcVxIcFasNBtOffVX0I1lYqVZj0PZXZvTt5e3YRQ=="], - - "stacktrace-parser": ["stacktrace-parser@0.1.11", "", { "dependencies": { "type-fest": "^0.7.1" } }, "sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg=="], - - "statuses": ["statuses@2.0.2", "", {}, "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw=="], - - "streamsearch": ["streamsearch@1.1.0", "", {}, "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg=="], - - "string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], - - "string-width-cjs": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], - - "string_decoder": ["string_decoder@1.3.0", "", { "dependencies": { "safe-buffer": "~5.2.0" } }, "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA=="], - - "stringify-entities": ["stringify-entities@4.0.4", "", { "dependencies": { "character-entities-html4": "^2.0.0", "character-entities-legacy": "^3.0.0" } }, "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg=="], - - "stringify-object": ["stringify-object@3.3.0", "", { "dependencies": { "get-own-enumerable-property-symbols": "^3.0.0", "is-obj": "^1.0.1", "is-regexp": "^1.0.0" } }, "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw=="], - - "strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], - - "strip-ansi-cjs": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], - - "strip-bom-string": ["strip-bom-string@1.0.0", "", {}, "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g=="], - - "strip-final-newline": ["strip-final-newline@3.0.0", "", {}, "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw=="], - - "strip-json-comments": ["strip-json-comments@3.1.1", "", {}, "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="], - - "strnum": ["strnum@2.1.1", "", {}, "sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw=="], - - "style-to-js": ["style-to-js@1.1.21", "", { "dependencies": { "style-to-object": "1.0.14" } }, "sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ=="], - - "style-to-object": ["style-to-object@1.0.14", "", { "dependencies": { "inline-style-parser": "0.2.7" } }, "sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw=="], - - "styled-jsx": ["styled-jsx@5.1.1", "", { "dependencies": { "client-only": "0.0.1" }, "peerDependencies": { "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" } }, "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw=="], - - "styled-system": ["styled-system@5.1.5", "", { "dependencies": { "@styled-system/background": "^5.1.2", "@styled-system/border": "^5.1.5", "@styled-system/color": "^5.1.2", "@styled-system/core": "^5.1.2", "@styled-system/flexbox": "^5.1.2", "@styled-system/grid": "^5.1.2", "@styled-system/layout": "^5.1.2", "@styled-system/position": "^5.1.2", "@styled-system/shadow": "^5.1.2", "@styled-system/space": "^5.1.2", "@styled-system/typography": "^5.1.2", "@styled-system/variant": "^5.1.5", "object-assign": "^4.1.1" } }, "sha512-7VoD0o2R3RKzOzPK0jYrVnS8iJdfkKsQJNiLRDjikOpQVqQHns/DXWaPZOH4tIKkhAT7I6wIsy9FWTWh2X3q+A=="], - - "stylis": ["stylis@4.2.0", "", {}, "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw=="], - - "sucrase": ["sucrase@3.35.1", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.2", "commander": "^4.0.0", "lines-and-columns": "^1.1.6", "mz": "^2.7.0", "pirates": "^4.0.1", "tinyglobby": "^0.2.11", "ts-interface-checker": "^0.1.9" }, "bin": { "sucrase": "bin/sucrase", "sucrase-node": "bin/sucrase-node" } }, "sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw=="], - - "supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="], - - "supports-preserve-symlinks-flag": ["supports-preserve-symlinks-flag@1.0.0", "", {}, "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="], - - "symbol-tree": ["symbol-tree@3.2.4", "", {}, "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw=="], - - "system-architecture": ["system-architecture@0.1.0", "", {}, "sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA=="], - - "tabbable": ["tabbable@6.3.0", "", {}, "sha512-EIHvdY5bPLuWForiR/AN2Bxngzpuwn1is4asboytXtpTgsArc+WmSJKVLlhdh71u7jFcryDqB2A8lQvj78MkyQ=="], - - "tailwindcss": ["tailwindcss@3.4.18", "", { "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", "chokidar": "^3.6.0", "didyoumean": "^1.2.2", "dlv": "^1.1.3", "fast-glob": "^3.3.2", "glob-parent": "^6.0.2", "is-glob": "^4.0.3", "jiti": "^1.21.7", "lilconfig": "^3.1.3", "micromatch": "^4.0.8", "normalize-path": "^3.0.0", "object-hash": "^3.0.0", "picocolors": "^1.1.1", "postcss": "^8.4.47", "postcss-import": "^15.1.0", "postcss-js": "^4.0.1", "postcss-load-config": "^4.0.2 || ^5.0 || ^6.0", "postcss-nested": "^6.2.0", "postcss-selector-parser": "^6.1.2", "resolve": "^1.22.8", "sucrase": "^3.35.0" }, "bin": { "tailwind": "lib/cli.js", "tailwindcss": "lib/cli.js" } }, "sha512-6A2rnmW5xZMdw11LYjhcI5846rt9pbLSabY5XPxo+XWdxwZaFEn47Go4NzFiHu9sNNmr/kXivP1vStfvMaK1GQ=="], - - "theme-ui": ["theme-ui@0.17.2", "", { "dependencies": { "@theme-ui/color-modes": "^0.17.2", "@theme-ui/components": "^0.17.2", "@theme-ui/core": "^0.17.2", "@theme-ui/css": "^0.17.2", "@theme-ui/global": "^0.17.2", "@theme-ui/theme-provider": "^0.17.2" }, "peerDependencies": { "@emotion/react": ">=11.1.1", "react": ">=18" } }, "sha512-BuyJ7lkgGzmI63YPA90WYB+X4LbJTMm+j1a/qxjdl7evhLKRZkEE4Xs3bv66g9T+fuqq2T2TMrcY0BMzpWkOtQ=="], - - "thenify": ["thenify@3.3.1", "", { "dependencies": { "any-promise": "^1.0.0" } }, "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw=="], - - "thenify-all": ["thenify-all@1.6.0", "", { "dependencies": { "thenify": ">= 3.1.0 < 4" } }, "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA=="], - - "tiny-inflate": ["tiny-inflate@1.0.3", "", {}, "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw=="], - - "tiny-invariant": ["tiny-invariant@1.3.3", "", {}, "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg=="], - - "tiny-warning": ["tiny-warning@1.0.3", "", {}, "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA=="], - - "tinyexec": ["tinyexec@0.3.2", "", {}, "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA=="], - - "tinyglobby": ["tinyglobby@0.2.15", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.3" } }, "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ=="], - - "title": ["title@4.0.1", "", { "dependencies": { "arg": "^5.0.0", "chalk": "^5.0.0", "clipboardy": "^4.0.0" }, "bin": { "title": "dist/esm/bin.js" } }, "sha512-xRnPkJx9nvE5MF6LkB5e8QJjE2FW8269wTu/LQdf7zZqBgPly0QJPf/CWAo7srj5so4yXfoLEdCFgurlpi47zg=="], - - "tmp": ["tmp@0.0.33", "", { "dependencies": { "os-tmpdir": "~1.0.2" } }, "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw=="], - - "to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="], - - "toformat": ["toformat@2.0.0", "", {}, "sha512-03SWBVop6nU8bpyZCx7SodpYznbZF5R4ljwNLBcTQzKOD9xuihRo/psX58llS1BMFhhAI08H3luot5GoXJz2pQ=="], - - "toidentifier": ["toidentifier@1.0.1", "", {}, "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="], - - "tough-cookie": ["tough-cookie@4.1.4", "", { "dependencies": { "psl": "^1.1.33", "punycode": "^2.1.1", "universalify": "^0.2.0", "url-parse": "^1.5.3" } }, "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag=="], - - "tr46": ["tr46@5.1.1", "", { "dependencies": { "punycode": "^2.3.1" } }, "sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw=="], - - "tree-kill": ["tree-kill@1.2.2", "", { "bin": { "tree-kill": "cli.js" } }, "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A=="], - - "trim-lines": ["trim-lines@3.0.1", "", {}, "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg=="], - - "trough": ["trough@2.2.0", "", {}, "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw=="], - - "ts-dedent": ["ts-dedent@2.2.0", "", {}, "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ=="], - - "ts-interface-checker": ["ts-interface-checker@0.1.13", "", {}, "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA=="], - - "ts-morph": ["ts-morph@27.0.2", "", { "dependencies": { "@ts-morph/common": "~0.28.1", "code-block-writer": "^13.0.3" } }, "sha512-fhUhgeljcrdZ+9DZND1De1029PrE+cMkIP7ooqkLRTrRLTqcki2AstsyJm0vRNbTbVCNJ0idGlbBrfqc7/nA8w=="], - - "ts-pattern": ["ts-pattern@5.9.0", "", {}, "sha512-6s5V71mX8qBUmlgbrfL33xDUwO0fq48rxAu2LBE11WBeGdpCPOsXksQbZJHvHwhrd3QjUusd3mAOM5Gg0mFBLg=="], - - "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], - - "tsort": ["tsort@0.0.1", "", {}, "sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw=="], - - "tsup": ["tsup@8.5.1", "", { "dependencies": { "bundle-require": "^5.1.0", "cac": "^6.7.14", "chokidar": "^4.0.3", "consola": "^3.4.0", "debug": "^4.4.0", "esbuild": "^0.27.0", "fix-dts-default-cjs-exports": "^1.0.0", "joycon": "^3.1.1", "picocolors": "^1.1.1", "postcss-load-config": "^6.0.1", "resolve-from": "^5.0.0", "rollup": "^4.34.8", "source-map": "^0.7.6", "sucrase": "^3.35.0", "tinyexec": "^0.3.2", "tinyglobby": "^0.2.11", "tree-kill": "^1.2.2" }, "peerDependencies": { "@microsoft/api-extractor": "^7.36.0", "@swc/core": "^1", "postcss": "^8.4.12", "typescript": ">=4.5.0" }, "optionalPeers": ["@microsoft/api-extractor", "@swc/core", "postcss", "typescript"], "bin": { "tsup": "dist/cli-default.js", "tsup-node": "dist/cli-node.js" } }, "sha512-xtgkqwdhpKWr3tKPmCkvYmS9xnQK3m3XgxZHwSUjvfTjp7YfXe5tT3GgWi0F2N+ZSMsOeWeZFh7ZZFg5iPhing=="], - - "tsx": ["tsx@4.20.4", "", { "dependencies": { "esbuild": "~0.25.0", "get-tsconfig": "^4.7.5" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "bin": { "tsx": "dist/cli.mjs" } }, "sha512-yyxBKfORQ7LuRt/BQKBXrpcq59ZvSW0XxwfjAt3w2/8PmdxaFzijtMhTawprSHhpzeM5BgU2hXHG3lklIERZXg=="], - - "twoslash": ["twoslash@0.2.12", "", { "dependencies": { "@typescript/vfs": "^1.6.0", "twoslash-protocol": "0.2.12" }, "peerDependencies": { "typescript": "*" } }, "sha512-tEHPASMqi7kqwfJbkk7hc/4EhlrKCSLcur+TcvYki3vhIfaRMXnXjaYFgXpoZRbT6GdprD4tGuVBEmTpUgLBsw=="], - - "twoslash-protocol": ["twoslash-protocol@0.2.12", "", {}, "sha512-5qZLXVYfZ9ABdjqbvPc4RWMr7PrpPaaDSeaYY55vl/w1j6H6kzsWK/urAEIXlzYlyrFmyz1UbwIt+AA0ck+wbg=="], - - "type-fest": ["type-fest@0.20.2", "", {}, "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ=="], - - "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], - - "typescript-logging": ["typescript-logging@1.0.1", "", { "dependencies": { "stacktrace-js": "1.3.1" } }, "sha512-zp28ABme0m5q/nXabBaY9Hv/35N8lMH4FsvhpUO0zVi4vFs3uKlb5br2it61HAZF5k+U0aP6E67j0VD0IzXGpQ=="], - - "typy": ["typy@3.3.0", "", {}, "sha512-Du53deMF9X9pSM3gVXDjLBq14BUfZWSGKfmmR1kTlg953RaIZehfc8fQuoAiW+SRO6bJsP+59mv1tsH8vwKghg=="], - - "ua-parser-js": ["ua-parser-js@1.0.41", "", { "bin": { "ua-parser-js": "script/cli.js" } }, "sha512-LbBDqdIC5s8iROCUjMbW1f5dJQTEFB1+KO9ogbvlb3nm9n4YHa5p4KTvFPWvh2Hs8gZMBuiB1/8+pdfe/tDPug=="], - - "ufo": ["ufo@1.6.1", "", {}, "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA=="], - - "undici": ["undici@5.29.0", "", { "dependencies": { "@fastify/busboy": "^2.0.0" } }, "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg=="], - - "undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="], - - "unicode-trie": ["unicode-trie@2.0.0", "", { "dependencies": { "pako": "^0.2.5", "tiny-inflate": "^1.0.0" } }, "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ=="], - - "unified": ["unified@11.0.5", "", { "dependencies": { "@types/unist": "^3.0.0", "bail": "^2.0.0", "devlop": "^1.0.0", "extend": "^3.0.0", "is-plain-obj": "^4.0.0", "trough": "^2.0.0", "vfile": "^6.0.0" } }, "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA=="], - - "unist-util-find-after": ["unist-util-find-after@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0" } }, "sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ=="], - - "unist-util-is": ["unist-util-is@6.0.1", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g=="], - - "unist-util-modify-children": ["unist-util-modify-children@4.0.0", "", { "dependencies": { "@types/unist": "^3.0.0", "array-iterate": "^2.0.0" } }, "sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw=="], - - "unist-util-position": ["unist-util-position@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA=="], - - "unist-util-position-from-estree": ["unist-util-position-from-estree@2.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ=="], - - "unist-util-remove": ["unist-util-remove@4.0.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-b4gokeGId57UVRX/eVKej5gXqGlc9+trkORhFJpu9raqZkZhU0zm8Doi05+HaiBsMEIJowL+2WtQ5ItjsngPXg=="], - - "unist-util-remove-position": ["unist-util-remove-position@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-visit": "^5.0.0" } }, "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q=="], - - "unist-util-stringify-position": ["unist-util-stringify-position@4.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ=="], - - "unist-util-visit": ["unist-util-visit@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg=="], - - "unist-util-visit-children": ["unist-util-visit-children@3.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA=="], - - "unist-util-visit-parents": ["unist-util-visit-parents@6.0.2", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0" } }, "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ=="], - - "universal-cookie": ["universal-cookie@7.2.2", "", { "dependencies": { "@types/cookie": "^0.6.0", "cookie": "^0.7.2" } }, "sha512-fMiOcS3TmzP2x5QV26pIH3mvhexLIT0HmPa3V7Q7knRfT9HG6kTwq02HZGLPw0sAOXrAmotElGRvTLCMbJsvxQ=="], - - "universalify": ["universalify@0.2.0", "", {}, "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg=="], - - "unpipe": ["unpipe@1.0.0", "", {}, "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ=="], - - "update-browserslist-db": ["update-browserslist-db@1.1.4", "", { "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" }, "peerDependencies": { "browserslist": ">= 4.21.0" }, "bin": { "update-browserslist-db": "cli.js" } }, "sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A=="], - - "url-parse": ["url-parse@1.5.10", "", { "dependencies": { "querystringify": "^2.1.1", "requires-port": "^1.0.0" } }, "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ=="], - - "use-callback-ref": ["use-callback-ref@1.3.3", "", { "dependencies": { "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg=="], - - "use-isomorphic-layout-effect": ["use-isomorphic-layout-effect@1.2.1", "", { "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-tpZZ+EX0gaghDAiFR37hj5MgY6ZN55kLiPkJsKxBMZ6GZdOSPJXiOzPM984oPYZ5AnehYx5WQp1+ME8I/P/pRA=="], - - "use-sidecar": ["use-sidecar@1.1.3", "", { "dependencies": { "detect-node-es": "^1.1.0", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ=="], - - "use-sync-external-store": ["use-sync-external-store@1.6.0", "", { "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w=="], - - "util-deprecate": ["util-deprecate@1.0.2", "", {}, "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="], - - "uuid": ["uuid@11.1.0", "", { "bin": { "uuid": "dist/esm/bin/uuid" } }, "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A=="], - - "vfile": ["vfile@6.0.3", "", { "dependencies": { "@types/unist": "^3.0.0", "vfile-message": "^4.0.0" } }, "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q=="], - - "vfile-location": ["vfile-location@5.0.3", "", { "dependencies": { "@types/unist": "^3.0.0", "vfile": "^6.0.0" } }, "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg=="], - - "vfile-message": ["vfile-message@4.0.3", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-stringify-position": "^4.0.0" } }, "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw=="], - - "victory-vendor": ["victory-vendor@36.9.2", "", { "dependencies": { "@types/d3-array": "^3.0.3", "@types/d3-ease": "^3.0.0", "@types/d3-interpolate": "^3.0.1", "@types/d3-scale": "^4.0.2", "@types/d3-shape": "^3.1.0", "@types/d3-time": "^3.0.0", "@types/d3-timer": "^3.0.0", "d3-array": "^3.1.6", "d3-ease": "^3.0.1", "d3-interpolate": "^3.0.1", "d3-scale": "^4.0.2", "d3-shape": "^3.1.0", "d3-time": "^3.0.0", "d3-timer": "^3.0.1" } }, "sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ=="], - - "viem": ["viem@2.40.3", "", { "dependencies": { "@noble/curves": "1.9.1", "@noble/hashes": "1.8.0", "@scure/bip32": "1.7.0", "@scure/bip39": "1.6.0", "abitype": "1.1.0", "isows": "1.0.7", "ox": "0.9.6", "ws": "8.18.3" }, "peerDependencies": { "typescript": ">=5.0.4" }, "optionalPeers": ["typescript"] }, "sha512-feYfEpbgjRkZYQpwcgxqkWzjxHI5LSDAjcGetHHwDRuX9BRQHUdV8ohrCosCYpdEhus/RknD3/bOd4qLYVPPuA=="], - - "vscode-jsonrpc": ["vscode-jsonrpc@8.2.0", "", {}, "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA=="], - - "vscode-languageserver": ["vscode-languageserver@9.0.1", "", { "dependencies": { "vscode-languageserver-protocol": "3.17.5" }, "bin": { "installServerIntoExtension": "bin/installServerIntoExtension" } }, "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g=="], - - "vscode-languageserver-protocol": ["vscode-languageserver-protocol@3.17.5", "", { "dependencies": { "vscode-jsonrpc": "8.2.0", "vscode-languageserver-types": "3.17.5" } }, "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg=="], - - "vscode-languageserver-textdocument": ["vscode-languageserver-textdocument@1.0.12", "", {}, "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA=="], - - "vscode-languageserver-types": ["vscode-languageserver-types@3.17.5", "", {}, "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg=="], - - "vscode-uri": ["vscode-uri@3.0.8", "", {}, "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw=="], - - "w3c-xmlserializer": ["w3c-xmlserializer@5.0.0", "", { "dependencies": { "xml-name-validator": "^5.0.0" } }, "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA=="], - - "wcwidth": ["wcwidth@1.0.1", "", { "dependencies": { "defaults": "^1.0.3" } }, "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg=="], - - "web-namespaces": ["web-namespaces@2.0.1", "", {}, "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ=="], - - "webidl-conversions": ["webidl-conversions@7.0.0", "", {}, "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g=="], - - "whatwg-encoding": ["whatwg-encoding@3.1.1", "", { "dependencies": { "iconv-lite": "0.6.3" } }, "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ=="], - - "whatwg-mimetype": ["whatwg-mimetype@4.0.0", "", {}, "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg=="], - - "whatwg-url": ["whatwg-url@14.2.0", "", { "dependencies": { "tr46": "^5.1.0", "webidl-conversions": "^7.0.0" } }, "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw=="], - - "which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], - - "wicked-good-xpath": ["wicked-good-xpath@1.3.0", "", {}, "sha512-Gd9+TUn5nXdwj/hFsPVx5cuHHiF5Bwuc30jZ4+ronF1qHK5O7HD0sgmXWSEgwKquT3ClLoKPVbO6qGwVwLzvAw=="], - - "widest-line": ["widest-line@3.1.0", "", { "dependencies": { "string-width": "^4.0.0" } }, "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg=="], - - "workerpool": ["workerpool@6.5.1", "", {}, "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA=="], - - "wrap-ansi": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="], - - "wrap-ansi-cjs": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="], - - "wrappy": ["wrappy@1.0.2", "", {}, "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="], - - "ws": ["ws@8.18.0", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw=="], - - "xml-name-validator": ["xml-name-validator@5.0.0", "", {}, "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg=="], - - "xmlchars": ["xmlchars@2.2.0", "", {}, "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw=="], - - "xstate": ["xstate@4.38.3", "", {}, "sha512-SH7nAaaPQx57dx6qvfcIgqKRXIh4L0A1iYEqim4s1u7c9VoCgzZc+63FY90AKU4ZzOC2cfJzTnpO4zK7fCUzzw=="], - - "y18n": ["y18n@5.0.8", "", {}, "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="], - - "yaml": ["yaml@2.8.1", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw=="], - - "yargs": ["yargs@16.2.0", "", { "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.0", "y18n": "^5.0.5", "yargs-parser": "^20.2.2" } }, "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw=="], - - "yargs-parser": ["yargs-parser@20.2.9", "", {}, "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w=="], - - "yargs-unparser": ["yargs-unparser@2.0.0", "", { "dependencies": { "camelcase": "^6.0.0", "decamelize": "^4.0.0", "flat": "^5.0.2", "is-plain-obj": "^2.1.0" } }, "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA=="], - - "yocto-queue": ["yocto-queue@1.2.2", "", {}, "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ=="], - - "zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="], - - "zod-validation-error": ["zod-validation-error@3.5.4", "", { "peerDependencies": { "zod": "^3.24.4" } }, "sha512-+hEiRIiPobgyuFlEojnqjJnhFvg4r/i3cqgcm67eehZf/WBaK3g6cD02YU9mtdVxZjv8CzCA9n/Rhrs3yAAvAw=="], - - "zwitch": ["zwitch@2.0.4", "", {}, "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A=="], - - "@antfu/install-pkg/tinyexec": ["tinyexec@1.0.2", "", {}, "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg=="], - - "@asamuzakjp/css-color/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="], - - "@edgeandnode/common/@pinax/graph-networks-registry": ["@pinax/graph-networks-registry@0.6.7", "", {}, "sha512-xogeCEZ50XRMxpBwE3TZjJ8RCO8Guv39gDRrrKtlpDEDEMLm0MzD3A0SQObgj7aF7qTZNRTWzsuvQdxgzw25wQ=="], - - "@edgeandnode/ens/zod": ["zod@4.1.13", "", {}, "sha512-AvvthqfqrAhNH9dnfmrfKzX5upOdjUVJYFqNSlkmGf64gRaTzlPwz99IHYnVs28qYAybvAlBV+H7pn0saFY4Ig=="], - - "@emotion/babel-plugin/escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="], - - "@emotion/babel-plugin/source-map": ["source-map@0.5.7", "", {}, "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ=="], - - "@emotion/is-prop-valid/@emotion/memoize": ["@emotion/memoize@0.7.4", "", {}, "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw=="], - - "@ensdomains/address-encoder/@noble/curves": ["@noble/curves@1.8.2", "", { "dependencies": { "@noble/hashes": "1.7.2" } }, "sha512-vnI7V6lFNe0tLAuJMu+2sX+FcL14TaCWy1qiczg1VwRmPrpQCdq5ESXQMqUc2tluRNf6irBXrWbl1mGN8uaU/g=="], - - "@ensdomains/address-encoder/@noble/hashes": ["@noble/hashes@1.7.2", "", {}, "sha512-biZ0NUSxyjLLqo6KxEJ1b+C2NAx0wtDoFvCaXHGgUkeHzf3Xc1xKumFKREuT7f7DARNZ/slvYUwFG6B0f2b6hQ=="], - - "@ensdomains/content-hash/@ensdomains/address-encoder": ["@ensdomains/address-encoder@1.0.0-rc.3", "", { "dependencies": { "@noble/curves": "^1.2.0", "@noble/hashes": "^1.3.2", "@scure/base": "^1.1.5" } }, "sha512-8o6zH69rObIqDY4PusEWuN9jvVOct+9jj9AOPO7ifc3ev8nmsly0e8TE1sHkhk0iKFbd3DlSsUnJ+yuRWmdLCQ=="], - - "@ensdomains/content-hash/@noble/curves": ["@noble/curves@1.8.2", "", { "dependencies": { "@noble/hashes": "1.7.2" } }, "sha512-vnI7V6lFNe0tLAuJMu+2sX+FcL14TaCWy1qiczg1VwRmPrpQCdq5ESXQMqUc2tluRNf6irBXrWbl1mGN8uaU/g=="], - - "@ensdomains/dnsprovejs/@noble/hashes": ["@noble/hashes@1.7.2", "", {}, "sha512-biZ0NUSxyjLLqo6KxEJ1b+C2NAx0wtDoFvCaXHGgUkeHzf3Xc1xKumFKREuT7f7DARNZ/slvYUwFG6B0f2b6hQ=="], - - "@ensdomains/ensjs/abitype": ["abitype@1.2.0", "", { "peerDependencies": { "typescript": ">=5.0.4", "zod": "^3.22.0 || ^4.0.0" }, "optionalPeers": ["typescript", "zod"] }, "sha512-fD3ROjckUrWsybaSor2AdWxzA0e/DSyV2dA4aYd7bd8orHsoJjl09fOgKfUkTDfk0BsDGBf4NBgu/c7JoS2Npw=="], - - "@ensdomains/ensjs/graphql-request": ["graphql-request@7.1.2", "", { "dependencies": { "@graphql-typed-document-node/core": "^3.2.0" }, "peerDependencies": { "graphql": "14 - 16" } }, "sha512-+XE3iuC55C2di5ZUrB4pjgwe+nIQBuXVIK9J98wrVwojzDW3GMdSBZfxUk8l4j9TieIpjpggclxhNEU9ebGF8w=="], - - "@ethereumjs/util/ethereum-cryptography": ["ethereum-cryptography@2.2.1", "", { "dependencies": { "@noble/curves": "1.4.2", "@noble/hashes": "1.4.0", "@scure/bip32": "1.4.0", "@scure/bip39": "1.3.0" } }, "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg=="], - - "@ethersproject/abi/@ethersproject/keccak256": ["@ethersproject/keccak256@5.8.0", "", { "dependencies": { "@ethersproject/bytes": "^5.8.0", "js-sha3": "0.8.0" } }, "sha512-A1pkKLZSz8pDaQ1ftutZoaN46I6+jvuqugx5KYNeQOPqq+JZ0Txm7dlWesCHB5cndJSu5vP2VKptKf7cksERng=="], - - "@ethersproject/address/@ethersproject/keccak256": ["@ethersproject/keccak256@5.8.0", "", { "dependencies": { "@ethersproject/bytes": "^5.8.0", "js-sha3": "0.8.0" } }, "sha512-A1pkKLZSz8pDaQ1ftutZoaN46I6+jvuqugx5KYNeQOPqq+JZ0Txm7dlWesCHB5cndJSu5vP2VKptKf7cksERng=="], - - "@ethersproject/hash/@ethersproject/keccak256": ["@ethersproject/keccak256@5.8.0", "", { "dependencies": { "@ethersproject/bytes": "^5.8.0", "js-sha3": "0.8.0" } }, "sha512-A1pkKLZSz8pDaQ1ftutZoaN46I6+jvuqugx5KYNeQOPqq+JZ0Txm7dlWesCHB5cndJSu5vP2VKptKf7cksERng=="], - - "@ethersproject/json-wallets/@ethersproject/keccak256": ["@ethersproject/keccak256@5.8.0", "", { "dependencies": { "@ethersproject/bytes": "^5.8.0", "js-sha3": "0.8.0" } }, "sha512-A1pkKLZSz8pDaQ1ftutZoaN46I6+jvuqugx5KYNeQOPqq+JZ0Txm7dlWesCHB5cndJSu5vP2VKptKf7cksERng=="], - - "@ethersproject/solidity/@ethersproject/keccak256": ["@ethersproject/keccak256@5.8.0", "", { "dependencies": { "@ethersproject/bytes": "^5.8.0", "js-sha3": "0.8.0" } }, "sha512-A1pkKLZSz8pDaQ1ftutZoaN46I6+jvuqugx5KYNeQOPqq+JZ0Txm7dlWesCHB5cndJSu5vP2VKptKf7cksERng=="], - - "@ethersproject/transactions/@ethersproject/keccak256": ["@ethersproject/keccak256@5.8.0", "", { "dependencies": { "@ethersproject/bytes": "^5.8.0", "js-sha3": "0.8.0" } }, "sha512-A1pkKLZSz8pDaQ1ftutZoaN46I6+jvuqugx5KYNeQOPqq+JZ0Txm7dlWesCHB5cndJSu5vP2VKptKf7cksERng=="], - - "@ethersproject/wallet/@ethersproject/keccak256": ["@ethersproject/keccak256@5.8.0", "", { "dependencies": { "@ethersproject/bytes": "^5.8.0", "js-sha3": "0.8.0" } }, "sha512-A1pkKLZSz8pDaQ1ftutZoaN46I6+jvuqugx5KYNeQOPqq+JZ0Txm7dlWesCHB5cndJSu5vP2VKptKf7cksERng=="], - - "@figma/code-connect/commander": ["commander@11.1.0", "", {}, "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ=="], - - "@figma/code-connect/zod": ["zod@3.25.58", "", {}, "sha512-DVLmMQzSZwNYzQoMaM3MQWnxr2eq+AtM9Hx3w1/Yl0pH8sLTSjN4jGP7w6f7uand6Hw44tsnSu1hz1AOA6qI2Q=="], - - "@formatjs/ecma402-abstract/@formatjs/intl-localematcher": ["@formatjs/intl-localematcher@0.6.2", "", { "dependencies": { "tslib": "^2.8.0" } }, "sha512-XOMO2Hupl0wdd172Y06h6kLpBz6Dv+J4okPLl4LPtzbr8f66WbIoy4ev98EBuZ6ZK4h5ydTN6XneT4QVpD7cdA=="], - - "@headlessui/react/@floating-ui/react": ["@floating-ui/react@0.26.28", "", { "dependencies": { "@floating-ui/react-dom": "^2.1.2", "@floating-ui/utils": "^0.2.8", "tabbable": "^6.0.0" }, "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "sha512-yORQuuAtVpiRjpMhdc0wJj06b9JFjrYF4qp96j++v2NBpbi6SEGF7donUJ3TMieerQ6qVkAv1tgr7L4r5roTqw=="], - - "@isaacs/cliui/string-width": ["string-width@5.1.2", "", { "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", "strip-ansi": "^7.0.1" } }, "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA=="], - - "@isaacs/cliui/strip-ansi": ["strip-ansi@7.1.2", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA=="], - - "@isaacs/cliui/wrap-ansi": ["wrap-ansi@8.1.0", "", { "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", "strip-ansi": "^7.0.1" } }, "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ=="], - - "@radix-ui/react-alert-dialog/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], - - "@radix-ui/react-collection/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], - - "@radix-ui/react-dialog/@radix-ui/react-portal": ["@radix-ui/react-portal@1.1.9", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ=="], - - "@radix-ui/react-dialog/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], - - "@radix-ui/react-label/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.4", "", { "dependencies": { "@radix-ui/react-slot": "1.2.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg=="], - - "@radix-ui/react-menu/@radix-ui/react-portal": ["@radix-ui/react-portal@1.1.9", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ=="], - - "@radix-ui/react-menu/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], - - "@radix-ui/react-popover/@radix-ui/react-portal": ["@radix-ui/react-portal@1.1.9", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ=="], - - "@radix-ui/react-popover/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], - - "@radix-ui/react-portal/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.4", "", { "dependencies": { "@radix-ui/react-slot": "1.2.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg=="], - - "@radix-ui/react-primitive/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], - - "@radix-ui/react-toast/@radix-ui/react-portal": ["@radix-ui/react-portal@1.1.9", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ=="], - - "@radix-ui/react-tooltip/@radix-ui/react-portal": ["@radix-ui/react-portal@1.1.9", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ=="], - - "@radix-ui/react-tooltip/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], - - "@sentry/core/tslib": ["tslib@1.14.1", "", {}, "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="], - - "@sentry/hub/tslib": ["tslib@1.14.1", "", {}, "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="], - - "@sentry/minimal/tslib": ["tslib@1.14.1", "", {}, "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="], - - "@sentry/node/cookie": ["cookie@0.4.2", "", {}, "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA=="], - - "@sentry/node/https-proxy-agent": ["https-proxy-agent@5.0.1", "", { "dependencies": { "agent-base": "6", "debug": "4" } }, "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA=="], - - "@sentry/node/tslib": ["tslib@1.14.1", "", {}, "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="], - - "@sentry/tracing/tslib": ["tslib@1.14.1", "", {}, "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="], - - "@sentry/utils/tslib": ["tslib@1.14.1", "", {}, "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="], - - "@shikijs/twoslash/@shikijs/core": ["@shikijs/core@1.29.2", "", { "dependencies": { "@shikijs/engine-javascript": "1.29.2", "@shikijs/engine-oniguruma": "1.29.2", "@shikijs/types": "1.29.2", "@shikijs/vscode-textmate": "^10.0.1", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.4" } }, "sha512-vju0lY9r27jJfOY4Z7+Rt/nIOjzJpZ3y+nYpqtUZInVoXQ/TJZcfGnNOGnKjFdVZb8qexiCuSlZRKcGfhhTTZQ=="], - - "@shikijs/twoslash/@shikijs/types": ["@shikijs/types@1.29.2", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.1", "@types/hast": "^3.0.4" } }, "sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw=="], - - "@styled-system/should-forward-prop/@emotion/memoize": ["@emotion/memoize@0.7.5", "", {}, "sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ=="], - - "@ts-morph/common/minimatch": ["minimatch@10.1.1", "", { "dependencies": { "@isaacs/brace-expansion": "^5.0.0" } }, "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ=="], - - "@uniswap/sdk-core/@ethersproject/strings": ["@ethersproject/strings@5.7.0", "", { "dependencies": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/constants": "^5.7.0", "@ethersproject/logger": "^5.7.0" } }, "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg=="], - - "@uniswap/swap-router-contracts/dotenv": ["dotenv@14.3.2", "", {}, "sha512-vwEppIphpFdvaMCaHfCEv9IgwcxMljMw2TnAQBB4VWPvzXQLTb82jwmdOKzlEVUL3gNFT4l4TPKO+Bn+sqcrVQ=="], - - "@uniswap/v3-staker/@openzeppelin/contracts": ["@openzeppelin/contracts@3.4.1-solc-0.7-2", "", {}, "sha512-tAG9LWg8+M2CMu7hIsqHPaTyG4uDzjr6mhvH96LvOpLZZj6tgzTluBt+LsCf1/QaYrlis6pITvpIaIhE+iZB+Q=="], - - "@uniswap/v3-staker/@uniswap/v3-core": ["@uniswap/v3-core@1.0.0", "", {}, "sha512-kSC4djMGKMHj7sLMYVnn61k9nu+lHjMIxgg9CDQT+s2QYLoA56GbSK9Oxr+qJXzzygbkrmuY6cwgP6cW2JXPFA=="], - - "ansi-escapes/type-fest": ["type-fest@0.21.3", "", {}, "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w=="], - - "ansi-styles/color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="], - - "chokidar/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], - - "cosmiconfig/yaml": ["yaml@1.10.2", "", {}, "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg=="], - - "cssstyle/rrweb-cssom": ["rrweb-cssom@0.8.0", "", {}, "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw=="], - - "cytoscape-fcose/cose-base": ["cose-base@2.2.0", "", { "dependencies": { "layout-base": "^2.0.0" } }, "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g=="], - - "d3-dsv/commander": ["commander@7.2.0", "", {}, "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw=="], - - "d3-sankey/d3-array": ["d3-array@2.12.1", "", { "dependencies": { "internmap": "^1.0.0" } }, "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ=="], - - "d3-sankey/d3-shape": ["d3-shape@1.3.7", "", { "dependencies": { "d3-path": "1" } }, "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw=="], - - "elliptic/bn.js": ["bn.js@4.12.2", "", {}, "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw=="], - - "ethereum-cryptography/@noble/hashes": ["@noble/hashes@1.2.0", "", {}, "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ=="], - - "ethereum-cryptography/@scure/bip32": ["@scure/bip32@1.1.5", "", { "dependencies": { "@noble/hashes": "~1.2.0", "@noble/secp256k1": "~1.7.0", "@scure/base": "~1.1.0" } }, "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw=="], - - "ethereum-cryptography/@scure/bip39": ["@scure/bip39@1.1.1", "", { "dependencies": { "@noble/hashes": "~1.2.0", "@scure/base": "~1.1.0" } }, "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg=="], - - "ethers/@ethersproject/keccak256": ["@ethersproject/keccak256@5.8.0", "", { "dependencies": { "@ethersproject/bytes": "^5.8.0", "js-sha3": "0.8.0" } }, "sha512-A1pkKLZSz8pDaQ1ftutZoaN46I6+jvuqugx5KYNeQOPqq+JZ0Txm7dlWesCHB5cndJSu5vP2VKptKf7cksERng=="], - - "fast-glob/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], - - "fs-extra/universalify": ["universalify@0.1.2", "", {}, "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="], - - "glob/minimatch": ["minimatch@10.1.1", "", { "dependencies": { "@isaacs/brace-expansion": "^5.0.0" } }, "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ=="], - - "gray-matter/js-yaml": ["js-yaml@3.14.2", "", { "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg=="], - - "hardhat/boxen": ["boxen@5.1.2", "", { "dependencies": { "ansi-align": "^3.0.0", "camelcase": "^6.2.0", "chalk": "^4.1.0", "cli-boxes": "^2.2.1", "string-width": "^4.2.2", "type-fest": "^0.20.2", "widest-line": "^3.1.0", "wrap-ansi": "^7.0.0" } }, "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ=="], - - "hardhat/chokidar": ["chokidar@4.0.3", "", { "dependencies": { "readdirp": "^4.0.1" } }, "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA=="], - - "hardhat/resolve": ["resolve@1.17.0", "", { "dependencies": { "path-parse": "^1.0.6" } }, "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w=="], - - "hardhat/uuid": ["uuid@8.3.2", "", { "bin": { "uuid": "dist/bin/uuid" } }, "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg=="], - - "hardhat/ws": ["ws@7.5.10", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": "^5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ=="], - - "hast-util-to-parse5/property-information": ["property-information@6.5.0", "", {}, "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig=="], - - "hoist-non-react-statics/react-is": ["react-is@16.13.1", "", {}, "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="], - - "import-fresh/resolve-from": ["resolve-from@4.0.0", "", {}, "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="], - - "katex/commander": ["commander@8.3.0", "", {}, "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww=="], - - "local-pkg/pkg-types": ["pkg-types@2.3.0", "", { "dependencies": { "confbox": "^0.2.2", "exsolve": "^1.0.7", "pathe": "^2.0.3" } }, "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig=="], - - "mermaid/stylis": ["stylis@4.3.6", "", {}, "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ=="], - - "micro-eth-signer/@noble/curves": ["@noble/curves@1.8.2", "", { "dependencies": { "@noble/hashes": "1.7.2" } }, "sha512-vnI7V6lFNe0tLAuJMu+2sX+FcL14TaCWy1qiczg1VwRmPrpQCdq5ESXQMqUc2tluRNf6irBXrWbl1mGN8uaU/g=="], - - "micro-eth-signer/@noble/hashes": ["@noble/hashes@1.7.2", "", {}, "sha512-biZ0NUSxyjLLqo6KxEJ1b+C2NAx0wtDoFvCaXHGgUkeHzf3Xc1xKumFKREuT7f7DARNZ/slvYUwFG6B0f2b6hQ=="], - - "mocha/escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="], - - "mocha/glob": ["glob@8.1.0", "", { "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^5.0.1", "once": "^1.3.0" } }, "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ=="], - - "mocha/minimatch": ["minimatch@5.1.6", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g=="], - - "mocha/supports-color": ["supports-color@8.1.1", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q=="], - - "next/postcss": ["postcss@8.4.31", "", { "dependencies": { "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" } }, "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ=="], - - "next-sitemap/@next/env": ["@next/env@13.5.11", "", {}, "sha512-fbb2C7HChgM7CemdCY+y3N1n8pcTKdqtQLbC7/EQtPdLvlMUT9JX/dBYl8MMZAtYG4uVMyPFHXckb68q/NRwqg=="], - - "nextra/shiki": ["shiki@1.29.2", "", { "dependencies": { "@shikijs/core": "1.29.2", "@shikijs/engine-javascript": "1.29.2", "@shikijs/engine-oniguruma": "1.29.2", "@shikijs/langs": "1.29.2", "@shikijs/themes": "1.29.2", "@shikijs/types": "1.29.2", "@shikijs/vscode-textmate": "^10.0.1", "@types/hast": "^3.0.4" } }, "sha512-njXuliz/cP+67jU2hukkxCNuH1yUi4QfdZZY+sMr5PPrIyXSu5iTb/qYC4BiWWB0vZ+7TbdvYUCeL23zpwCfbg=="], - - "npm-run-path/path-key": ["path-key@4.0.0", "", {}, "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ=="], - - "ox/@adraffy/ens-normalize": ["@adraffy/ens-normalize@1.11.1", "", {}, "sha512-nhCBV3quEgesuf7c7KYfperqSS14T8bYuvJ8PcLJp6znkZpFc0AuW4qBtr8eKVyPPe/8RSr7sglCWPU5eaxwKQ=="], - - "ox/abitype": ["abitype@1.2.0", "", { "peerDependencies": { "typescript": ">=5.0.4", "zod": "^3.22.0 || ^4.0.0" }, "optionalPeers": ["typescript", "zod"] }, "sha512-fD3ROjckUrWsybaSor2AdWxzA0e/DSyV2dA4aYd7bd8orHsoJjl09fOgKfUkTDfk0BsDGBf4NBgu/c7JoS2Npw=="], - - "ox/eventemitter3": ["eventemitter3@5.0.1", "", {}, "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA=="], - - "p-locate/p-limit": ["p-limit@3.1.0", "", { "dependencies": { "yocto-queue": "^0.1.0" } }, "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="], - - "parse-entities/@types/unist": ["@types/unist@2.0.11", "", {}, "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="], - - "prop-types/react-is": ["react-is@16.13.1", "", {}, "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="], - - "raw-body/iconv-lite": ["iconv-lite@0.4.24", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3" } }, "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA=="], - - "rehype-pretty-code/shiki": ["shiki@1.29.2", "", { "dependencies": { "@shikijs/core": "1.29.2", "@shikijs/engine-javascript": "1.29.2", "@shikijs/engine-oniguruma": "1.29.2", "@shikijs/langs": "1.29.2", "@shikijs/themes": "1.29.2", "@shikijs/types": "1.29.2", "@shikijs/vscode-textmate": "^10.0.1", "@types/hast": "^3.0.4" } }, "sha512-njXuliz/cP+67jU2hukkxCNuH1yUi4QfdZZY+sMr5PPrIyXSu5iTb/qYC4BiWWB0vZ+7TbdvYUCeL23zpwCfbg=="], - - "remark-reading-time/estree-util-is-identifier-name": ["estree-util-is-identifier-name@2.1.0", "", {}, "sha512-bEN9VHRyXAUOjkKVQVvArFym08BTWB0aJPppZZr0UNyAqWsLaVfAqP7hbaTJjzHifmB5ebnR8Wm7r7yGN/HonQ=="], - - "remark-reading-time/unist-util-visit": ["unist-util-visit@3.1.0", "", { "dependencies": { "@types/unist": "^2.0.0", "unist-util-is": "^5.0.0", "unist-util-visit-parents": "^4.0.0" } }, "sha512-Szoh+R/Ll68QWAyQyZZpQzZQm2UPbxibDvaY8Xc9SUtYgPsDzx5AWSk++UUt2hJuow8mvwR+rG+LQLw+KsuAKA=="], - - "restore-cursor/onetime": ["onetime@5.1.2", "", { "dependencies": { "mimic-fn": "^2.1.0" } }, "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg=="], - - "restore-cursor/signal-exit": ["signal-exit@3.0.7", "", {}, "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="], - - "solc/commander": ["commander@8.3.0", "", {}, "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww=="], - - "solc/semver": ["semver@5.7.2", "", { "bin": { "semver": "bin/semver" } }, "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g=="], - - "source-map-support/source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], - - "speech-rule-engine/commander": ["commander@13.1.0", "", {}, "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw=="], - - "stack-generator/stackframe": ["stackframe@1.3.4", "", {}, "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw=="], - - "stacktrace-gps/source-map": ["source-map@0.5.6", "", {}, "sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA=="], - - "stacktrace-parser/type-fest": ["type-fest@0.7.1", "", {}, "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg=="], - - "tinyglobby/picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="], - - "title/chalk": ["chalk@5.6.2", "", {}, "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA=="], - - "tsup/chokidar": ["chokidar@4.0.3", "", { "dependencies": { "readdirp": "^4.0.1" } }, "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA=="], - - "tsx/esbuild": ["esbuild@0.25.12", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.12", "@esbuild/android-arm": "0.25.12", "@esbuild/android-arm64": "0.25.12", "@esbuild/android-x64": "0.25.12", "@esbuild/darwin-arm64": "0.25.12", "@esbuild/darwin-x64": "0.25.12", "@esbuild/freebsd-arm64": "0.25.12", "@esbuild/freebsd-x64": "0.25.12", "@esbuild/linux-arm": "0.25.12", "@esbuild/linux-arm64": "0.25.12", "@esbuild/linux-ia32": "0.25.12", "@esbuild/linux-loong64": "0.25.12", "@esbuild/linux-mips64el": "0.25.12", "@esbuild/linux-ppc64": "0.25.12", "@esbuild/linux-riscv64": "0.25.12", "@esbuild/linux-s390x": "0.25.12", "@esbuild/linux-x64": "0.25.12", "@esbuild/netbsd-arm64": "0.25.12", "@esbuild/netbsd-x64": "0.25.12", "@esbuild/openbsd-arm64": "0.25.12", "@esbuild/openbsd-x64": "0.25.12", "@esbuild/openharmony-arm64": "0.25.12", "@esbuild/sunos-x64": "0.25.12", "@esbuild/win32-arm64": "0.25.12", "@esbuild/win32-ia32": "0.25.12", "@esbuild/win32-x64": "0.25.12" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg=="], - - "unicode-trie/pako": ["pako@0.2.9", "", {}, "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA=="], - - "viem/ws": ["ws@8.18.3", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg=="], - - "yargs-unparser/is-plain-obj": ["is-plain-obj@2.1.0", "", {}, "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA=="], - - "@ensdomains/content-hash/@ensdomains/address-encoder/@noble/hashes": ["@noble/hashes@1.7.2", "", {}, "sha512-biZ0NUSxyjLLqo6KxEJ1b+C2NAx0wtDoFvCaXHGgUkeHzf3Xc1xKumFKREuT7f7DARNZ/slvYUwFG6B0f2b6hQ=="], - - "@ensdomains/content-hash/@noble/curves/@noble/hashes": ["@noble/hashes@1.7.2", "", {}, "sha512-biZ0NUSxyjLLqo6KxEJ1b+C2NAx0wtDoFvCaXHGgUkeHzf3Xc1xKumFKREuT7f7DARNZ/slvYUwFG6B0f2b6hQ=="], - - "@ethereumjs/util/ethereum-cryptography/@noble/curves": ["@noble/curves@1.4.2", "", { "dependencies": { "@noble/hashes": "1.4.0" } }, "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw=="], - - "@ethereumjs/util/ethereum-cryptography/@noble/hashes": ["@noble/hashes@1.4.0", "", {}, "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg=="], - - "@ethereumjs/util/ethereum-cryptography/@scure/bip32": ["@scure/bip32@1.4.0", "", { "dependencies": { "@noble/curves": "~1.4.0", "@noble/hashes": "~1.4.0", "@scure/base": "~1.1.6" } }, "sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg=="], - - "@ethereumjs/util/ethereum-cryptography/@scure/bip39": ["@scure/bip39@1.3.0", "", { "dependencies": { "@noble/hashes": "~1.4.0", "@scure/base": "~1.1.6" } }, "sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ=="], - - "@isaacs/cliui/string-width/emoji-regex": ["emoji-regex@9.2.2", "", {}, "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="], - - "@isaacs/cliui/strip-ansi/ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], - - "@isaacs/cliui/wrap-ansi/ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], - - "@sentry/node/https-proxy-agent/agent-base": ["agent-base@6.0.2", "", { "dependencies": { "debug": "4" } }, "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ=="], - - "@shikijs/twoslash/@shikijs/core/@shikijs/engine-javascript": ["@shikijs/engine-javascript@1.29.2", "", { "dependencies": { "@shikijs/types": "1.29.2", "@shikijs/vscode-textmate": "^10.0.1", "oniguruma-to-es": "^2.2.0" } }, "sha512-iNEZv4IrLYPv64Q6k7EPpOCE/nuvGiKl7zxdq0WFuRPF5PAE9PRo2JGq/d8crLusM59BRemJ4eOqrFrC4wiQ+A=="], - - "@shikijs/twoslash/@shikijs/core/@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@1.29.2", "", { "dependencies": { "@shikijs/types": "1.29.2", "@shikijs/vscode-textmate": "^10.0.1" } }, "sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA=="], - - "ansi-styles/color-convert/color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="], - - "cytoscape-fcose/cose-base/layout-base": ["layout-base@2.0.1", "", {}, "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg=="], - - "d3-sankey/d3-array/internmap": ["internmap@1.0.1", "", {}, "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw=="], - - "d3-sankey/d3-shape/d3-path": ["d3-path@1.0.9", "", {}, "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg=="], - - "ethereum-cryptography/@scure/bip32/@scure/base": ["@scure/base@1.1.9", "", {}, "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg=="], - - "ethereum-cryptography/@scure/bip39/@scure/base": ["@scure/base@1.1.9", "", {}, "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg=="], - - "gray-matter/js-yaml/argparse": ["argparse@1.0.10", "", { "dependencies": { "sprintf-js": "~1.0.2" } }, "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg=="], - - "hardhat/chokidar/readdirp": ["readdirp@4.1.2", "", {}, "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg=="], - - "local-pkg/pkg-types/confbox": ["confbox@0.2.2", "", {}, "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ=="], - - "nextra/shiki/@shikijs/core": ["@shikijs/core@1.29.2", "", { "dependencies": { "@shikijs/engine-javascript": "1.29.2", "@shikijs/engine-oniguruma": "1.29.2", "@shikijs/types": "1.29.2", "@shikijs/vscode-textmate": "^10.0.1", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.4" } }, "sha512-vju0lY9r27jJfOY4Z7+Rt/nIOjzJpZ3y+nYpqtUZInVoXQ/TJZcfGnNOGnKjFdVZb8qexiCuSlZRKcGfhhTTZQ=="], - - "nextra/shiki/@shikijs/engine-javascript": ["@shikijs/engine-javascript@1.29.2", "", { "dependencies": { "@shikijs/types": "1.29.2", "@shikijs/vscode-textmate": "^10.0.1", "oniguruma-to-es": "^2.2.0" } }, "sha512-iNEZv4IrLYPv64Q6k7EPpOCE/nuvGiKl7zxdq0WFuRPF5PAE9PRo2JGq/d8crLusM59BRemJ4eOqrFrC4wiQ+A=="], - - "nextra/shiki/@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@1.29.2", "", { "dependencies": { "@shikijs/types": "1.29.2", "@shikijs/vscode-textmate": "^10.0.1" } }, "sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA=="], - - "nextra/shiki/@shikijs/langs": ["@shikijs/langs@1.29.2", "", { "dependencies": { "@shikijs/types": "1.29.2" } }, "sha512-FIBA7N3LZ+223U7cJDUYd5shmciFQlYkFXlkKVaHsCPgfVLiO+e12FmQE6Tf9vuyEsFe3dIl8qGWKXgEHL9wmQ=="], - - "nextra/shiki/@shikijs/themes": ["@shikijs/themes@1.29.2", "", { "dependencies": { "@shikijs/types": "1.29.2" } }, "sha512-i9TNZlsq4uoyqSbluIcZkmPL9Bfi3djVxRnofUHwvx/h6SRW3cwgBC5SML7vsDcWyukY0eCzVN980rqP6qNl9g=="], - - "nextra/shiki/@shikijs/types": ["@shikijs/types@1.29.2", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.1", "@types/hast": "^3.0.4" } }, "sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw=="], - - "p-locate/p-limit/yocto-queue": ["yocto-queue@0.1.0", "", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="], - - "rehype-pretty-code/shiki/@shikijs/core": ["@shikijs/core@1.29.2", "", { "dependencies": { "@shikijs/engine-javascript": "1.29.2", "@shikijs/engine-oniguruma": "1.29.2", "@shikijs/types": "1.29.2", "@shikijs/vscode-textmate": "^10.0.1", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.4" } }, "sha512-vju0lY9r27jJfOY4Z7+Rt/nIOjzJpZ3y+nYpqtUZInVoXQ/TJZcfGnNOGnKjFdVZb8qexiCuSlZRKcGfhhTTZQ=="], - - "rehype-pretty-code/shiki/@shikijs/engine-javascript": ["@shikijs/engine-javascript@1.29.2", "", { "dependencies": { "@shikijs/types": "1.29.2", "@shikijs/vscode-textmate": "^10.0.1", "oniguruma-to-es": "^2.2.0" } }, "sha512-iNEZv4IrLYPv64Q6k7EPpOCE/nuvGiKl7zxdq0WFuRPF5PAE9PRo2JGq/d8crLusM59BRemJ4eOqrFrC4wiQ+A=="], - - "rehype-pretty-code/shiki/@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@1.29.2", "", { "dependencies": { "@shikijs/types": "1.29.2", "@shikijs/vscode-textmate": "^10.0.1" } }, "sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA=="], - - "rehype-pretty-code/shiki/@shikijs/langs": ["@shikijs/langs@1.29.2", "", { "dependencies": { "@shikijs/types": "1.29.2" } }, "sha512-FIBA7N3LZ+223U7cJDUYd5shmciFQlYkFXlkKVaHsCPgfVLiO+e12FmQE6Tf9vuyEsFe3dIl8qGWKXgEHL9wmQ=="], - - "rehype-pretty-code/shiki/@shikijs/themes": ["@shikijs/themes@1.29.2", "", { "dependencies": { "@shikijs/types": "1.29.2" } }, "sha512-i9TNZlsq4uoyqSbluIcZkmPL9Bfi3djVxRnofUHwvx/h6SRW3cwgBC5SML7vsDcWyukY0eCzVN980rqP6qNl9g=="], - - "rehype-pretty-code/shiki/@shikijs/types": ["@shikijs/types@1.29.2", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.1", "@types/hast": "^3.0.4" } }, "sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw=="], - - "remark-reading-time/unist-util-visit/@types/unist": ["@types/unist@2.0.11", "", {}, "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="], - - "remark-reading-time/unist-util-visit/unist-util-is": ["unist-util-is@5.2.1", "", { "dependencies": { "@types/unist": "^2.0.0" } }, "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw=="], - - "remark-reading-time/unist-util-visit/unist-util-visit-parents": ["unist-util-visit-parents@4.1.1", "", { "dependencies": { "@types/unist": "^2.0.0", "unist-util-is": "^5.0.0" } }, "sha512-1xAFJXAKpnnJl8G7K5KgU7FY55y3GcLIXqkzUj5QF/QVP7biUm0K0O2oqVkYsdjzJKifYeWn9+o6piAK2hGSHw=="], - - "restore-cursor/onetime/mimic-fn": ["mimic-fn@2.1.0", "", {}, "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="], - - "tsup/chokidar/readdirp": ["readdirp@4.1.2", "", {}, "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg=="], - - "tsx/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.12", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA=="], - - "tsx/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.25.12", "", { "os": "android", "cpu": "arm" }, "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg=="], - - "tsx/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.12", "", { "os": "android", "cpu": "arm64" }, "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg=="], - - "tsx/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.25.12", "", { "os": "android", "cpu": "x64" }, "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg=="], - - "tsx/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.25.12", "", { "os": "darwin", "cpu": "arm64" }, "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg=="], - - "tsx/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.25.12", "", { "os": "darwin", "cpu": "x64" }, "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA=="], - - "tsx/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.25.12", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg=="], - - "tsx/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.25.12", "", { "os": "freebsd", "cpu": "x64" }, "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ=="], - - "tsx/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.25.12", "", { "os": "linux", "cpu": "arm" }, "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw=="], - - "tsx/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.25.12", "", { "os": "linux", "cpu": "arm64" }, "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ=="], - - "tsx/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.25.12", "", { "os": "linux", "cpu": "ia32" }, "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA=="], - - "tsx/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng=="], - - "tsx/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw=="], - - "tsx/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.25.12", "", { "os": "linux", "cpu": "ppc64" }, "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA=="], - - "tsx/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w=="], - - "tsx/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.25.12", "", { "os": "linux", "cpu": "s390x" }, "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg=="], - - "tsx/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.25.12", "", { "os": "linux", "cpu": "x64" }, "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw=="], - - "tsx/esbuild/@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.25.12", "", { "os": "none", "cpu": "arm64" }, "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg=="], - - "tsx/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.25.12", "", { "os": "none", "cpu": "x64" }, "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ=="], - - "tsx/esbuild/@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.25.12", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A=="], - - "tsx/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.25.12", "", { "os": "openbsd", "cpu": "x64" }, "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw=="], - - "tsx/esbuild/@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.25.12", "", { "os": "none", "cpu": "arm64" }, "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg=="], - - "tsx/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.25.12", "", { "os": "sunos", "cpu": "x64" }, "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w=="], - - "tsx/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.25.12", "", { "os": "win32", "cpu": "arm64" }, "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg=="], - - "tsx/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.25.12", "", { "os": "win32", "cpu": "ia32" }, "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ=="], - - "tsx/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.12", "", { "os": "win32", "cpu": "x64" }, "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA=="], - - "@ethereumjs/util/ethereum-cryptography/@scure/bip32/@scure/base": ["@scure/base@1.1.9", "", {}, "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg=="], - - "@ethereumjs/util/ethereum-cryptography/@scure/bip39/@scure/base": ["@scure/base@1.1.9", "", {}, "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg=="], - - "@shikijs/twoslash/@shikijs/core/@shikijs/engine-javascript/oniguruma-to-es": ["oniguruma-to-es@2.3.0", "", { "dependencies": { "emoji-regex-xs": "^1.0.0", "regex": "^5.1.1", "regex-recursion": "^5.1.1" } }, "sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g=="], - - "nextra/shiki/@shikijs/engine-javascript/oniguruma-to-es": ["oniguruma-to-es@2.3.0", "", { "dependencies": { "emoji-regex-xs": "^1.0.0", "regex": "^5.1.1", "regex-recursion": "^5.1.1" } }, "sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g=="], - - "rehype-pretty-code/shiki/@shikijs/engine-javascript/oniguruma-to-es": ["oniguruma-to-es@2.3.0", "", { "dependencies": { "emoji-regex-xs": "^1.0.0", "regex": "^5.1.1", "regex-recursion": "^5.1.1" } }, "sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g=="], - - "@shikijs/twoslash/@shikijs/core/@shikijs/engine-javascript/oniguruma-to-es/regex": ["regex@5.1.1", "", { "dependencies": { "regex-utilities": "^2.3.0" } }, "sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw=="], - - "@shikijs/twoslash/@shikijs/core/@shikijs/engine-javascript/oniguruma-to-es/regex-recursion": ["regex-recursion@5.1.1", "", { "dependencies": { "regex": "^5.1.1", "regex-utilities": "^2.3.0" } }, "sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w=="], - - "nextra/shiki/@shikijs/engine-javascript/oniguruma-to-es/regex": ["regex@5.1.1", "", { "dependencies": { "regex-utilities": "^2.3.0" } }, "sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw=="], - - "nextra/shiki/@shikijs/engine-javascript/oniguruma-to-es/regex-recursion": ["regex-recursion@5.1.1", "", { "dependencies": { "regex": "^5.1.1", "regex-utilities": "^2.3.0" } }, "sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w=="], - - "rehype-pretty-code/shiki/@shikijs/engine-javascript/oniguruma-to-es/regex": ["regex@5.1.1", "", { "dependencies": { "regex-utilities": "^2.3.0" } }, "sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw=="], - - "rehype-pretty-code/shiki/@shikijs/engine-javascript/oniguruma-to-es/regex-recursion": ["regex-recursion@5.1.1", "", { "dependencies": { "regex": "^5.1.1", "regex-utilities": "^2.3.0" } }, "sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w=="], - } -} From 42bcd8cf23cec435f1678f6e66c3767474bc8095 Mon Sep 17 00:00:00 2001 From: nsjames Date: Thu, 27 Nov 2025 09:45:47 -0500 Subject: [PATCH 03/14] reorder sidebar to highlight most popular routes --- website/src/pages/en/token-api/evm-dexs/_meta.js | 2 +- website/src/pages/en/token-api/evm-tokens/_meta.js | 4 ++-- website/src/pages/en/token-api/svm-dexs/_meta.js | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/website/src/pages/en/token-api/evm-dexs/_meta.js b/website/src/pages/en/token-api/evm-dexs/_meta.js index df1d9ecf4a6b..73b5deeddbbc 100644 --- a/website/src/pages/en/token-api/evm-dexs/_meta.js +++ b/website/src/pages/en/token-api/evm-dexs/_meta.js @@ -1,6 +1,6 @@ export default { + swaps: '', dexes: '', 'pools-ohlc': '', pools: '', - swaps: '', } diff --git a/website/src/pages/en/token-api/evm-tokens/_meta.js b/website/src/pages/en/token-api/evm-tokens/_meta.js index 2aeed42ff9f1..a350a8e8b23f 100644 --- a/website/src/pages/en/token-api/evm-tokens/_meta.js +++ b/website/src/pages/en/token-api/evm-tokens/_meta.js @@ -1,8 +1,8 @@ export default { - tokens: '', transfers: '', + holders: '', + tokens: '', balances: '', 'balances-native': '', 'balances-historical': '', - holders: '', } diff --git a/website/src/pages/en/token-api/svm-dexs/_meta.js b/website/src/pages/en/token-api/svm-dexs/_meta.js index df1d9ecf4a6b..73b5deeddbbc 100644 --- a/website/src/pages/en/token-api/svm-dexs/_meta.js +++ b/website/src/pages/en/token-api/svm-dexs/_meta.js @@ -1,6 +1,6 @@ export default { + swaps: '', dexes: '', 'pools-ohlc': '', pools: '', - swaps: '', } From ab0026102592194b91945fa32dbc0555be272a0d Mon Sep 17 00:00:00 2001 From: nsjames Date: Wed, 3 Dec 2025 09:44:51 -0500 Subject: [PATCH 04/14] realign translations to english --- website/src/pages/ar/token-api/_meta.js | 2 +- .../src/pages/ar/token-api/endpoints/_meta.js | 4 +- .../token-api/endpoints/endpoint-support.msx | 0 .../{endpoint-pricing.mdx => pricing.mdx} | 22 ++++- .../pages/ar/token-api/endpoints/support.mdx | 24 +++++ .../src/pages/ar/token-api/evm-dexs/_meta.js | 2 +- .../pages/ar/token-api/evm-tokens/_meta.js | 4 +- .../src/pages/ar/token-api/svm-dexs/_meta.js | 2 +- website/src/pages/cs/token-api/_meta.js | 2 +- .../src/pages/cs/token-api/endpoints/_meta.js | 4 +- .../token-api/endpoints/endpoint-support.msx | 0 .../token-api/endpoints/pricing.mdx} | 22 ++++- .../pages/cs/token-api/endpoints/support.mdx | 24 +++++ .../src/pages/cs/token-api/evm-dexs/_meta.js | 2 +- .../pages/cs/token-api/evm-tokens/_meta.js | 4 +- .../src/pages/cs/token-api/svm-dexs/_meta.js | 2 +- website/src/pages/de/token-api/_meta.js | 2 +- .../src/pages/de/token-api/endpoints/_meta.js | 4 +- .../token-api/endpoints/endpoint-support.msx | 0 .../token-api/endpoints/pricing.mdx} | 22 ++++- .../pages/de/token-api/endpoints/support.mdx | 24 +++++ .../src/pages/de/token-api/evm-dexs/_meta.js | 2 +- .../pages/de/token-api/evm-tokens/_meta.js | 4 +- .../src/pages/de/token-api/svm-dexs/_meta.js | 2 +- website/src/pages/es/token-api/_meta.js | 2 +- .../src/pages/es/token-api/endpoints/_meta.js | 4 +- .../token-api/endpoints/endpoint-support.msx | 0 .../{endpoint-pricing.mdx => pricing.mdx} | 22 ++++- .../pages/es/token-api/endpoints/support.mdx | 24 +++++ .../src/pages/es/token-api/evm-dexs/_meta.js | 2 +- .../pages/es/token-api/evm-tokens/_meta.js | 4 +- .../src/pages/es/token-api/svm-dexs/_meta.js | 2 +- website/src/pages/fr/token-api/_meta.js | 2 +- .../src/pages/fr/token-api/endpoints/_meta.js | 4 +- .../token-api/endpoints/endpoint-pricing.mdx | 77 --------------- .../token-api/endpoints/endpoint-support.msx | 0 .../pages/fr/token-api/endpoints/pricing.mdx | 95 +++++++++++++++++++ .../pages/fr/token-api/endpoints/support.mdx | 24 +++++ .../src/pages/fr/token-api/evm-dexs/_meta.js | 2 +- .../pages/fr/token-api/evm-tokens/_meta.js | 4 +- .../src/pages/fr/token-api/svm-dexs/_meta.js | 2 +- website/src/pages/hi/token-api/_meta.js | 2 +- .../src/pages/hi/token-api/endpoints/_meta.js | 4 +- .../token-api/endpoints/endpoint-pricing.mdx | 77 --------------- .../token-api/endpoints/endpoint-support.msx | 0 .../pages/hi/token-api/endpoints/pricing.mdx | 95 +++++++++++++++++++ .../pages/hi/token-api/endpoints/support.mdx | 24 +++++ .../src/pages/hi/token-api/evm-dexs/_meta.js | 2 +- .../pages/hi/token-api/evm-tokens/_meta.js | 4 +- .../src/pages/hi/token-api/svm-dexs/_meta.js | 2 +- website/src/pages/it/token-api/_meta.js | 2 +- .../src/pages/it/token-api/endpoints/_meta.js | 4 +- .../token-api/endpoints/endpoint-pricing.mdx | 77 --------------- .../token-api/endpoints/endpoint-support.msx | 0 .../pages/it/token-api/endpoints/pricing.mdx | 95 +++++++++++++++++++ .../pages/it/token-api/endpoints/support.mdx | 24 +++++ .../src/pages/it/token-api/evm-dexs/_meta.js | 2 +- .../pages/it/token-api/evm-tokens/_meta.js | 4 +- .../src/pages/it/token-api/svm-dexs/_meta.js | 2 +- website/src/pages/ja/token-api/_meta.js | 2 +- .../src/pages/ja/token-api/endpoints/_meta.js | 4 +- .../token-api/endpoints/endpoint-pricing.mdx | 77 --------------- .../token-api/endpoints/endpoint-support.msx | 0 .../pages/ja/token-api/endpoints/pricing.mdx | 95 +++++++++++++++++++ .../pages/ja/token-api/endpoints/support.mdx | 24 +++++ .../src/pages/ja/token-api/evm-dexs/_meta.js | 2 +- .../pages/ja/token-api/evm-tokens/_meta.js | 4 +- .../src/pages/ja/token-api/svm-dexs/_meta.js | 2 +- website/src/pages/ko/token-api/_meta.js | 2 +- .../src/pages/ko/token-api/endpoints/_meta.js | 4 +- .../token-api/endpoints/endpoint-pricing.mdx | 77 --------------- .../token-api/endpoints/endpoint-support.msx | 0 .../pages/ko/token-api/endpoints/pricing.mdx | 95 +++++++++++++++++++ .../pages/ko/token-api/endpoints/support.mdx | 24 +++++ .../src/pages/ko/token-api/evm-dexs/_meta.js | 2 +- .../pages/ko/token-api/evm-tokens/_meta.js | 4 +- .../src/pages/ko/token-api/svm-dexs/_meta.js | 2 +- website/src/pages/mr/token-api/_meta.js | 2 +- .../src/pages/mr/token-api/endpoints/_meta.js | 4 +- .../token-api/endpoints/endpoint-pricing.mdx | 77 --------------- .../token-api/endpoints/endpoint-support.msx | 0 .../pages/mr/token-api/endpoints/pricing.mdx | 95 +++++++++++++++++++ .../pages/mr/token-api/endpoints/support.mdx | 24 +++++ .../src/pages/mr/token-api/evm-dexs/_meta.js | 2 +- .../pages/mr/token-api/evm-tokens/_meta.js | 4 +- .../src/pages/mr/token-api/svm-dexs/_meta.js | 2 +- website/src/pages/nl/token-api/_meta.js | 2 +- .../src/pages/nl/token-api/endpoints/_meta.js | 4 +- .../token-api/endpoints/endpoint-pricing.mdx | 77 --------------- .../token-api/endpoints/endpoint-support.msx | 0 .../pages/nl/token-api/endpoints/pricing.mdx | 95 +++++++++++++++++++ .../pages/nl/token-api/endpoints/support.mdx | 24 +++++ .../src/pages/nl/token-api/evm-dexs/_meta.js | 2 +- .../pages/nl/token-api/evm-tokens/_meta.js | 4 +- .../src/pages/nl/token-api/svm-dexs/_meta.js | 2 +- website/src/pages/pl/token-api/_meta.js | 2 +- .../src/pages/pl/token-api/endpoints/_meta.js | 4 +- .../token-api/endpoints/endpoint-pricing.mdx | 77 --------------- .../token-api/endpoints/endpoint-support.msx | 0 .../pages/pl/token-api/endpoints/pricing.mdx | 95 +++++++++++++++++++ .../pages/pl/token-api/endpoints/support.mdx | 24 +++++ .../src/pages/pl/token-api/evm-dexs/_meta.js | 2 +- .../pages/pl/token-api/evm-tokens/_meta.js | 4 +- .../src/pages/pl/token-api/svm-dexs/_meta.js | 2 +- website/src/pages/pt/token-api/_meta.js | 2 +- .../src/pages/pt/token-api/endpoints/_meta.js | 4 +- .../token-api/endpoints/endpoint-pricing.mdx | 77 --------------- .../token-api/endpoints/endpoint-support.msx | 0 .../pages/pt/token-api/endpoints/pricing.mdx | 95 +++++++++++++++++++ .../pages/pt/token-api/endpoints/support.mdx | 24 +++++ .../src/pages/pt/token-api/evm-dexs/_meta.js | 2 +- .../pages/pt/token-api/evm-tokens/_meta.js | 4 +- .../src/pages/pt/token-api/svm-dexs/_meta.js | 2 +- website/src/pages/ro/token-api/_meta.js | 2 +- .../src/pages/ro/token-api/endpoints/_meta.js | 4 +- .../token-api/endpoints/endpoint-pricing.mdx | 77 --------------- .../token-api/endpoints/endpoint-support.msx | 0 .../pages/ro/token-api/endpoints/pricing.mdx | 95 +++++++++++++++++++ .../pages/ro/token-api/endpoints/support.mdx | 24 +++++ .../src/pages/ro/token-api/evm-dexs/_meta.js | 2 +- .../pages/ro/token-api/evm-tokens/_meta.js | 4 +- .../src/pages/ro/token-api/svm-dexs/_meta.js | 2 +- website/src/pages/ru/token-api/_meta.js | 2 +- .../src/pages/ru/token-api/endpoints/_meta.js | 4 +- .../token-api/endpoints/endpoint-pricing.mdx | 77 --------------- .../token-api/endpoints/endpoint-support.msx | 0 .../pages/ru/token-api/endpoints/pricing.mdx | 95 +++++++++++++++++++ .../pages/ru/token-api/endpoints/support.mdx | 24 +++++ .../src/pages/ru/token-api/evm-dexs/_meta.js | 2 +- .../pages/ru/token-api/evm-tokens/_meta.js | 4 +- .../src/pages/ru/token-api/svm-dexs/_meta.js | 2 +- website/src/pages/sv/token-api/_meta.js | 2 +- .../src/pages/sv/token-api/endpoints/_meta.js | 4 +- .../token-api/endpoints/endpoint-pricing.mdx | 77 --------------- .../token-api/endpoints/endpoint-support.msx | 0 .../pages/sv/token-api/endpoints/pricing.mdx | 95 +++++++++++++++++++ .../pages/sv/token-api/endpoints/support.mdx | 24 +++++ .../src/pages/sv/token-api/evm-dexs/_meta.js | 2 +- .../pages/sv/token-api/evm-tokens/_meta.js | 4 +- .../src/pages/sv/token-api/svm-dexs/_meta.js | 2 +- website/src/pages/tr/token-api/_meta.js | 2 +- .../src/pages/tr/token-api/endpoints/_meta.js | 4 +- .../token-api/endpoints/endpoint-pricing.mdx | 77 --------------- .../token-api/endpoints/endpoint-support.msx | 0 .../pages/tr/token-api/endpoints/pricing.mdx | 95 +++++++++++++++++++ .../pages/tr/token-api/endpoints/support.mdx | 24 +++++ .../src/pages/tr/token-api/evm-dexs/_meta.js | 2 +- .../pages/tr/token-api/evm-tokens/_meta.js | 4 +- .../src/pages/tr/token-api/svm-dexs/_meta.js | 2 +- website/src/pages/uk/token-api/_meta.js | 2 +- .../src/pages/uk/token-api/endpoints/_meta.js | 4 +- .../token-api/endpoints/endpoint-pricing.mdx | 77 --------------- .../token-api/endpoints/endpoint-support.msx | 0 .../pages/uk/token-api/endpoints/pricing.mdx | 95 +++++++++++++++++++ .../pages/uk/token-api/endpoints/support.mdx | 24 +++++ .../src/pages/uk/token-api/evm-dexs/_meta.js | 2 +- .../pages/uk/token-api/evm-tokens/_meta.js | 4 +- .../src/pages/uk/token-api/svm-dexs/_meta.js | 2 +- website/src/pages/ur/token-api/_meta.js | 2 +- .../src/pages/ur/token-api/endpoints/_meta.js | 4 +- .../token-api/endpoints/endpoint-pricing.mdx | 77 --------------- .../token-api/endpoints/endpoint-support.msx | 0 .../pages/ur/token-api/endpoints/pricing.mdx | 95 +++++++++++++++++++ .../pages/ur/token-api/endpoints/support.mdx | 24 +++++ .../src/pages/ur/token-api/evm-dexs/_meta.js | 2 +- .../pages/ur/token-api/evm-tokens/_meta.js | 4 +- .../src/pages/ur/token-api/svm-dexs/_meta.js | 2 +- website/src/pages/vi/token-api/_meta.js | 2 +- .../src/pages/vi/token-api/endpoints/_meta.js | 4 +- .../token-api/endpoints/endpoint-pricing.mdx | 77 --------------- .../token-api/endpoints/endpoint-support.msx | 0 .../pages/vi/token-api/endpoints/pricing.mdx | 95 +++++++++++++++++++ .../pages/vi/token-api/endpoints/support.mdx | 24 +++++ .../src/pages/vi/token-api/evm-dexs/_meta.js | 2 +- .../pages/vi/token-api/evm-tokens/_meta.js | 4 +- .../src/pages/vi/token-api/svm-dexs/_meta.js | 2 +- website/src/pages/zh/token-api/_meta.js | 2 +- .../src/pages/zh/token-api/endpoints/_meta.js | 4 +- .../token-api/endpoints/endpoint-pricing.mdx | 77 --------------- .../token-api/endpoints/endpoint-support.msx | 0 .../pages/zh/token-api/endpoints/pricing.mdx | 95 +++++++++++++++++++ .../pages/zh/token-api/endpoints/support.mdx | 24 +++++ .../src/pages/zh/token-api/evm-dexs/_meta.js | 2 +- .../pages/zh/token-api/evm-tokens/_meta.js | 4 +- .../src/pages/zh/token-api/svm-dexs/_meta.js | 2 +- 185 files changed, 2346 insertions(+), 1464 deletions(-) delete mode 100644 website/src/pages/ar/token-api/endpoints/endpoint-support.msx rename website/src/pages/ar/token-api/endpoints/{endpoint-pricing.mdx => pricing.mdx} (59%) create mode 100644 website/src/pages/ar/token-api/endpoints/support.mdx delete mode 100644 website/src/pages/cs/token-api/endpoints/endpoint-support.msx rename website/src/pages/{de/token-api/endpoints/endpoint-pricing.mdx => cs/token-api/endpoints/pricing.mdx} (59%) create mode 100644 website/src/pages/cs/token-api/endpoints/support.mdx delete mode 100644 website/src/pages/de/token-api/endpoints/endpoint-support.msx rename website/src/pages/{cs/token-api/endpoints/endpoint-pricing.mdx => de/token-api/endpoints/pricing.mdx} (59%) create mode 100644 website/src/pages/de/token-api/endpoints/support.mdx delete mode 100644 website/src/pages/es/token-api/endpoints/endpoint-support.msx rename website/src/pages/es/token-api/endpoints/{endpoint-pricing.mdx => pricing.mdx} (59%) create mode 100644 website/src/pages/es/token-api/endpoints/support.mdx delete mode 100644 website/src/pages/fr/token-api/endpoints/endpoint-pricing.mdx delete mode 100644 website/src/pages/fr/token-api/endpoints/endpoint-support.msx create mode 100644 website/src/pages/fr/token-api/endpoints/pricing.mdx create mode 100644 website/src/pages/fr/token-api/endpoints/support.mdx delete mode 100644 website/src/pages/hi/token-api/endpoints/endpoint-pricing.mdx delete mode 100644 website/src/pages/hi/token-api/endpoints/endpoint-support.msx create mode 100644 website/src/pages/hi/token-api/endpoints/pricing.mdx create mode 100644 website/src/pages/hi/token-api/endpoints/support.mdx delete mode 100644 website/src/pages/it/token-api/endpoints/endpoint-pricing.mdx delete mode 100644 website/src/pages/it/token-api/endpoints/endpoint-support.msx create mode 100644 website/src/pages/it/token-api/endpoints/pricing.mdx create mode 100644 website/src/pages/it/token-api/endpoints/support.mdx delete mode 100644 website/src/pages/ja/token-api/endpoints/endpoint-pricing.mdx delete mode 100644 website/src/pages/ja/token-api/endpoints/endpoint-support.msx create mode 100644 website/src/pages/ja/token-api/endpoints/pricing.mdx create mode 100644 website/src/pages/ja/token-api/endpoints/support.mdx delete mode 100644 website/src/pages/ko/token-api/endpoints/endpoint-pricing.mdx delete mode 100644 website/src/pages/ko/token-api/endpoints/endpoint-support.msx create mode 100644 website/src/pages/ko/token-api/endpoints/pricing.mdx create mode 100644 website/src/pages/ko/token-api/endpoints/support.mdx delete mode 100644 website/src/pages/mr/token-api/endpoints/endpoint-pricing.mdx delete mode 100644 website/src/pages/mr/token-api/endpoints/endpoint-support.msx create mode 100644 website/src/pages/mr/token-api/endpoints/pricing.mdx create mode 100644 website/src/pages/mr/token-api/endpoints/support.mdx delete mode 100644 website/src/pages/nl/token-api/endpoints/endpoint-pricing.mdx delete mode 100644 website/src/pages/nl/token-api/endpoints/endpoint-support.msx create mode 100644 website/src/pages/nl/token-api/endpoints/pricing.mdx create mode 100644 website/src/pages/nl/token-api/endpoints/support.mdx delete mode 100644 website/src/pages/pl/token-api/endpoints/endpoint-pricing.mdx delete mode 100644 website/src/pages/pl/token-api/endpoints/endpoint-support.msx create mode 100644 website/src/pages/pl/token-api/endpoints/pricing.mdx create mode 100644 website/src/pages/pl/token-api/endpoints/support.mdx delete mode 100644 website/src/pages/pt/token-api/endpoints/endpoint-pricing.mdx delete mode 100644 website/src/pages/pt/token-api/endpoints/endpoint-support.msx create mode 100644 website/src/pages/pt/token-api/endpoints/pricing.mdx create mode 100644 website/src/pages/pt/token-api/endpoints/support.mdx delete mode 100644 website/src/pages/ro/token-api/endpoints/endpoint-pricing.mdx delete mode 100644 website/src/pages/ro/token-api/endpoints/endpoint-support.msx create mode 100644 website/src/pages/ro/token-api/endpoints/pricing.mdx create mode 100644 website/src/pages/ro/token-api/endpoints/support.mdx delete mode 100644 website/src/pages/ru/token-api/endpoints/endpoint-pricing.mdx delete mode 100644 website/src/pages/ru/token-api/endpoints/endpoint-support.msx create mode 100644 website/src/pages/ru/token-api/endpoints/pricing.mdx create mode 100644 website/src/pages/ru/token-api/endpoints/support.mdx delete mode 100644 website/src/pages/sv/token-api/endpoints/endpoint-pricing.mdx delete mode 100644 website/src/pages/sv/token-api/endpoints/endpoint-support.msx create mode 100644 website/src/pages/sv/token-api/endpoints/pricing.mdx create mode 100644 website/src/pages/sv/token-api/endpoints/support.mdx delete mode 100644 website/src/pages/tr/token-api/endpoints/endpoint-pricing.mdx delete mode 100644 website/src/pages/tr/token-api/endpoints/endpoint-support.msx create mode 100644 website/src/pages/tr/token-api/endpoints/pricing.mdx create mode 100644 website/src/pages/tr/token-api/endpoints/support.mdx delete mode 100644 website/src/pages/uk/token-api/endpoints/endpoint-pricing.mdx delete mode 100644 website/src/pages/uk/token-api/endpoints/endpoint-support.msx create mode 100644 website/src/pages/uk/token-api/endpoints/pricing.mdx create mode 100644 website/src/pages/uk/token-api/endpoints/support.mdx delete mode 100644 website/src/pages/ur/token-api/endpoints/endpoint-pricing.mdx delete mode 100644 website/src/pages/ur/token-api/endpoints/endpoint-support.msx create mode 100644 website/src/pages/ur/token-api/endpoints/pricing.mdx create mode 100644 website/src/pages/ur/token-api/endpoints/support.mdx delete mode 100644 website/src/pages/vi/token-api/endpoints/endpoint-pricing.mdx delete mode 100644 website/src/pages/vi/token-api/endpoints/endpoint-support.msx create mode 100644 website/src/pages/vi/token-api/endpoints/pricing.mdx create mode 100644 website/src/pages/vi/token-api/endpoints/support.mdx delete mode 100644 website/src/pages/zh/token-api/endpoints/endpoint-pricing.mdx delete mode 100644 website/src/pages/zh/token-api/endpoints/endpoint-support.msx create mode 100644 website/src/pages/zh/token-api/endpoints/pricing.mdx create mode 100644 website/src/pages/zh/token-api/endpoints/support.mdx diff --git a/website/src/pages/ar/token-api/_meta.js b/website/src/pages/ar/token-api/_meta.js index 853f9dc09031..6a5860d38ff7 100644 --- a/website/src/pages/ar/token-api/_meta.js +++ b/website/src/pages/ar/token-api/_meta.js @@ -10,7 +10,7 @@ export default { 'tvm-tokens': titles['tvm-tokens'] ?? '', 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', - 'endpoint-pricing': '', + 'endpoints': titles['endpoints'] ?? '', guides: 'Guides', faq: '', } diff --git a/website/src/pages/ar/token-api/endpoints/_meta.js b/website/src/pages/ar/token-api/endpoints/_meta.js index 5d419807937c..33c169163213 100644 --- a/website/src/pages/ar/token-api/endpoints/_meta.js +++ b/website/src/pages/ar/token-api/endpoints/_meta.js @@ -1,4 +1,4 @@ export default { - 'endpoint-pricing': '', - 'endpoint-support': '', + 'pricing': '', + 'support': '', } diff --git a/website/src/pages/ar/token-api/endpoints/endpoint-support.msx b/website/src/pages/ar/token-api/endpoints/endpoint-support.msx deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/website/src/pages/ar/token-api/endpoints/endpoint-pricing.mdx b/website/src/pages/ar/token-api/endpoints/pricing.mdx similarity index 59% rename from website/src/pages/ar/token-api/endpoints/endpoint-pricing.mdx rename to website/src/pages/ar/token-api/endpoints/pricing.mdx index 1354b7e2bc10..df3a04c50a55 100644 --- a/website/src/pages/ar/token-api/endpoints/endpoint-pricing.mdx +++ b/website/src/pages/ar/token-api/endpoints/pricing.mdx @@ -1,5 +1,6 @@ --- title: Endpoint Pricing +sidebarTitle: Pricing --- ## Pricing Tiers @@ -9,10 +10,21 @@ title: Endpoint Pricing | $25 of total usage across available endpoints | $50 of total usage across available endpoints | $200 of total usage across available endpoints | Custom plan across available endpoints | | Query parameters: 10 items returned, batch size 1 | Query parameters: 100 items returned, batch size 25 | Query parameters: 500 items returned, batch size 50 | Custom items returned and batch size | | Rate limit: 200/min | Rate limit: 500/min | Rate limit: 1000/min | Custom rate limit | -| Time parameters: 1d, 1w intervals | Time parameters: 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | -| Historical price data: 6 months availability | Historical price data: 2 years availability | Historical price data: Full availability | Historical price data: Full availability | +| Time parameters: 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | +| Time interval window: 168 bars | Time interval window: 2160 bars | Time interval window: Full | Time interval window: Full | +| Historical price data: Full availability | Historical price data: Full availability | Historical price data: Full availability | Historical price data: Full availability | | No additional queries allowed outside of free tier | Pay-as-you-go once included usage is exceeded | Pay-as-you-go once included usage is exceeded | SLAs + Engineering Support | +## Time Intervals and Parameters (\*) + +1. The **time interval window** is calculated as: **`bars × interval`**. + - **Example**: The Free plan provides 168 bars with a 4h interval: 168 × 4h = 28 days of data. +2. **Full historical data** is available on all plans. +3. **Pagination** is still required to fetch all results. Users won't receive more data than the plan's total bar limit. + - **Example**: The Free plan allows 168 bars and a 10-result limit per query, so you'll need 17 queries to retrieve all pages. +4. You can use **`start_time`** and **`end_time`** to move your time window across history. + - **Example**: `start_time=2025-01-01`, `end_time=2025-01-28`, and `interval=4h` (Free plan) will return 28 days of data for that range. + ## Token Endpoints - $15/mil queries Query token transfers, balances, and metadata across EVM and SVM blockchains @@ -20,8 +32,11 @@ Query token transfers, balances, and metadata across EVM and SVM blockchains ``` GET /v1/evm/tokens GET /v1/svm/tokens +GET /v1/tvm/tokens GET /v1/evm/transfers GET /v1/svm/transfers +GET /v1/tvm/transfers +GET /v1/tvm/transfers/native GET /v1/evm/balances GET /v1/svm/balances GET /v1/evm/balances/native @@ -35,6 +50,7 @@ Access on-chain swap, liquidity pool, and decentralized exchange data ``` GET /v1/evm/swaps GET /v1/svm/swaps +GET /v1/tvm/swaps GET /v1/evm/pools GET /v1/svm/pools ``` @@ -61,6 +77,7 @@ GET /v1/svm/holders GET /v1/evm/nft/holders GET /v1/evm/pools/ohlc GET /v1/svm/pools/ohlc +GET /v1/tvm/pools/ohlc GET /v1/evm/balances/historical ``` @@ -74,4 +91,5 @@ GET /v1/version GET /v1/networks GET /v1/evm/dexes GET /v1/svm/dexes +GET /v1/tvm/dexes ``` diff --git a/website/src/pages/ar/token-api/endpoints/support.mdx b/website/src/pages/ar/token-api/endpoints/support.mdx new file mode 100644 index 000000000000..652f7457f9b2 --- /dev/null +++ b/website/src/pages/ar/token-api/endpoints/support.mdx @@ -0,0 +1,24 @@ +--- +title: Endpoint Feature Matrix +sidebarTitle: Support Matrix +--- + +import { Check } from '@edgeandnode/gds/icons' + +## Chain and Feature Support + +| Network | Tokens | Swaps | NFTs | +| ----------------- | :-----------------------: | :-----------------------: | :-----------------------: | +| Ethereum Mainnet | | | | +| BSC Mainnet | | | | +| Base Mainnet | | | | +| Unichain Mainnet | | | | +| Arbitrum One | | | | +| Optimism Mainnet | | | | +| Polygon Mainnet | | | | +| Avalanche C-Chain | | | | +| Solana Mainnet | | | ❌ Unsupported | +| Tron Mainnet | | | ❌ Unsupported | + +A full list of chain support for The Graph services can be found [here](/supported-networks/). + diff --git a/website/src/pages/ar/token-api/evm-dexs/_meta.js b/website/src/pages/ar/token-api/evm-dexs/_meta.js index df1d9ecf4a6b..73b5deeddbbc 100644 --- a/website/src/pages/ar/token-api/evm-dexs/_meta.js +++ b/website/src/pages/ar/token-api/evm-dexs/_meta.js @@ -1,6 +1,6 @@ export default { + swaps: '', dexes: '', 'pools-ohlc': '', pools: '', - swaps: '', } diff --git a/website/src/pages/ar/token-api/evm-tokens/_meta.js b/website/src/pages/ar/token-api/evm-tokens/_meta.js index 2aeed42ff9f1..a350a8e8b23f 100644 --- a/website/src/pages/ar/token-api/evm-tokens/_meta.js +++ b/website/src/pages/ar/token-api/evm-tokens/_meta.js @@ -1,8 +1,8 @@ export default { - tokens: '', transfers: '', + holders: '', + tokens: '', balances: '', 'balances-native': '', 'balances-historical': '', - holders: '', } diff --git a/website/src/pages/ar/token-api/svm-dexs/_meta.js b/website/src/pages/ar/token-api/svm-dexs/_meta.js index df1d9ecf4a6b..73b5deeddbbc 100644 --- a/website/src/pages/ar/token-api/svm-dexs/_meta.js +++ b/website/src/pages/ar/token-api/svm-dexs/_meta.js @@ -1,6 +1,6 @@ export default { + swaps: '', dexes: '', 'pools-ohlc': '', pools: '', - swaps: '', } diff --git a/website/src/pages/cs/token-api/_meta.js b/website/src/pages/cs/token-api/_meta.js index 853f9dc09031..6a5860d38ff7 100644 --- a/website/src/pages/cs/token-api/_meta.js +++ b/website/src/pages/cs/token-api/_meta.js @@ -10,7 +10,7 @@ export default { 'tvm-tokens': titles['tvm-tokens'] ?? '', 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', - 'endpoint-pricing': '', + 'endpoints': titles['endpoints'] ?? '', guides: 'Guides', faq: '', } diff --git a/website/src/pages/cs/token-api/endpoints/_meta.js b/website/src/pages/cs/token-api/endpoints/_meta.js index 5d419807937c..33c169163213 100644 --- a/website/src/pages/cs/token-api/endpoints/_meta.js +++ b/website/src/pages/cs/token-api/endpoints/_meta.js @@ -1,4 +1,4 @@ export default { - 'endpoint-pricing': '', - 'endpoint-support': '', + 'pricing': '', + 'support': '', } diff --git a/website/src/pages/cs/token-api/endpoints/endpoint-support.msx b/website/src/pages/cs/token-api/endpoints/endpoint-support.msx deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/website/src/pages/de/token-api/endpoints/endpoint-pricing.mdx b/website/src/pages/cs/token-api/endpoints/pricing.mdx similarity index 59% rename from website/src/pages/de/token-api/endpoints/endpoint-pricing.mdx rename to website/src/pages/cs/token-api/endpoints/pricing.mdx index 1354b7e2bc10..df3a04c50a55 100644 --- a/website/src/pages/de/token-api/endpoints/endpoint-pricing.mdx +++ b/website/src/pages/cs/token-api/endpoints/pricing.mdx @@ -1,5 +1,6 @@ --- title: Endpoint Pricing +sidebarTitle: Pricing --- ## Pricing Tiers @@ -9,10 +10,21 @@ title: Endpoint Pricing | $25 of total usage across available endpoints | $50 of total usage across available endpoints | $200 of total usage across available endpoints | Custom plan across available endpoints | | Query parameters: 10 items returned, batch size 1 | Query parameters: 100 items returned, batch size 25 | Query parameters: 500 items returned, batch size 50 | Custom items returned and batch size | | Rate limit: 200/min | Rate limit: 500/min | Rate limit: 1000/min | Custom rate limit | -| Time parameters: 1d, 1w intervals | Time parameters: 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | -| Historical price data: 6 months availability | Historical price data: 2 years availability | Historical price data: Full availability | Historical price data: Full availability | +| Time parameters: 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | +| Time interval window: 168 bars | Time interval window: 2160 bars | Time interval window: Full | Time interval window: Full | +| Historical price data: Full availability | Historical price data: Full availability | Historical price data: Full availability | Historical price data: Full availability | | No additional queries allowed outside of free tier | Pay-as-you-go once included usage is exceeded | Pay-as-you-go once included usage is exceeded | SLAs + Engineering Support | +## Time Intervals and Parameters (\*) + +1. The **time interval window** is calculated as: **`bars × interval`**. + - **Example**: The Free plan provides 168 bars with a 4h interval: 168 × 4h = 28 days of data. +2. **Full historical data** is available on all plans. +3. **Pagination** is still required to fetch all results. Users won't receive more data than the plan's total bar limit. + - **Example**: The Free plan allows 168 bars and a 10-result limit per query, so you'll need 17 queries to retrieve all pages. +4. You can use **`start_time`** and **`end_time`** to move your time window across history. + - **Example**: `start_time=2025-01-01`, `end_time=2025-01-28`, and `interval=4h` (Free plan) will return 28 days of data for that range. + ## Token Endpoints - $15/mil queries Query token transfers, balances, and metadata across EVM and SVM blockchains @@ -20,8 +32,11 @@ Query token transfers, balances, and metadata across EVM and SVM blockchains ``` GET /v1/evm/tokens GET /v1/svm/tokens +GET /v1/tvm/tokens GET /v1/evm/transfers GET /v1/svm/transfers +GET /v1/tvm/transfers +GET /v1/tvm/transfers/native GET /v1/evm/balances GET /v1/svm/balances GET /v1/evm/balances/native @@ -35,6 +50,7 @@ Access on-chain swap, liquidity pool, and decentralized exchange data ``` GET /v1/evm/swaps GET /v1/svm/swaps +GET /v1/tvm/swaps GET /v1/evm/pools GET /v1/svm/pools ``` @@ -61,6 +77,7 @@ GET /v1/svm/holders GET /v1/evm/nft/holders GET /v1/evm/pools/ohlc GET /v1/svm/pools/ohlc +GET /v1/tvm/pools/ohlc GET /v1/evm/balances/historical ``` @@ -74,4 +91,5 @@ GET /v1/version GET /v1/networks GET /v1/evm/dexes GET /v1/svm/dexes +GET /v1/tvm/dexes ``` diff --git a/website/src/pages/cs/token-api/endpoints/support.mdx b/website/src/pages/cs/token-api/endpoints/support.mdx new file mode 100644 index 000000000000..652f7457f9b2 --- /dev/null +++ b/website/src/pages/cs/token-api/endpoints/support.mdx @@ -0,0 +1,24 @@ +--- +title: Endpoint Feature Matrix +sidebarTitle: Support Matrix +--- + +import { Check } from '@edgeandnode/gds/icons' + +## Chain and Feature Support + +| Network | Tokens | Swaps | NFTs | +| ----------------- | :-----------------------: | :-----------------------: | :-----------------------: | +| Ethereum Mainnet | | | | +| BSC Mainnet | | | | +| Base Mainnet | | | | +| Unichain Mainnet | | | | +| Arbitrum One | | | | +| Optimism Mainnet | | | | +| Polygon Mainnet | | | | +| Avalanche C-Chain | | | | +| Solana Mainnet | | | ❌ Unsupported | +| Tron Mainnet | | | ❌ Unsupported | + +A full list of chain support for The Graph services can be found [here](/supported-networks/). + diff --git a/website/src/pages/cs/token-api/evm-dexs/_meta.js b/website/src/pages/cs/token-api/evm-dexs/_meta.js index df1d9ecf4a6b..73b5deeddbbc 100644 --- a/website/src/pages/cs/token-api/evm-dexs/_meta.js +++ b/website/src/pages/cs/token-api/evm-dexs/_meta.js @@ -1,6 +1,6 @@ export default { + swaps: '', dexes: '', 'pools-ohlc': '', pools: '', - swaps: '', } diff --git a/website/src/pages/cs/token-api/evm-tokens/_meta.js b/website/src/pages/cs/token-api/evm-tokens/_meta.js index 2aeed42ff9f1..a350a8e8b23f 100644 --- a/website/src/pages/cs/token-api/evm-tokens/_meta.js +++ b/website/src/pages/cs/token-api/evm-tokens/_meta.js @@ -1,8 +1,8 @@ export default { - tokens: '', transfers: '', + holders: '', + tokens: '', balances: '', 'balances-native': '', 'balances-historical': '', - holders: '', } diff --git a/website/src/pages/cs/token-api/svm-dexs/_meta.js b/website/src/pages/cs/token-api/svm-dexs/_meta.js index df1d9ecf4a6b..73b5deeddbbc 100644 --- a/website/src/pages/cs/token-api/svm-dexs/_meta.js +++ b/website/src/pages/cs/token-api/svm-dexs/_meta.js @@ -1,6 +1,6 @@ export default { + swaps: '', dexes: '', 'pools-ohlc': '', pools: '', - swaps: '', } diff --git a/website/src/pages/de/token-api/_meta.js b/website/src/pages/de/token-api/_meta.js index 853f9dc09031..6a5860d38ff7 100644 --- a/website/src/pages/de/token-api/_meta.js +++ b/website/src/pages/de/token-api/_meta.js @@ -10,7 +10,7 @@ export default { 'tvm-tokens': titles['tvm-tokens'] ?? '', 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', - 'endpoint-pricing': '', + 'endpoints': titles['endpoints'] ?? '', guides: 'Guides', faq: '', } diff --git a/website/src/pages/de/token-api/endpoints/_meta.js b/website/src/pages/de/token-api/endpoints/_meta.js index 5d419807937c..33c169163213 100644 --- a/website/src/pages/de/token-api/endpoints/_meta.js +++ b/website/src/pages/de/token-api/endpoints/_meta.js @@ -1,4 +1,4 @@ export default { - 'endpoint-pricing': '', - 'endpoint-support': '', + 'pricing': '', + 'support': '', } diff --git a/website/src/pages/de/token-api/endpoints/endpoint-support.msx b/website/src/pages/de/token-api/endpoints/endpoint-support.msx deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/website/src/pages/cs/token-api/endpoints/endpoint-pricing.mdx b/website/src/pages/de/token-api/endpoints/pricing.mdx similarity index 59% rename from website/src/pages/cs/token-api/endpoints/endpoint-pricing.mdx rename to website/src/pages/de/token-api/endpoints/pricing.mdx index 1354b7e2bc10..df3a04c50a55 100644 --- a/website/src/pages/cs/token-api/endpoints/endpoint-pricing.mdx +++ b/website/src/pages/de/token-api/endpoints/pricing.mdx @@ -1,5 +1,6 @@ --- title: Endpoint Pricing +sidebarTitle: Pricing --- ## Pricing Tiers @@ -9,10 +10,21 @@ title: Endpoint Pricing | $25 of total usage across available endpoints | $50 of total usage across available endpoints | $200 of total usage across available endpoints | Custom plan across available endpoints | | Query parameters: 10 items returned, batch size 1 | Query parameters: 100 items returned, batch size 25 | Query parameters: 500 items returned, batch size 50 | Custom items returned and batch size | | Rate limit: 200/min | Rate limit: 500/min | Rate limit: 1000/min | Custom rate limit | -| Time parameters: 1d, 1w intervals | Time parameters: 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | -| Historical price data: 6 months availability | Historical price data: 2 years availability | Historical price data: Full availability | Historical price data: Full availability | +| Time parameters: 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | +| Time interval window: 168 bars | Time interval window: 2160 bars | Time interval window: Full | Time interval window: Full | +| Historical price data: Full availability | Historical price data: Full availability | Historical price data: Full availability | Historical price data: Full availability | | No additional queries allowed outside of free tier | Pay-as-you-go once included usage is exceeded | Pay-as-you-go once included usage is exceeded | SLAs + Engineering Support | +## Time Intervals and Parameters (\*) + +1. The **time interval window** is calculated as: **`bars × interval`**. + - **Example**: The Free plan provides 168 bars with a 4h interval: 168 × 4h = 28 days of data. +2. **Full historical data** is available on all plans. +3. **Pagination** is still required to fetch all results. Users won't receive more data than the plan's total bar limit. + - **Example**: The Free plan allows 168 bars and a 10-result limit per query, so you'll need 17 queries to retrieve all pages. +4. You can use **`start_time`** and **`end_time`** to move your time window across history. + - **Example**: `start_time=2025-01-01`, `end_time=2025-01-28`, and `interval=4h` (Free plan) will return 28 days of data for that range. + ## Token Endpoints - $15/mil queries Query token transfers, balances, and metadata across EVM and SVM blockchains @@ -20,8 +32,11 @@ Query token transfers, balances, and metadata across EVM and SVM blockchains ``` GET /v1/evm/tokens GET /v1/svm/tokens +GET /v1/tvm/tokens GET /v1/evm/transfers GET /v1/svm/transfers +GET /v1/tvm/transfers +GET /v1/tvm/transfers/native GET /v1/evm/balances GET /v1/svm/balances GET /v1/evm/balances/native @@ -35,6 +50,7 @@ Access on-chain swap, liquidity pool, and decentralized exchange data ``` GET /v1/evm/swaps GET /v1/svm/swaps +GET /v1/tvm/swaps GET /v1/evm/pools GET /v1/svm/pools ``` @@ -61,6 +77,7 @@ GET /v1/svm/holders GET /v1/evm/nft/holders GET /v1/evm/pools/ohlc GET /v1/svm/pools/ohlc +GET /v1/tvm/pools/ohlc GET /v1/evm/balances/historical ``` @@ -74,4 +91,5 @@ GET /v1/version GET /v1/networks GET /v1/evm/dexes GET /v1/svm/dexes +GET /v1/tvm/dexes ``` diff --git a/website/src/pages/de/token-api/endpoints/support.mdx b/website/src/pages/de/token-api/endpoints/support.mdx new file mode 100644 index 000000000000..652f7457f9b2 --- /dev/null +++ b/website/src/pages/de/token-api/endpoints/support.mdx @@ -0,0 +1,24 @@ +--- +title: Endpoint Feature Matrix +sidebarTitle: Support Matrix +--- + +import { Check } from '@edgeandnode/gds/icons' + +## Chain and Feature Support + +| Network | Tokens | Swaps | NFTs | +| ----------------- | :-----------------------: | :-----------------------: | :-----------------------: | +| Ethereum Mainnet | | | | +| BSC Mainnet | | | | +| Base Mainnet | | | | +| Unichain Mainnet | | | | +| Arbitrum One | | | | +| Optimism Mainnet | | | | +| Polygon Mainnet | | | | +| Avalanche C-Chain | | | | +| Solana Mainnet | | | ❌ Unsupported | +| Tron Mainnet | | | ❌ Unsupported | + +A full list of chain support for The Graph services can be found [here](/supported-networks/). + diff --git a/website/src/pages/de/token-api/evm-dexs/_meta.js b/website/src/pages/de/token-api/evm-dexs/_meta.js index df1d9ecf4a6b..73b5deeddbbc 100644 --- a/website/src/pages/de/token-api/evm-dexs/_meta.js +++ b/website/src/pages/de/token-api/evm-dexs/_meta.js @@ -1,6 +1,6 @@ export default { + swaps: '', dexes: '', 'pools-ohlc': '', pools: '', - swaps: '', } diff --git a/website/src/pages/de/token-api/evm-tokens/_meta.js b/website/src/pages/de/token-api/evm-tokens/_meta.js index 2aeed42ff9f1..a350a8e8b23f 100644 --- a/website/src/pages/de/token-api/evm-tokens/_meta.js +++ b/website/src/pages/de/token-api/evm-tokens/_meta.js @@ -1,8 +1,8 @@ export default { - tokens: '', transfers: '', + holders: '', + tokens: '', balances: '', 'balances-native': '', 'balances-historical': '', - holders: '', } diff --git a/website/src/pages/de/token-api/svm-dexs/_meta.js b/website/src/pages/de/token-api/svm-dexs/_meta.js index df1d9ecf4a6b..73b5deeddbbc 100644 --- a/website/src/pages/de/token-api/svm-dexs/_meta.js +++ b/website/src/pages/de/token-api/svm-dexs/_meta.js @@ -1,6 +1,6 @@ export default { + swaps: '', dexes: '', 'pools-ohlc': '', pools: '', - swaps: '', } diff --git a/website/src/pages/es/token-api/_meta.js b/website/src/pages/es/token-api/_meta.js index 853f9dc09031..6a5860d38ff7 100644 --- a/website/src/pages/es/token-api/_meta.js +++ b/website/src/pages/es/token-api/_meta.js @@ -10,7 +10,7 @@ export default { 'tvm-tokens': titles['tvm-tokens'] ?? '', 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', - 'endpoint-pricing': '', + 'endpoints': titles['endpoints'] ?? '', guides: 'Guides', faq: '', } diff --git a/website/src/pages/es/token-api/endpoints/_meta.js b/website/src/pages/es/token-api/endpoints/_meta.js index 5d419807937c..33c169163213 100644 --- a/website/src/pages/es/token-api/endpoints/_meta.js +++ b/website/src/pages/es/token-api/endpoints/_meta.js @@ -1,4 +1,4 @@ export default { - 'endpoint-pricing': '', - 'endpoint-support': '', + 'pricing': '', + 'support': '', } diff --git a/website/src/pages/es/token-api/endpoints/endpoint-support.msx b/website/src/pages/es/token-api/endpoints/endpoint-support.msx deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/website/src/pages/es/token-api/endpoints/endpoint-pricing.mdx b/website/src/pages/es/token-api/endpoints/pricing.mdx similarity index 59% rename from website/src/pages/es/token-api/endpoints/endpoint-pricing.mdx rename to website/src/pages/es/token-api/endpoints/pricing.mdx index 1354b7e2bc10..df3a04c50a55 100644 --- a/website/src/pages/es/token-api/endpoints/endpoint-pricing.mdx +++ b/website/src/pages/es/token-api/endpoints/pricing.mdx @@ -1,5 +1,6 @@ --- title: Endpoint Pricing +sidebarTitle: Pricing --- ## Pricing Tiers @@ -9,10 +10,21 @@ title: Endpoint Pricing | $25 of total usage across available endpoints | $50 of total usage across available endpoints | $200 of total usage across available endpoints | Custom plan across available endpoints | | Query parameters: 10 items returned, batch size 1 | Query parameters: 100 items returned, batch size 25 | Query parameters: 500 items returned, batch size 50 | Custom items returned and batch size | | Rate limit: 200/min | Rate limit: 500/min | Rate limit: 1000/min | Custom rate limit | -| Time parameters: 1d, 1w intervals | Time parameters: 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | -| Historical price data: 6 months availability | Historical price data: 2 years availability | Historical price data: Full availability | Historical price data: Full availability | +| Time parameters: 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | +| Time interval window: 168 bars | Time interval window: 2160 bars | Time interval window: Full | Time interval window: Full | +| Historical price data: Full availability | Historical price data: Full availability | Historical price data: Full availability | Historical price data: Full availability | | No additional queries allowed outside of free tier | Pay-as-you-go once included usage is exceeded | Pay-as-you-go once included usage is exceeded | SLAs + Engineering Support | +## Time Intervals and Parameters (\*) + +1. The **time interval window** is calculated as: **`bars × interval`**. + - **Example**: The Free plan provides 168 bars with a 4h interval: 168 × 4h = 28 days of data. +2. **Full historical data** is available on all plans. +3. **Pagination** is still required to fetch all results. Users won't receive more data than the plan's total bar limit. + - **Example**: The Free plan allows 168 bars and a 10-result limit per query, so you'll need 17 queries to retrieve all pages. +4. You can use **`start_time`** and **`end_time`** to move your time window across history. + - **Example**: `start_time=2025-01-01`, `end_time=2025-01-28`, and `interval=4h` (Free plan) will return 28 days of data for that range. + ## Token Endpoints - $15/mil queries Query token transfers, balances, and metadata across EVM and SVM blockchains @@ -20,8 +32,11 @@ Query token transfers, balances, and metadata across EVM and SVM blockchains ``` GET /v1/evm/tokens GET /v1/svm/tokens +GET /v1/tvm/tokens GET /v1/evm/transfers GET /v1/svm/transfers +GET /v1/tvm/transfers +GET /v1/tvm/transfers/native GET /v1/evm/balances GET /v1/svm/balances GET /v1/evm/balances/native @@ -35,6 +50,7 @@ Access on-chain swap, liquidity pool, and decentralized exchange data ``` GET /v1/evm/swaps GET /v1/svm/swaps +GET /v1/tvm/swaps GET /v1/evm/pools GET /v1/svm/pools ``` @@ -61,6 +77,7 @@ GET /v1/svm/holders GET /v1/evm/nft/holders GET /v1/evm/pools/ohlc GET /v1/svm/pools/ohlc +GET /v1/tvm/pools/ohlc GET /v1/evm/balances/historical ``` @@ -74,4 +91,5 @@ GET /v1/version GET /v1/networks GET /v1/evm/dexes GET /v1/svm/dexes +GET /v1/tvm/dexes ``` diff --git a/website/src/pages/es/token-api/endpoints/support.mdx b/website/src/pages/es/token-api/endpoints/support.mdx new file mode 100644 index 000000000000..652f7457f9b2 --- /dev/null +++ b/website/src/pages/es/token-api/endpoints/support.mdx @@ -0,0 +1,24 @@ +--- +title: Endpoint Feature Matrix +sidebarTitle: Support Matrix +--- + +import { Check } from '@edgeandnode/gds/icons' + +## Chain and Feature Support + +| Network | Tokens | Swaps | NFTs | +| ----------------- | :-----------------------: | :-----------------------: | :-----------------------: | +| Ethereum Mainnet | | | | +| BSC Mainnet | | | | +| Base Mainnet | | | | +| Unichain Mainnet | | | | +| Arbitrum One | | | | +| Optimism Mainnet | | | | +| Polygon Mainnet | | | | +| Avalanche C-Chain | | | | +| Solana Mainnet | | | ❌ Unsupported | +| Tron Mainnet | | | ❌ Unsupported | + +A full list of chain support for The Graph services can be found [here](/supported-networks/). + diff --git a/website/src/pages/es/token-api/evm-dexs/_meta.js b/website/src/pages/es/token-api/evm-dexs/_meta.js index df1d9ecf4a6b..73b5deeddbbc 100644 --- a/website/src/pages/es/token-api/evm-dexs/_meta.js +++ b/website/src/pages/es/token-api/evm-dexs/_meta.js @@ -1,6 +1,6 @@ export default { + swaps: '', dexes: '', 'pools-ohlc': '', pools: '', - swaps: '', } diff --git a/website/src/pages/es/token-api/evm-tokens/_meta.js b/website/src/pages/es/token-api/evm-tokens/_meta.js index 2aeed42ff9f1..a350a8e8b23f 100644 --- a/website/src/pages/es/token-api/evm-tokens/_meta.js +++ b/website/src/pages/es/token-api/evm-tokens/_meta.js @@ -1,8 +1,8 @@ export default { - tokens: '', transfers: '', + holders: '', + tokens: '', balances: '', 'balances-native': '', 'balances-historical': '', - holders: '', } diff --git a/website/src/pages/es/token-api/svm-dexs/_meta.js b/website/src/pages/es/token-api/svm-dexs/_meta.js index df1d9ecf4a6b..73b5deeddbbc 100644 --- a/website/src/pages/es/token-api/svm-dexs/_meta.js +++ b/website/src/pages/es/token-api/svm-dexs/_meta.js @@ -1,6 +1,6 @@ export default { + swaps: '', dexes: '', 'pools-ohlc': '', pools: '', - swaps: '', } diff --git a/website/src/pages/fr/token-api/_meta.js b/website/src/pages/fr/token-api/_meta.js index 853f9dc09031..6a5860d38ff7 100644 --- a/website/src/pages/fr/token-api/_meta.js +++ b/website/src/pages/fr/token-api/_meta.js @@ -10,7 +10,7 @@ export default { 'tvm-tokens': titles['tvm-tokens'] ?? '', 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', - 'endpoint-pricing': '', + 'endpoints': titles['endpoints'] ?? '', guides: 'Guides', faq: '', } diff --git a/website/src/pages/fr/token-api/endpoints/_meta.js b/website/src/pages/fr/token-api/endpoints/_meta.js index 5d419807937c..33c169163213 100644 --- a/website/src/pages/fr/token-api/endpoints/_meta.js +++ b/website/src/pages/fr/token-api/endpoints/_meta.js @@ -1,4 +1,4 @@ export default { - 'endpoint-pricing': '', - 'endpoint-support': '', + 'pricing': '', + 'support': '', } diff --git a/website/src/pages/fr/token-api/endpoints/endpoint-pricing.mdx b/website/src/pages/fr/token-api/endpoints/endpoint-pricing.mdx deleted file mode 100644 index 1354b7e2bc10..000000000000 --- a/website/src/pages/fr/token-api/endpoints/endpoint-pricing.mdx +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: Endpoint Pricing ---- - -## Pricing Tiers - -| Free Tier | Scale Tier | Pro Tier | Enterprise | -| --- | --- | --- | --- | -| $25 of total usage across available endpoints | $50 of total usage across available endpoints | $200 of total usage across available endpoints | Custom plan across available endpoints | -| Query parameters: 10 items returned, batch size 1 | Query parameters: 100 items returned, batch size 25 | Query parameters: 500 items returned, batch size 50 | Custom items returned and batch size | -| Rate limit: 200/min | Rate limit: 500/min | Rate limit: 1000/min | Custom rate limit | -| Time parameters: 1d, 1w intervals | Time parameters: 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | -| Historical price data: 6 months availability | Historical price data: 2 years availability | Historical price data: Full availability | Historical price data: Full availability | -| No additional queries allowed outside of free tier | Pay-as-you-go once included usage is exceeded | Pay-as-you-go once included usage is exceeded | SLAs + Engineering Support | - -## Token Endpoints - $15/mil queries - -Query token transfers, balances, and metadata across EVM and SVM blockchains - -``` -GET /v1/evm/tokens -GET /v1/svm/tokens -GET /v1/evm/transfers -GET /v1/svm/transfers -GET /v1/evm/balances -GET /v1/svm/balances -GET /v1/evm/balances/native -GET /v1/svm/balances/native -``` - -## DEX Endpoints - $50/mil queries - -Access on-chain swap, liquidity pool, and decentralized exchange data - -``` -GET /v1/evm/swaps -GET /v1/svm/swaps -GET /v1/evm/pools -GET /v1/svm/pools -``` - -## NFT Endpoints - $50/mil queries - -Retrieve NFT transfers, ownership details, collections, and sales activity - -``` -GET /v1/evm/nft/items -GET /v1/evm/nft/collections -GET /v1/evm/nft/sales -GET /v1/evm/nft/ownerships -GET /v1/evm/nft/transfers -``` - -## Aggregate & Historical Endpoints - $200/mil queries - -Provide summarized, ranked, and time-series blockchain data for analytical use - -``` -GET /v1/evm/holders -GET /v1/svm/holders -GET /v1/evm/nft/holders -GET /v1/evm/pools/ohlc -GET /v1/svm/pools/ohlc -GET /v1/evm/balances/historical -``` - -## Monitoring Endpoints - Free - -Offer real-time API, network, and version health information for system status - -``` -GET /v1/health -GET /v1/version -GET /v1/networks -GET /v1/evm/dexes -GET /v1/svm/dexes -``` diff --git a/website/src/pages/fr/token-api/endpoints/endpoint-support.msx b/website/src/pages/fr/token-api/endpoints/endpoint-support.msx deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/website/src/pages/fr/token-api/endpoints/pricing.mdx b/website/src/pages/fr/token-api/endpoints/pricing.mdx new file mode 100644 index 000000000000..df3a04c50a55 --- /dev/null +++ b/website/src/pages/fr/token-api/endpoints/pricing.mdx @@ -0,0 +1,95 @@ +--- +title: Endpoint Pricing +sidebarTitle: Pricing +--- + +## Pricing Tiers + +| Free Tier | Scale Tier | Pro Tier | Enterprise | +| --- | --- | --- | --- | +| $25 of total usage across available endpoints | $50 of total usage across available endpoints | $200 of total usage across available endpoints | Custom plan across available endpoints | +| Query parameters: 10 items returned, batch size 1 | Query parameters: 100 items returned, batch size 25 | Query parameters: 500 items returned, batch size 50 | Custom items returned and batch size | +| Rate limit: 200/min | Rate limit: 500/min | Rate limit: 1000/min | Custom rate limit | +| Time parameters: 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | +| Time interval window: 168 bars | Time interval window: 2160 bars | Time interval window: Full | Time interval window: Full | +| Historical price data: Full availability | Historical price data: Full availability | Historical price data: Full availability | Historical price data: Full availability | +| No additional queries allowed outside of free tier | Pay-as-you-go once included usage is exceeded | Pay-as-you-go once included usage is exceeded | SLAs + Engineering Support | + +## Time Intervals and Parameters (\*) + +1. The **time interval window** is calculated as: **`bars × interval`**. + - **Example**: The Free plan provides 168 bars with a 4h interval: 168 × 4h = 28 days of data. +2. **Full historical data** is available on all plans. +3. **Pagination** is still required to fetch all results. Users won't receive more data than the plan's total bar limit. + - **Example**: The Free plan allows 168 bars and a 10-result limit per query, so you'll need 17 queries to retrieve all pages. +4. You can use **`start_time`** and **`end_time`** to move your time window across history. + - **Example**: `start_time=2025-01-01`, `end_time=2025-01-28`, and `interval=4h` (Free plan) will return 28 days of data for that range. + +## Token Endpoints - $15/mil queries + +Query token transfers, balances, and metadata across EVM and SVM blockchains + +``` +GET /v1/evm/tokens +GET /v1/svm/tokens +GET /v1/tvm/tokens +GET /v1/evm/transfers +GET /v1/svm/transfers +GET /v1/tvm/transfers +GET /v1/tvm/transfers/native +GET /v1/evm/balances +GET /v1/svm/balances +GET /v1/evm/balances/native +GET /v1/svm/balances/native +``` + +## DEX Endpoints - $50/mil queries + +Access on-chain swap, liquidity pool, and decentralized exchange data + +``` +GET /v1/evm/swaps +GET /v1/svm/swaps +GET /v1/tvm/swaps +GET /v1/evm/pools +GET /v1/svm/pools +``` + +## NFT Endpoints - $50/mil queries + +Retrieve NFT transfers, ownership details, collections, and sales activity + +``` +GET /v1/evm/nft/items +GET /v1/evm/nft/collections +GET /v1/evm/nft/sales +GET /v1/evm/nft/ownerships +GET /v1/evm/nft/transfers +``` + +## Aggregate & Historical Endpoints - $200/mil queries + +Provide summarized, ranked, and time-series blockchain data for analytical use + +``` +GET /v1/evm/holders +GET /v1/svm/holders +GET /v1/evm/nft/holders +GET /v1/evm/pools/ohlc +GET /v1/svm/pools/ohlc +GET /v1/tvm/pools/ohlc +GET /v1/evm/balances/historical +``` + +## Monitoring Endpoints - Free + +Offer real-time API, network, and version health information for system status + +``` +GET /v1/health +GET /v1/version +GET /v1/networks +GET /v1/evm/dexes +GET /v1/svm/dexes +GET /v1/tvm/dexes +``` diff --git a/website/src/pages/fr/token-api/endpoints/support.mdx b/website/src/pages/fr/token-api/endpoints/support.mdx new file mode 100644 index 000000000000..652f7457f9b2 --- /dev/null +++ b/website/src/pages/fr/token-api/endpoints/support.mdx @@ -0,0 +1,24 @@ +--- +title: Endpoint Feature Matrix +sidebarTitle: Support Matrix +--- + +import { Check } from '@edgeandnode/gds/icons' + +## Chain and Feature Support + +| Network | Tokens | Swaps | NFTs | +| ----------------- | :-----------------------: | :-----------------------: | :-----------------------: | +| Ethereum Mainnet | | | | +| BSC Mainnet | | | | +| Base Mainnet | | | | +| Unichain Mainnet | | | | +| Arbitrum One | | | | +| Optimism Mainnet | | | | +| Polygon Mainnet | | | | +| Avalanche C-Chain | | | | +| Solana Mainnet | | | ❌ Unsupported | +| Tron Mainnet | | | ❌ Unsupported | + +A full list of chain support for The Graph services can be found [here](/supported-networks/). + diff --git a/website/src/pages/fr/token-api/evm-dexs/_meta.js b/website/src/pages/fr/token-api/evm-dexs/_meta.js index df1d9ecf4a6b..73b5deeddbbc 100644 --- a/website/src/pages/fr/token-api/evm-dexs/_meta.js +++ b/website/src/pages/fr/token-api/evm-dexs/_meta.js @@ -1,6 +1,6 @@ export default { + swaps: '', dexes: '', 'pools-ohlc': '', pools: '', - swaps: '', } diff --git a/website/src/pages/fr/token-api/evm-tokens/_meta.js b/website/src/pages/fr/token-api/evm-tokens/_meta.js index 2aeed42ff9f1..a350a8e8b23f 100644 --- a/website/src/pages/fr/token-api/evm-tokens/_meta.js +++ b/website/src/pages/fr/token-api/evm-tokens/_meta.js @@ -1,8 +1,8 @@ export default { - tokens: '', transfers: '', + holders: '', + tokens: '', balances: '', 'balances-native': '', 'balances-historical': '', - holders: '', } diff --git a/website/src/pages/fr/token-api/svm-dexs/_meta.js b/website/src/pages/fr/token-api/svm-dexs/_meta.js index df1d9ecf4a6b..73b5deeddbbc 100644 --- a/website/src/pages/fr/token-api/svm-dexs/_meta.js +++ b/website/src/pages/fr/token-api/svm-dexs/_meta.js @@ -1,6 +1,6 @@ export default { + swaps: '', dexes: '', 'pools-ohlc': '', pools: '', - swaps: '', } diff --git a/website/src/pages/hi/token-api/_meta.js b/website/src/pages/hi/token-api/_meta.js index 853f9dc09031..6a5860d38ff7 100644 --- a/website/src/pages/hi/token-api/_meta.js +++ b/website/src/pages/hi/token-api/_meta.js @@ -10,7 +10,7 @@ export default { 'tvm-tokens': titles['tvm-tokens'] ?? '', 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', - 'endpoint-pricing': '', + 'endpoints': titles['endpoints'] ?? '', guides: 'Guides', faq: '', } diff --git a/website/src/pages/hi/token-api/endpoints/_meta.js b/website/src/pages/hi/token-api/endpoints/_meta.js index 5d419807937c..33c169163213 100644 --- a/website/src/pages/hi/token-api/endpoints/_meta.js +++ b/website/src/pages/hi/token-api/endpoints/_meta.js @@ -1,4 +1,4 @@ export default { - 'endpoint-pricing': '', - 'endpoint-support': '', + 'pricing': '', + 'support': '', } diff --git a/website/src/pages/hi/token-api/endpoints/endpoint-pricing.mdx b/website/src/pages/hi/token-api/endpoints/endpoint-pricing.mdx deleted file mode 100644 index 1354b7e2bc10..000000000000 --- a/website/src/pages/hi/token-api/endpoints/endpoint-pricing.mdx +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: Endpoint Pricing ---- - -## Pricing Tiers - -| Free Tier | Scale Tier | Pro Tier | Enterprise | -| --- | --- | --- | --- | -| $25 of total usage across available endpoints | $50 of total usage across available endpoints | $200 of total usage across available endpoints | Custom plan across available endpoints | -| Query parameters: 10 items returned, batch size 1 | Query parameters: 100 items returned, batch size 25 | Query parameters: 500 items returned, batch size 50 | Custom items returned and batch size | -| Rate limit: 200/min | Rate limit: 500/min | Rate limit: 1000/min | Custom rate limit | -| Time parameters: 1d, 1w intervals | Time parameters: 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | -| Historical price data: 6 months availability | Historical price data: 2 years availability | Historical price data: Full availability | Historical price data: Full availability | -| No additional queries allowed outside of free tier | Pay-as-you-go once included usage is exceeded | Pay-as-you-go once included usage is exceeded | SLAs + Engineering Support | - -## Token Endpoints - $15/mil queries - -Query token transfers, balances, and metadata across EVM and SVM blockchains - -``` -GET /v1/evm/tokens -GET /v1/svm/tokens -GET /v1/evm/transfers -GET /v1/svm/transfers -GET /v1/evm/balances -GET /v1/svm/balances -GET /v1/evm/balances/native -GET /v1/svm/balances/native -``` - -## DEX Endpoints - $50/mil queries - -Access on-chain swap, liquidity pool, and decentralized exchange data - -``` -GET /v1/evm/swaps -GET /v1/svm/swaps -GET /v1/evm/pools -GET /v1/svm/pools -``` - -## NFT Endpoints - $50/mil queries - -Retrieve NFT transfers, ownership details, collections, and sales activity - -``` -GET /v1/evm/nft/items -GET /v1/evm/nft/collections -GET /v1/evm/nft/sales -GET /v1/evm/nft/ownerships -GET /v1/evm/nft/transfers -``` - -## Aggregate & Historical Endpoints - $200/mil queries - -Provide summarized, ranked, and time-series blockchain data for analytical use - -``` -GET /v1/evm/holders -GET /v1/svm/holders -GET /v1/evm/nft/holders -GET /v1/evm/pools/ohlc -GET /v1/svm/pools/ohlc -GET /v1/evm/balances/historical -``` - -## Monitoring Endpoints - Free - -Offer real-time API, network, and version health information for system status - -``` -GET /v1/health -GET /v1/version -GET /v1/networks -GET /v1/evm/dexes -GET /v1/svm/dexes -``` diff --git a/website/src/pages/hi/token-api/endpoints/endpoint-support.msx b/website/src/pages/hi/token-api/endpoints/endpoint-support.msx deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/website/src/pages/hi/token-api/endpoints/pricing.mdx b/website/src/pages/hi/token-api/endpoints/pricing.mdx new file mode 100644 index 000000000000..df3a04c50a55 --- /dev/null +++ b/website/src/pages/hi/token-api/endpoints/pricing.mdx @@ -0,0 +1,95 @@ +--- +title: Endpoint Pricing +sidebarTitle: Pricing +--- + +## Pricing Tiers + +| Free Tier | Scale Tier | Pro Tier | Enterprise | +| --- | --- | --- | --- | +| $25 of total usage across available endpoints | $50 of total usage across available endpoints | $200 of total usage across available endpoints | Custom plan across available endpoints | +| Query parameters: 10 items returned, batch size 1 | Query parameters: 100 items returned, batch size 25 | Query parameters: 500 items returned, batch size 50 | Custom items returned and batch size | +| Rate limit: 200/min | Rate limit: 500/min | Rate limit: 1000/min | Custom rate limit | +| Time parameters: 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | +| Time interval window: 168 bars | Time interval window: 2160 bars | Time interval window: Full | Time interval window: Full | +| Historical price data: Full availability | Historical price data: Full availability | Historical price data: Full availability | Historical price data: Full availability | +| No additional queries allowed outside of free tier | Pay-as-you-go once included usage is exceeded | Pay-as-you-go once included usage is exceeded | SLAs + Engineering Support | + +## Time Intervals and Parameters (\*) + +1. The **time interval window** is calculated as: **`bars × interval`**. + - **Example**: The Free plan provides 168 bars with a 4h interval: 168 × 4h = 28 days of data. +2. **Full historical data** is available on all plans. +3. **Pagination** is still required to fetch all results. Users won't receive more data than the plan's total bar limit. + - **Example**: The Free plan allows 168 bars and a 10-result limit per query, so you'll need 17 queries to retrieve all pages. +4. You can use **`start_time`** and **`end_time`** to move your time window across history. + - **Example**: `start_time=2025-01-01`, `end_time=2025-01-28`, and `interval=4h` (Free plan) will return 28 days of data for that range. + +## Token Endpoints - $15/mil queries + +Query token transfers, balances, and metadata across EVM and SVM blockchains + +``` +GET /v1/evm/tokens +GET /v1/svm/tokens +GET /v1/tvm/tokens +GET /v1/evm/transfers +GET /v1/svm/transfers +GET /v1/tvm/transfers +GET /v1/tvm/transfers/native +GET /v1/evm/balances +GET /v1/svm/balances +GET /v1/evm/balances/native +GET /v1/svm/balances/native +``` + +## DEX Endpoints - $50/mil queries + +Access on-chain swap, liquidity pool, and decentralized exchange data + +``` +GET /v1/evm/swaps +GET /v1/svm/swaps +GET /v1/tvm/swaps +GET /v1/evm/pools +GET /v1/svm/pools +``` + +## NFT Endpoints - $50/mil queries + +Retrieve NFT transfers, ownership details, collections, and sales activity + +``` +GET /v1/evm/nft/items +GET /v1/evm/nft/collections +GET /v1/evm/nft/sales +GET /v1/evm/nft/ownerships +GET /v1/evm/nft/transfers +``` + +## Aggregate & Historical Endpoints - $200/mil queries + +Provide summarized, ranked, and time-series blockchain data for analytical use + +``` +GET /v1/evm/holders +GET /v1/svm/holders +GET /v1/evm/nft/holders +GET /v1/evm/pools/ohlc +GET /v1/svm/pools/ohlc +GET /v1/tvm/pools/ohlc +GET /v1/evm/balances/historical +``` + +## Monitoring Endpoints - Free + +Offer real-time API, network, and version health information for system status + +``` +GET /v1/health +GET /v1/version +GET /v1/networks +GET /v1/evm/dexes +GET /v1/svm/dexes +GET /v1/tvm/dexes +``` diff --git a/website/src/pages/hi/token-api/endpoints/support.mdx b/website/src/pages/hi/token-api/endpoints/support.mdx new file mode 100644 index 000000000000..652f7457f9b2 --- /dev/null +++ b/website/src/pages/hi/token-api/endpoints/support.mdx @@ -0,0 +1,24 @@ +--- +title: Endpoint Feature Matrix +sidebarTitle: Support Matrix +--- + +import { Check } from '@edgeandnode/gds/icons' + +## Chain and Feature Support + +| Network | Tokens | Swaps | NFTs | +| ----------------- | :-----------------------: | :-----------------------: | :-----------------------: | +| Ethereum Mainnet | | | | +| BSC Mainnet | | | | +| Base Mainnet | | | | +| Unichain Mainnet | | | | +| Arbitrum One | | | | +| Optimism Mainnet | | | | +| Polygon Mainnet | | | | +| Avalanche C-Chain | | | | +| Solana Mainnet | | | ❌ Unsupported | +| Tron Mainnet | | | ❌ Unsupported | + +A full list of chain support for The Graph services can be found [here](/supported-networks/). + diff --git a/website/src/pages/hi/token-api/evm-dexs/_meta.js b/website/src/pages/hi/token-api/evm-dexs/_meta.js index df1d9ecf4a6b..73b5deeddbbc 100644 --- a/website/src/pages/hi/token-api/evm-dexs/_meta.js +++ b/website/src/pages/hi/token-api/evm-dexs/_meta.js @@ -1,6 +1,6 @@ export default { + swaps: '', dexes: '', 'pools-ohlc': '', pools: '', - swaps: '', } diff --git a/website/src/pages/hi/token-api/evm-tokens/_meta.js b/website/src/pages/hi/token-api/evm-tokens/_meta.js index 2aeed42ff9f1..a350a8e8b23f 100644 --- a/website/src/pages/hi/token-api/evm-tokens/_meta.js +++ b/website/src/pages/hi/token-api/evm-tokens/_meta.js @@ -1,8 +1,8 @@ export default { - tokens: '', transfers: '', + holders: '', + tokens: '', balances: '', 'balances-native': '', 'balances-historical': '', - holders: '', } diff --git a/website/src/pages/hi/token-api/svm-dexs/_meta.js b/website/src/pages/hi/token-api/svm-dexs/_meta.js index df1d9ecf4a6b..73b5deeddbbc 100644 --- a/website/src/pages/hi/token-api/svm-dexs/_meta.js +++ b/website/src/pages/hi/token-api/svm-dexs/_meta.js @@ -1,6 +1,6 @@ export default { + swaps: '', dexes: '', 'pools-ohlc': '', pools: '', - swaps: '', } diff --git a/website/src/pages/it/token-api/_meta.js b/website/src/pages/it/token-api/_meta.js index 853f9dc09031..6a5860d38ff7 100644 --- a/website/src/pages/it/token-api/_meta.js +++ b/website/src/pages/it/token-api/_meta.js @@ -10,7 +10,7 @@ export default { 'tvm-tokens': titles['tvm-tokens'] ?? '', 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', - 'endpoint-pricing': '', + 'endpoints': titles['endpoints'] ?? '', guides: 'Guides', faq: '', } diff --git a/website/src/pages/it/token-api/endpoints/_meta.js b/website/src/pages/it/token-api/endpoints/_meta.js index 5d419807937c..33c169163213 100644 --- a/website/src/pages/it/token-api/endpoints/_meta.js +++ b/website/src/pages/it/token-api/endpoints/_meta.js @@ -1,4 +1,4 @@ export default { - 'endpoint-pricing': '', - 'endpoint-support': '', + 'pricing': '', + 'support': '', } diff --git a/website/src/pages/it/token-api/endpoints/endpoint-pricing.mdx b/website/src/pages/it/token-api/endpoints/endpoint-pricing.mdx deleted file mode 100644 index 1354b7e2bc10..000000000000 --- a/website/src/pages/it/token-api/endpoints/endpoint-pricing.mdx +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: Endpoint Pricing ---- - -## Pricing Tiers - -| Free Tier | Scale Tier | Pro Tier | Enterprise | -| --- | --- | --- | --- | -| $25 of total usage across available endpoints | $50 of total usage across available endpoints | $200 of total usage across available endpoints | Custom plan across available endpoints | -| Query parameters: 10 items returned, batch size 1 | Query parameters: 100 items returned, batch size 25 | Query parameters: 500 items returned, batch size 50 | Custom items returned and batch size | -| Rate limit: 200/min | Rate limit: 500/min | Rate limit: 1000/min | Custom rate limit | -| Time parameters: 1d, 1w intervals | Time parameters: 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | -| Historical price data: 6 months availability | Historical price data: 2 years availability | Historical price data: Full availability | Historical price data: Full availability | -| No additional queries allowed outside of free tier | Pay-as-you-go once included usage is exceeded | Pay-as-you-go once included usage is exceeded | SLAs + Engineering Support | - -## Token Endpoints - $15/mil queries - -Query token transfers, balances, and metadata across EVM and SVM blockchains - -``` -GET /v1/evm/tokens -GET /v1/svm/tokens -GET /v1/evm/transfers -GET /v1/svm/transfers -GET /v1/evm/balances -GET /v1/svm/balances -GET /v1/evm/balances/native -GET /v1/svm/balances/native -``` - -## DEX Endpoints - $50/mil queries - -Access on-chain swap, liquidity pool, and decentralized exchange data - -``` -GET /v1/evm/swaps -GET /v1/svm/swaps -GET /v1/evm/pools -GET /v1/svm/pools -``` - -## NFT Endpoints - $50/mil queries - -Retrieve NFT transfers, ownership details, collections, and sales activity - -``` -GET /v1/evm/nft/items -GET /v1/evm/nft/collections -GET /v1/evm/nft/sales -GET /v1/evm/nft/ownerships -GET /v1/evm/nft/transfers -``` - -## Aggregate & Historical Endpoints - $200/mil queries - -Provide summarized, ranked, and time-series blockchain data for analytical use - -``` -GET /v1/evm/holders -GET /v1/svm/holders -GET /v1/evm/nft/holders -GET /v1/evm/pools/ohlc -GET /v1/svm/pools/ohlc -GET /v1/evm/balances/historical -``` - -## Monitoring Endpoints - Free - -Offer real-time API, network, and version health information for system status - -``` -GET /v1/health -GET /v1/version -GET /v1/networks -GET /v1/evm/dexes -GET /v1/svm/dexes -``` diff --git a/website/src/pages/it/token-api/endpoints/endpoint-support.msx b/website/src/pages/it/token-api/endpoints/endpoint-support.msx deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/website/src/pages/it/token-api/endpoints/pricing.mdx b/website/src/pages/it/token-api/endpoints/pricing.mdx new file mode 100644 index 000000000000..df3a04c50a55 --- /dev/null +++ b/website/src/pages/it/token-api/endpoints/pricing.mdx @@ -0,0 +1,95 @@ +--- +title: Endpoint Pricing +sidebarTitle: Pricing +--- + +## Pricing Tiers + +| Free Tier | Scale Tier | Pro Tier | Enterprise | +| --- | --- | --- | --- | +| $25 of total usage across available endpoints | $50 of total usage across available endpoints | $200 of total usage across available endpoints | Custom plan across available endpoints | +| Query parameters: 10 items returned, batch size 1 | Query parameters: 100 items returned, batch size 25 | Query parameters: 500 items returned, batch size 50 | Custom items returned and batch size | +| Rate limit: 200/min | Rate limit: 500/min | Rate limit: 1000/min | Custom rate limit | +| Time parameters: 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | +| Time interval window: 168 bars | Time interval window: 2160 bars | Time interval window: Full | Time interval window: Full | +| Historical price data: Full availability | Historical price data: Full availability | Historical price data: Full availability | Historical price data: Full availability | +| No additional queries allowed outside of free tier | Pay-as-you-go once included usage is exceeded | Pay-as-you-go once included usage is exceeded | SLAs + Engineering Support | + +## Time Intervals and Parameters (\*) + +1. The **time interval window** is calculated as: **`bars × interval`**. + - **Example**: The Free plan provides 168 bars with a 4h interval: 168 × 4h = 28 days of data. +2. **Full historical data** is available on all plans. +3. **Pagination** is still required to fetch all results. Users won't receive more data than the plan's total bar limit. + - **Example**: The Free plan allows 168 bars and a 10-result limit per query, so you'll need 17 queries to retrieve all pages. +4. You can use **`start_time`** and **`end_time`** to move your time window across history. + - **Example**: `start_time=2025-01-01`, `end_time=2025-01-28`, and `interval=4h` (Free plan) will return 28 days of data for that range. + +## Token Endpoints - $15/mil queries + +Query token transfers, balances, and metadata across EVM and SVM blockchains + +``` +GET /v1/evm/tokens +GET /v1/svm/tokens +GET /v1/tvm/tokens +GET /v1/evm/transfers +GET /v1/svm/transfers +GET /v1/tvm/transfers +GET /v1/tvm/transfers/native +GET /v1/evm/balances +GET /v1/svm/balances +GET /v1/evm/balances/native +GET /v1/svm/balances/native +``` + +## DEX Endpoints - $50/mil queries + +Access on-chain swap, liquidity pool, and decentralized exchange data + +``` +GET /v1/evm/swaps +GET /v1/svm/swaps +GET /v1/tvm/swaps +GET /v1/evm/pools +GET /v1/svm/pools +``` + +## NFT Endpoints - $50/mil queries + +Retrieve NFT transfers, ownership details, collections, and sales activity + +``` +GET /v1/evm/nft/items +GET /v1/evm/nft/collections +GET /v1/evm/nft/sales +GET /v1/evm/nft/ownerships +GET /v1/evm/nft/transfers +``` + +## Aggregate & Historical Endpoints - $200/mil queries + +Provide summarized, ranked, and time-series blockchain data for analytical use + +``` +GET /v1/evm/holders +GET /v1/svm/holders +GET /v1/evm/nft/holders +GET /v1/evm/pools/ohlc +GET /v1/svm/pools/ohlc +GET /v1/tvm/pools/ohlc +GET /v1/evm/balances/historical +``` + +## Monitoring Endpoints - Free + +Offer real-time API, network, and version health information for system status + +``` +GET /v1/health +GET /v1/version +GET /v1/networks +GET /v1/evm/dexes +GET /v1/svm/dexes +GET /v1/tvm/dexes +``` diff --git a/website/src/pages/it/token-api/endpoints/support.mdx b/website/src/pages/it/token-api/endpoints/support.mdx new file mode 100644 index 000000000000..652f7457f9b2 --- /dev/null +++ b/website/src/pages/it/token-api/endpoints/support.mdx @@ -0,0 +1,24 @@ +--- +title: Endpoint Feature Matrix +sidebarTitle: Support Matrix +--- + +import { Check } from '@edgeandnode/gds/icons' + +## Chain and Feature Support + +| Network | Tokens | Swaps | NFTs | +| ----------------- | :-----------------------: | :-----------------------: | :-----------------------: | +| Ethereum Mainnet | | | | +| BSC Mainnet | | | | +| Base Mainnet | | | | +| Unichain Mainnet | | | | +| Arbitrum One | | | | +| Optimism Mainnet | | | | +| Polygon Mainnet | | | | +| Avalanche C-Chain | | | | +| Solana Mainnet | | | ❌ Unsupported | +| Tron Mainnet | | | ❌ Unsupported | + +A full list of chain support for The Graph services can be found [here](/supported-networks/). + diff --git a/website/src/pages/it/token-api/evm-dexs/_meta.js b/website/src/pages/it/token-api/evm-dexs/_meta.js index df1d9ecf4a6b..73b5deeddbbc 100644 --- a/website/src/pages/it/token-api/evm-dexs/_meta.js +++ b/website/src/pages/it/token-api/evm-dexs/_meta.js @@ -1,6 +1,6 @@ export default { + swaps: '', dexes: '', 'pools-ohlc': '', pools: '', - swaps: '', } diff --git a/website/src/pages/it/token-api/evm-tokens/_meta.js b/website/src/pages/it/token-api/evm-tokens/_meta.js index 2aeed42ff9f1..a350a8e8b23f 100644 --- a/website/src/pages/it/token-api/evm-tokens/_meta.js +++ b/website/src/pages/it/token-api/evm-tokens/_meta.js @@ -1,8 +1,8 @@ export default { - tokens: '', transfers: '', + holders: '', + tokens: '', balances: '', 'balances-native': '', 'balances-historical': '', - holders: '', } diff --git a/website/src/pages/it/token-api/svm-dexs/_meta.js b/website/src/pages/it/token-api/svm-dexs/_meta.js index df1d9ecf4a6b..73b5deeddbbc 100644 --- a/website/src/pages/it/token-api/svm-dexs/_meta.js +++ b/website/src/pages/it/token-api/svm-dexs/_meta.js @@ -1,6 +1,6 @@ export default { + swaps: '', dexes: '', 'pools-ohlc': '', pools: '', - swaps: '', } diff --git a/website/src/pages/ja/token-api/_meta.js b/website/src/pages/ja/token-api/_meta.js index 853f9dc09031..6a5860d38ff7 100644 --- a/website/src/pages/ja/token-api/_meta.js +++ b/website/src/pages/ja/token-api/_meta.js @@ -10,7 +10,7 @@ export default { 'tvm-tokens': titles['tvm-tokens'] ?? '', 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', - 'endpoint-pricing': '', + 'endpoints': titles['endpoints'] ?? '', guides: 'Guides', faq: '', } diff --git a/website/src/pages/ja/token-api/endpoints/_meta.js b/website/src/pages/ja/token-api/endpoints/_meta.js index 5d419807937c..33c169163213 100644 --- a/website/src/pages/ja/token-api/endpoints/_meta.js +++ b/website/src/pages/ja/token-api/endpoints/_meta.js @@ -1,4 +1,4 @@ export default { - 'endpoint-pricing': '', - 'endpoint-support': '', + 'pricing': '', + 'support': '', } diff --git a/website/src/pages/ja/token-api/endpoints/endpoint-pricing.mdx b/website/src/pages/ja/token-api/endpoints/endpoint-pricing.mdx deleted file mode 100644 index 1354b7e2bc10..000000000000 --- a/website/src/pages/ja/token-api/endpoints/endpoint-pricing.mdx +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: Endpoint Pricing ---- - -## Pricing Tiers - -| Free Tier | Scale Tier | Pro Tier | Enterprise | -| --- | --- | --- | --- | -| $25 of total usage across available endpoints | $50 of total usage across available endpoints | $200 of total usage across available endpoints | Custom plan across available endpoints | -| Query parameters: 10 items returned, batch size 1 | Query parameters: 100 items returned, batch size 25 | Query parameters: 500 items returned, batch size 50 | Custom items returned and batch size | -| Rate limit: 200/min | Rate limit: 500/min | Rate limit: 1000/min | Custom rate limit | -| Time parameters: 1d, 1w intervals | Time parameters: 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | -| Historical price data: 6 months availability | Historical price data: 2 years availability | Historical price data: Full availability | Historical price data: Full availability | -| No additional queries allowed outside of free tier | Pay-as-you-go once included usage is exceeded | Pay-as-you-go once included usage is exceeded | SLAs + Engineering Support | - -## Token Endpoints - $15/mil queries - -Query token transfers, balances, and metadata across EVM and SVM blockchains - -``` -GET /v1/evm/tokens -GET /v1/svm/tokens -GET /v1/evm/transfers -GET /v1/svm/transfers -GET /v1/evm/balances -GET /v1/svm/balances -GET /v1/evm/balances/native -GET /v1/svm/balances/native -``` - -## DEX Endpoints - $50/mil queries - -Access on-chain swap, liquidity pool, and decentralized exchange data - -``` -GET /v1/evm/swaps -GET /v1/svm/swaps -GET /v1/evm/pools -GET /v1/svm/pools -``` - -## NFT Endpoints - $50/mil queries - -Retrieve NFT transfers, ownership details, collections, and sales activity - -``` -GET /v1/evm/nft/items -GET /v1/evm/nft/collections -GET /v1/evm/nft/sales -GET /v1/evm/nft/ownerships -GET /v1/evm/nft/transfers -``` - -## Aggregate & Historical Endpoints - $200/mil queries - -Provide summarized, ranked, and time-series blockchain data for analytical use - -``` -GET /v1/evm/holders -GET /v1/svm/holders -GET /v1/evm/nft/holders -GET /v1/evm/pools/ohlc -GET /v1/svm/pools/ohlc -GET /v1/evm/balances/historical -``` - -## Monitoring Endpoints - Free - -Offer real-time API, network, and version health information for system status - -``` -GET /v1/health -GET /v1/version -GET /v1/networks -GET /v1/evm/dexes -GET /v1/svm/dexes -``` diff --git a/website/src/pages/ja/token-api/endpoints/endpoint-support.msx b/website/src/pages/ja/token-api/endpoints/endpoint-support.msx deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/website/src/pages/ja/token-api/endpoints/pricing.mdx b/website/src/pages/ja/token-api/endpoints/pricing.mdx new file mode 100644 index 000000000000..df3a04c50a55 --- /dev/null +++ b/website/src/pages/ja/token-api/endpoints/pricing.mdx @@ -0,0 +1,95 @@ +--- +title: Endpoint Pricing +sidebarTitle: Pricing +--- + +## Pricing Tiers + +| Free Tier | Scale Tier | Pro Tier | Enterprise | +| --- | --- | --- | --- | +| $25 of total usage across available endpoints | $50 of total usage across available endpoints | $200 of total usage across available endpoints | Custom plan across available endpoints | +| Query parameters: 10 items returned, batch size 1 | Query parameters: 100 items returned, batch size 25 | Query parameters: 500 items returned, batch size 50 | Custom items returned and batch size | +| Rate limit: 200/min | Rate limit: 500/min | Rate limit: 1000/min | Custom rate limit | +| Time parameters: 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | +| Time interval window: 168 bars | Time interval window: 2160 bars | Time interval window: Full | Time interval window: Full | +| Historical price data: Full availability | Historical price data: Full availability | Historical price data: Full availability | Historical price data: Full availability | +| No additional queries allowed outside of free tier | Pay-as-you-go once included usage is exceeded | Pay-as-you-go once included usage is exceeded | SLAs + Engineering Support | + +## Time Intervals and Parameters (\*) + +1. The **time interval window** is calculated as: **`bars × interval`**. + - **Example**: The Free plan provides 168 bars with a 4h interval: 168 × 4h = 28 days of data. +2. **Full historical data** is available on all plans. +3. **Pagination** is still required to fetch all results. Users won't receive more data than the plan's total bar limit. + - **Example**: The Free plan allows 168 bars and a 10-result limit per query, so you'll need 17 queries to retrieve all pages. +4. You can use **`start_time`** and **`end_time`** to move your time window across history. + - **Example**: `start_time=2025-01-01`, `end_time=2025-01-28`, and `interval=4h` (Free plan) will return 28 days of data for that range. + +## Token Endpoints - $15/mil queries + +Query token transfers, balances, and metadata across EVM and SVM blockchains + +``` +GET /v1/evm/tokens +GET /v1/svm/tokens +GET /v1/tvm/tokens +GET /v1/evm/transfers +GET /v1/svm/transfers +GET /v1/tvm/transfers +GET /v1/tvm/transfers/native +GET /v1/evm/balances +GET /v1/svm/balances +GET /v1/evm/balances/native +GET /v1/svm/balances/native +``` + +## DEX Endpoints - $50/mil queries + +Access on-chain swap, liquidity pool, and decentralized exchange data + +``` +GET /v1/evm/swaps +GET /v1/svm/swaps +GET /v1/tvm/swaps +GET /v1/evm/pools +GET /v1/svm/pools +``` + +## NFT Endpoints - $50/mil queries + +Retrieve NFT transfers, ownership details, collections, and sales activity + +``` +GET /v1/evm/nft/items +GET /v1/evm/nft/collections +GET /v1/evm/nft/sales +GET /v1/evm/nft/ownerships +GET /v1/evm/nft/transfers +``` + +## Aggregate & Historical Endpoints - $200/mil queries + +Provide summarized, ranked, and time-series blockchain data for analytical use + +``` +GET /v1/evm/holders +GET /v1/svm/holders +GET /v1/evm/nft/holders +GET /v1/evm/pools/ohlc +GET /v1/svm/pools/ohlc +GET /v1/tvm/pools/ohlc +GET /v1/evm/balances/historical +``` + +## Monitoring Endpoints - Free + +Offer real-time API, network, and version health information for system status + +``` +GET /v1/health +GET /v1/version +GET /v1/networks +GET /v1/evm/dexes +GET /v1/svm/dexes +GET /v1/tvm/dexes +``` diff --git a/website/src/pages/ja/token-api/endpoints/support.mdx b/website/src/pages/ja/token-api/endpoints/support.mdx new file mode 100644 index 000000000000..652f7457f9b2 --- /dev/null +++ b/website/src/pages/ja/token-api/endpoints/support.mdx @@ -0,0 +1,24 @@ +--- +title: Endpoint Feature Matrix +sidebarTitle: Support Matrix +--- + +import { Check } from '@edgeandnode/gds/icons' + +## Chain and Feature Support + +| Network | Tokens | Swaps | NFTs | +| ----------------- | :-----------------------: | :-----------------------: | :-----------------------: | +| Ethereum Mainnet | | | | +| BSC Mainnet | | | | +| Base Mainnet | | | | +| Unichain Mainnet | | | | +| Arbitrum One | | | | +| Optimism Mainnet | | | | +| Polygon Mainnet | | | | +| Avalanche C-Chain | | | | +| Solana Mainnet | | | ❌ Unsupported | +| Tron Mainnet | | | ❌ Unsupported | + +A full list of chain support for The Graph services can be found [here](/supported-networks/). + diff --git a/website/src/pages/ja/token-api/evm-dexs/_meta.js b/website/src/pages/ja/token-api/evm-dexs/_meta.js index df1d9ecf4a6b..73b5deeddbbc 100644 --- a/website/src/pages/ja/token-api/evm-dexs/_meta.js +++ b/website/src/pages/ja/token-api/evm-dexs/_meta.js @@ -1,6 +1,6 @@ export default { + swaps: '', dexes: '', 'pools-ohlc': '', pools: '', - swaps: '', } diff --git a/website/src/pages/ja/token-api/evm-tokens/_meta.js b/website/src/pages/ja/token-api/evm-tokens/_meta.js index 2aeed42ff9f1..a350a8e8b23f 100644 --- a/website/src/pages/ja/token-api/evm-tokens/_meta.js +++ b/website/src/pages/ja/token-api/evm-tokens/_meta.js @@ -1,8 +1,8 @@ export default { - tokens: '', transfers: '', + holders: '', + tokens: '', balances: '', 'balances-native': '', 'balances-historical': '', - holders: '', } diff --git a/website/src/pages/ja/token-api/svm-dexs/_meta.js b/website/src/pages/ja/token-api/svm-dexs/_meta.js index df1d9ecf4a6b..73b5deeddbbc 100644 --- a/website/src/pages/ja/token-api/svm-dexs/_meta.js +++ b/website/src/pages/ja/token-api/svm-dexs/_meta.js @@ -1,6 +1,6 @@ export default { + swaps: '', dexes: '', 'pools-ohlc': '', pools: '', - swaps: '', } diff --git a/website/src/pages/ko/token-api/_meta.js b/website/src/pages/ko/token-api/_meta.js index 853f9dc09031..6a5860d38ff7 100644 --- a/website/src/pages/ko/token-api/_meta.js +++ b/website/src/pages/ko/token-api/_meta.js @@ -10,7 +10,7 @@ export default { 'tvm-tokens': titles['tvm-tokens'] ?? '', 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', - 'endpoint-pricing': '', + 'endpoints': titles['endpoints'] ?? '', guides: 'Guides', faq: '', } diff --git a/website/src/pages/ko/token-api/endpoints/_meta.js b/website/src/pages/ko/token-api/endpoints/_meta.js index 5d419807937c..33c169163213 100644 --- a/website/src/pages/ko/token-api/endpoints/_meta.js +++ b/website/src/pages/ko/token-api/endpoints/_meta.js @@ -1,4 +1,4 @@ export default { - 'endpoint-pricing': '', - 'endpoint-support': '', + 'pricing': '', + 'support': '', } diff --git a/website/src/pages/ko/token-api/endpoints/endpoint-pricing.mdx b/website/src/pages/ko/token-api/endpoints/endpoint-pricing.mdx deleted file mode 100644 index 1354b7e2bc10..000000000000 --- a/website/src/pages/ko/token-api/endpoints/endpoint-pricing.mdx +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: Endpoint Pricing ---- - -## Pricing Tiers - -| Free Tier | Scale Tier | Pro Tier | Enterprise | -| --- | --- | --- | --- | -| $25 of total usage across available endpoints | $50 of total usage across available endpoints | $200 of total usage across available endpoints | Custom plan across available endpoints | -| Query parameters: 10 items returned, batch size 1 | Query parameters: 100 items returned, batch size 25 | Query parameters: 500 items returned, batch size 50 | Custom items returned and batch size | -| Rate limit: 200/min | Rate limit: 500/min | Rate limit: 1000/min | Custom rate limit | -| Time parameters: 1d, 1w intervals | Time parameters: 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | -| Historical price data: 6 months availability | Historical price data: 2 years availability | Historical price data: Full availability | Historical price data: Full availability | -| No additional queries allowed outside of free tier | Pay-as-you-go once included usage is exceeded | Pay-as-you-go once included usage is exceeded | SLAs + Engineering Support | - -## Token Endpoints - $15/mil queries - -Query token transfers, balances, and metadata across EVM and SVM blockchains - -``` -GET /v1/evm/tokens -GET /v1/svm/tokens -GET /v1/evm/transfers -GET /v1/svm/transfers -GET /v1/evm/balances -GET /v1/svm/balances -GET /v1/evm/balances/native -GET /v1/svm/balances/native -``` - -## DEX Endpoints - $50/mil queries - -Access on-chain swap, liquidity pool, and decentralized exchange data - -``` -GET /v1/evm/swaps -GET /v1/svm/swaps -GET /v1/evm/pools -GET /v1/svm/pools -``` - -## NFT Endpoints - $50/mil queries - -Retrieve NFT transfers, ownership details, collections, and sales activity - -``` -GET /v1/evm/nft/items -GET /v1/evm/nft/collections -GET /v1/evm/nft/sales -GET /v1/evm/nft/ownerships -GET /v1/evm/nft/transfers -``` - -## Aggregate & Historical Endpoints - $200/mil queries - -Provide summarized, ranked, and time-series blockchain data for analytical use - -``` -GET /v1/evm/holders -GET /v1/svm/holders -GET /v1/evm/nft/holders -GET /v1/evm/pools/ohlc -GET /v1/svm/pools/ohlc -GET /v1/evm/balances/historical -``` - -## Monitoring Endpoints - Free - -Offer real-time API, network, and version health information for system status - -``` -GET /v1/health -GET /v1/version -GET /v1/networks -GET /v1/evm/dexes -GET /v1/svm/dexes -``` diff --git a/website/src/pages/ko/token-api/endpoints/endpoint-support.msx b/website/src/pages/ko/token-api/endpoints/endpoint-support.msx deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/website/src/pages/ko/token-api/endpoints/pricing.mdx b/website/src/pages/ko/token-api/endpoints/pricing.mdx new file mode 100644 index 000000000000..df3a04c50a55 --- /dev/null +++ b/website/src/pages/ko/token-api/endpoints/pricing.mdx @@ -0,0 +1,95 @@ +--- +title: Endpoint Pricing +sidebarTitle: Pricing +--- + +## Pricing Tiers + +| Free Tier | Scale Tier | Pro Tier | Enterprise | +| --- | --- | --- | --- | +| $25 of total usage across available endpoints | $50 of total usage across available endpoints | $200 of total usage across available endpoints | Custom plan across available endpoints | +| Query parameters: 10 items returned, batch size 1 | Query parameters: 100 items returned, batch size 25 | Query parameters: 500 items returned, batch size 50 | Custom items returned and batch size | +| Rate limit: 200/min | Rate limit: 500/min | Rate limit: 1000/min | Custom rate limit | +| Time parameters: 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | +| Time interval window: 168 bars | Time interval window: 2160 bars | Time interval window: Full | Time interval window: Full | +| Historical price data: Full availability | Historical price data: Full availability | Historical price data: Full availability | Historical price data: Full availability | +| No additional queries allowed outside of free tier | Pay-as-you-go once included usage is exceeded | Pay-as-you-go once included usage is exceeded | SLAs + Engineering Support | + +## Time Intervals and Parameters (\*) + +1. The **time interval window** is calculated as: **`bars × interval`**. + - **Example**: The Free plan provides 168 bars with a 4h interval: 168 × 4h = 28 days of data. +2. **Full historical data** is available on all plans. +3. **Pagination** is still required to fetch all results. Users won't receive more data than the plan's total bar limit. + - **Example**: The Free plan allows 168 bars and a 10-result limit per query, so you'll need 17 queries to retrieve all pages. +4. You can use **`start_time`** and **`end_time`** to move your time window across history. + - **Example**: `start_time=2025-01-01`, `end_time=2025-01-28`, and `interval=4h` (Free plan) will return 28 days of data for that range. + +## Token Endpoints - $15/mil queries + +Query token transfers, balances, and metadata across EVM and SVM blockchains + +``` +GET /v1/evm/tokens +GET /v1/svm/tokens +GET /v1/tvm/tokens +GET /v1/evm/transfers +GET /v1/svm/transfers +GET /v1/tvm/transfers +GET /v1/tvm/transfers/native +GET /v1/evm/balances +GET /v1/svm/balances +GET /v1/evm/balances/native +GET /v1/svm/balances/native +``` + +## DEX Endpoints - $50/mil queries + +Access on-chain swap, liquidity pool, and decentralized exchange data + +``` +GET /v1/evm/swaps +GET /v1/svm/swaps +GET /v1/tvm/swaps +GET /v1/evm/pools +GET /v1/svm/pools +``` + +## NFT Endpoints - $50/mil queries + +Retrieve NFT transfers, ownership details, collections, and sales activity + +``` +GET /v1/evm/nft/items +GET /v1/evm/nft/collections +GET /v1/evm/nft/sales +GET /v1/evm/nft/ownerships +GET /v1/evm/nft/transfers +``` + +## Aggregate & Historical Endpoints - $200/mil queries + +Provide summarized, ranked, and time-series blockchain data for analytical use + +``` +GET /v1/evm/holders +GET /v1/svm/holders +GET /v1/evm/nft/holders +GET /v1/evm/pools/ohlc +GET /v1/svm/pools/ohlc +GET /v1/tvm/pools/ohlc +GET /v1/evm/balances/historical +``` + +## Monitoring Endpoints - Free + +Offer real-time API, network, and version health information for system status + +``` +GET /v1/health +GET /v1/version +GET /v1/networks +GET /v1/evm/dexes +GET /v1/svm/dexes +GET /v1/tvm/dexes +``` diff --git a/website/src/pages/ko/token-api/endpoints/support.mdx b/website/src/pages/ko/token-api/endpoints/support.mdx new file mode 100644 index 000000000000..652f7457f9b2 --- /dev/null +++ b/website/src/pages/ko/token-api/endpoints/support.mdx @@ -0,0 +1,24 @@ +--- +title: Endpoint Feature Matrix +sidebarTitle: Support Matrix +--- + +import { Check } from '@edgeandnode/gds/icons' + +## Chain and Feature Support + +| Network | Tokens | Swaps | NFTs | +| ----------------- | :-----------------------: | :-----------------------: | :-----------------------: | +| Ethereum Mainnet | | | | +| BSC Mainnet | | | | +| Base Mainnet | | | | +| Unichain Mainnet | | | | +| Arbitrum One | | | | +| Optimism Mainnet | | | | +| Polygon Mainnet | | | | +| Avalanche C-Chain | | | | +| Solana Mainnet | | | ❌ Unsupported | +| Tron Mainnet | | | ❌ Unsupported | + +A full list of chain support for The Graph services can be found [here](/supported-networks/). + diff --git a/website/src/pages/ko/token-api/evm-dexs/_meta.js b/website/src/pages/ko/token-api/evm-dexs/_meta.js index df1d9ecf4a6b..73b5deeddbbc 100644 --- a/website/src/pages/ko/token-api/evm-dexs/_meta.js +++ b/website/src/pages/ko/token-api/evm-dexs/_meta.js @@ -1,6 +1,6 @@ export default { + swaps: '', dexes: '', 'pools-ohlc': '', pools: '', - swaps: '', } diff --git a/website/src/pages/ko/token-api/evm-tokens/_meta.js b/website/src/pages/ko/token-api/evm-tokens/_meta.js index 2aeed42ff9f1..a350a8e8b23f 100644 --- a/website/src/pages/ko/token-api/evm-tokens/_meta.js +++ b/website/src/pages/ko/token-api/evm-tokens/_meta.js @@ -1,8 +1,8 @@ export default { - tokens: '', transfers: '', + holders: '', + tokens: '', balances: '', 'balances-native': '', 'balances-historical': '', - holders: '', } diff --git a/website/src/pages/ko/token-api/svm-dexs/_meta.js b/website/src/pages/ko/token-api/svm-dexs/_meta.js index df1d9ecf4a6b..73b5deeddbbc 100644 --- a/website/src/pages/ko/token-api/svm-dexs/_meta.js +++ b/website/src/pages/ko/token-api/svm-dexs/_meta.js @@ -1,6 +1,6 @@ export default { + swaps: '', dexes: '', 'pools-ohlc': '', pools: '', - swaps: '', } diff --git a/website/src/pages/mr/token-api/_meta.js b/website/src/pages/mr/token-api/_meta.js index 853f9dc09031..6a5860d38ff7 100644 --- a/website/src/pages/mr/token-api/_meta.js +++ b/website/src/pages/mr/token-api/_meta.js @@ -10,7 +10,7 @@ export default { 'tvm-tokens': titles['tvm-tokens'] ?? '', 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', - 'endpoint-pricing': '', + 'endpoints': titles['endpoints'] ?? '', guides: 'Guides', faq: '', } diff --git a/website/src/pages/mr/token-api/endpoints/_meta.js b/website/src/pages/mr/token-api/endpoints/_meta.js index 5d419807937c..33c169163213 100644 --- a/website/src/pages/mr/token-api/endpoints/_meta.js +++ b/website/src/pages/mr/token-api/endpoints/_meta.js @@ -1,4 +1,4 @@ export default { - 'endpoint-pricing': '', - 'endpoint-support': '', + 'pricing': '', + 'support': '', } diff --git a/website/src/pages/mr/token-api/endpoints/endpoint-pricing.mdx b/website/src/pages/mr/token-api/endpoints/endpoint-pricing.mdx deleted file mode 100644 index 1354b7e2bc10..000000000000 --- a/website/src/pages/mr/token-api/endpoints/endpoint-pricing.mdx +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: Endpoint Pricing ---- - -## Pricing Tiers - -| Free Tier | Scale Tier | Pro Tier | Enterprise | -| --- | --- | --- | --- | -| $25 of total usage across available endpoints | $50 of total usage across available endpoints | $200 of total usage across available endpoints | Custom plan across available endpoints | -| Query parameters: 10 items returned, batch size 1 | Query parameters: 100 items returned, batch size 25 | Query parameters: 500 items returned, batch size 50 | Custom items returned and batch size | -| Rate limit: 200/min | Rate limit: 500/min | Rate limit: 1000/min | Custom rate limit | -| Time parameters: 1d, 1w intervals | Time parameters: 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | -| Historical price data: 6 months availability | Historical price data: 2 years availability | Historical price data: Full availability | Historical price data: Full availability | -| No additional queries allowed outside of free tier | Pay-as-you-go once included usage is exceeded | Pay-as-you-go once included usage is exceeded | SLAs + Engineering Support | - -## Token Endpoints - $15/mil queries - -Query token transfers, balances, and metadata across EVM and SVM blockchains - -``` -GET /v1/evm/tokens -GET /v1/svm/tokens -GET /v1/evm/transfers -GET /v1/svm/transfers -GET /v1/evm/balances -GET /v1/svm/balances -GET /v1/evm/balances/native -GET /v1/svm/balances/native -``` - -## DEX Endpoints - $50/mil queries - -Access on-chain swap, liquidity pool, and decentralized exchange data - -``` -GET /v1/evm/swaps -GET /v1/svm/swaps -GET /v1/evm/pools -GET /v1/svm/pools -``` - -## NFT Endpoints - $50/mil queries - -Retrieve NFT transfers, ownership details, collections, and sales activity - -``` -GET /v1/evm/nft/items -GET /v1/evm/nft/collections -GET /v1/evm/nft/sales -GET /v1/evm/nft/ownerships -GET /v1/evm/nft/transfers -``` - -## Aggregate & Historical Endpoints - $200/mil queries - -Provide summarized, ranked, and time-series blockchain data for analytical use - -``` -GET /v1/evm/holders -GET /v1/svm/holders -GET /v1/evm/nft/holders -GET /v1/evm/pools/ohlc -GET /v1/svm/pools/ohlc -GET /v1/evm/balances/historical -``` - -## Monitoring Endpoints - Free - -Offer real-time API, network, and version health information for system status - -``` -GET /v1/health -GET /v1/version -GET /v1/networks -GET /v1/evm/dexes -GET /v1/svm/dexes -``` diff --git a/website/src/pages/mr/token-api/endpoints/endpoint-support.msx b/website/src/pages/mr/token-api/endpoints/endpoint-support.msx deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/website/src/pages/mr/token-api/endpoints/pricing.mdx b/website/src/pages/mr/token-api/endpoints/pricing.mdx new file mode 100644 index 000000000000..df3a04c50a55 --- /dev/null +++ b/website/src/pages/mr/token-api/endpoints/pricing.mdx @@ -0,0 +1,95 @@ +--- +title: Endpoint Pricing +sidebarTitle: Pricing +--- + +## Pricing Tiers + +| Free Tier | Scale Tier | Pro Tier | Enterprise | +| --- | --- | --- | --- | +| $25 of total usage across available endpoints | $50 of total usage across available endpoints | $200 of total usage across available endpoints | Custom plan across available endpoints | +| Query parameters: 10 items returned, batch size 1 | Query parameters: 100 items returned, batch size 25 | Query parameters: 500 items returned, batch size 50 | Custom items returned and batch size | +| Rate limit: 200/min | Rate limit: 500/min | Rate limit: 1000/min | Custom rate limit | +| Time parameters: 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | +| Time interval window: 168 bars | Time interval window: 2160 bars | Time interval window: Full | Time interval window: Full | +| Historical price data: Full availability | Historical price data: Full availability | Historical price data: Full availability | Historical price data: Full availability | +| No additional queries allowed outside of free tier | Pay-as-you-go once included usage is exceeded | Pay-as-you-go once included usage is exceeded | SLAs + Engineering Support | + +## Time Intervals and Parameters (\*) + +1. The **time interval window** is calculated as: **`bars × interval`**. + - **Example**: The Free plan provides 168 bars with a 4h interval: 168 × 4h = 28 days of data. +2. **Full historical data** is available on all plans. +3. **Pagination** is still required to fetch all results. Users won't receive more data than the plan's total bar limit. + - **Example**: The Free plan allows 168 bars and a 10-result limit per query, so you'll need 17 queries to retrieve all pages. +4. You can use **`start_time`** and **`end_time`** to move your time window across history. + - **Example**: `start_time=2025-01-01`, `end_time=2025-01-28`, and `interval=4h` (Free plan) will return 28 days of data for that range. + +## Token Endpoints - $15/mil queries + +Query token transfers, balances, and metadata across EVM and SVM blockchains + +``` +GET /v1/evm/tokens +GET /v1/svm/tokens +GET /v1/tvm/tokens +GET /v1/evm/transfers +GET /v1/svm/transfers +GET /v1/tvm/transfers +GET /v1/tvm/transfers/native +GET /v1/evm/balances +GET /v1/svm/balances +GET /v1/evm/balances/native +GET /v1/svm/balances/native +``` + +## DEX Endpoints - $50/mil queries + +Access on-chain swap, liquidity pool, and decentralized exchange data + +``` +GET /v1/evm/swaps +GET /v1/svm/swaps +GET /v1/tvm/swaps +GET /v1/evm/pools +GET /v1/svm/pools +``` + +## NFT Endpoints - $50/mil queries + +Retrieve NFT transfers, ownership details, collections, and sales activity + +``` +GET /v1/evm/nft/items +GET /v1/evm/nft/collections +GET /v1/evm/nft/sales +GET /v1/evm/nft/ownerships +GET /v1/evm/nft/transfers +``` + +## Aggregate & Historical Endpoints - $200/mil queries + +Provide summarized, ranked, and time-series blockchain data for analytical use + +``` +GET /v1/evm/holders +GET /v1/svm/holders +GET /v1/evm/nft/holders +GET /v1/evm/pools/ohlc +GET /v1/svm/pools/ohlc +GET /v1/tvm/pools/ohlc +GET /v1/evm/balances/historical +``` + +## Monitoring Endpoints - Free + +Offer real-time API, network, and version health information for system status + +``` +GET /v1/health +GET /v1/version +GET /v1/networks +GET /v1/evm/dexes +GET /v1/svm/dexes +GET /v1/tvm/dexes +``` diff --git a/website/src/pages/mr/token-api/endpoints/support.mdx b/website/src/pages/mr/token-api/endpoints/support.mdx new file mode 100644 index 000000000000..652f7457f9b2 --- /dev/null +++ b/website/src/pages/mr/token-api/endpoints/support.mdx @@ -0,0 +1,24 @@ +--- +title: Endpoint Feature Matrix +sidebarTitle: Support Matrix +--- + +import { Check } from '@edgeandnode/gds/icons' + +## Chain and Feature Support + +| Network | Tokens | Swaps | NFTs | +| ----------------- | :-----------------------: | :-----------------------: | :-----------------------: | +| Ethereum Mainnet | | | | +| BSC Mainnet | | | | +| Base Mainnet | | | | +| Unichain Mainnet | | | | +| Arbitrum One | | | | +| Optimism Mainnet | | | | +| Polygon Mainnet | | | | +| Avalanche C-Chain | | | | +| Solana Mainnet | | | ❌ Unsupported | +| Tron Mainnet | | | ❌ Unsupported | + +A full list of chain support for The Graph services can be found [here](/supported-networks/). + diff --git a/website/src/pages/mr/token-api/evm-dexs/_meta.js b/website/src/pages/mr/token-api/evm-dexs/_meta.js index df1d9ecf4a6b..73b5deeddbbc 100644 --- a/website/src/pages/mr/token-api/evm-dexs/_meta.js +++ b/website/src/pages/mr/token-api/evm-dexs/_meta.js @@ -1,6 +1,6 @@ export default { + swaps: '', dexes: '', 'pools-ohlc': '', pools: '', - swaps: '', } diff --git a/website/src/pages/mr/token-api/evm-tokens/_meta.js b/website/src/pages/mr/token-api/evm-tokens/_meta.js index 2aeed42ff9f1..a350a8e8b23f 100644 --- a/website/src/pages/mr/token-api/evm-tokens/_meta.js +++ b/website/src/pages/mr/token-api/evm-tokens/_meta.js @@ -1,8 +1,8 @@ export default { - tokens: '', transfers: '', + holders: '', + tokens: '', balances: '', 'balances-native': '', 'balances-historical': '', - holders: '', } diff --git a/website/src/pages/mr/token-api/svm-dexs/_meta.js b/website/src/pages/mr/token-api/svm-dexs/_meta.js index df1d9ecf4a6b..73b5deeddbbc 100644 --- a/website/src/pages/mr/token-api/svm-dexs/_meta.js +++ b/website/src/pages/mr/token-api/svm-dexs/_meta.js @@ -1,6 +1,6 @@ export default { + swaps: '', dexes: '', 'pools-ohlc': '', pools: '', - swaps: '', } diff --git a/website/src/pages/nl/token-api/_meta.js b/website/src/pages/nl/token-api/_meta.js index 853f9dc09031..6a5860d38ff7 100644 --- a/website/src/pages/nl/token-api/_meta.js +++ b/website/src/pages/nl/token-api/_meta.js @@ -10,7 +10,7 @@ export default { 'tvm-tokens': titles['tvm-tokens'] ?? '', 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', - 'endpoint-pricing': '', + 'endpoints': titles['endpoints'] ?? '', guides: 'Guides', faq: '', } diff --git a/website/src/pages/nl/token-api/endpoints/_meta.js b/website/src/pages/nl/token-api/endpoints/_meta.js index 5d419807937c..33c169163213 100644 --- a/website/src/pages/nl/token-api/endpoints/_meta.js +++ b/website/src/pages/nl/token-api/endpoints/_meta.js @@ -1,4 +1,4 @@ export default { - 'endpoint-pricing': '', - 'endpoint-support': '', + 'pricing': '', + 'support': '', } diff --git a/website/src/pages/nl/token-api/endpoints/endpoint-pricing.mdx b/website/src/pages/nl/token-api/endpoints/endpoint-pricing.mdx deleted file mode 100644 index 1354b7e2bc10..000000000000 --- a/website/src/pages/nl/token-api/endpoints/endpoint-pricing.mdx +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: Endpoint Pricing ---- - -## Pricing Tiers - -| Free Tier | Scale Tier | Pro Tier | Enterprise | -| --- | --- | --- | --- | -| $25 of total usage across available endpoints | $50 of total usage across available endpoints | $200 of total usage across available endpoints | Custom plan across available endpoints | -| Query parameters: 10 items returned, batch size 1 | Query parameters: 100 items returned, batch size 25 | Query parameters: 500 items returned, batch size 50 | Custom items returned and batch size | -| Rate limit: 200/min | Rate limit: 500/min | Rate limit: 1000/min | Custom rate limit | -| Time parameters: 1d, 1w intervals | Time parameters: 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | -| Historical price data: 6 months availability | Historical price data: 2 years availability | Historical price data: Full availability | Historical price data: Full availability | -| No additional queries allowed outside of free tier | Pay-as-you-go once included usage is exceeded | Pay-as-you-go once included usage is exceeded | SLAs + Engineering Support | - -## Token Endpoints - $15/mil queries - -Query token transfers, balances, and metadata across EVM and SVM blockchains - -``` -GET /v1/evm/tokens -GET /v1/svm/tokens -GET /v1/evm/transfers -GET /v1/svm/transfers -GET /v1/evm/balances -GET /v1/svm/balances -GET /v1/evm/balances/native -GET /v1/svm/balances/native -``` - -## DEX Endpoints - $50/mil queries - -Access on-chain swap, liquidity pool, and decentralized exchange data - -``` -GET /v1/evm/swaps -GET /v1/svm/swaps -GET /v1/evm/pools -GET /v1/svm/pools -``` - -## NFT Endpoints - $50/mil queries - -Retrieve NFT transfers, ownership details, collections, and sales activity - -``` -GET /v1/evm/nft/items -GET /v1/evm/nft/collections -GET /v1/evm/nft/sales -GET /v1/evm/nft/ownerships -GET /v1/evm/nft/transfers -``` - -## Aggregate & Historical Endpoints - $200/mil queries - -Provide summarized, ranked, and time-series blockchain data for analytical use - -``` -GET /v1/evm/holders -GET /v1/svm/holders -GET /v1/evm/nft/holders -GET /v1/evm/pools/ohlc -GET /v1/svm/pools/ohlc -GET /v1/evm/balances/historical -``` - -## Monitoring Endpoints - Free - -Offer real-time API, network, and version health information for system status - -``` -GET /v1/health -GET /v1/version -GET /v1/networks -GET /v1/evm/dexes -GET /v1/svm/dexes -``` diff --git a/website/src/pages/nl/token-api/endpoints/endpoint-support.msx b/website/src/pages/nl/token-api/endpoints/endpoint-support.msx deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/website/src/pages/nl/token-api/endpoints/pricing.mdx b/website/src/pages/nl/token-api/endpoints/pricing.mdx new file mode 100644 index 000000000000..df3a04c50a55 --- /dev/null +++ b/website/src/pages/nl/token-api/endpoints/pricing.mdx @@ -0,0 +1,95 @@ +--- +title: Endpoint Pricing +sidebarTitle: Pricing +--- + +## Pricing Tiers + +| Free Tier | Scale Tier | Pro Tier | Enterprise | +| --- | --- | --- | --- | +| $25 of total usage across available endpoints | $50 of total usage across available endpoints | $200 of total usage across available endpoints | Custom plan across available endpoints | +| Query parameters: 10 items returned, batch size 1 | Query parameters: 100 items returned, batch size 25 | Query parameters: 500 items returned, batch size 50 | Custom items returned and batch size | +| Rate limit: 200/min | Rate limit: 500/min | Rate limit: 1000/min | Custom rate limit | +| Time parameters: 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | +| Time interval window: 168 bars | Time interval window: 2160 bars | Time interval window: Full | Time interval window: Full | +| Historical price data: Full availability | Historical price data: Full availability | Historical price data: Full availability | Historical price data: Full availability | +| No additional queries allowed outside of free tier | Pay-as-you-go once included usage is exceeded | Pay-as-you-go once included usage is exceeded | SLAs + Engineering Support | + +## Time Intervals and Parameters (\*) + +1. The **time interval window** is calculated as: **`bars × interval`**. + - **Example**: The Free plan provides 168 bars with a 4h interval: 168 × 4h = 28 days of data. +2. **Full historical data** is available on all plans. +3. **Pagination** is still required to fetch all results. Users won't receive more data than the plan's total bar limit. + - **Example**: The Free plan allows 168 bars and a 10-result limit per query, so you'll need 17 queries to retrieve all pages. +4. You can use **`start_time`** and **`end_time`** to move your time window across history. + - **Example**: `start_time=2025-01-01`, `end_time=2025-01-28`, and `interval=4h` (Free plan) will return 28 days of data for that range. + +## Token Endpoints - $15/mil queries + +Query token transfers, balances, and metadata across EVM and SVM blockchains + +``` +GET /v1/evm/tokens +GET /v1/svm/tokens +GET /v1/tvm/tokens +GET /v1/evm/transfers +GET /v1/svm/transfers +GET /v1/tvm/transfers +GET /v1/tvm/transfers/native +GET /v1/evm/balances +GET /v1/svm/balances +GET /v1/evm/balances/native +GET /v1/svm/balances/native +``` + +## DEX Endpoints - $50/mil queries + +Access on-chain swap, liquidity pool, and decentralized exchange data + +``` +GET /v1/evm/swaps +GET /v1/svm/swaps +GET /v1/tvm/swaps +GET /v1/evm/pools +GET /v1/svm/pools +``` + +## NFT Endpoints - $50/mil queries + +Retrieve NFT transfers, ownership details, collections, and sales activity + +``` +GET /v1/evm/nft/items +GET /v1/evm/nft/collections +GET /v1/evm/nft/sales +GET /v1/evm/nft/ownerships +GET /v1/evm/nft/transfers +``` + +## Aggregate & Historical Endpoints - $200/mil queries + +Provide summarized, ranked, and time-series blockchain data for analytical use + +``` +GET /v1/evm/holders +GET /v1/svm/holders +GET /v1/evm/nft/holders +GET /v1/evm/pools/ohlc +GET /v1/svm/pools/ohlc +GET /v1/tvm/pools/ohlc +GET /v1/evm/balances/historical +``` + +## Monitoring Endpoints - Free + +Offer real-time API, network, and version health information for system status + +``` +GET /v1/health +GET /v1/version +GET /v1/networks +GET /v1/evm/dexes +GET /v1/svm/dexes +GET /v1/tvm/dexes +``` diff --git a/website/src/pages/nl/token-api/endpoints/support.mdx b/website/src/pages/nl/token-api/endpoints/support.mdx new file mode 100644 index 000000000000..652f7457f9b2 --- /dev/null +++ b/website/src/pages/nl/token-api/endpoints/support.mdx @@ -0,0 +1,24 @@ +--- +title: Endpoint Feature Matrix +sidebarTitle: Support Matrix +--- + +import { Check } from '@edgeandnode/gds/icons' + +## Chain and Feature Support + +| Network | Tokens | Swaps | NFTs | +| ----------------- | :-----------------------: | :-----------------------: | :-----------------------: | +| Ethereum Mainnet | | | | +| BSC Mainnet | | | | +| Base Mainnet | | | | +| Unichain Mainnet | | | | +| Arbitrum One | | | | +| Optimism Mainnet | | | | +| Polygon Mainnet | | | | +| Avalanche C-Chain | | | | +| Solana Mainnet | | | ❌ Unsupported | +| Tron Mainnet | | | ❌ Unsupported | + +A full list of chain support for The Graph services can be found [here](/supported-networks/). + diff --git a/website/src/pages/nl/token-api/evm-dexs/_meta.js b/website/src/pages/nl/token-api/evm-dexs/_meta.js index df1d9ecf4a6b..73b5deeddbbc 100644 --- a/website/src/pages/nl/token-api/evm-dexs/_meta.js +++ b/website/src/pages/nl/token-api/evm-dexs/_meta.js @@ -1,6 +1,6 @@ export default { + swaps: '', dexes: '', 'pools-ohlc': '', pools: '', - swaps: '', } diff --git a/website/src/pages/nl/token-api/evm-tokens/_meta.js b/website/src/pages/nl/token-api/evm-tokens/_meta.js index 2aeed42ff9f1..a350a8e8b23f 100644 --- a/website/src/pages/nl/token-api/evm-tokens/_meta.js +++ b/website/src/pages/nl/token-api/evm-tokens/_meta.js @@ -1,8 +1,8 @@ export default { - tokens: '', transfers: '', + holders: '', + tokens: '', balances: '', 'balances-native': '', 'balances-historical': '', - holders: '', } diff --git a/website/src/pages/nl/token-api/svm-dexs/_meta.js b/website/src/pages/nl/token-api/svm-dexs/_meta.js index df1d9ecf4a6b..73b5deeddbbc 100644 --- a/website/src/pages/nl/token-api/svm-dexs/_meta.js +++ b/website/src/pages/nl/token-api/svm-dexs/_meta.js @@ -1,6 +1,6 @@ export default { + swaps: '', dexes: '', 'pools-ohlc': '', pools: '', - swaps: '', } diff --git a/website/src/pages/pl/token-api/_meta.js b/website/src/pages/pl/token-api/_meta.js index 853f9dc09031..6a5860d38ff7 100644 --- a/website/src/pages/pl/token-api/_meta.js +++ b/website/src/pages/pl/token-api/_meta.js @@ -10,7 +10,7 @@ export default { 'tvm-tokens': titles['tvm-tokens'] ?? '', 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', - 'endpoint-pricing': '', + 'endpoints': titles['endpoints'] ?? '', guides: 'Guides', faq: '', } diff --git a/website/src/pages/pl/token-api/endpoints/_meta.js b/website/src/pages/pl/token-api/endpoints/_meta.js index 5d419807937c..33c169163213 100644 --- a/website/src/pages/pl/token-api/endpoints/_meta.js +++ b/website/src/pages/pl/token-api/endpoints/_meta.js @@ -1,4 +1,4 @@ export default { - 'endpoint-pricing': '', - 'endpoint-support': '', + 'pricing': '', + 'support': '', } diff --git a/website/src/pages/pl/token-api/endpoints/endpoint-pricing.mdx b/website/src/pages/pl/token-api/endpoints/endpoint-pricing.mdx deleted file mode 100644 index 1354b7e2bc10..000000000000 --- a/website/src/pages/pl/token-api/endpoints/endpoint-pricing.mdx +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: Endpoint Pricing ---- - -## Pricing Tiers - -| Free Tier | Scale Tier | Pro Tier | Enterprise | -| --- | --- | --- | --- | -| $25 of total usage across available endpoints | $50 of total usage across available endpoints | $200 of total usage across available endpoints | Custom plan across available endpoints | -| Query parameters: 10 items returned, batch size 1 | Query parameters: 100 items returned, batch size 25 | Query parameters: 500 items returned, batch size 50 | Custom items returned and batch size | -| Rate limit: 200/min | Rate limit: 500/min | Rate limit: 1000/min | Custom rate limit | -| Time parameters: 1d, 1w intervals | Time parameters: 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | -| Historical price data: 6 months availability | Historical price data: 2 years availability | Historical price data: Full availability | Historical price data: Full availability | -| No additional queries allowed outside of free tier | Pay-as-you-go once included usage is exceeded | Pay-as-you-go once included usage is exceeded | SLAs + Engineering Support | - -## Token Endpoints - $15/mil queries - -Query token transfers, balances, and metadata across EVM and SVM blockchains - -``` -GET /v1/evm/tokens -GET /v1/svm/tokens -GET /v1/evm/transfers -GET /v1/svm/transfers -GET /v1/evm/balances -GET /v1/svm/balances -GET /v1/evm/balances/native -GET /v1/svm/balances/native -``` - -## DEX Endpoints - $50/mil queries - -Access on-chain swap, liquidity pool, and decentralized exchange data - -``` -GET /v1/evm/swaps -GET /v1/svm/swaps -GET /v1/evm/pools -GET /v1/svm/pools -``` - -## NFT Endpoints - $50/mil queries - -Retrieve NFT transfers, ownership details, collections, and sales activity - -``` -GET /v1/evm/nft/items -GET /v1/evm/nft/collections -GET /v1/evm/nft/sales -GET /v1/evm/nft/ownerships -GET /v1/evm/nft/transfers -``` - -## Aggregate & Historical Endpoints - $200/mil queries - -Provide summarized, ranked, and time-series blockchain data for analytical use - -``` -GET /v1/evm/holders -GET /v1/svm/holders -GET /v1/evm/nft/holders -GET /v1/evm/pools/ohlc -GET /v1/svm/pools/ohlc -GET /v1/evm/balances/historical -``` - -## Monitoring Endpoints - Free - -Offer real-time API, network, and version health information for system status - -``` -GET /v1/health -GET /v1/version -GET /v1/networks -GET /v1/evm/dexes -GET /v1/svm/dexes -``` diff --git a/website/src/pages/pl/token-api/endpoints/endpoint-support.msx b/website/src/pages/pl/token-api/endpoints/endpoint-support.msx deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/website/src/pages/pl/token-api/endpoints/pricing.mdx b/website/src/pages/pl/token-api/endpoints/pricing.mdx new file mode 100644 index 000000000000..df3a04c50a55 --- /dev/null +++ b/website/src/pages/pl/token-api/endpoints/pricing.mdx @@ -0,0 +1,95 @@ +--- +title: Endpoint Pricing +sidebarTitle: Pricing +--- + +## Pricing Tiers + +| Free Tier | Scale Tier | Pro Tier | Enterprise | +| --- | --- | --- | --- | +| $25 of total usage across available endpoints | $50 of total usage across available endpoints | $200 of total usage across available endpoints | Custom plan across available endpoints | +| Query parameters: 10 items returned, batch size 1 | Query parameters: 100 items returned, batch size 25 | Query parameters: 500 items returned, batch size 50 | Custom items returned and batch size | +| Rate limit: 200/min | Rate limit: 500/min | Rate limit: 1000/min | Custom rate limit | +| Time parameters: 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | +| Time interval window: 168 bars | Time interval window: 2160 bars | Time interval window: Full | Time interval window: Full | +| Historical price data: Full availability | Historical price data: Full availability | Historical price data: Full availability | Historical price data: Full availability | +| No additional queries allowed outside of free tier | Pay-as-you-go once included usage is exceeded | Pay-as-you-go once included usage is exceeded | SLAs + Engineering Support | + +## Time Intervals and Parameters (\*) + +1. The **time interval window** is calculated as: **`bars × interval`**. + - **Example**: The Free plan provides 168 bars with a 4h interval: 168 × 4h = 28 days of data. +2. **Full historical data** is available on all plans. +3. **Pagination** is still required to fetch all results. Users won't receive more data than the plan's total bar limit. + - **Example**: The Free plan allows 168 bars and a 10-result limit per query, so you'll need 17 queries to retrieve all pages. +4. You can use **`start_time`** and **`end_time`** to move your time window across history. + - **Example**: `start_time=2025-01-01`, `end_time=2025-01-28`, and `interval=4h` (Free plan) will return 28 days of data for that range. + +## Token Endpoints - $15/mil queries + +Query token transfers, balances, and metadata across EVM and SVM blockchains + +``` +GET /v1/evm/tokens +GET /v1/svm/tokens +GET /v1/tvm/tokens +GET /v1/evm/transfers +GET /v1/svm/transfers +GET /v1/tvm/transfers +GET /v1/tvm/transfers/native +GET /v1/evm/balances +GET /v1/svm/balances +GET /v1/evm/balances/native +GET /v1/svm/balances/native +``` + +## DEX Endpoints - $50/mil queries + +Access on-chain swap, liquidity pool, and decentralized exchange data + +``` +GET /v1/evm/swaps +GET /v1/svm/swaps +GET /v1/tvm/swaps +GET /v1/evm/pools +GET /v1/svm/pools +``` + +## NFT Endpoints - $50/mil queries + +Retrieve NFT transfers, ownership details, collections, and sales activity + +``` +GET /v1/evm/nft/items +GET /v1/evm/nft/collections +GET /v1/evm/nft/sales +GET /v1/evm/nft/ownerships +GET /v1/evm/nft/transfers +``` + +## Aggregate & Historical Endpoints - $200/mil queries + +Provide summarized, ranked, and time-series blockchain data for analytical use + +``` +GET /v1/evm/holders +GET /v1/svm/holders +GET /v1/evm/nft/holders +GET /v1/evm/pools/ohlc +GET /v1/svm/pools/ohlc +GET /v1/tvm/pools/ohlc +GET /v1/evm/balances/historical +``` + +## Monitoring Endpoints - Free + +Offer real-time API, network, and version health information for system status + +``` +GET /v1/health +GET /v1/version +GET /v1/networks +GET /v1/evm/dexes +GET /v1/svm/dexes +GET /v1/tvm/dexes +``` diff --git a/website/src/pages/pl/token-api/endpoints/support.mdx b/website/src/pages/pl/token-api/endpoints/support.mdx new file mode 100644 index 000000000000..652f7457f9b2 --- /dev/null +++ b/website/src/pages/pl/token-api/endpoints/support.mdx @@ -0,0 +1,24 @@ +--- +title: Endpoint Feature Matrix +sidebarTitle: Support Matrix +--- + +import { Check } from '@edgeandnode/gds/icons' + +## Chain and Feature Support + +| Network | Tokens | Swaps | NFTs | +| ----------------- | :-----------------------: | :-----------------------: | :-----------------------: | +| Ethereum Mainnet | | | | +| BSC Mainnet | | | | +| Base Mainnet | | | | +| Unichain Mainnet | | | | +| Arbitrum One | | | | +| Optimism Mainnet | | | | +| Polygon Mainnet | | | | +| Avalanche C-Chain | | | | +| Solana Mainnet | | | ❌ Unsupported | +| Tron Mainnet | | | ❌ Unsupported | + +A full list of chain support for The Graph services can be found [here](/supported-networks/). + diff --git a/website/src/pages/pl/token-api/evm-dexs/_meta.js b/website/src/pages/pl/token-api/evm-dexs/_meta.js index df1d9ecf4a6b..73b5deeddbbc 100644 --- a/website/src/pages/pl/token-api/evm-dexs/_meta.js +++ b/website/src/pages/pl/token-api/evm-dexs/_meta.js @@ -1,6 +1,6 @@ export default { + swaps: '', dexes: '', 'pools-ohlc': '', pools: '', - swaps: '', } diff --git a/website/src/pages/pl/token-api/evm-tokens/_meta.js b/website/src/pages/pl/token-api/evm-tokens/_meta.js index 2aeed42ff9f1..a350a8e8b23f 100644 --- a/website/src/pages/pl/token-api/evm-tokens/_meta.js +++ b/website/src/pages/pl/token-api/evm-tokens/_meta.js @@ -1,8 +1,8 @@ export default { - tokens: '', transfers: '', + holders: '', + tokens: '', balances: '', 'balances-native': '', 'balances-historical': '', - holders: '', } diff --git a/website/src/pages/pl/token-api/svm-dexs/_meta.js b/website/src/pages/pl/token-api/svm-dexs/_meta.js index df1d9ecf4a6b..73b5deeddbbc 100644 --- a/website/src/pages/pl/token-api/svm-dexs/_meta.js +++ b/website/src/pages/pl/token-api/svm-dexs/_meta.js @@ -1,6 +1,6 @@ export default { + swaps: '', dexes: '', 'pools-ohlc': '', pools: '', - swaps: '', } diff --git a/website/src/pages/pt/token-api/_meta.js b/website/src/pages/pt/token-api/_meta.js index 853f9dc09031..6a5860d38ff7 100644 --- a/website/src/pages/pt/token-api/_meta.js +++ b/website/src/pages/pt/token-api/_meta.js @@ -10,7 +10,7 @@ export default { 'tvm-tokens': titles['tvm-tokens'] ?? '', 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', - 'endpoint-pricing': '', + 'endpoints': titles['endpoints'] ?? '', guides: 'Guides', faq: '', } diff --git a/website/src/pages/pt/token-api/endpoints/_meta.js b/website/src/pages/pt/token-api/endpoints/_meta.js index 5d419807937c..33c169163213 100644 --- a/website/src/pages/pt/token-api/endpoints/_meta.js +++ b/website/src/pages/pt/token-api/endpoints/_meta.js @@ -1,4 +1,4 @@ export default { - 'endpoint-pricing': '', - 'endpoint-support': '', + 'pricing': '', + 'support': '', } diff --git a/website/src/pages/pt/token-api/endpoints/endpoint-pricing.mdx b/website/src/pages/pt/token-api/endpoints/endpoint-pricing.mdx deleted file mode 100644 index 1354b7e2bc10..000000000000 --- a/website/src/pages/pt/token-api/endpoints/endpoint-pricing.mdx +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: Endpoint Pricing ---- - -## Pricing Tiers - -| Free Tier | Scale Tier | Pro Tier | Enterprise | -| --- | --- | --- | --- | -| $25 of total usage across available endpoints | $50 of total usage across available endpoints | $200 of total usage across available endpoints | Custom plan across available endpoints | -| Query parameters: 10 items returned, batch size 1 | Query parameters: 100 items returned, batch size 25 | Query parameters: 500 items returned, batch size 50 | Custom items returned and batch size | -| Rate limit: 200/min | Rate limit: 500/min | Rate limit: 1000/min | Custom rate limit | -| Time parameters: 1d, 1w intervals | Time parameters: 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | -| Historical price data: 6 months availability | Historical price data: 2 years availability | Historical price data: Full availability | Historical price data: Full availability | -| No additional queries allowed outside of free tier | Pay-as-you-go once included usage is exceeded | Pay-as-you-go once included usage is exceeded | SLAs + Engineering Support | - -## Token Endpoints - $15/mil queries - -Query token transfers, balances, and metadata across EVM and SVM blockchains - -``` -GET /v1/evm/tokens -GET /v1/svm/tokens -GET /v1/evm/transfers -GET /v1/svm/transfers -GET /v1/evm/balances -GET /v1/svm/balances -GET /v1/evm/balances/native -GET /v1/svm/balances/native -``` - -## DEX Endpoints - $50/mil queries - -Access on-chain swap, liquidity pool, and decentralized exchange data - -``` -GET /v1/evm/swaps -GET /v1/svm/swaps -GET /v1/evm/pools -GET /v1/svm/pools -``` - -## NFT Endpoints - $50/mil queries - -Retrieve NFT transfers, ownership details, collections, and sales activity - -``` -GET /v1/evm/nft/items -GET /v1/evm/nft/collections -GET /v1/evm/nft/sales -GET /v1/evm/nft/ownerships -GET /v1/evm/nft/transfers -``` - -## Aggregate & Historical Endpoints - $200/mil queries - -Provide summarized, ranked, and time-series blockchain data for analytical use - -``` -GET /v1/evm/holders -GET /v1/svm/holders -GET /v1/evm/nft/holders -GET /v1/evm/pools/ohlc -GET /v1/svm/pools/ohlc -GET /v1/evm/balances/historical -``` - -## Monitoring Endpoints - Free - -Offer real-time API, network, and version health information for system status - -``` -GET /v1/health -GET /v1/version -GET /v1/networks -GET /v1/evm/dexes -GET /v1/svm/dexes -``` diff --git a/website/src/pages/pt/token-api/endpoints/endpoint-support.msx b/website/src/pages/pt/token-api/endpoints/endpoint-support.msx deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/website/src/pages/pt/token-api/endpoints/pricing.mdx b/website/src/pages/pt/token-api/endpoints/pricing.mdx new file mode 100644 index 000000000000..df3a04c50a55 --- /dev/null +++ b/website/src/pages/pt/token-api/endpoints/pricing.mdx @@ -0,0 +1,95 @@ +--- +title: Endpoint Pricing +sidebarTitle: Pricing +--- + +## Pricing Tiers + +| Free Tier | Scale Tier | Pro Tier | Enterprise | +| --- | --- | --- | --- | +| $25 of total usage across available endpoints | $50 of total usage across available endpoints | $200 of total usage across available endpoints | Custom plan across available endpoints | +| Query parameters: 10 items returned, batch size 1 | Query parameters: 100 items returned, batch size 25 | Query parameters: 500 items returned, batch size 50 | Custom items returned and batch size | +| Rate limit: 200/min | Rate limit: 500/min | Rate limit: 1000/min | Custom rate limit | +| Time parameters: 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | +| Time interval window: 168 bars | Time interval window: 2160 bars | Time interval window: Full | Time interval window: Full | +| Historical price data: Full availability | Historical price data: Full availability | Historical price data: Full availability | Historical price data: Full availability | +| No additional queries allowed outside of free tier | Pay-as-you-go once included usage is exceeded | Pay-as-you-go once included usage is exceeded | SLAs + Engineering Support | + +## Time Intervals and Parameters (\*) + +1. The **time interval window** is calculated as: **`bars × interval`**. + - **Example**: The Free plan provides 168 bars with a 4h interval: 168 × 4h = 28 days of data. +2. **Full historical data** is available on all plans. +3. **Pagination** is still required to fetch all results. Users won't receive more data than the plan's total bar limit. + - **Example**: The Free plan allows 168 bars and a 10-result limit per query, so you'll need 17 queries to retrieve all pages. +4. You can use **`start_time`** and **`end_time`** to move your time window across history. + - **Example**: `start_time=2025-01-01`, `end_time=2025-01-28`, and `interval=4h` (Free plan) will return 28 days of data for that range. + +## Token Endpoints - $15/mil queries + +Query token transfers, balances, and metadata across EVM and SVM blockchains + +``` +GET /v1/evm/tokens +GET /v1/svm/tokens +GET /v1/tvm/tokens +GET /v1/evm/transfers +GET /v1/svm/transfers +GET /v1/tvm/transfers +GET /v1/tvm/transfers/native +GET /v1/evm/balances +GET /v1/svm/balances +GET /v1/evm/balances/native +GET /v1/svm/balances/native +``` + +## DEX Endpoints - $50/mil queries + +Access on-chain swap, liquidity pool, and decentralized exchange data + +``` +GET /v1/evm/swaps +GET /v1/svm/swaps +GET /v1/tvm/swaps +GET /v1/evm/pools +GET /v1/svm/pools +``` + +## NFT Endpoints - $50/mil queries + +Retrieve NFT transfers, ownership details, collections, and sales activity + +``` +GET /v1/evm/nft/items +GET /v1/evm/nft/collections +GET /v1/evm/nft/sales +GET /v1/evm/nft/ownerships +GET /v1/evm/nft/transfers +``` + +## Aggregate & Historical Endpoints - $200/mil queries + +Provide summarized, ranked, and time-series blockchain data for analytical use + +``` +GET /v1/evm/holders +GET /v1/svm/holders +GET /v1/evm/nft/holders +GET /v1/evm/pools/ohlc +GET /v1/svm/pools/ohlc +GET /v1/tvm/pools/ohlc +GET /v1/evm/balances/historical +``` + +## Monitoring Endpoints - Free + +Offer real-time API, network, and version health information for system status + +``` +GET /v1/health +GET /v1/version +GET /v1/networks +GET /v1/evm/dexes +GET /v1/svm/dexes +GET /v1/tvm/dexes +``` diff --git a/website/src/pages/pt/token-api/endpoints/support.mdx b/website/src/pages/pt/token-api/endpoints/support.mdx new file mode 100644 index 000000000000..652f7457f9b2 --- /dev/null +++ b/website/src/pages/pt/token-api/endpoints/support.mdx @@ -0,0 +1,24 @@ +--- +title: Endpoint Feature Matrix +sidebarTitle: Support Matrix +--- + +import { Check } from '@edgeandnode/gds/icons' + +## Chain and Feature Support + +| Network | Tokens | Swaps | NFTs | +| ----------------- | :-----------------------: | :-----------------------: | :-----------------------: | +| Ethereum Mainnet | | | | +| BSC Mainnet | | | | +| Base Mainnet | | | | +| Unichain Mainnet | | | | +| Arbitrum One | | | | +| Optimism Mainnet | | | | +| Polygon Mainnet | | | | +| Avalanche C-Chain | | | | +| Solana Mainnet | | | ❌ Unsupported | +| Tron Mainnet | | | ❌ Unsupported | + +A full list of chain support for The Graph services can be found [here](/supported-networks/). + diff --git a/website/src/pages/pt/token-api/evm-dexs/_meta.js b/website/src/pages/pt/token-api/evm-dexs/_meta.js index df1d9ecf4a6b..73b5deeddbbc 100644 --- a/website/src/pages/pt/token-api/evm-dexs/_meta.js +++ b/website/src/pages/pt/token-api/evm-dexs/_meta.js @@ -1,6 +1,6 @@ export default { + swaps: '', dexes: '', 'pools-ohlc': '', pools: '', - swaps: '', } diff --git a/website/src/pages/pt/token-api/evm-tokens/_meta.js b/website/src/pages/pt/token-api/evm-tokens/_meta.js index 2aeed42ff9f1..a350a8e8b23f 100644 --- a/website/src/pages/pt/token-api/evm-tokens/_meta.js +++ b/website/src/pages/pt/token-api/evm-tokens/_meta.js @@ -1,8 +1,8 @@ export default { - tokens: '', transfers: '', + holders: '', + tokens: '', balances: '', 'balances-native': '', 'balances-historical': '', - holders: '', } diff --git a/website/src/pages/pt/token-api/svm-dexs/_meta.js b/website/src/pages/pt/token-api/svm-dexs/_meta.js index df1d9ecf4a6b..73b5deeddbbc 100644 --- a/website/src/pages/pt/token-api/svm-dexs/_meta.js +++ b/website/src/pages/pt/token-api/svm-dexs/_meta.js @@ -1,6 +1,6 @@ export default { + swaps: '', dexes: '', 'pools-ohlc': '', pools: '', - swaps: '', } diff --git a/website/src/pages/ro/token-api/_meta.js b/website/src/pages/ro/token-api/_meta.js index 853f9dc09031..6a5860d38ff7 100644 --- a/website/src/pages/ro/token-api/_meta.js +++ b/website/src/pages/ro/token-api/_meta.js @@ -10,7 +10,7 @@ export default { 'tvm-tokens': titles['tvm-tokens'] ?? '', 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', - 'endpoint-pricing': '', + 'endpoints': titles['endpoints'] ?? '', guides: 'Guides', faq: '', } diff --git a/website/src/pages/ro/token-api/endpoints/_meta.js b/website/src/pages/ro/token-api/endpoints/_meta.js index 5d419807937c..33c169163213 100644 --- a/website/src/pages/ro/token-api/endpoints/_meta.js +++ b/website/src/pages/ro/token-api/endpoints/_meta.js @@ -1,4 +1,4 @@ export default { - 'endpoint-pricing': '', - 'endpoint-support': '', + 'pricing': '', + 'support': '', } diff --git a/website/src/pages/ro/token-api/endpoints/endpoint-pricing.mdx b/website/src/pages/ro/token-api/endpoints/endpoint-pricing.mdx deleted file mode 100644 index 1354b7e2bc10..000000000000 --- a/website/src/pages/ro/token-api/endpoints/endpoint-pricing.mdx +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: Endpoint Pricing ---- - -## Pricing Tiers - -| Free Tier | Scale Tier | Pro Tier | Enterprise | -| --- | --- | --- | --- | -| $25 of total usage across available endpoints | $50 of total usage across available endpoints | $200 of total usage across available endpoints | Custom plan across available endpoints | -| Query parameters: 10 items returned, batch size 1 | Query parameters: 100 items returned, batch size 25 | Query parameters: 500 items returned, batch size 50 | Custom items returned and batch size | -| Rate limit: 200/min | Rate limit: 500/min | Rate limit: 1000/min | Custom rate limit | -| Time parameters: 1d, 1w intervals | Time parameters: 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | -| Historical price data: 6 months availability | Historical price data: 2 years availability | Historical price data: Full availability | Historical price data: Full availability | -| No additional queries allowed outside of free tier | Pay-as-you-go once included usage is exceeded | Pay-as-you-go once included usage is exceeded | SLAs + Engineering Support | - -## Token Endpoints - $15/mil queries - -Query token transfers, balances, and metadata across EVM and SVM blockchains - -``` -GET /v1/evm/tokens -GET /v1/svm/tokens -GET /v1/evm/transfers -GET /v1/svm/transfers -GET /v1/evm/balances -GET /v1/svm/balances -GET /v1/evm/balances/native -GET /v1/svm/balances/native -``` - -## DEX Endpoints - $50/mil queries - -Access on-chain swap, liquidity pool, and decentralized exchange data - -``` -GET /v1/evm/swaps -GET /v1/svm/swaps -GET /v1/evm/pools -GET /v1/svm/pools -``` - -## NFT Endpoints - $50/mil queries - -Retrieve NFT transfers, ownership details, collections, and sales activity - -``` -GET /v1/evm/nft/items -GET /v1/evm/nft/collections -GET /v1/evm/nft/sales -GET /v1/evm/nft/ownerships -GET /v1/evm/nft/transfers -``` - -## Aggregate & Historical Endpoints - $200/mil queries - -Provide summarized, ranked, and time-series blockchain data for analytical use - -``` -GET /v1/evm/holders -GET /v1/svm/holders -GET /v1/evm/nft/holders -GET /v1/evm/pools/ohlc -GET /v1/svm/pools/ohlc -GET /v1/evm/balances/historical -``` - -## Monitoring Endpoints - Free - -Offer real-time API, network, and version health information for system status - -``` -GET /v1/health -GET /v1/version -GET /v1/networks -GET /v1/evm/dexes -GET /v1/svm/dexes -``` diff --git a/website/src/pages/ro/token-api/endpoints/endpoint-support.msx b/website/src/pages/ro/token-api/endpoints/endpoint-support.msx deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/website/src/pages/ro/token-api/endpoints/pricing.mdx b/website/src/pages/ro/token-api/endpoints/pricing.mdx new file mode 100644 index 000000000000..df3a04c50a55 --- /dev/null +++ b/website/src/pages/ro/token-api/endpoints/pricing.mdx @@ -0,0 +1,95 @@ +--- +title: Endpoint Pricing +sidebarTitle: Pricing +--- + +## Pricing Tiers + +| Free Tier | Scale Tier | Pro Tier | Enterprise | +| --- | --- | --- | --- | +| $25 of total usage across available endpoints | $50 of total usage across available endpoints | $200 of total usage across available endpoints | Custom plan across available endpoints | +| Query parameters: 10 items returned, batch size 1 | Query parameters: 100 items returned, batch size 25 | Query parameters: 500 items returned, batch size 50 | Custom items returned and batch size | +| Rate limit: 200/min | Rate limit: 500/min | Rate limit: 1000/min | Custom rate limit | +| Time parameters: 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | +| Time interval window: 168 bars | Time interval window: 2160 bars | Time interval window: Full | Time interval window: Full | +| Historical price data: Full availability | Historical price data: Full availability | Historical price data: Full availability | Historical price data: Full availability | +| No additional queries allowed outside of free tier | Pay-as-you-go once included usage is exceeded | Pay-as-you-go once included usage is exceeded | SLAs + Engineering Support | + +## Time Intervals and Parameters (\*) + +1. The **time interval window** is calculated as: **`bars × interval`**. + - **Example**: The Free plan provides 168 bars with a 4h interval: 168 × 4h = 28 days of data. +2. **Full historical data** is available on all plans. +3. **Pagination** is still required to fetch all results. Users won't receive more data than the plan's total bar limit. + - **Example**: The Free plan allows 168 bars and a 10-result limit per query, so you'll need 17 queries to retrieve all pages. +4. You can use **`start_time`** and **`end_time`** to move your time window across history. + - **Example**: `start_time=2025-01-01`, `end_time=2025-01-28`, and `interval=4h` (Free plan) will return 28 days of data for that range. + +## Token Endpoints - $15/mil queries + +Query token transfers, balances, and metadata across EVM and SVM blockchains + +``` +GET /v1/evm/tokens +GET /v1/svm/tokens +GET /v1/tvm/tokens +GET /v1/evm/transfers +GET /v1/svm/transfers +GET /v1/tvm/transfers +GET /v1/tvm/transfers/native +GET /v1/evm/balances +GET /v1/svm/balances +GET /v1/evm/balances/native +GET /v1/svm/balances/native +``` + +## DEX Endpoints - $50/mil queries + +Access on-chain swap, liquidity pool, and decentralized exchange data + +``` +GET /v1/evm/swaps +GET /v1/svm/swaps +GET /v1/tvm/swaps +GET /v1/evm/pools +GET /v1/svm/pools +``` + +## NFT Endpoints - $50/mil queries + +Retrieve NFT transfers, ownership details, collections, and sales activity + +``` +GET /v1/evm/nft/items +GET /v1/evm/nft/collections +GET /v1/evm/nft/sales +GET /v1/evm/nft/ownerships +GET /v1/evm/nft/transfers +``` + +## Aggregate & Historical Endpoints - $200/mil queries + +Provide summarized, ranked, and time-series blockchain data for analytical use + +``` +GET /v1/evm/holders +GET /v1/svm/holders +GET /v1/evm/nft/holders +GET /v1/evm/pools/ohlc +GET /v1/svm/pools/ohlc +GET /v1/tvm/pools/ohlc +GET /v1/evm/balances/historical +``` + +## Monitoring Endpoints - Free + +Offer real-time API, network, and version health information for system status + +``` +GET /v1/health +GET /v1/version +GET /v1/networks +GET /v1/evm/dexes +GET /v1/svm/dexes +GET /v1/tvm/dexes +``` diff --git a/website/src/pages/ro/token-api/endpoints/support.mdx b/website/src/pages/ro/token-api/endpoints/support.mdx new file mode 100644 index 000000000000..652f7457f9b2 --- /dev/null +++ b/website/src/pages/ro/token-api/endpoints/support.mdx @@ -0,0 +1,24 @@ +--- +title: Endpoint Feature Matrix +sidebarTitle: Support Matrix +--- + +import { Check } from '@edgeandnode/gds/icons' + +## Chain and Feature Support + +| Network | Tokens | Swaps | NFTs | +| ----------------- | :-----------------------: | :-----------------------: | :-----------------------: | +| Ethereum Mainnet | | | | +| BSC Mainnet | | | | +| Base Mainnet | | | | +| Unichain Mainnet | | | | +| Arbitrum One | | | | +| Optimism Mainnet | | | | +| Polygon Mainnet | | | | +| Avalanche C-Chain | | | | +| Solana Mainnet | | | ❌ Unsupported | +| Tron Mainnet | | | ❌ Unsupported | + +A full list of chain support for The Graph services can be found [here](/supported-networks/). + diff --git a/website/src/pages/ro/token-api/evm-dexs/_meta.js b/website/src/pages/ro/token-api/evm-dexs/_meta.js index df1d9ecf4a6b..73b5deeddbbc 100644 --- a/website/src/pages/ro/token-api/evm-dexs/_meta.js +++ b/website/src/pages/ro/token-api/evm-dexs/_meta.js @@ -1,6 +1,6 @@ export default { + swaps: '', dexes: '', 'pools-ohlc': '', pools: '', - swaps: '', } diff --git a/website/src/pages/ro/token-api/evm-tokens/_meta.js b/website/src/pages/ro/token-api/evm-tokens/_meta.js index 2aeed42ff9f1..a350a8e8b23f 100644 --- a/website/src/pages/ro/token-api/evm-tokens/_meta.js +++ b/website/src/pages/ro/token-api/evm-tokens/_meta.js @@ -1,8 +1,8 @@ export default { - tokens: '', transfers: '', + holders: '', + tokens: '', balances: '', 'balances-native': '', 'balances-historical': '', - holders: '', } diff --git a/website/src/pages/ro/token-api/svm-dexs/_meta.js b/website/src/pages/ro/token-api/svm-dexs/_meta.js index df1d9ecf4a6b..73b5deeddbbc 100644 --- a/website/src/pages/ro/token-api/svm-dexs/_meta.js +++ b/website/src/pages/ro/token-api/svm-dexs/_meta.js @@ -1,6 +1,6 @@ export default { + swaps: '', dexes: '', 'pools-ohlc': '', pools: '', - swaps: '', } diff --git a/website/src/pages/ru/token-api/_meta.js b/website/src/pages/ru/token-api/_meta.js index 853f9dc09031..6a5860d38ff7 100644 --- a/website/src/pages/ru/token-api/_meta.js +++ b/website/src/pages/ru/token-api/_meta.js @@ -10,7 +10,7 @@ export default { 'tvm-tokens': titles['tvm-tokens'] ?? '', 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', - 'endpoint-pricing': '', + 'endpoints': titles['endpoints'] ?? '', guides: 'Guides', faq: '', } diff --git a/website/src/pages/ru/token-api/endpoints/_meta.js b/website/src/pages/ru/token-api/endpoints/_meta.js index 5d419807937c..33c169163213 100644 --- a/website/src/pages/ru/token-api/endpoints/_meta.js +++ b/website/src/pages/ru/token-api/endpoints/_meta.js @@ -1,4 +1,4 @@ export default { - 'endpoint-pricing': '', - 'endpoint-support': '', + 'pricing': '', + 'support': '', } diff --git a/website/src/pages/ru/token-api/endpoints/endpoint-pricing.mdx b/website/src/pages/ru/token-api/endpoints/endpoint-pricing.mdx deleted file mode 100644 index 1354b7e2bc10..000000000000 --- a/website/src/pages/ru/token-api/endpoints/endpoint-pricing.mdx +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: Endpoint Pricing ---- - -## Pricing Tiers - -| Free Tier | Scale Tier | Pro Tier | Enterprise | -| --- | --- | --- | --- | -| $25 of total usage across available endpoints | $50 of total usage across available endpoints | $200 of total usage across available endpoints | Custom plan across available endpoints | -| Query parameters: 10 items returned, batch size 1 | Query parameters: 100 items returned, batch size 25 | Query parameters: 500 items returned, batch size 50 | Custom items returned and batch size | -| Rate limit: 200/min | Rate limit: 500/min | Rate limit: 1000/min | Custom rate limit | -| Time parameters: 1d, 1w intervals | Time parameters: 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | -| Historical price data: 6 months availability | Historical price data: 2 years availability | Historical price data: Full availability | Historical price data: Full availability | -| No additional queries allowed outside of free tier | Pay-as-you-go once included usage is exceeded | Pay-as-you-go once included usage is exceeded | SLAs + Engineering Support | - -## Token Endpoints - $15/mil queries - -Query token transfers, balances, and metadata across EVM and SVM blockchains - -``` -GET /v1/evm/tokens -GET /v1/svm/tokens -GET /v1/evm/transfers -GET /v1/svm/transfers -GET /v1/evm/balances -GET /v1/svm/balances -GET /v1/evm/balances/native -GET /v1/svm/balances/native -``` - -## DEX Endpoints - $50/mil queries - -Access on-chain swap, liquidity pool, and decentralized exchange data - -``` -GET /v1/evm/swaps -GET /v1/svm/swaps -GET /v1/evm/pools -GET /v1/svm/pools -``` - -## NFT Endpoints - $50/mil queries - -Retrieve NFT transfers, ownership details, collections, and sales activity - -``` -GET /v1/evm/nft/items -GET /v1/evm/nft/collections -GET /v1/evm/nft/sales -GET /v1/evm/nft/ownerships -GET /v1/evm/nft/transfers -``` - -## Aggregate & Historical Endpoints - $200/mil queries - -Provide summarized, ranked, and time-series blockchain data for analytical use - -``` -GET /v1/evm/holders -GET /v1/svm/holders -GET /v1/evm/nft/holders -GET /v1/evm/pools/ohlc -GET /v1/svm/pools/ohlc -GET /v1/evm/balances/historical -``` - -## Monitoring Endpoints - Free - -Offer real-time API, network, and version health information for system status - -``` -GET /v1/health -GET /v1/version -GET /v1/networks -GET /v1/evm/dexes -GET /v1/svm/dexes -``` diff --git a/website/src/pages/ru/token-api/endpoints/endpoint-support.msx b/website/src/pages/ru/token-api/endpoints/endpoint-support.msx deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/website/src/pages/ru/token-api/endpoints/pricing.mdx b/website/src/pages/ru/token-api/endpoints/pricing.mdx new file mode 100644 index 000000000000..df3a04c50a55 --- /dev/null +++ b/website/src/pages/ru/token-api/endpoints/pricing.mdx @@ -0,0 +1,95 @@ +--- +title: Endpoint Pricing +sidebarTitle: Pricing +--- + +## Pricing Tiers + +| Free Tier | Scale Tier | Pro Tier | Enterprise | +| --- | --- | --- | --- | +| $25 of total usage across available endpoints | $50 of total usage across available endpoints | $200 of total usage across available endpoints | Custom plan across available endpoints | +| Query parameters: 10 items returned, batch size 1 | Query parameters: 100 items returned, batch size 25 | Query parameters: 500 items returned, batch size 50 | Custom items returned and batch size | +| Rate limit: 200/min | Rate limit: 500/min | Rate limit: 1000/min | Custom rate limit | +| Time parameters: 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | +| Time interval window: 168 bars | Time interval window: 2160 bars | Time interval window: Full | Time interval window: Full | +| Historical price data: Full availability | Historical price data: Full availability | Historical price data: Full availability | Historical price data: Full availability | +| No additional queries allowed outside of free tier | Pay-as-you-go once included usage is exceeded | Pay-as-you-go once included usage is exceeded | SLAs + Engineering Support | + +## Time Intervals and Parameters (\*) + +1. The **time interval window** is calculated as: **`bars × interval`**. + - **Example**: The Free plan provides 168 bars with a 4h interval: 168 × 4h = 28 days of data. +2. **Full historical data** is available on all plans. +3. **Pagination** is still required to fetch all results. Users won't receive more data than the plan's total bar limit. + - **Example**: The Free plan allows 168 bars and a 10-result limit per query, so you'll need 17 queries to retrieve all pages. +4. You can use **`start_time`** and **`end_time`** to move your time window across history. + - **Example**: `start_time=2025-01-01`, `end_time=2025-01-28`, and `interval=4h` (Free plan) will return 28 days of data for that range. + +## Token Endpoints - $15/mil queries + +Query token transfers, balances, and metadata across EVM and SVM blockchains + +``` +GET /v1/evm/tokens +GET /v1/svm/tokens +GET /v1/tvm/tokens +GET /v1/evm/transfers +GET /v1/svm/transfers +GET /v1/tvm/transfers +GET /v1/tvm/transfers/native +GET /v1/evm/balances +GET /v1/svm/balances +GET /v1/evm/balances/native +GET /v1/svm/balances/native +``` + +## DEX Endpoints - $50/mil queries + +Access on-chain swap, liquidity pool, and decentralized exchange data + +``` +GET /v1/evm/swaps +GET /v1/svm/swaps +GET /v1/tvm/swaps +GET /v1/evm/pools +GET /v1/svm/pools +``` + +## NFT Endpoints - $50/mil queries + +Retrieve NFT transfers, ownership details, collections, and sales activity + +``` +GET /v1/evm/nft/items +GET /v1/evm/nft/collections +GET /v1/evm/nft/sales +GET /v1/evm/nft/ownerships +GET /v1/evm/nft/transfers +``` + +## Aggregate & Historical Endpoints - $200/mil queries + +Provide summarized, ranked, and time-series blockchain data for analytical use + +``` +GET /v1/evm/holders +GET /v1/svm/holders +GET /v1/evm/nft/holders +GET /v1/evm/pools/ohlc +GET /v1/svm/pools/ohlc +GET /v1/tvm/pools/ohlc +GET /v1/evm/balances/historical +``` + +## Monitoring Endpoints - Free + +Offer real-time API, network, and version health information for system status + +``` +GET /v1/health +GET /v1/version +GET /v1/networks +GET /v1/evm/dexes +GET /v1/svm/dexes +GET /v1/tvm/dexes +``` diff --git a/website/src/pages/ru/token-api/endpoints/support.mdx b/website/src/pages/ru/token-api/endpoints/support.mdx new file mode 100644 index 000000000000..652f7457f9b2 --- /dev/null +++ b/website/src/pages/ru/token-api/endpoints/support.mdx @@ -0,0 +1,24 @@ +--- +title: Endpoint Feature Matrix +sidebarTitle: Support Matrix +--- + +import { Check } from '@edgeandnode/gds/icons' + +## Chain and Feature Support + +| Network | Tokens | Swaps | NFTs | +| ----------------- | :-----------------------: | :-----------------------: | :-----------------------: | +| Ethereum Mainnet | | | | +| BSC Mainnet | | | | +| Base Mainnet | | | | +| Unichain Mainnet | | | | +| Arbitrum One | | | | +| Optimism Mainnet | | | | +| Polygon Mainnet | | | | +| Avalanche C-Chain | | | | +| Solana Mainnet | | | ❌ Unsupported | +| Tron Mainnet | | | ❌ Unsupported | + +A full list of chain support for The Graph services can be found [here](/supported-networks/). + diff --git a/website/src/pages/ru/token-api/evm-dexs/_meta.js b/website/src/pages/ru/token-api/evm-dexs/_meta.js index df1d9ecf4a6b..73b5deeddbbc 100644 --- a/website/src/pages/ru/token-api/evm-dexs/_meta.js +++ b/website/src/pages/ru/token-api/evm-dexs/_meta.js @@ -1,6 +1,6 @@ export default { + swaps: '', dexes: '', 'pools-ohlc': '', pools: '', - swaps: '', } diff --git a/website/src/pages/ru/token-api/evm-tokens/_meta.js b/website/src/pages/ru/token-api/evm-tokens/_meta.js index 2aeed42ff9f1..a350a8e8b23f 100644 --- a/website/src/pages/ru/token-api/evm-tokens/_meta.js +++ b/website/src/pages/ru/token-api/evm-tokens/_meta.js @@ -1,8 +1,8 @@ export default { - tokens: '', transfers: '', + holders: '', + tokens: '', balances: '', 'balances-native': '', 'balances-historical': '', - holders: '', } diff --git a/website/src/pages/ru/token-api/svm-dexs/_meta.js b/website/src/pages/ru/token-api/svm-dexs/_meta.js index df1d9ecf4a6b..73b5deeddbbc 100644 --- a/website/src/pages/ru/token-api/svm-dexs/_meta.js +++ b/website/src/pages/ru/token-api/svm-dexs/_meta.js @@ -1,6 +1,6 @@ export default { + swaps: '', dexes: '', 'pools-ohlc': '', pools: '', - swaps: '', } diff --git a/website/src/pages/sv/token-api/_meta.js b/website/src/pages/sv/token-api/_meta.js index 853f9dc09031..6a5860d38ff7 100644 --- a/website/src/pages/sv/token-api/_meta.js +++ b/website/src/pages/sv/token-api/_meta.js @@ -10,7 +10,7 @@ export default { 'tvm-tokens': titles['tvm-tokens'] ?? '', 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', - 'endpoint-pricing': '', + 'endpoints': titles['endpoints'] ?? '', guides: 'Guides', faq: '', } diff --git a/website/src/pages/sv/token-api/endpoints/_meta.js b/website/src/pages/sv/token-api/endpoints/_meta.js index 5d419807937c..33c169163213 100644 --- a/website/src/pages/sv/token-api/endpoints/_meta.js +++ b/website/src/pages/sv/token-api/endpoints/_meta.js @@ -1,4 +1,4 @@ export default { - 'endpoint-pricing': '', - 'endpoint-support': '', + 'pricing': '', + 'support': '', } diff --git a/website/src/pages/sv/token-api/endpoints/endpoint-pricing.mdx b/website/src/pages/sv/token-api/endpoints/endpoint-pricing.mdx deleted file mode 100644 index 1354b7e2bc10..000000000000 --- a/website/src/pages/sv/token-api/endpoints/endpoint-pricing.mdx +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: Endpoint Pricing ---- - -## Pricing Tiers - -| Free Tier | Scale Tier | Pro Tier | Enterprise | -| --- | --- | --- | --- | -| $25 of total usage across available endpoints | $50 of total usage across available endpoints | $200 of total usage across available endpoints | Custom plan across available endpoints | -| Query parameters: 10 items returned, batch size 1 | Query parameters: 100 items returned, batch size 25 | Query parameters: 500 items returned, batch size 50 | Custom items returned and batch size | -| Rate limit: 200/min | Rate limit: 500/min | Rate limit: 1000/min | Custom rate limit | -| Time parameters: 1d, 1w intervals | Time parameters: 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | -| Historical price data: 6 months availability | Historical price data: 2 years availability | Historical price data: Full availability | Historical price data: Full availability | -| No additional queries allowed outside of free tier | Pay-as-you-go once included usage is exceeded | Pay-as-you-go once included usage is exceeded | SLAs + Engineering Support | - -## Token Endpoints - $15/mil queries - -Query token transfers, balances, and metadata across EVM and SVM blockchains - -``` -GET /v1/evm/tokens -GET /v1/svm/tokens -GET /v1/evm/transfers -GET /v1/svm/transfers -GET /v1/evm/balances -GET /v1/svm/balances -GET /v1/evm/balances/native -GET /v1/svm/balances/native -``` - -## DEX Endpoints - $50/mil queries - -Access on-chain swap, liquidity pool, and decentralized exchange data - -``` -GET /v1/evm/swaps -GET /v1/svm/swaps -GET /v1/evm/pools -GET /v1/svm/pools -``` - -## NFT Endpoints - $50/mil queries - -Retrieve NFT transfers, ownership details, collections, and sales activity - -``` -GET /v1/evm/nft/items -GET /v1/evm/nft/collections -GET /v1/evm/nft/sales -GET /v1/evm/nft/ownerships -GET /v1/evm/nft/transfers -``` - -## Aggregate & Historical Endpoints - $200/mil queries - -Provide summarized, ranked, and time-series blockchain data for analytical use - -``` -GET /v1/evm/holders -GET /v1/svm/holders -GET /v1/evm/nft/holders -GET /v1/evm/pools/ohlc -GET /v1/svm/pools/ohlc -GET /v1/evm/balances/historical -``` - -## Monitoring Endpoints - Free - -Offer real-time API, network, and version health information for system status - -``` -GET /v1/health -GET /v1/version -GET /v1/networks -GET /v1/evm/dexes -GET /v1/svm/dexes -``` diff --git a/website/src/pages/sv/token-api/endpoints/endpoint-support.msx b/website/src/pages/sv/token-api/endpoints/endpoint-support.msx deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/website/src/pages/sv/token-api/endpoints/pricing.mdx b/website/src/pages/sv/token-api/endpoints/pricing.mdx new file mode 100644 index 000000000000..df3a04c50a55 --- /dev/null +++ b/website/src/pages/sv/token-api/endpoints/pricing.mdx @@ -0,0 +1,95 @@ +--- +title: Endpoint Pricing +sidebarTitle: Pricing +--- + +## Pricing Tiers + +| Free Tier | Scale Tier | Pro Tier | Enterprise | +| --- | --- | --- | --- | +| $25 of total usage across available endpoints | $50 of total usage across available endpoints | $200 of total usage across available endpoints | Custom plan across available endpoints | +| Query parameters: 10 items returned, batch size 1 | Query parameters: 100 items returned, batch size 25 | Query parameters: 500 items returned, batch size 50 | Custom items returned and batch size | +| Rate limit: 200/min | Rate limit: 500/min | Rate limit: 1000/min | Custom rate limit | +| Time parameters: 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | +| Time interval window: 168 bars | Time interval window: 2160 bars | Time interval window: Full | Time interval window: Full | +| Historical price data: Full availability | Historical price data: Full availability | Historical price data: Full availability | Historical price data: Full availability | +| No additional queries allowed outside of free tier | Pay-as-you-go once included usage is exceeded | Pay-as-you-go once included usage is exceeded | SLAs + Engineering Support | + +## Time Intervals and Parameters (\*) + +1. The **time interval window** is calculated as: **`bars × interval`**. + - **Example**: The Free plan provides 168 bars with a 4h interval: 168 × 4h = 28 days of data. +2. **Full historical data** is available on all plans. +3. **Pagination** is still required to fetch all results. Users won't receive more data than the plan's total bar limit. + - **Example**: The Free plan allows 168 bars and a 10-result limit per query, so you'll need 17 queries to retrieve all pages. +4. You can use **`start_time`** and **`end_time`** to move your time window across history. + - **Example**: `start_time=2025-01-01`, `end_time=2025-01-28`, and `interval=4h` (Free plan) will return 28 days of data for that range. + +## Token Endpoints - $15/mil queries + +Query token transfers, balances, and metadata across EVM and SVM blockchains + +``` +GET /v1/evm/tokens +GET /v1/svm/tokens +GET /v1/tvm/tokens +GET /v1/evm/transfers +GET /v1/svm/transfers +GET /v1/tvm/transfers +GET /v1/tvm/transfers/native +GET /v1/evm/balances +GET /v1/svm/balances +GET /v1/evm/balances/native +GET /v1/svm/balances/native +``` + +## DEX Endpoints - $50/mil queries + +Access on-chain swap, liquidity pool, and decentralized exchange data + +``` +GET /v1/evm/swaps +GET /v1/svm/swaps +GET /v1/tvm/swaps +GET /v1/evm/pools +GET /v1/svm/pools +``` + +## NFT Endpoints - $50/mil queries + +Retrieve NFT transfers, ownership details, collections, and sales activity + +``` +GET /v1/evm/nft/items +GET /v1/evm/nft/collections +GET /v1/evm/nft/sales +GET /v1/evm/nft/ownerships +GET /v1/evm/nft/transfers +``` + +## Aggregate & Historical Endpoints - $200/mil queries + +Provide summarized, ranked, and time-series blockchain data for analytical use + +``` +GET /v1/evm/holders +GET /v1/svm/holders +GET /v1/evm/nft/holders +GET /v1/evm/pools/ohlc +GET /v1/svm/pools/ohlc +GET /v1/tvm/pools/ohlc +GET /v1/evm/balances/historical +``` + +## Monitoring Endpoints - Free + +Offer real-time API, network, and version health information for system status + +``` +GET /v1/health +GET /v1/version +GET /v1/networks +GET /v1/evm/dexes +GET /v1/svm/dexes +GET /v1/tvm/dexes +``` diff --git a/website/src/pages/sv/token-api/endpoints/support.mdx b/website/src/pages/sv/token-api/endpoints/support.mdx new file mode 100644 index 000000000000..652f7457f9b2 --- /dev/null +++ b/website/src/pages/sv/token-api/endpoints/support.mdx @@ -0,0 +1,24 @@ +--- +title: Endpoint Feature Matrix +sidebarTitle: Support Matrix +--- + +import { Check } from '@edgeandnode/gds/icons' + +## Chain and Feature Support + +| Network | Tokens | Swaps | NFTs | +| ----------------- | :-----------------------: | :-----------------------: | :-----------------------: | +| Ethereum Mainnet | | | | +| BSC Mainnet | | | | +| Base Mainnet | | | | +| Unichain Mainnet | | | | +| Arbitrum One | | | | +| Optimism Mainnet | | | | +| Polygon Mainnet | | | | +| Avalanche C-Chain | | | | +| Solana Mainnet | | | ❌ Unsupported | +| Tron Mainnet | | | ❌ Unsupported | + +A full list of chain support for The Graph services can be found [here](/supported-networks/). + diff --git a/website/src/pages/sv/token-api/evm-dexs/_meta.js b/website/src/pages/sv/token-api/evm-dexs/_meta.js index df1d9ecf4a6b..73b5deeddbbc 100644 --- a/website/src/pages/sv/token-api/evm-dexs/_meta.js +++ b/website/src/pages/sv/token-api/evm-dexs/_meta.js @@ -1,6 +1,6 @@ export default { + swaps: '', dexes: '', 'pools-ohlc': '', pools: '', - swaps: '', } diff --git a/website/src/pages/sv/token-api/evm-tokens/_meta.js b/website/src/pages/sv/token-api/evm-tokens/_meta.js index 2aeed42ff9f1..a350a8e8b23f 100644 --- a/website/src/pages/sv/token-api/evm-tokens/_meta.js +++ b/website/src/pages/sv/token-api/evm-tokens/_meta.js @@ -1,8 +1,8 @@ export default { - tokens: '', transfers: '', + holders: '', + tokens: '', balances: '', 'balances-native': '', 'balances-historical': '', - holders: '', } diff --git a/website/src/pages/sv/token-api/svm-dexs/_meta.js b/website/src/pages/sv/token-api/svm-dexs/_meta.js index df1d9ecf4a6b..73b5deeddbbc 100644 --- a/website/src/pages/sv/token-api/svm-dexs/_meta.js +++ b/website/src/pages/sv/token-api/svm-dexs/_meta.js @@ -1,6 +1,6 @@ export default { + swaps: '', dexes: '', 'pools-ohlc': '', pools: '', - swaps: '', } diff --git a/website/src/pages/tr/token-api/_meta.js b/website/src/pages/tr/token-api/_meta.js index 853f9dc09031..6a5860d38ff7 100644 --- a/website/src/pages/tr/token-api/_meta.js +++ b/website/src/pages/tr/token-api/_meta.js @@ -10,7 +10,7 @@ export default { 'tvm-tokens': titles['tvm-tokens'] ?? '', 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', - 'endpoint-pricing': '', + 'endpoints': titles['endpoints'] ?? '', guides: 'Guides', faq: '', } diff --git a/website/src/pages/tr/token-api/endpoints/_meta.js b/website/src/pages/tr/token-api/endpoints/_meta.js index 5d419807937c..33c169163213 100644 --- a/website/src/pages/tr/token-api/endpoints/_meta.js +++ b/website/src/pages/tr/token-api/endpoints/_meta.js @@ -1,4 +1,4 @@ export default { - 'endpoint-pricing': '', - 'endpoint-support': '', + 'pricing': '', + 'support': '', } diff --git a/website/src/pages/tr/token-api/endpoints/endpoint-pricing.mdx b/website/src/pages/tr/token-api/endpoints/endpoint-pricing.mdx deleted file mode 100644 index 1354b7e2bc10..000000000000 --- a/website/src/pages/tr/token-api/endpoints/endpoint-pricing.mdx +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: Endpoint Pricing ---- - -## Pricing Tiers - -| Free Tier | Scale Tier | Pro Tier | Enterprise | -| --- | --- | --- | --- | -| $25 of total usage across available endpoints | $50 of total usage across available endpoints | $200 of total usage across available endpoints | Custom plan across available endpoints | -| Query parameters: 10 items returned, batch size 1 | Query parameters: 100 items returned, batch size 25 | Query parameters: 500 items returned, batch size 50 | Custom items returned and batch size | -| Rate limit: 200/min | Rate limit: 500/min | Rate limit: 1000/min | Custom rate limit | -| Time parameters: 1d, 1w intervals | Time parameters: 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | -| Historical price data: 6 months availability | Historical price data: 2 years availability | Historical price data: Full availability | Historical price data: Full availability | -| No additional queries allowed outside of free tier | Pay-as-you-go once included usage is exceeded | Pay-as-you-go once included usage is exceeded | SLAs + Engineering Support | - -## Token Endpoints - $15/mil queries - -Query token transfers, balances, and metadata across EVM and SVM blockchains - -``` -GET /v1/evm/tokens -GET /v1/svm/tokens -GET /v1/evm/transfers -GET /v1/svm/transfers -GET /v1/evm/balances -GET /v1/svm/balances -GET /v1/evm/balances/native -GET /v1/svm/balances/native -``` - -## DEX Endpoints - $50/mil queries - -Access on-chain swap, liquidity pool, and decentralized exchange data - -``` -GET /v1/evm/swaps -GET /v1/svm/swaps -GET /v1/evm/pools -GET /v1/svm/pools -``` - -## NFT Endpoints - $50/mil queries - -Retrieve NFT transfers, ownership details, collections, and sales activity - -``` -GET /v1/evm/nft/items -GET /v1/evm/nft/collections -GET /v1/evm/nft/sales -GET /v1/evm/nft/ownerships -GET /v1/evm/nft/transfers -``` - -## Aggregate & Historical Endpoints - $200/mil queries - -Provide summarized, ranked, and time-series blockchain data for analytical use - -``` -GET /v1/evm/holders -GET /v1/svm/holders -GET /v1/evm/nft/holders -GET /v1/evm/pools/ohlc -GET /v1/svm/pools/ohlc -GET /v1/evm/balances/historical -``` - -## Monitoring Endpoints - Free - -Offer real-time API, network, and version health information for system status - -``` -GET /v1/health -GET /v1/version -GET /v1/networks -GET /v1/evm/dexes -GET /v1/svm/dexes -``` diff --git a/website/src/pages/tr/token-api/endpoints/endpoint-support.msx b/website/src/pages/tr/token-api/endpoints/endpoint-support.msx deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/website/src/pages/tr/token-api/endpoints/pricing.mdx b/website/src/pages/tr/token-api/endpoints/pricing.mdx new file mode 100644 index 000000000000..df3a04c50a55 --- /dev/null +++ b/website/src/pages/tr/token-api/endpoints/pricing.mdx @@ -0,0 +1,95 @@ +--- +title: Endpoint Pricing +sidebarTitle: Pricing +--- + +## Pricing Tiers + +| Free Tier | Scale Tier | Pro Tier | Enterprise | +| --- | --- | --- | --- | +| $25 of total usage across available endpoints | $50 of total usage across available endpoints | $200 of total usage across available endpoints | Custom plan across available endpoints | +| Query parameters: 10 items returned, batch size 1 | Query parameters: 100 items returned, batch size 25 | Query parameters: 500 items returned, batch size 50 | Custom items returned and batch size | +| Rate limit: 200/min | Rate limit: 500/min | Rate limit: 1000/min | Custom rate limit | +| Time parameters: 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | +| Time interval window: 168 bars | Time interval window: 2160 bars | Time interval window: Full | Time interval window: Full | +| Historical price data: Full availability | Historical price data: Full availability | Historical price data: Full availability | Historical price data: Full availability | +| No additional queries allowed outside of free tier | Pay-as-you-go once included usage is exceeded | Pay-as-you-go once included usage is exceeded | SLAs + Engineering Support | + +## Time Intervals and Parameters (\*) + +1. The **time interval window** is calculated as: **`bars × interval`**. + - **Example**: The Free plan provides 168 bars with a 4h interval: 168 × 4h = 28 days of data. +2. **Full historical data** is available on all plans. +3. **Pagination** is still required to fetch all results. Users won't receive more data than the plan's total bar limit. + - **Example**: The Free plan allows 168 bars and a 10-result limit per query, so you'll need 17 queries to retrieve all pages. +4. You can use **`start_time`** and **`end_time`** to move your time window across history. + - **Example**: `start_time=2025-01-01`, `end_time=2025-01-28`, and `interval=4h` (Free plan) will return 28 days of data for that range. + +## Token Endpoints - $15/mil queries + +Query token transfers, balances, and metadata across EVM and SVM blockchains + +``` +GET /v1/evm/tokens +GET /v1/svm/tokens +GET /v1/tvm/tokens +GET /v1/evm/transfers +GET /v1/svm/transfers +GET /v1/tvm/transfers +GET /v1/tvm/transfers/native +GET /v1/evm/balances +GET /v1/svm/balances +GET /v1/evm/balances/native +GET /v1/svm/balances/native +``` + +## DEX Endpoints - $50/mil queries + +Access on-chain swap, liquidity pool, and decentralized exchange data + +``` +GET /v1/evm/swaps +GET /v1/svm/swaps +GET /v1/tvm/swaps +GET /v1/evm/pools +GET /v1/svm/pools +``` + +## NFT Endpoints - $50/mil queries + +Retrieve NFT transfers, ownership details, collections, and sales activity + +``` +GET /v1/evm/nft/items +GET /v1/evm/nft/collections +GET /v1/evm/nft/sales +GET /v1/evm/nft/ownerships +GET /v1/evm/nft/transfers +``` + +## Aggregate & Historical Endpoints - $200/mil queries + +Provide summarized, ranked, and time-series blockchain data for analytical use + +``` +GET /v1/evm/holders +GET /v1/svm/holders +GET /v1/evm/nft/holders +GET /v1/evm/pools/ohlc +GET /v1/svm/pools/ohlc +GET /v1/tvm/pools/ohlc +GET /v1/evm/balances/historical +``` + +## Monitoring Endpoints - Free + +Offer real-time API, network, and version health information for system status + +``` +GET /v1/health +GET /v1/version +GET /v1/networks +GET /v1/evm/dexes +GET /v1/svm/dexes +GET /v1/tvm/dexes +``` diff --git a/website/src/pages/tr/token-api/endpoints/support.mdx b/website/src/pages/tr/token-api/endpoints/support.mdx new file mode 100644 index 000000000000..652f7457f9b2 --- /dev/null +++ b/website/src/pages/tr/token-api/endpoints/support.mdx @@ -0,0 +1,24 @@ +--- +title: Endpoint Feature Matrix +sidebarTitle: Support Matrix +--- + +import { Check } from '@edgeandnode/gds/icons' + +## Chain and Feature Support + +| Network | Tokens | Swaps | NFTs | +| ----------------- | :-----------------------: | :-----------------------: | :-----------------------: | +| Ethereum Mainnet | | | | +| BSC Mainnet | | | | +| Base Mainnet | | | | +| Unichain Mainnet | | | | +| Arbitrum One | | | | +| Optimism Mainnet | | | | +| Polygon Mainnet | | | | +| Avalanche C-Chain | | | | +| Solana Mainnet | | | ❌ Unsupported | +| Tron Mainnet | | | ❌ Unsupported | + +A full list of chain support for The Graph services can be found [here](/supported-networks/). + diff --git a/website/src/pages/tr/token-api/evm-dexs/_meta.js b/website/src/pages/tr/token-api/evm-dexs/_meta.js index df1d9ecf4a6b..73b5deeddbbc 100644 --- a/website/src/pages/tr/token-api/evm-dexs/_meta.js +++ b/website/src/pages/tr/token-api/evm-dexs/_meta.js @@ -1,6 +1,6 @@ export default { + swaps: '', dexes: '', 'pools-ohlc': '', pools: '', - swaps: '', } diff --git a/website/src/pages/tr/token-api/evm-tokens/_meta.js b/website/src/pages/tr/token-api/evm-tokens/_meta.js index 2aeed42ff9f1..a350a8e8b23f 100644 --- a/website/src/pages/tr/token-api/evm-tokens/_meta.js +++ b/website/src/pages/tr/token-api/evm-tokens/_meta.js @@ -1,8 +1,8 @@ export default { - tokens: '', transfers: '', + holders: '', + tokens: '', balances: '', 'balances-native': '', 'balances-historical': '', - holders: '', } diff --git a/website/src/pages/tr/token-api/svm-dexs/_meta.js b/website/src/pages/tr/token-api/svm-dexs/_meta.js index df1d9ecf4a6b..73b5deeddbbc 100644 --- a/website/src/pages/tr/token-api/svm-dexs/_meta.js +++ b/website/src/pages/tr/token-api/svm-dexs/_meta.js @@ -1,6 +1,6 @@ export default { + swaps: '', dexes: '', 'pools-ohlc': '', pools: '', - swaps: '', } diff --git a/website/src/pages/uk/token-api/_meta.js b/website/src/pages/uk/token-api/_meta.js index 853f9dc09031..6a5860d38ff7 100644 --- a/website/src/pages/uk/token-api/_meta.js +++ b/website/src/pages/uk/token-api/_meta.js @@ -10,7 +10,7 @@ export default { 'tvm-tokens': titles['tvm-tokens'] ?? '', 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', - 'endpoint-pricing': '', + 'endpoints': titles['endpoints'] ?? '', guides: 'Guides', faq: '', } diff --git a/website/src/pages/uk/token-api/endpoints/_meta.js b/website/src/pages/uk/token-api/endpoints/_meta.js index 5d419807937c..33c169163213 100644 --- a/website/src/pages/uk/token-api/endpoints/_meta.js +++ b/website/src/pages/uk/token-api/endpoints/_meta.js @@ -1,4 +1,4 @@ export default { - 'endpoint-pricing': '', - 'endpoint-support': '', + 'pricing': '', + 'support': '', } diff --git a/website/src/pages/uk/token-api/endpoints/endpoint-pricing.mdx b/website/src/pages/uk/token-api/endpoints/endpoint-pricing.mdx deleted file mode 100644 index 1354b7e2bc10..000000000000 --- a/website/src/pages/uk/token-api/endpoints/endpoint-pricing.mdx +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: Endpoint Pricing ---- - -## Pricing Tiers - -| Free Tier | Scale Tier | Pro Tier | Enterprise | -| --- | --- | --- | --- | -| $25 of total usage across available endpoints | $50 of total usage across available endpoints | $200 of total usage across available endpoints | Custom plan across available endpoints | -| Query parameters: 10 items returned, batch size 1 | Query parameters: 100 items returned, batch size 25 | Query parameters: 500 items returned, batch size 50 | Custom items returned and batch size | -| Rate limit: 200/min | Rate limit: 500/min | Rate limit: 1000/min | Custom rate limit | -| Time parameters: 1d, 1w intervals | Time parameters: 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | -| Historical price data: 6 months availability | Historical price data: 2 years availability | Historical price data: Full availability | Historical price data: Full availability | -| No additional queries allowed outside of free tier | Pay-as-you-go once included usage is exceeded | Pay-as-you-go once included usage is exceeded | SLAs + Engineering Support | - -## Token Endpoints - $15/mil queries - -Query token transfers, balances, and metadata across EVM and SVM blockchains - -``` -GET /v1/evm/tokens -GET /v1/svm/tokens -GET /v1/evm/transfers -GET /v1/svm/transfers -GET /v1/evm/balances -GET /v1/svm/balances -GET /v1/evm/balances/native -GET /v1/svm/balances/native -``` - -## DEX Endpoints - $50/mil queries - -Access on-chain swap, liquidity pool, and decentralized exchange data - -``` -GET /v1/evm/swaps -GET /v1/svm/swaps -GET /v1/evm/pools -GET /v1/svm/pools -``` - -## NFT Endpoints - $50/mil queries - -Retrieve NFT transfers, ownership details, collections, and sales activity - -``` -GET /v1/evm/nft/items -GET /v1/evm/nft/collections -GET /v1/evm/nft/sales -GET /v1/evm/nft/ownerships -GET /v1/evm/nft/transfers -``` - -## Aggregate & Historical Endpoints - $200/mil queries - -Provide summarized, ranked, and time-series blockchain data for analytical use - -``` -GET /v1/evm/holders -GET /v1/svm/holders -GET /v1/evm/nft/holders -GET /v1/evm/pools/ohlc -GET /v1/svm/pools/ohlc -GET /v1/evm/balances/historical -``` - -## Monitoring Endpoints - Free - -Offer real-time API, network, and version health information for system status - -``` -GET /v1/health -GET /v1/version -GET /v1/networks -GET /v1/evm/dexes -GET /v1/svm/dexes -``` diff --git a/website/src/pages/uk/token-api/endpoints/endpoint-support.msx b/website/src/pages/uk/token-api/endpoints/endpoint-support.msx deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/website/src/pages/uk/token-api/endpoints/pricing.mdx b/website/src/pages/uk/token-api/endpoints/pricing.mdx new file mode 100644 index 000000000000..df3a04c50a55 --- /dev/null +++ b/website/src/pages/uk/token-api/endpoints/pricing.mdx @@ -0,0 +1,95 @@ +--- +title: Endpoint Pricing +sidebarTitle: Pricing +--- + +## Pricing Tiers + +| Free Tier | Scale Tier | Pro Tier | Enterprise | +| --- | --- | --- | --- | +| $25 of total usage across available endpoints | $50 of total usage across available endpoints | $200 of total usage across available endpoints | Custom plan across available endpoints | +| Query parameters: 10 items returned, batch size 1 | Query parameters: 100 items returned, batch size 25 | Query parameters: 500 items returned, batch size 50 | Custom items returned and batch size | +| Rate limit: 200/min | Rate limit: 500/min | Rate limit: 1000/min | Custom rate limit | +| Time parameters: 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | +| Time interval window: 168 bars | Time interval window: 2160 bars | Time interval window: Full | Time interval window: Full | +| Historical price data: Full availability | Historical price data: Full availability | Historical price data: Full availability | Historical price data: Full availability | +| No additional queries allowed outside of free tier | Pay-as-you-go once included usage is exceeded | Pay-as-you-go once included usage is exceeded | SLAs + Engineering Support | + +## Time Intervals and Parameters (\*) + +1. The **time interval window** is calculated as: **`bars × interval`**. + - **Example**: The Free plan provides 168 bars with a 4h interval: 168 × 4h = 28 days of data. +2. **Full historical data** is available on all plans. +3. **Pagination** is still required to fetch all results. Users won't receive more data than the plan's total bar limit. + - **Example**: The Free plan allows 168 bars and a 10-result limit per query, so you'll need 17 queries to retrieve all pages. +4. You can use **`start_time`** and **`end_time`** to move your time window across history. + - **Example**: `start_time=2025-01-01`, `end_time=2025-01-28`, and `interval=4h` (Free plan) will return 28 days of data for that range. + +## Token Endpoints - $15/mil queries + +Query token transfers, balances, and metadata across EVM and SVM blockchains + +``` +GET /v1/evm/tokens +GET /v1/svm/tokens +GET /v1/tvm/tokens +GET /v1/evm/transfers +GET /v1/svm/transfers +GET /v1/tvm/transfers +GET /v1/tvm/transfers/native +GET /v1/evm/balances +GET /v1/svm/balances +GET /v1/evm/balances/native +GET /v1/svm/balances/native +``` + +## DEX Endpoints - $50/mil queries + +Access on-chain swap, liquidity pool, and decentralized exchange data + +``` +GET /v1/evm/swaps +GET /v1/svm/swaps +GET /v1/tvm/swaps +GET /v1/evm/pools +GET /v1/svm/pools +``` + +## NFT Endpoints - $50/mil queries + +Retrieve NFT transfers, ownership details, collections, and sales activity + +``` +GET /v1/evm/nft/items +GET /v1/evm/nft/collections +GET /v1/evm/nft/sales +GET /v1/evm/nft/ownerships +GET /v1/evm/nft/transfers +``` + +## Aggregate & Historical Endpoints - $200/mil queries + +Provide summarized, ranked, and time-series blockchain data for analytical use + +``` +GET /v1/evm/holders +GET /v1/svm/holders +GET /v1/evm/nft/holders +GET /v1/evm/pools/ohlc +GET /v1/svm/pools/ohlc +GET /v1/tvm/pools/ohlc +GET /v1/evm/balances/historical +``` + +## Monitoring Endpoints - Free + +Offer real-time API, network, and version health information for system status + +``` +GET /v1/health +GET /v1/version +GET /v1/networks +GET /v1/evm/dexes +GET /v1/svm/dexes +GET /v1/tvm/dexes +``` diff --git a/website/src/pages/uk/token-api/endpoints/support.mdx b/website/src/pages/uk/token-api/endpoints/support.mdx new file mode 100644 index 000000000000..652f7457f9b2 --- /dev/null +++ b/website/src/pages/uk/token-api/endpoints/support.mdx @@ -0,0 +1,24 @@ +--- +title: Endpoint Feature Matrix +sidebarTitle: Support Matrix +--- + +import { Check } from '@edgeandnode/gds/icons' + +## Chain and Feature Support + +| Network | Tokens | Swaps | NFTs | +| ----------------- | :-----------------------: | :-----------------------: | :-----------------------: | +| Ethereum Mainnet | | | | +| BSC Mainnet | | | | +| Base Mainnet | | | | +| Unichain Mainnet | | | | +| Arbitrum One | | | | +| Optimism Mainnet | | | | +| Polygon Mainnet | | | | +| Avalanche C-Chain | | | | +| Solana Mainnet | | | ❌ Unsupported | +| Tron Mainnet | | | ❌ Unsupported | + +A full list of chain support for The Graph services can be found [here](/supported-networks/). + diff --git a/website/src/pages/uk/token-api/evm-dexs/_meta.js b/website/src/pages/uk/token-api/evm-dexs/_meta.js index df1d9ecf4a6b..73b5deeddbbc 100644 --- a/website/src/pages/uk/token-api/evm-dexs/_meta.js +++ b/website/src/pages/uk/token-api/evm-dexs/_meta.js @@ -1,6 +1,6 @@ export default { + swaps: '', dexes: '', 'pools-ohlc': '', pools: '', - swaps: '', } diff --git a/website/src/pages/uk/token-api/evm-tokens/_meta.js b/website/src/pages/uk/token-api/evm-tokens/_meta.js index 2aeed42ff9f1..a350a8e8b23f 100644 --- a/website/src/pages/uk/token-api/evm-tokens/_meta.js +++ b/website/src/pages/uk/token-api/evm-tokens/_meta.js @@ -1,8 +1,8 @@ export default { - tokens: '', transfers: '', + holders: '', + tokens: '', balances: '', 'balances-native': '', 'balances-historical': '', - holders: '', } diff --git a/website/src/pages/uk/token-api/svm-dexs/_meta.js b/website/src/pages/uk/token-api/svm-dexs/_meta.js index df1d9ecf4a6b..73b5deeddbbc 100644 --- a/website/src/pages/uk/token-api/svm-dexs/_meta.js +++ b/website/src/pages/uk/token-api/svm-dexs/_meta.js @@ -1,6 +1,6 @@ export default { + swaps: '', dexes: '', 'pools-ohlc': '', pools: '', - swaps: '', } diff --git a/website/src/pages/ur/token-api/_meta.js b/website/src/pages/ur/token-api/_meta.js index 853f9dc09031..6a5860d38ff7 100644 --- a/website/src/pages/ur/token-api/_meta.js +++ b/website/src/pages/ur/token-api/_meta.js @@ -10,7 +10,7 @@ export default { 'tvm-tokens': titles['tvm-tokens'] ?? '', 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', - 'endpoint-pricing': '', + 'endpoints': titles['endpoints'] ?? '', guides: 'Guides', faq: '', } diff --git a/website/src/pages/ur/token-api/endpoints/_meta.js b/website/src/pages/ur/token-api/endpoints/_meta.js index 5d419807937c..33c169163213 100644 --- a/website/src/pages/ur/token-api/endpoints/_meta.js +++ b/website/src/pages/ur/token-api/endpoints/_meta.js @@ -1,4 +1,4 @@ export default { - 'endpoint-pricing': '', - 'endpoint-support': '', + 'pricing': '', + 'support': '', } diff --git a/website/src/pages/ur/token-api/endpoints/endpoint-pricing.mdx b/website/src/pages/ur/token-api/endpoints/endpoint-pricing.mdx deleted file mode 100644 index 1354b7e2bc10..000000000000 --- a/website/src/pages/ur/token-api/endpoints/endpoint-pricing.mdx +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: Endpoint Pricing ---- - -## Pricing Tiers - -| Free Tier | Scale Tier | Pro Tier | Enterprise | -| --- | --- | --- | --- | -| $25 of total usage across available endpoints | $50 of total usage across available endpoints | $200 of total usage across available endpoints | Custom plan across available endpoints | -| Query parameters: 10 items returned, batch size 1 | Query parameters: 100 items returned, batch size 25 | Query parameters: 500 items returned, batch size 50 | Custom items returned and batch size | -| Rate limit: 200/min | Rate limit: 500/min | Rate limit: 1000/min | Custom rate limit | -| Time parameters: 1d, 1w intervals | Time parameters: 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | -| Historical price data: 6 months availability | Historical price data: 2 years availability | Historical price data: Full availability | Historical price data: Full availability | -| No additional queries allowed outside of free tier | Pay-as-you-go once included usage is exceeded | Pay-as-you-go once included usage is exceeded | SLAs + Engineering Support | - -## Token Endpoints - $15/mil queries - -Query token transfers, balances, and metadata across EVM and SVM blockchains - -``` -GET /v1/evm/tokens -GET /v1/svm/tokens -GET /v1/evm/transfers -GET /v1/svm/transfers -GET /v1/evm/balances -GET /v1/svm/balances -GET /v1/evm/balances/native -GET /v1/svm/balances/native -``` - -## DEX Endpoints - $50/mil queries - -Access on-chain swap, liquidity pool, and decentralized exchange data - -``` -GET /v1/evm/swaps -GET /v1/svm/swaps -GET /v1/evm/pools -GET /v1/svm/pools -``` - -## NFT Endpoints - $50/mil queries - -Retrieve NFT transfers, ownership details, collections, and sales activity - -``` -GET /v1/evm/nft/items -GET /v1/evm/nft/collections -GET /v1/evm/nft/sales -GET /v1/evm/nft/ownerships -GET /v1/evm/nft/transfers -``` - -## Aggregate & Historical Endpoints - $200/mil queries - -Provide summarized, ranked, and time-series blockchain data for analytical use - -``` -GET /v1/evm/holders -GET /v1/svm/holders -GET /v1/evm/nft/holders -GET /v1/evm/pools/ohlc -GET /v1/svm/pools/ohlc -GET /v1/evm/balances/historical -``` - -## Monitoring Endpoints - Free - -Offer real-time API, network, and version health information for system status - -``` -GET /v1/health -GET /v1/version -GET /v1/networks -GET /v1/evm/dexes -GET /v1/svm/dexes -``` diff --git a/website/src/pages/ur/token-api/endpoints/endpoint-support.msx b/website/src/pages/ur/token-api/endpoints/endpoint-support.msx deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/website/src/pages/ur/token-api/endpoints/pricing.mdx b/website/src/pages/ur/token-api/endpoints/pricing.mdx new file mode 100644 index 000000000000..df3a04c50a55 --- /dev/null +++ b/website/src/pages/ur/token-api/endpoints/pricing.mdx @@ -0,0 +1,95 @@ +--- +title: Endpoint Pricing +sidebarTitle: Pricing +--- + +## Pricing Tiers + +| Free Tier | Scale Tier | Pro Tier | Enterprise | +| --- | --- | --- | --- | +| $25 of total usage across available endpoints | $50 of total usage across available endpoints | $200 of total usage across available endpoints | Custom plan across available endpoints | +| Query parameters: 10 items returned, batch size 1 | Query parameters: 100 items returned, batch size 25 | Query parameters: 500 items returned, batch size 50 | Custom items returned and batch size | +| Rate limit: 200/min | Rate limit: 500/min | Rate limit: 1000/min | Custom rate limit | +| Time parameters: 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | +| Time interval window: 168 bars | Time interval window: 2160 bars | Time interval window: Full | Time interval window: Full | +| Historical price data: Full availability | Historical price data: Full availability | Historical price data: Full availability | Historical price data: Full availability | +| No additional queries allowed outside of free tier | Pay-as-you-go once included usage is exceeded | Pay-as-you-go once included usage is exceeded | SLAs + Engineering Support | + +## Time Intervals and Parameters (\*) + +1. The **time interval window** is calculated as: **`bars × interval`**. + - **Example**: The Free plan provides 168 bars with a 4h interval: 168 × 4h = 28 days of data. +2. **Full historical data** is available on all plans. +3. **Pagination** is still required to fetch all results. Users won't receive more data than the plan's total bar limit. + - **Example**: The Free plan allows 168 bars and a 10-result limit per query, so you'll need 17 queries to retrieve all pages. +4. You can use **`start_time`** and **`end_time`** to move your time window across history. + - **Example**: `start_time=2025-01-01`, `end_time=2025-01-28`, and `interval=4h` (Free plan) will return 28 days of data for that range. + +## Token Endpoints - $15/mil queries + +Query token transfers, balances, and metadata across EVM and SVM blockchains + +``` +GET /v1/evm/tokens +GET /v1/svm/tokens +GET /v1/tvm/tokens +GET /v1/evm/transfers +GET /v1/svm/transfers +GET /v1/tvm/transfers +GET /v1/tvm/transfers/native +GET /v1/evm/balances +GET /v1/svm/balances +GET /v1/evm/balances/native +GET /v1/svm/balances/native +``` + +## DEX Endpoints - $50/mil queries + +Access on-chain swap, liquidity pool, and decentralized exchange data + +``` +GET /v1/evm/swaps +GET /v1/svm/swaps +GET /v1/tvm/swaps +GET /v1/evm/pools +GET /v1/svm/pools +``` + +## NFT Endpoints - $50/mil queries + +Retrieve NFT transfers, ownership details, collections, and sales activity + +``` +GET /v1/evm/nft/items +GET /v1/evm/nft/collections +GET /v1/evm/nft/sales +GET /v1/evm/nft/ownerships +GET /v1/evm/nft/transfers +``` + +## Aggregate & Historical Endpoints - $200/mil queries + +Provide summarized, ranked, and time-series blockchain data for analytical use + +``` +GET /v1/evm/holders +GET /v1/svm/holders +GET /v1/evm/nft/holders +GET /v1/evm/pools/ohlc +GET /v1/svm/pools/ohlc +GET /v1/tvm/pools/ohlc +GET /v1/evm/balances/historical +``` + +## Monitoring Endpoints - Free + +Offer real-time API, network, and version health information for system status + +``` +GET /v1/health +GET /v1/version +GET /v1/networks +GET /v1/evm/dexes +GET /v1/svm/dexes +GET /v1/tvm/dexes +``` diff --git a/website/src/pages/ur/token-api/endpoints/support.mdx b/website/src/pages/ur/token-api/endpoints/support.mdx new file mode 100644 index 000000000000..652f7457f9b2 --- /dev/null +++ b/website/src/pages/ur/token-api/endpoints/support.mdx @@ -0,0 +1,24 @@ +--- +title: Endpoint Feature Matrix +sidebarTitle: Support Matrix +--- + +import { Check } from '@edgeandnode/gds/icons' + +## Chain and Feature Support + +| Network | Tokens | Swaps | NFTs | +| ----------------- | :-----------------------: | :-----------------------: | :-----------------------: | +| Ethereum Mainnet | | | | +| BSC Mainnet | | | | +| Base Mainnet | | | | +| Unichain Mainnet | | | | +| Arbitrum One | | | | +| Optimism Mainnet | | | | +| Polygon Mainnet | | | | +| Avalanche C-Chain | | | | +| Solana Mainnet | | | ❌ Unsupported | +| Tron Mainnet | | | ❌ Unsupported | + +A full list of chain support for The Graph services can be found [here](/supported-networks/). + diff --git a/website/src/pages/ur/token-api/evm-dexs/_meta.js b/website/src/pages/ur/token-api/evm-dexs/_meta.js index df1d9ecf4a6b..73b5deeddbbc 100644 --- a/website/src/pages/ur/token-api/evm-dexs/_meta.js +++ b/website/src/pages/ur/token-api/evm-dexs/_meta.js @@ -1,6 +1,6 @@ export default { + swaps: '', dexes: '', 'pools-ohlc': '', pools: '', - swaps: '', } diff --git a/website/src/pages/ur/token-api/evm-tokens/_meta.js b/website/src/pages/ur/token-api/evm-tokens/_meta.js index 2aeed42ff9f1..a350a8e8b23f 100644 --- a/website/src/pages/ur/token-api/evm-tokens/_meta.js +++ b/website/src/pages/ur/token-api/evm-tokens/_meta.js @@ -1,8 +1,8 @@ export default { - tokens: '', transfers: '', + holders: '', + tokens: '', balances: '', 'balances-native': '', 'balances-historical': '', - holders: '', } diff --git a/website/src/pages/ur/token-api/svm-dexs/_meta.js b/website/src/pages/ur/token-api/svm-dexs/_meta.js index df1d9ecf4a6b..73b5deeddbbc 100644 --- a/website/src/pages/ur/token-api/svm-dexs/_meta.js +++ b/website/src/pages/ur/token-api/svm-dexs/_meta.js @@ -1,6 +1,6 @@ export default { + swaps: '', dexes: '', 'pools-ohlc': '', pools: '', - swaps: '', } diff --git a/website/src/pages/vi/token-api/_meta.js b/website/src/pages/vi/token-api/_meta.js index 853f9dc09031..6a5860d38ff7 100644 --- a/website/src/pages/vi/token-api/_meta.js +++ b/website/src/pages/vi/token-api/_meta.js @@ -10,7 +10,7 @@ export default { 'tvm-tokens': titles['tvm-tokens'] ?? '', 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', - 'endpoint-pricing': '', + 'endpoints': titles['endpoints'] ?? '', guides: 'Guides', faq: '', } diff --git a/website/src/pages/vi/token-api/endpoints/_meta.js b/website/src/pages/vi/token-api/endpoints/_meta.js index 5d419807937c..33c169163213 100644 --- a/website/src/pages/vi/token-api/endpoints/_meta.js +++ b/website/src/pages/vi/token-api/endpoints/_meta.js @@ -1,4 +1,4 @@ export default { - 'endpoint-pricing': '', - 'endpoint-support': '', + 'pricing': '', + 'support': '', } diff --git a/website/src/pages/vi/token-api/endpoints/endpoint-pricing.mdx b/website/src/pages/vi/token-api/endpoints/endpoint-pricing.mdx deleted file mode 100644 index 1354b7e2bc10..000000000000 --- a/website/src/pages/vi/token-api/endpoints/endpoint-pricing.mdx +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: Endpoint Pricing ---- - -## Pricing Tiers - -| Free Tier | Scale Tier | Pro Tier | Enterprise | -| --- | --- | --- | --- | -| $25 of total usage across available endpoints | $50 of total usage across available endpoints | $200 of total usage across available endpoints | Custom plan across available endpoints | -| Query parameters: 10 items returned, batch size 1 | Query parameters: 100 items returned, batch size 25 | Query parameters: 500 items returned, batch size 50 | Custom items returned and batch size | -| Rate limit: 200/min | Rate limit: 500/min | Rate limit: 1000/min | Custom rate limit | -| Time parameters: 1d, 1w intervals | Time parameters: 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | -| Historical price data: 6 months availability | Historical price data: 2 years availability | Historical price data: Full availability | Historical price data: Full availability | -| No additional queries allowed outside of free tier | Pay-as-you-go once included usage is exceeded | Pay-as-you-go once included usage is exceeded | SLAs + Engineering Support | - -## Token Endpoints - $15/mil queries - -Query token transfers, balances, and metadata across EVM and SVM blockchains - -``` -GET /v1/evm/tokens -GET /v1/svm/tokens -GET /v1/evm/transfers -GET /v1/svm/transfers -GET /v1/evm/balances -GET /v1/svm/balances -GET /v1/evm/balances/native -GET /v1/svm/balances/native -``` - -## DEX Endpoints - $50/mil queries - -Access on-chain swap, liquidity pool, and decentralized exchange data - -``` -GET /v1/evm/swaps -GET /v1/svm/swaps -GET /v1/evm/pools -GET /v1/svm/pools -``` - -## NFT Endpoints - $50/mil queries - -Retrieve NFT transfers, ownership details, collections, and sales activity - -``` -GET /v1/evm/nft/items -GET /v1/evm/nft/collections -GET /v1/evm/nft/sales -GET /v1/evm/nft/ownerships -GET /v1/evm/nft/transfers -``` - -## Aggregate & Historical Endpoints - $200/mil queries - -Provide summarized, ranked, and time-series blockchain data for analytical use - -``` -GET /v1/evm/holders -GET /v1/svm/holders -GET /v1/evm/nft/holders -GET /v1/evm/pools/ohlc -GET /v1/svm/pools/ohlc -GET /v1/evm/balances/historical -``` - -## Monitoring Endpoints - Free - -Offer real-time API, network, and version health information for system status - -``` -GET /v1/health -GET /v1/version -GET /v1/networks -GET /v1/evm/dexes -GET /v1/svm/dexes -``` diff --git a/website/src/pages/vi/token-api/endpoints/endpoint-support.msx b/website/src/pages/vi/token-api/endpoints/endpoint-support.msx deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/website/src/pages/vi/token-api/endpoints/pricing.mdx b/website/src/pages/vi/token-api/endpoints/pricing.mdx new file mode 100644 index 000000000000..df3a04c50a55 --- /dev/null +++ b/website/src/pages/vi/token-api/endpoints/pricing.mdx @@ -0,0 +1,95 @@ +--- +title: Endpoint Pricing +sidebarTitle: Pricing +--- + +## Pricing Tiers + +| Free Tier | Scale Tier | Pro Tier | Enterprise | +| --- | --- | --- | --- | +| $25 of total usage across available endpoints | $50 of total usage across available endpoints | $200 of total usage across available endpoints | Custom plan across available endpoints | +| Query parameters: 10 items returned, batch size 1 | Query parameters: 100 items returned, batch size 25 | Query parameters: 500 items returned, batch size 50 | Custom items returned and batch size | +| Rate limit: 200/min | Rate limit: 500/min | Rate limit: 1000/min | Custom rate limit | +| Time parameters: 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | +| Time interval window: 168 bars | Time interval window: 2160 bars | Time interval window: Full | Time interval window: Full | +| Historical price data: Full availability | Historical price data: Full availability | Historical price data: Full availability | Historical price data: Full availability | +| No additional queries allowed outside of free tier | Pay-as-you-go once included usage is exceeded | Pay-as-you-go once included usage is exceeded | SLAs + Engineering Support | + +## Time Intervals and Parameters (\*) + +1. The **time interval window** is calculated as: **`bars × interval`**. + - **Example**: The Free plan provides 168 bars with a 4h interval: 168 × 4h = 28 days of data. +2. **Full historical data** is available on all plans. +3. **Pagination** is still required to fetch all results. Users won't receive more data than the plan's total bar limit. + - **Example**: The Free plan allows 168 bars and a 10-result limit per query, so you'll need 17 queries to retrieve all pages. +4. You can use **`start_time`** and **`end_time`** to move your time window across history. + - **Example**: `start_time=2025-01-01`, `end_time=2025-01-28`, and `interval=4h` (Free plan) will return 28 days of data for that range. + +## Token Endpoints - $15/mil queries + +Query token transfers, balances, and metadata across EVM and SVM blockchains + +``` +GET /v1/evm/tokens +GET /v1/svm/tokens +GET /v1/tvm/tokens +GET /v1/evm/transfers +GET /v1/svm/transfers +GET /v1/tvm/transfers +GET /v1/tvm/transfers/native +GET /v1/evm/balances +GET /v1/svm/balances +GET /v1/evm/balances/native +GET /v1/svm/balances/native +``` + +## DEX Endpoints - $50/mil queries + +Access on-chain swap, liquidity pool, and decentralized exchange data + +``` +GET /v1/evm/swaps +GET /v1/svm/swaps +GET /v1/tvm/swaps +GET /v1/evm/pools +GET /v1/svm/pools +``` + +## NFT Endpoints - $50/mil queries + +Retrieve NFT transfers, ownership details, collections, and sales activity + +``` +GET /v1/evm/nft/items +GET /v1/evm/nft/collections +GET /v1/evm/nft/sales +GET /v1/evm/nft/ownerships +GET /v1/evm/nft/transfers +``` + +## Aggregate & Historical Endpoints - $200/mil queries + +Provide summarized, ranked, and time-series blockchain data for analytical use + +``` +GET /v1/evm/holders +GET /v1/svm/holders +GET /v1/evm/nft/holders +GET /v1/evm/pools/ohlc +GET /v1/svm/pools/ohlc +GET /v1/tvm/pools/ohlc +GET /v1/evm/balances/historical +``` + +## Monitoring Endpoints - Free + +Offer real-time API, network, and version health information for system status + +``` +GET /v1/health +GET /v1/version +GET /v1/networks +GET /v1/evm/dexes +GET /v1/svm/dexes +GET /v1/tvm/dexes +``` diff --git a/website/src/pages/vi/token-api/endpoints/support.mdx b/website/src/pages/vi/token-api/endpoints/support.mdx new file mode 100644 index 000000000000..652f7457f9b2 --- /dev/null +++ b/website/src/pages/vi/token-api/endpoints/support.mdx @@ -0,0 +1,24 @@ +--- +title: Endpoint Feature Matrix +sidebarTitle: Support Matrix +--- + +import { Check } from '@edgeandnode/gds/icons' + +## Chain and Feature Support + +| Network | Tokens | Swaps | NFTs | +| ----------------- | :-----------------------: | :-----------------------: | :-----------------------: | +| Ethereum Mainnet | | | | +| BSC Mainnet | | | | +| Base Mainnet | | | | +| Unichain Mainnet | | | | +| Arbitrum One | | | | +| Optimism Mainnet | | | | +| Polygon Mainnet | | | | +| Avalanche C-Chain | | | | +| Solana Mainnet | | | ❌ Unsupported | +| Tron Mainnet | | | ❌ Unsupported | + +A full list of chain support for The Graph services can be found [here](/supported-networks/). + diff --git a/website/src/pages/vi/token-api/evm-dexs/_meta.js b/website/src/pages/vi/token-api/evm-dexs/_meta.js index df1d9ecf4a6b..73b5deeddbbc 100644 --- a/website/src/pages/vi/token-api/evm-dexs/_meta.js +++ b/website/src/pages/vi/token-api/evm-dexs/_meta.js @@ -1,6 +1,6 @@ export default { + swaps: '', dexes: '', 'pools-ohlc': '', pools: '', - swaps: '', } diff --git a/website/src/pages/vi/token-api/evm-tokens/_meta.js b/website/src/pages/vi/token-api/evm-tokens/_meta.js index 2aeed42ff9f1..a350a8e8b23f 100644 --- a/website/src/pages/vi/token-api/evm-tokens/_meta.js +++ b/website/src/pages/vi/token-api/evm-tokens/_meta.js @@ -1,8 +1,8 @@ export default { - tokens: '', transfers: '', + holders: '', + tokens: '', balances: '', 'balances-native': '', 'balances-historical': '', - holders: '', } diff --git a/website/src/pages/vi/token-api/svm-dexs/_meta.js b/website/src/pages/vi/token-api/svm-dexs/_meta.js index df1d9ecf4a6b..73b5deeddbbc 100644 --- a/website/src/pages/vi/token-api/svm-dexs/_meta.js +++ b/website/src/pages/vi/token-api/svm-dexs/_meta.js @@ -1,6 +1,6 @@ export default { + swaps: '', dexes: '', 'pools-ohlc': '', pools: '', - swaps: '', } diff --git a/website/src/pages/zh/token-api/_meta.js b/website/src/pages/zh/token-api/_meta.js index 853f9dc09031..6a5860d38ff7 100644 --- a/website/src/pages/zh/token-api/_meta.js +++ b/website/src/pages/zh/token-api/_meta.js @@ -10,7 +10,7 @@ export default { 'tvm-tokens': titles['tvm-tokens'] ?? '', 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', - 'endpoint-pricing': '', + 'endpoints': titles['endpoints'] ?? '', guides: 'Guides', faq: '', } diff --git a/website/src/pages/zh/token-api/endpoints/_meta.js b/website/src/pages/zh/token-api/endpoints/_meta.js index 5d419807937c..33c169163213 100644 --- a/website/src/pages/zh/token-api/endpoints/_meta.js +++ b/website/src/pages/zh/token-api/endpoints/_meta.js @@ -1,4 +1,4 @@ export default { - 'endpoint-pricing': '', - 'endpoint-support': '', + 'pricing': '', + 'support': '', } diff --git a/website/src/pages/zh/token-api/endpoints/endpoint-pricing.mdx b/website/src/pages/zh/token-api/endpoints/endpoint-pricing.mdx deleted file mode 100644 index 1354b7e2bc10..000000000000 --- a/website/src/pages/zh/token-api/endpoints/endpoint-pricing.mdx +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: Endpoint Pricing ---- - -## Pricing Tiers - -| Free Tier | Scale Tier | Pro Tier | Enterprise | -| --- | --- | --- | --- | -| $25 of total usage across available endpoints | $50 of total usage across available endpoints | $200 of total usage across available endpoints | Custom plan across available endpoints | -| Query parameters: 10 items returned, batch size 1 | Query parameters: 100 items returned, batch size 25 | Query parameters: 500 items returned, batch size 50 | Custom items returned and batch size | -| Rate limit: 200/min | Rate limit: 500/min | Rate limit: 1000/min | Custom rate limit | -| Time parameters: 1d, 1w intervals | Time parameters: 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | -| Historical price data: 6 months availability | Historical price data: 2 years availability | Historical price data: Full availability | Historical price data: Full availability | -| No additional queries allowed outside of free tier | Pay-as-you-go once included usage is exceeded | Pay-as-you-go once included usage is exceeded | SLAs + Engineering Support | - -## Token Endpoints - $15/mil queries - -Query token transfers, balances, and metadata across EVM and SVM blockchains - -``` -GET /v1/evm/tokens -GET /v1/svm/tokens -GET /v1/evm/transfers -GET /v1/svm/transfers -GET /v1/evm/balances -GET /v1/svm/balances -GET /v1/evm/balances/native -GET /v1/svm/balances/native -``` - -## DEX Endpoints - $50/mil queries - -Access on-chain swap, liquidity pool, and decentralized exchange data - -``` -GET /v1/evm/swaps -GET /v1/svm/swaps -GET /v1/evm/pools -GET /v1/svm/pools -``` - -## NFT Endpoints - $50/mil queries - -Retrieve NFT transfers, ownership details, collections, and sales activity - -``` -GET /v1/evm/nft/items -GET /v1/evm/nft/collections -GET /v1/evm/nft/sales -GET /v1/evm/nft/ownerships -GET /v1/evm/nft/transfers -``` - -## Aggregate & Historical Endpoints - $200/mil queries - -Provide summarized, ranked, and time-series blockchain data for analytical use - -``` -GET /v1/evm/holders -GET /v1/svm/holders -GET /v1/evm/nft/holders -GET /v1/evm/pools/ohlc -GET /v1/svm/pools/ohlc -GET /v1/evm/balances/historical -``` - -## Monitoring Endpoints - Free - -Offer real-time API, network, and version health information for system status - -``` -GET /v1/health -GET /v1/version -GET /v1/networks -GET /v1/evm/dexes -GET /v1/svm/dexes -``` diff --git a/website/src/pages/zh/token-api/endpoints/endpoint-support.msx b/website/src/pages/zh/token-api/endpoints/endpoint-support.msx deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/website/src/pages/zh/token-api/endpoints/pricing.mdx b/website/src/pages/zh/token-api/endpoints/pricing.mdx new file mode 100644 index 000000000000..df3a04c50a55 --- /dev/null +++ b/website/src/pages/zh/token-api/endpoints/pricing.mdx @@ -0,0 +1,95 @@ +--- +title: Endpoint Pricing +sidebarTitle: Pricing +--- + +## Pricing Tiers + +| Free Tier | Scale Tier | Pro Tier | Enterprise | +| --- | --- | --- | --- | +| $25 of total usage across available endpoints | $50 of total usage across available endpoints | $200 of total usage across available endpoints | Custom plan across available endpoints | +| Query parameters: 10 items returned, batch size 1 | Query parameters: 100 items returned, batch size 25 | Query parameters: 500 items returned, batch size 50 | Custom items returned and batch size | +| Rate limit: 200/min | Rate limit: 500/min | Rate limit: 1000/min | Custom rate limit | +| Time parameters: 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | Time parameters: 1h, 4h, 1d, 1w intervals | +| Time interval window: 168 bars | Time interval window: 2160 bars | Time interval window: Full | Time interval window: Full | +| Historical price data: Full availability | Historical price data: Full availability | Historical price data: Full availability | Historical price data: Full availability | +| No additional queries allowed outside of free tier | Pay-as-you-go once included usage is exceeded | Pay-as-you-go once included usage is exceeded | SLAs + Engineering Support | + +## Time Intervals and Parameters (\*) + +1. The **time interval window** is calculated as: **`bars × interval`**. + - **Example**: The Free plan provides 168 bars with a 4h interval: 168 × 4h = 28 days of data. +2. **Full historical data** is available on all plans. +3. **Pagination** is still required to fetch all results. Users won't receive more data than the plan's total bar limit. + - **Example**: The Free plan allows 168 bars and a 10-result limit per query, so you'll need 17 queries to retrieve all pages. +4. You can use **`start_time`** and **`end_time`** to move your time window across history. + - **Example**: `start_time=2025-01-01`, `end_time=2025-01-28`, and `interval=4h` (Free plan) will return 28 days of data for that range. + +## Token Endpoints - $15/mil queries + +Query token transfers, balances, and metadata across EVM and SVM blockchains + +``` +GET /v1/evm/tokens +GET /v1/svm/tokens +GET /v1/tvm/tokens +GET /v1/evm/transfers +GET /v1/svm/transfers +GET /v1/tvm/transfers +GET /v1/tvm/transfers/native +GET /v1/evm/balances +GET /v1/svm/balances +GET /v1/evm/balances/native +GET /v1/svm/balances/native +``` + +## DEX Endpoints - $50/mil queries + +Access on-chain swap, liquidity pool, and decentralized exchange data + +``` +GET /v1/evm/swaps +GET /v1/svm/swaps +GET /v1/tvm/swaps +GET /v1/evm/pools +GET /v1/svm/pools +``` + +## NFT Endpoints - $50/mil queries + +Retrieve NFT transfers, ownership details, collections, and sales activity + +``` +GET /v1/evm/nft/items +GET /v1/evm/nft/collections +GET /v1/evm/nft/sales +GET /v1/evm/nft/ownerships +GET /v1/evm/nft/transfers +``` + +## Aggregate & Historical Endpoints - $200/mil queries + +Provide summarized, ranked, and time-series blockchain data for analytical use + +``` +GET /v1/evm/holders +GET /v1/svm/holders +GET /v1/evm/nft/holders +GET /v1/evm/pools/ohlc +GET /v1/svm/pools/ohlc +GET /v1/tvm/pools/ohlc +GET /v1/evm/balances/historical +``` + +## Monitoring Endpoints - Free + +Offer real-time API, network, and version health information for system status + +``` +GET /v1/health +GET /v1/version +GET /v1/networks +GET /v1/evm/dexes +GET /v1/svm/dexes +GET /v1/tvm/dexes +``` diff --git a/website/src/pages/zh/token-api/endpoints/support.mdx b/website/src/pages/zh/token-api/endpoints/support.mdx new file mode 100644 index 000000000000..652f7457f9b2 --- /dev/null +++ b/website/src/pages/zh/token-api/endpoints/support.mdx @@ -0,0 +1,24 @@ +--- +title: Endpoint Feature Matrix +sidebarTitle: Support Matrix +--- + +import { Check } from '@edgeandnode/gds/icons' + +## Chain and Feature Support + +| Network | Tokens | Swaps | NFTs | +| ----------------- | :-----------------------: | :-----------------------: | :-----------------------: | +| Ethereum Mainnet | | | | +| BSC Mainnet | | | | +| Base Mainnet | | | | +| Unichain Mainnet | | | | +| Arbitrum One | | | | +| Optimism Mainnet | | | | +| Polygon Mainnet | | | | +| Avalanche C-Chain | | | | +| Solana Mainnet | | | ❌ Unsupported | +| Tron Mainnet | | | ❌ Unsupported | + +A full list of chain support for The Graph services can be found [here](/supported-networks/). + diff --git a/website/src/pages/zh/token-api/evm-dexs/_meta.js b/website/src/pages/zh/token-api/evm-dexs/_meta.js index df1d9ecf4a6b..73b5deeddbbc 100644 --- a/website/src/pages/zh/token-api/evm-dexs/_meta.js +++ b/website/src/pages/zh/token-api/evm-dexs/_meta.js @@ -1,6 +1,6 @@ export default { + swaps: '', dexes: '', 'pools-ohlc': '', pools: '', - swaps: '', } diff --git a/website/src/pages/zh/token-api/evm-tokens/_meta.js b/website/src/pages/zh/token-api/evm-tokens/_meta.js index 2aeed42ff9f1..a350a8e8b23f 100644 --- a/website/src/pages/zh/token-api/evm-tokens/_meta.js +++ b/website/src/pages/zh/token-api/evm-tokens/_meta.js @@ -1,8 +1,8 @@ export default { - tokens: '', transfers: '', + holders: '', + tokens: '', balances: '', 'balances-native': '', 'balances-historical': '', - holders: '', } diff --git a/website/src/pages/zh/token-api/svm-dexs/_meta.js b/website/src/pages/zh/token-api/svm-dexs/_meta.js index df1d9ecf4a6b..73b5deeddbbc 100644 --- a/website/src/pages/zh/token-api/svm-dexs/_meta.js +++ b/website/src/pages/zh/token-api/svm-dexs/_meta.js @@ -1,6 +1,6 @@ export default { + swaps: '', dexes: '', 'pools-ohlc': '', pools: '', - swaps: '', } From 5d33d3575104facc8ee19ccf2cfe9692ab36ae5a Mon Sep 17 00:00:00 2001 From: Hau <37109389+jhjhjh94@users.noreply.github.com> Date: Fri, 5 Dec 2025 04:56:05 +0800 Subject: [PATCH 05/14] Update DEX listings and sort by swap volume, fixed chain names on Protocol Contracts page (#1055) Update DEX listings and sort by swap volume --- website/src/pages/en/contracts.mdx | 4 ++-- website/src/pages/en/token-api/faq.mdx | 16 ++++++++++++++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/website/src/pages/en/contracts.mdx b/website/src/pages/en/contracts.mdx index 3938844149c1..3a3450cfbedf 100644 --- a/website/src/pages/en/contracts.mdx +++ b/website/src/pages/en/contracts.mdx @@ -6,13 +6,13 @@ import { ProtocolContractsTable } from '@/contracts' Below are the deployed contracts which power The Graph Network. Visit the official [contracts repository](https://github.com/graphprotocol/contracts) to learn more. -## Arbitrum +## Arbitrum One This is the principal deployment of The Graph Network. -## Mainnet +## Ethereum Mainnet This was the original deployment of The Graph Network. [Learn more](/archived/arbitrum/arbitrum-faq/) about The Graph's scaling with Arbitrum. diff --git a/website/src/pages/en/token-api/faq.mdx b/website/src/pages/en/token-api/faq.mdx index 99dc813fecff..6b4676a425e7 100644 --- a/website/src/pages/en/token-api/faq.mdx +++ b/website/src/pages/en/token-api/faq.mdx @@ -131,8 +131,12 @@ Swaps are being reported via Aggregator programs and do not include amm_pool fie - Uniswap V2 - Uniswap V3 +- Uniswap V1 - Uniswap V4 - SushiSwap V2 +- Balancer +- Curve +- Bancor - Ring Swap - Shiba Inu - Crypto.com: DeFi Swap @@ -159,6 +163,8 @@ Swaps are being reported via Aggregator programs and do not include amm_pool fie - Uniswap V3 - Uniswap V4 - SushiSwap V3 +- Balancer +- Curve - Ramses - SushiSwap V2 - Uniswap V2 @@ -181,6 +187,8 @@ Swaps are being reported via Aggregator programs and do not include amm_pool fie - Uniswap V4 - SushiSwap V2 - Uniswap V2 +- Balancer +- Curve - Stabl.fi - SushiSwap V3 - SweepnFlip @@ -222,6 +230,7 @@ Swaps are being reported via Aggregator programs and do not include amm_pool fie - Uniswap V4 - Velodrome V3 - Velodrome V2 +- Balancer - Curve - Beethoven X @@ -236,6 +245,7 @@ Swaps are being reported via Aggregator programs and do not include amm_pool fie - Uniswap V4 - Lydia Finance - SushiSwap V2 +- Curve - OliveSwap #### Base Mainnet @@ -244,6 +254,8 @@ Swaps are being reported via Aggregator programs and do not include amm_pool fie - Uniswap V2 - Uniswap V4 - SushiSwap V2 +- Balancer +- Curve - BaseSwap - Alien Base V3 - BaseSwap V2 @@ -252,9 +264,9 @@ Swaps are being reported via Aggregator programs and do not include amm_pool fie #### Tron Mainnet -- SunSwap V1 (JustSwap) -- SunSwap V2 - SunPump +- SunSwap V2 +- SunSwap V1 (JustSwap) - USwap - SunSwap 1.5 (JustSwap) - ISwap V1 From 3e567b9558a996c78031c78ab337d4d6d5037b75 Mon Sep 17 00:00:00 2001 From: Jerry Okolo <73024324+itsjerryokolo@users.noreply.github.com> Date: Wed, 10 Dec 2025 16:14:47 +0100 Subject: [PATCH 06/14] Remove all arweave.mdx files (#1056) * Remove all arweave.mdx files * Remove 'arweave' entry from guides metadata * Remove 'arweave' entry from guides metadata across multiple language files --- .../src/pages/ar/subgraphs/guides/_meta.js | 1 - .../src/pages/ar/subgraphs/guides/arweave.mdx | 239 ------------------ .../src/pages/cs/subgraphs/guides/_meta.js | 2 +- .../src/pages/cs/subgraphs/guides/arweave.mdx | 239 ------------------ .../src/pages/de/subgraphs/guides/_meta.js | 2 +- .../src/pages/de/subgraphs/guides/arweave.mdx | 238 ----------------- .../src/pages/en/subgraphs/guides/_meta.js | 2 +- .../src/pages/en/subgraphs/guides/arweave.mdx | 239 ------------------ .../src/pages/es/subgraphs/guides/_meta.js | 2 +- .../src/pages/es/subgraphs/guides/arweave.mdx | 239 ------------------ .../src/pages/fr/subgraphs/guides/_meta.js | 2 +- .../src/pages/fr/subgraphs/guides/arweave.mdx | 239 ------------------ .../src/pages/hi/subgraphs/guides/_meta.js | 2 +- .../src/pages/hi/subgraphs/guides/arweave.mdx | 239 ------------------ .../src/pages/it/subgraphs/guides/_meta.js | 2 +- .../src/pages/it/subgraphs/guides/arweave.mdx | 239 ------------------ .../src/pages/ja/subgraphs/guides/_meta.js | 2 +- .../src/pages/ja/subgraphs/guides/arweave.mdx | 239 ------------------ .../src/pages/ko/subgraphs/guides/_meta.js | 2 +- .../src/pages/ko/subgraphs/guides/arweave.mdx | 239 ------------------ .../src/pages/mr/subgraphs/guides/_meta.js | 2 +- .../src/pages/mr/subgraphs/guides/arweave.mdx | 239 ------------------ .../src/pages/nl/subgraphs/guides/_meta.js | 2 +- .../src/pages/nl/subgraphs/guides/arweave.mdx | 239 ------------------ .../src/pages/pl/subgraphs/guides/_meta.js | 2 +- .../src/pages/pl/subgraphs/guides/arweave.mdx | 239 ------------------ .../src/pages/pt/subgraphs/guides/_meta.js | 2 +- .../src/pages/pt/subgraphs/guides/arweave.mdx | 239 ------------------ .../src/pages/ro/subgraphs/guides/_meta.js | 2 +- .../src/pages/ro/subgraphs/guides/arweave.mdx | 239 ------------------ .../src/pages/ru/subgraphs/guides/_meta.js | 2 +- .../src/pages/ru/subgraphs/guides/arweave.mdx | 239 ------------------ .../src/pages/sv/subgraphs/guides/_meta.js | 2 +- .../src/pages/sv/subgraphs/guides/arweave.mdx | 239 ------------------ .../src/pages/tr/subgraphs/guides/_meta.js | 2 +- .../src/pages/tr/subgraphs/guides/arweave.mdx | 239 ------------------ .../src/pages/uk/subgraphs/guides/_meta.js | 2 +- .../src/pages/uk/subgraphs/guides/arweave.mdx | 239 ------------------ .../src/pages/ur/subgraphs/guides/_meta.js | 2 +- .../src/pages/ur/subgraphs/guides/arweave.mdx | 239 ------------------ .../src/pages/vi/subgraphs/guides/_meta.js | 2 +- .../src/pages/vi/subgraphs/guides/arweave.mdx | 239 ------------------ .../src/pages/zh/subgraphs/guides/_meta.js | 2 +- .../src/pages/zh/subgraphs/guides/arweave.mdx | 239 ------------------ 44 files changed, 21 insertions(+), 5279 deletions(-) delete mode 100644 website/src/pages/ar/subgraphs/guides/arweave.mdx delete mode 100644 website/src/pages/cs/subgraphs/guides/arweave.mdx delete mode 100644 website/src/pages/de/subgraphs/guides/arweave.mdx delete mode 100644 website/src/pages/en/subgraphs/guides/arweave.mdx delete mode 100644 website/src/pages/es/subgraphs/guides/arweave.mdx delete mode 100644 website/src/pages/fr/subgraphs/guides/arweave.mdx delete mode 100644 website/src/pages/hi/subgraphs/guides/arweave.mdx delete mode 100644 website/src/pages/it/subgraphs/guides/arweave.mdx delete mode 100644 website/src/pages/ja/subgraphs/guides/arweave.mdx delete mode 100644 website/src/pages/ko/subgraphs/guides/arweave.mdx delete mode 100644 website/src/pages/mr/subgraphs/guides/arweave.mdx delete mode 100644 website/src/pages/nl/subgraphs/guides/arweave.mdx delete mode 100644 website/src/pages/pl/subgraphs/guides/arweave.mdx delete mode 100644 website/src/pages/pt/subgraphs/guides/arweave.mdx delete mode 100644 website/src/pages/ro/subgraphs/guides/arweave.mdx delete mode 100644 website/src/pages/ru/subgraphs/guides/arweave.mdx delete mode 100644 website/src/pages/sv/subgraphs/guides/arweave.mdx delete mode 100644 website/src/pages/tr/subgraphs/guides/arweave.mdx delete mode 100644 website/src/pages/uk/subgraphs/guides/arweave.mdx delete mode 100644 website/src/pages/ur/subgraphs/guides/arweave.mdx delete mode 100644 website/src/pages/vi/subgraphs/guides/arweave.mdx delete mode 100644 website/src/pages/zh/subgraphs/guides/arweave.mdx diff --git a/website/src/pages/ar/subgraphs/guides/_meta.js b/website/src/pages/ar/subgraphs/guides/_meta.js index a1bb04fb6d3f..1c081848ea08 100644 --- a/website/src/pages/ar/subgraphs/guides/_meta.js +++ b/website/src/pages/ar/subgraphs/guides/_meta.js @@ -2,7 +2,6 @@ export default { 'subgraph-composition': '', 'subgraph-debug-forking': '', near: '', - arweave: '', grafting: '', 'subgraph-uncrashable': '', 'transfer-to-the-graph': '', diff --git a/website/src/pages/ar/subgraphs/guides/arweave.mdx b/website/src/pages/ar/subgraphs/guides/arweave.mdx deleted file mode 100644 index 4bb8883b4bd0..000000000000 --- a/website/src/pages/ar/subgraphs/guides/arweave.mdx +++ /dev/null @@ -1,239 +0,0 @@ ---- -title: Building Subgraphs on Arweave ---- - -> Arweave support in Graph Node and on Subgraph Studio is in beta: please reach us on [Discord](https://discord.gg/graphprotocol) with any questions about building Arweave Subgraphs! - -In this guide, you will learn how to build and deploy Subgraphs to index the Arweave blockchain. - -## What is Arweave? - -The Arweave protocol allows developers to store data permanently and that is the main difference between Arweave and IPFS, where IPFS lacks the feature; permanence, and files stored on Arweave can't be changed or deleted. - -Arweave already has built numerous libraries for integrating the protocol in a number of different programming languages. For more information you can check: - -- [Arwiki](https://arwiki.wiki/#/en/main) -- [Arweave Resources](https://www.arweave.org/build) - -## What are Arweave Subgraphs? - -The Graph allows you to build custom open APIs called "Subgraphs". Subgraphs are used to tell indexers (server operators) which data to index on a blockchain and save on their servers in order for you to be able to query it at any time using [GraphQL](https://graphql.org/). - -[Graph Node](https://github.com/graphprotocol/graph-node) is now able to index data on Arweave protocol. The current integration is only indexing Arweave as a blockchain (blocks and transactions), it is not indexing the stored files yet. - -## Building an Arweave Subgraph - -To be able to build and deploy Arweave Subgraphs, you need two packages: - -1. `@graphprotocol/graph-cli` above version 0.30.2 - This is a command-line tool for building and deploying Subgraphs. [Click here](https://www.npmjs.com/package/@graphprotocol/graph-cli) to download using `npm`. -2. `@graphprotocol/graph-ts` above version 0.27.0 - This is library of Subgraph-specific types. [Click here](https://www.npmjs.com/package/@graphprotocol/graph-ts) to download using `npm`. - -## Subgraph's components - -There are three components of a Subgraph: - -### 1. Manifest - `subgraph.yaml` - -Defines the data sources of interest, and how they should be processed. Arweave is a new kind of data source. - -### 2. Schema - `schema.graphql` - -Here you define which data you want to be able to query after indexing your Subgraph using GraphQL. This is actually similar to a model for an API, where the model defines the structure of a request body. - -The requirements for Arweave Subgraphs are covered by the [existing documentation](/developing/creating-a-subgraph/#the-graphql-schema). - -### 3. AssemblyScript Mappings - `mapping.ts` - -This is the logic that determines how data should be retrieved and stored when someone interacts with the data sources you are listening to. The data gets translated and is stored based off the schema you have listed. - -During Subgraph development there are two key commands: - -``` -$ graph codegen # generates types from the schema file identified in the manifest -$ graph build # generates Web Assembly from the AssemblyScript files, and prepares all the Subgraph files in a /build folder -``` - -## تعريف Subgraph Manifest - -The Subgraph manifest `subgraph.yaml` identifies the data sources for the Subgraph, the triggers of interest, and the functions that should be run in response to those triggers. See below for an example Subgraph manifest for an Arweave Subgraph: - -```yaml -specVersion: 1.3.0 -description: Arweave Blocks Indexing -schema: - file: ./schema.graphql # link to the schema file -dataSources: - - kind: arweave - name: arweave-blocks - network: arweave-mainnet # The Graph only supports Arweave Mainnet - source: - owner: 'ID-OF-AN-OWNER' # The public key of an Arweave wallet - startBlock: 0 # set this to 0 to start indexing from chain genesis - mapping: - apiVersion: 0.0.9 - language: wasm/assemblyscript - file: ./src/blocks.ts # link to the file with the Assemblyscript mappings - entities: - - Block - - Transaction - blockHandlers: - - handler: handleBlock # the function name in the mapping file - transactionHandlers: - - handler: handleTx # the function name in the mapping file -``` - -- Arweave Subgraphs introduce a new kind of data source (`arweave`) -- The network should correspond to a network on the hosting Graph Node. In Subgraph Studio, Arweave's mainnet is `arweave-mainnet` -- Arweave data sources introduce an optional source.owner field, which is the public key of an Arweave wallet - -Arweave data sources support two types of handlers: - -- `blockHandlers` - Run on every new Arweave block. No source.owner is required. -- `transactionHandlers` - Run on every transaction where the data source's `source.owner` is the owner. Currently an owner is required for `transactionHandlers`, if users want to process all transactions they should provide "" as the `source.owner` - -> The source.owner can be the owner's address, or their Public Key. -> -> Transactions are the building blocks of the Arweave permaweb and they are objects created by end-users. -> -> Note: [Irys (previously Bundlr)](https://irys.xyz/) transactions are not supported yet. - -## تعريف المخطط - -Schema definition describes the structure of the resulting Subgraph database and the relationships between entities. This is agnostic of the original data source. There are more details on the Subgraph schema definition [here](/developing/creating-a-subgraph/#the-graphql-schema). - -## AssemblyScript Mappings - -The handlers for processing events are written in [AssemblyScript](https://www.assemblyscript.org/). - -Arweave indexing introduces Arweave-specific data types to the [AssemblyScript API](/subgraphs/developing/creating/graph-ts/api/). - -```tsx -class Block { - timestamp: u64 - lastRetarget: u64 - height: u64 - indepHash: Bytes - nonce: Bytes - previousBlock: Bytes - diff: Bytes - hash: Bytes - txRoot: Bytes - txs: Bytes[] - walletList: Bytes - rewardAddr: Bytes - tags: Tag[] - rewardPool: Bytes - weaveSize: Bytes - blockSize: Bytes - cumulativeDiff: Bytes - hashListMerkle: Bytes - poa: ProofOfAccess -} - -class Transaction { - format: u32 - id: Bytes - lastTx: Bytes - owner: Bytes - tags: Tag[] - target: Bytes - quantity: Bytes - data: Bytes - dataSize: Bytes - dataRoot: Bytes - signature: Bytes - reward: Bytes -} -``` - -Block handlers receive a `Block`, while transactions receive a `Transaction`. - -Writing the mappings of an Arweave Subgraph is very similar to writing the mappings of an Ethereum Subgraph. For more information, click [here](/developing/creating-a-subgraph/#writing-mappings). - -## Deploying an Arweave Subgraph in Subgraph Studio - -Once your Subgraph has been created on your Subgraph Studio dashboard, you can deploy by using the `graph deploy` CLI command. - -```bash -graph deploy --access-token -``` - -## Querying an Arweave Subgraph - -The GraphQL endpoint for Arweave Subgraphs is determined by the schema definition, with the existing API interface. Please visit the [GraphQL API documentation](/subgraphs/querying/graphql-api/) for more information. - -## أمثلة على الـ Subgraphs - -Here is an example Subgraph for reference: - -- [Example Subgraph for Arweave](https://github.com/graphprotocol/graph-tooling/tree/main/examples/arweave-blocks-transactions) - -## FAQ - -### Can a Subgraph index Arweave and other chains? - -No, a Subgraph can only support data sources from one chain/network. - -### Can I index the stored files on Arweave? - -Currently, The Graph is only indexing Arweave as a blockchain (its blocks and transactions). - -### Can I identify Bundlr bundles in my Subgraph? - -This is not currently supported. - -### How can I filter transactions to a specific account? - -The source.owner can be the user's public key or account address. - -### What is the current encryption format? - -Data is generally passed into the mappings as Bytes, which if stored directly is returned in the Subgraph in a `hex` format (ex. block and transaction hashes). You may want to convert to a `base64` or `base64 URL`-safe format in your mappings, in order to match what is displayed in block explorers like [Arweave Explorer](https://viewblock.io/arweave/). - -The following `bytesToBase64(bytes: Uint8Array, urlSafe: boolean): string` helper function can be used, and will be added to `graph-ts`: - -``` -const base64Alphabet = [ - "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", - "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", - "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", - "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", - "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "+", "/" -]; - -const base64UrlAlphabet = [ - "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", - "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", - "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", - "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", - "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-", "_" -]; - -function bytesToBase64(bytes: Uint8Array, urlSafe: boolean): string { - let alphabet = urlSafe? base64UrlAlphabet : base64Alphabet; - - let result = '', i: i32, l = bytes.length; - for (i = 2; i < l; i += 3) { - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)]; - result += alphabet[((bytes[i - 1] & 0x0F) << 2) | (bytes[i] >> 6)]; - result += alphabet[bytes[i] & 0x3F]; - } - if (i === l + 1) { // 1 octet yet to write - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[(bytes[i - 2] & 0x03) << 4]; - if (!urlSafe) { - result += "=="; - } - } - if (!urlSafe && i === l) { // 2 octets yet to write - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)]; - result += alphabet[(bytes[i - 1] & 0x0F) << 2]; - if (!urlSafe) { - result += "="; - } - } - return result; -} -``` diff --git a/website/src/pages/cs/subgraphs/guides/_meta.js b/website/src/pages/cs/subgraphs/guides/_meta.js index a1bb04fb6d3f..fd5608dcceb2 100644 --- a/website/src/pages/cs/subgraphs/guides/_meta.js +++ b/website/src/pages/cs/subgraphs/guides/_meta.js @@ -2,7 +2,7 @@ export default { 'subgraph-composition': '', 'subgraph-debug-forking': '', near: '', - arweave: '', + grafting: '', 'subgraph-uncrashable': '', 'transfer-to-the-graph': '', diff --git a/website/src/pages/cs/subgraphs/guides/arweave.mdx b/website/src/pages/cs/subgraphs/guides/arweave.mdx deleted file mode 100644 index dff8facf77d4..000000000000 --- a/website/src/pages/cs/subgraphs/guides/arweave.mdx +++ /dev/null @@ -1,239 +0,0 @@ ---- -title: Vytváření podgrafů na Arweave ---- - -> Arweave support in Graph Node and on Subgraph Studio is in beta: please reach us on [Discord](https://discord.gg/graphprotocol) with any questions about building Arweave Subgraphs! - -V této příručce se dozvíte, jak vytvořit a nasadit subgrafy pro indexování blockchainu Arweave. - -## Co je Arweave? - -Protokol Arweave umožňuje vývojářům ukládat data trvale a to je hlavní rozdíl mezi Arweave a IPFS, kde IPFS tuto funkci postrádá; trvalé uložení a soubory uložené na Arweave nelze měnit ani mazat. - -Společnost Arweave již vytvořila řadu knihoven pro integraci protokolu do řady různých programovacích jazyků. Další informace naleznete zde: - -- [Arwiki](https://arwiki.wiki/#/en/main) -- [Arweave Resources](https://www.arweave.org/build) - -## Co jsou podgrafy Arweave? - -The Graph allows you to build custom open APIs called "Subgraphs". Subgraphs are used to tell indexers (server operators) which data to index on a blockchain and save on their servers in order for you to be able to query it at any time using [GraphQL](https://graphql.org/). - -[Graph Node](https://github.com/graphprotocol/graph-node) is now able to index data on Arweave protocol. The current integration is only indexing Arweave as a blockchain (blocks and transactions), it is not indexing the stored files yet. - -## Vytvoření podgrafu Arweave - -Abyste mohli sestavit a nasadit Arweave Subgraphs, potřebujete dva balíčky: - -1. `@graphprotocol/graph-cli` above version 0.30.2 - This is a command-line tool for building and deploying Subgraphs. [Click here](https://www.npmjs.com/package/@graphprotocol/graph-cli) to download using `npm`. -2. `@graphprotocol/graph-ts` above version 0.27.0 - This is library of Subgraph-specific types. [Click here](https://www.npmjs.com/package/@graphprotocol/graph-ts) to download using `npm`. - -## Komponenty podgrafu - -There are three components of a Subgraph: - -### 1. Manifest - `subgraph.yaml` - -Definuje zdroje dat, které jsou předmětem zájmu, a způsob jejich zpracování. Arweave je nový druh datového zdroje. - -### 2. Schema - `schema.graphql` - -Zde definujete, na která data se chcete po indexování subgrafu pomocí jazyka GraphQL dotazovat. Je to vlastně podobné modelu pro API, kde model definuje strukturu těla požadavku. - -The requirements for Arweave Subgraphs are covered by the [existing documentation](/developing/creating-a-subgraph/#the-graphql-schema). - -### 3. AssemblyScript Mappings - `mapping.ts` - -Jedná se o logiku, která určuje, jak mají být data načtena a uložena, když někdo komunikuje se zdroji dat, kterým nasloucháte. Data se přeloží a uloží na základě schématu, které jste uvedli. - -During Subgraph development there are two key commands: - -``` -$ graph codegen # generates types from the schema file identified in the manifest -$ graph build # generates Web Assembly from the AssemblyScript files, and prepares all the Subgraph files in a /build folder -``` - -## Definice podgrafu Manifest - -The Subgraph manifest `subgraph.yaml` identifies the data sources for the Subgraph, the triggers of interest, and the functions that should be run in response to those triggers. See below for an example Subgraph manifest for an Arweave Subgraph: - -```yaml -specVersion: 1.3.0 -description: Arweave Blocks Indexing -schema: - file: ./schema.graphql # link to the schema file -dataSources: - - kind: arweave - name: arweave-blocks - network: arweave-mainnet # The Graph only supports Arweave Mainnet - source: - owner: 'ID-OF-AN-OWNER' # The public key of an Arweave wallet - startBlock: 0 # set this to 0 to start indexing from chain genesis - mapping: - apiVersion: 0.0.9 - language: wasm/assemblyscript - file: ./src/blocks.ts # link to the file with the Assemblyscript mappings - entities: - - Block - - Transaction - blockHandlers: - - handler: handleBlock # the function name in the mapping file - transactionHandlers: - - handler: handleTx # the function name in the mapping file -``` - -- Arweave Subgraphs introduce a new kind of data source (`arweave`) -- The network should correspond to a network on the hosting Graph Node. In Subgraph Studio, Arweave's mainnet is `arweave-mainnet` -- Zdroje dat Arweave obsahují nepovinné pole source.owner, což je veřejný klíč peněženky Arweave - -Datové zdroje Arweave podporují dva typy zpracovatelů: - -- `blockHandlers` - Run on every new Arweave block. No source.owner is required. -- `transactionHandlers` - Run on every transaction where the data source's `source.owner` is the owner. Currently an owner is required for `transactionHandlers`, if users want to process all transactions they should provide "" as the `source.owner` - -> Source.owner může být adresa vlastníka nebo jeho veřejný klíč. -> -> Transakce jsou stavebními kameny permaweb Arweave a jsou to objekty vytvořené koncovými uživateli. -> -> Note: [Irys (previously Bundlr)](https://irys.xyz/) transactions are not supported yet. - -## Definice schématu - -Schema definition describes the structure of the resulting Subgraph database and the relationships between entities. This is agnostic of the original data source. There are more details on the Subgraph schema definition [here](/developing/creating-a-subgraph/#the-graphql-schema). - -## AssemblyScript Mapování - -The handlers for processing events are written in [AssemblyScript](https://www.assemblyscript.org/). - -Arweave indexing introduces Arweave-specific data types to the [AssemblyScript API](/subgraphs/developing/creating/graph-ts/api/). - -```tsx -class Block { - timestamp: u64 - lastRetarget: u64 - height: u64 - indepHash: Bytes - nonce: Bytes - previousBlock: Bytes - diff: Bytes - hash: Bytes - txRoot: Bytes - txs: Bytes[] - walletList: Bytes - rewardAddr: Bytes - tags: Tag[] - rewardPool: Bytes - weaveSize: Bytes - blockSize: Bytes - cumulativeDiff: Bytes - hashListMerkle: Bytes - poa: ProofOfAccess -} - -class Transaction { - format: u32 - id: Bytes - lastTx: Bytes - owner: Bytes - tags: Tag[] - target: Bytes - quantity: Bytes - data: Bytes - dataSize: Bytes - dataRoot: Bytes - signature: Bytes - reward: Bytes -} -``` - -Block handlers receive a `Block`, while transactions receive a `Transaction`. - -Writing the mappings of an Arweave Subgraph is very similar to writing the mappings of an Ethereum Subgraph. For more information, click [here](/developing/creating-a-subgraph/#writing-mappings). - -## Nasazení podgrafu Arweave v Podgraf Studio - -Once your Subgraph has been created on your Subgraph Studio dashboard, you can deploy by using the `graph deploy` CLI command. - -```bash -graph deploy --access-token -``` - -## Dotazování podgrafu Arweave - -The GraphQL endpoint for Arweave Subgraphs is determined by the schema definition, with the existing API interface. Please visit the [GraphQL API documentation](/subgraphs/querying/graphql-api/) for more information. - -## Příklady podgrafů - -Here is an example Subgraph for reference: - -- [Example Subgraph for Arweave](https://github.com/graphprotocol/graph-tooling/tree/main/examples/arweave-blocks-transactions) - -## FAQ - -### Can a Subgraph index Arweave and other chains? - -No, a Subgraph can only support data sources from one chain/network. - -### Mohu indexovat uložené soubory v Arweave? - -V současné době The Graph indexuje pouze Arweave jako blockchain (jeho bloky a transakce). - -### Can I identify Bundlr bundles in my Subgraph? - -Toto není aktuálně podporováno. - -### Jak mohu filtrovat transakce na určitý účet? - -Source.owner může být veřejný klíč uživatele nebo adresa účtu. - -### Jaký je aktuální formát šifrování? - -Data is generally passed into the mappings as Bytes, which if stored directly is returned in the Subgraph in a `hex` format (ex. block and transaction hashes). You may want to convert to a `base64` or `base64 URL`-safe format in your mappings, in order to match what is displayed in block explorers like [Arweave Explorer](https://viewblock.io/arweave/). - -The following `bytesToBase64(bytes: Uint8Array, urlSafe: boolean): string` helper function can be used, and will be added to `graph-ts`: - -``` -const base64Alphabet = [ - "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", - "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", - "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", - "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", - "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "+", "/" -]; - -const base64UrlAlphabet = [ - "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", - "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", - "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", - "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", - "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-", "_" -]; - -function bytesToBase64(bytes: Uint8Array, urlSafe: boolean): string { - let alphabet = urlSafe? base64UrlAlphabet : base64Alphabet; - - let result = '', i: i32, l = bytes.length; - for (i = 2; i < l; i += 3) { - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)]; - result += alphabet[((bytes[i - 1] & 0x0F) << 2) | (bytes[i] >> 6)]; - result += alphabet[bytes[i] & 0x3F]; - } - if (i === l + 1) { // 1 octet yet to write - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[(bytes[i - 2] & 0x03) << 4]; - if (!urlSafe) { - result += "=="; - } - } - if (!urlSafe && i === l) { // 2 octets yet to write - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)]; - result += alphabet[(bytes[i - 1] & 0x0F) << 2]; - if (!urlSafe) { - result += "="; - } - } - return result; -} -``` diff --git a/website/src/pages/de/subgraphs/guides/_meta.js b/website/src/pages/de/subgraphs/guides/_meta.js index a1bb04fb6d3f..fd5608dcceb2 100644 --- a/website/src/pages/de/subgraphs/guides/_meta.js +++ b/website/src/pages/de/subgraphs/guides/_meta.js @@ -2,7 +2,7 @@ export default { 'subgraph-composition': '', 'subgraph-debug-forking': '', near: '', - arweave: '', + grafting: '', 'subgraph-uncrashable': '', 'transfer-to-the-graph': '', diff --git a/website/src/pages/de/subgraphs/guides/arweave.mdx b/website/src/pages/de/subgraphs/guides/arweave.mdx deleted file mode 100644 index 2e547c7b6813..000000000000 --- a/website/src/pages/de/subgraphs/guides/arweave.mdx +++ /dev/null @@ -1,238 +0,0 @@ ---- -title: Erstellen von Subgraphen auf Arweave ---- - -> Die Unterstützung von Arweave in Graph Node und Subgraph Studio befindet sich in der Beta-Phase: Bitte kontaktieren Sie uns auf [Discord] (https://discord.gg/graphprotocol), wenn Sie Fragen zur Erstellung von Arweave-Subgraphen haben! - -In dieser Anleitung erfahren Sie, wie Sie Subgraphen erstellen und einsetzen, um die Arweave-Blockchain zu indizieren. - -## Was ist Arweave? - -Das Arweave-Protokoll ermöglicht es Entwicklern, Daten dauerhaft zu speichern, und das ist der Hauptunterschied zwischen Arweave und IPFS, wobei IPFS die Eigenschaft der Dauerhaftigkeit fehlt und auf Arweave gespeicherte Dateien nicht geändert oder gelöscht werden können. - -Arweave hat bereits zahlreiche Bibliotheken für die Integration des Protokolls in eine Reihe verschiedener Programmiersprachen erstellt. Für weitere Informationen können Sie nachsehen: - -- [Arwiki](https://arwiki.wiki/#/en/main) -- [Arweave Resources](https://www.arweave.org/build) - -## Was sind Subgraphen von Arweave? - -The Graph ermöglicht es Ihnen, benutzerdefinierte offene APIs, sogenannte „ Subgraphen“, zu erstellen. Subgraphen werden verwendet, um Indexierern (Serverbetreibern) mitzuteilen, welche Daten auf einer Blockchain indexiert und auf ihren Servern gespeichert werden sollen, damit Sie sie jederzeit mit [GraphQL] (https://graphql.org/) abfragen können. - -Der [Graph Node] (https://github.com/graphprotocol/graph-node) ist nun in der Lage, Daten auf dem Arweave-Protokoll zu indizieren. Die aktuelle Integration indiziert nur Arweave als Blockchain (Blöcke und Transaktionen), sie indiziert noch nicht die gespeicherten Dateien. - -## Aufbau eines Arweave Subgraphen - -Um Arweave Subgraphs erstellen und einsetzen zu können, benötigen Sie zwei Pakete: - -1. `@graphprotocol/graph-cli` ab Version 0.30.2 - Dies ist ein Kommandozeilen-Tool zum Erstellen und Bereitstellen von Subgraphen. [Klicken Sie hier](https://www.npmjs.com/package/@graphprotocol/graph-cli), um es mit `npm` herunterzuladen. -2. `@graphprotocol/graph-ts` ab Version 0.27.0 - Dies ist eine Bibliothek von Subgraphen-spezifischen Typen. [Klicken Sie hier](https://www.npmjs.com/package/@graphprotocol/graph-ts) zum Herunterladen mit `npm`. - -## Komponenten des Subgraphen - -Ein Subgraph besteht aus drei Komponenten: - -### 1. Manifest - `subgraph.yaml` - -Definiert die Datenquellen, die von Interesse sind, und wie sie verarbeitet werden sollen. Arweave ist eine neue Art von Datenquelle. - -### 2. Schema - `schema.graphql` - -Hier legen Sie fest, welche Daten Sie nach der Indizierung Ihres Subgraphen mit GraphQL abfragen können möchten. Dies ist eigentlich ähnlich wie ein Modell für eine API, wobei das Modell die Struktur eines Requests Body definiert. - -Die Anforderungen für Arweave-Subgraphen werden in der [bestehenden Dokumentation](/developing/creating-a-subgraph/#the-graphql-schema) behandelt. - -### 3. AssemblyScript-Mappings - `mapping.ts` - -Dies ist die Logik, die bestimmt, wie Daten abgerufen und gespeichert werden sollen, wenn jemand mit den Datenquellen interagiert, die Sie abhören. Die Daten werden übersetzt und auf der Grundlage des von Ihnen angegebenen Schemas gespeichert. - -Bei der Entwicklung von Subgraphen gibt es zwei wichtige Befehle: - -``` -$ graph codegen # erzeugt Typen aus der im Manifest angegebenen Schemadatei -$ graph build # generiert Web Assembly aus den AssemblyScript-Dateien und bereitet alle Subgraph-Dateien in einem /build-Ordner vor -``` - -## Subgraph-Manifest-Definition - -Das Subgraph-Manifest `subgraph.yaml` identifiziert die Datenquellen für den Subgraphen, die Auslöser von Interesse und die Funktionen, die als Reaktion auf diese Auslöser ausgeführt werden sollen. Im Folgenden finden Sie ein Beispiel für ein Subgraph-Manifest für einen Arweave-Subgraphen: - -```yaml -specVersion: 1.3.0 -description: Arweave Blocks Indexing -schema: - file: ./schema.graphql #Link zur Schemadatei -dataSources: - - kind: arweave - name: arweave-blocks - network: arweave-mainnet # The Graph unterstützt nur das Arweave source: - owner: 'ID-OF-AN-OWNER' # Der öffentliche Schlüssel einer Arweave-Brieftasche - startBlock: 0 # Setzen Sie dies auf 0, um die Indizierung von der Kettenentstehung zu starten - mapping: - apiVersion: 0.0.9 - language: wasm/assemblyscript - file: ./src/blocks.ts # Verweis auf die Datei mit den Assemblyscript-mappings - entities: - - Block - - Transaction - blockHandlers: - - handler: handleBlock # der Funktionsname in der Mapping-Datei - transactionHandlers: - - handler: handleTx # der Funktionsname in der Mapping-Datei -``` - -- Mit Arweave Subgraphen wird eine neue Art von Datenquelle eingeführt (`arweave`) -- Das Netzwerk sollte einem Netzwerk auf dem hostenden Graph Node entsprechen. In Subgraph Studio ist das Arweave-Mainnet als `arweave-mainnet` bezeichnet -- Arweave-Datenquellen führen ein optionales Feld source.owner ein, das den öffentlichen Schlüssel eines Arweave-Wallets darstellt - -Arweave-Datenquellen unterstützen zwei Arten von Handlern: - -- `blockHandlers` - Wird bei jedem neuen Arweave-Block ausgeführt. Es wird kein source.owner benötigt. -- `transactionHandlers` - Wird bei jeder Transaktion ausgeführt, bei der der `source.owner` der Eigentümer der Datenquelle ist. Derzeit ist ein Besitzer für `transactionHandlers` erforderlich, wenn Benutzer alle Transaktionen verarbeiten wollen, sollten sie "" als `source.owner` angeben - -> Als source.owner kann die Adresse des Eigentümers oder sein öffentlicher Schlüssel angegeben werden. -> -> Transaktionen sind die Bausteine des Arweave permaweb und sie sind Objekte, die von den Endbenutzern erstellt werden. -> -> Hinweis: [Irys (früher Bundlr)](https://irys.xyz/) Transaktionen werden noch nicht unterstützt. - -## Schema-Definition - -Die Schemadefinition beschreibt die Struktur der entstehenden Subgraph-Datenbank und die Beziehungen zwischen den Entitäten. Dies ist unabhängig von der ursprünglichen Datenquelle. Weitere Details zur Subgraph-Schemadefinition finden Sie [hier](/developing/creating-a-subgraph/#the-graphql-schema). - -## AssemblyScript-Mappings - -Die Handler für die Ereignisverarbeitung sind in [AssemblyScript](https://www.assemblyscript.org/) geschrieben. - -Die Arweave-Indizierung führt Arweave-spezifische Datentypen in die [AssemblyScript API](/subgraphs/developing/creating/graph-ts/api/) ein. - -```tsx -class Block { - timestamp: u64 - lastRetarget: u64 - height: u64 - indepHash: Bytes - nonce: Bytes - previousBlock: Bytes - diff: Bytes - hash: Bytes - txRoot: Bytes - txs: Bytes[] - walletList: Bytes - rewardAddr: Bytes - tags: Tag[] - rewardPool: Bytes - weaveSize: Bytes - blockSize: Bytes - cumulativeDiff: Bytes - hashListMerkle: Bytes - poa: ProofOfAccess -} - -class Transaction { - format: u32 - id: Bytes - lastTx: Bytes - owner: Bytes - tags: Tag[] - target: Bytes - quantity: Bytes - data: Bytes - dataSize: Bytes - dataRoot: Bytes - signature: Bytes - reward: Bytes -} -``` - -Block-Handler erhalten einen `Block`, während Transaktionen einen `Transaction` erhalten. - -Das Schreiben der Mappings eines Arweave-Subgraphen ist dem Schreiben der Mappings eines Ethereum-Subgraphen sehr ähnlich. Für weitere Informationen, klicken Sie [hier](/developing/creating-a-subgraph/#writing-mappings). - -## Einsatz von Subgraphen aus Arweave in Subgraph Studio - -Sobald Ihr Subgraph auf Ihrem Subgraph Studio Dashboard erstellt wurde, können Sie ihn mit dem CLI-Befehl `graph deploy` bereitstellen. - -```bash -graph deploy --access-token -``` - -## Abfrage eines Arweave-Subgraphen - -Der GraphQL-Endpunkt für Arweave Subgraphen wird durch die Schemadefinition bestimmt, mit der vorhandenen API-Schnittstelle. Bitte besuchen Sie die [GraphQL API Dokumentation](/subgraphs/querying/graphql-api/) für weitere Informationen. - -## Beispiele von Subgraphen - -Hier ist ein Beispiel für einen Subgraphen als Referenz: - -- [Beispiel-Subgraph für Arweave](https://github.com/graphprotocol/graph-tooling/tree/main/examples/arweave-blocks-transactions) - -## FAQ - -### Kann ein Subgraph Arweave und andere Ketten indizieren? - -Nein, ein Subgraph kann nur Datenquellen von einer Kette oder einem Netzwerk unterstützen. - -### Kann ich die gespeicherten Dateien auf Arweave indizieren? - -Derzeit indiziert The Graph Arweave nur als Blockchain (seine Blöcke und Transaktionen). - -### Kann ich Bundlr-„Bundles“ in meinem Subgraph identifizieren? - -Dies wird derzeit nicht unterstützt. - -### Wie kann ich Transaktionen nach einem bestimmten Konto filtern? - -Der source.owner kann der öffentliche Schlüssel oder die Kontoadresse des Benutzers sein. - -### Was ist das aktuelle Verschlüsselungsformat? - -Daten werden im Allgemeinen als Bytes an die Mappings übergeben, die, wenn sie direkt gespeichert werden, im Subgraphen in einem `hex`-Format zurückgegeben werden (z.B. Block- und Transaktions-Hashes). Möglicherweise möchten Sie in Ihren Mappings in ein `base64`- oder `base64 URL`-sicheres Format konvertieren, um dem zu entsprechen, was in Block-Explorern wie [Arweave Explorer] (https://viewblock.io/arweave/) angezeigt wird. - -Die folgende Hilfsfunktion `bytesToBase64(bytes: Uint8Array, urlSafe: boolean): string` kann verwendet werden und wird zu `graph-ts` hinzugefügt: - -``` -const base64Alphabet = [ - "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", - "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", - "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", - "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", - "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "+", "/" -]; - -const base64UrlAlphabet = [ - "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", - "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", - "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", - "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", - "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-", "_" -]; - -function bytesToBase64(bytes: Uint8Array, urlSafe: boolean): string { - let alphabet = urlSafe? base64UrlAlphabet : base64Alphabet; - - let result = '', i: i32, l = bytes.length; - for (i = 2; i < l; i += 3) { - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)]; - result += alphabet[((bytes[i - 1] & 0x0F) << 2) | (bytes[i] >> 6)]; - result += alphabet[bytes[i] & 0x3F]; - } - if (i === l + 1) { // 1 octet yet to write - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[(bytes[i - 2] & 0x03) << 4]; - if (!urlSafe) { - result += "=="; - } - } - if (!urlSafe && i === l) { // 2 octets yet to write - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)]; - result += alphabet[(bytes[i - 1] & 0x0F) << 2]; - if (!urlSafe) { - result += "="; - } - } - return result; -} -``` diff --git a/website/src/pages/en/subgraphs/guides/_meta.js b/website/src/pages/en/subgraphs/guides/_meta.js index a1bb04fb6d3f..fd5608dcceb2 100644 --- a/website/src/pages/en/subgraphs/guides/_meta.js +++ b/website/src/pages/en/subgraphs/guides/_meta.js @@ -2,7 +2,7 @@ export default { 'subgraph-composition': '', 'subgraph-debug-forking': '', near: '', - arweave: '', + grafting: '', 'subgraph-uncrashable': '', 'transfer-to-the-graph': '', diff --git a/website/src/pages/en/subgraphs/guides/arweave.mdx b/website/src/pages/en/subgraphs/guides/arweave.mdx deleted file mode 100644 index 08e6c4257268..000000000000 --- a/website/src/pages/en/subgraphs/guides/arweave.mdx +++ /dev/null @@ -1,239 +0,0 @@ ---- -title: Building Subgraphs on Arweave ---- - -> Arweave support in Graph Node and on Subgraph Studio is in beta: please reach us on [Discord](https://discord.gg/graphprotocol) with any questions about building Arweave Subgraphs! - -In this guide, you will learn how to build and deploy Subgraphs to index the Arweave blockchain. - -## What is Arweave? - -The Arweave protocol allows developers to store data permanently and that is the main difference between Arweave and IPFS, where IPFS lacks the feature; permanence, and files stored on Arweave can't be changed or deleted. - -Arweave already has built numerous libraries for integrating the protocol in a number of different programming languages. For more information you can check: - -- [Arwiki](https://arwiki.wiki/#/en/main) -- [Arweave Resources](https://www.arweave.org/build) - -## What are Arweave Subgraphs? - -The Graph allows you to build custom open APIs called "Subgraphs". Subgraphs are used to tell indexers (server operators) which data to index on a blockchain and save on their servers in order for you to be able to query it at any time using [GraphQL](https://graphql.org/). - -[Graph Node](https://github.com/graphprotocol/graph-node) is now able to index data on Arweave protocol. The current integration is only indexing Arweave as a blockchain (blocks and transactions), it is not indexing the stored files yet. - -## Building an Arweave Subgraph - -To be able to build and deploy Arweave Subgraphs, you need two packages: - -1. `@graphprotocol/graph-cli` above version 0.30.2 - This is a command-line tool for building and deploying Subgraphs. [Click here](https://www.npmjs.com/package/@graphprotocol/graph-cli) to download using `npm`. -2. `@graphprotocol/graph-ts` above version 0.27.0 - This is library of Subgraph-specific types. [Click here](https://www.npmjs.com/package/@graphprotocol/graph-ts) to download using `npm`. - -## Subgraph's components - -There are three components of a Subgraph: - -### 1. Manifest - `subgraph.yaml` - -Defines the data sources of interest, and how they should be processed. Arweave is a new kind of data source. - -### 2. Schema - `schema.graphql` - -Here you define which data you want to be able to query after indexing your Subgraph using GraphQL. This is actually similar to a model for an API, where the model defines the structure of a request body. - -The requirements for Arweave Subgraphs are covered by the [existing documentation](/developing/creating-a-subgraph/#the-graphql-schema). - -### 3. AssemblyScript Mappings - `mapping.ts` - -This is the logic that determines how data should be retrieved and stored when someone interacts with the data sources you are listening to. The data gets translated and is stored based off the schema you have listed. - -During Subgraph development there are two key commands: - -``` -$ graph codegen # generates types from the schema file identified in the manifest -$ graph build # generates Web Assembly from the AssemblyScript files, and prepares all the Subgraph files in a /build folder -``` - -## Subgraph Manifest Definition - -The Subgraph manifest `subgraph.yaml` identifies the data sources for the Subgraph, the triggers of interest, and the functions that should be run in response to those triggers. See below for an example Subgraph manifest for an Arweave Subgraph: - -```yaml -specVersion: 1.3.0 -description: Arweave Blocks Indexing -schema: - file: ./schema.graphql # link to the schema file -dataSources: - - kind: arweave - name: arweave-blocks - network: arweave-mainnet # The Graph only supports Arweave Mainnet - source: - owner: 'ID-OF-AN-OWNER' # The public key of an Arweave wallet - startBlock: 0 # set this to 0 to start indexing from chain genesis - mapping: - apiVersion: 0.0.9 - language: wasm/assemblyscript - file: ./src/blocks.ts # link to the file with the Assemblyscript mappings - entities: - - Block - - Transaction - blockHandlers: - - handler: handleBlock # the function name in the mapping file - transactionHandlers: - - handler: handleTx # the function name in the mapping file -``` - -- Arweave Subgraphs introduce a new kind of data source (`arweave`) -- The network should correspond to a network on the hosting Graph Node. In Subgraph Studio, Arweave's mainnet is `arweave-mainnet` -- Arweave data sources introduce an optional source.owner field, which is the public key of an Arweave wallet - -Arweave data sources support two types of handlers: - -- `blockHandlers` - Run on every new Arweave block. No source.owner is required. -- `transactionHandlers` - Run on every transaction where the data source's `source.owner` is the owner. Currently an owner is required for `transactionHandlers`, if users want to process all transactions they should provide "" as the `source.owner` - -> The source.owner can be the owner's address, or their Public Key. - -> Transactions are the building blocks of the Arweave permaweb and they are objects created by end-users. - -> Note: [Irys (previously Bundlr)](https://irys.xyz/) transactions are not supported yet. - -## Schema Definition - -Schema definition describes the structure of the resulting Subgraph database and the relationships between entities. This is agnostic of the original data source. There are more details on the Subgraph schema definition [here](/developing/creating-a-subgraph/#the-graphql-schema). - -## AssemblyScript Mappings - -The handlers for processing events are written in [AssemblyScript](https://www.assemblyscript.org/). - -Arweave indexing introduces Arweave-specific data types to the [AssemblyScript API](/subgraphs/developing/creating/graph-ts/api/). - -```tsx -class Block { - timestamp: u64 - lastRetarget: u64 - height: u64 - indepHash: Bytes - nonce: Bytes - previousBlock: Bytes - diff: Bytes - hash: Bytes - txRoot: Bytes - txs: Bytes[] - walletList: Bytes - rewardAddr: Bytes - tags: Tag[] - rewardPool: Bytes - weaveSize: Bytes - blockSize: Bytes - cumulativeDiff: Bytes - hashListMerkle: Bytes - poa: ProofOfAccess -} - -class Transaction { - format: u32 - id: Bytes - lastTx: Bytes - owner: Bytes - tags: Tag[] - target: Bytes - quantity: Bytes - data: Bytes - dataSize: Bytes - dataRoot: Bytes - signature: Bytes - reward: Bytes -} -``` - -Block handlers receive a `Block`, while transactions receive a `Transaction`. - -Writing the mappings of an Arweave Subgraph is very similar to writing the mappings of an Ethereum Subgraph. For more information, click [here](/developing/creating-a-subgraph/#writing-mappings). - -## Deploying an Arweave Subgraph in Subgraph Studio - -Once your Subgraph has been created on your Subgraph Studio dashboard, you can deploy by using the `graph deploy` CLI command. - -```bash -graph deploy --access-token -``` - -## Querying an Arweave Subgraph - -The GraphQL endpoint for Arweave Subgraphs is determined by the schema definition, with the existing API interface. Please visit the [GraphQL API documentation](/subgraphs/querying/graphql-api/) for more information. - -## Example Subgraphs - -Here is an example Subgraph for reference: - -- [Example Subgraph for Arweave](https://github.com/graphprotocol/graph-tooling/tree/main/examples/arweave-blocks-transactions) - -## FAQ - -### Can a Subgraph index Arweave and other chains? - -No, a Subgraph can only support data sources from one chain/network. - -### Can I index the stored files on Arweave? - -Currently, The Graph is only indexing Arweave as a blockchain (its blocks and transactions). - -### Can I identify Bundlr bundles in my Subgraph? - -This is not currently supported. - -### How can I filter transactions to a specific account? - -The source.owner can be the user's public key or account address. - -### What is the current encryption format? - -Data is generally passed into the mappings as Bytes, which if stored directly is returned in the Subgraph in a `hex` format (ex. block and transaction hashes). You may want to convert to a `base64` or `base64 URL`-safe format in your mappings, in order to match what is displayed in block explorers like [Arweave Explorer](https://viewblock.io/arweave/). - -The following `bytesToBase64(bytes: Uint8Array, urlSafe: boolean): string` helper function can be used, and will be added to `graph-ts`: - -``` -const base64Alphabet = [ - "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", - "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", - "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", - "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", - "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "+", "/" -]; - -const base64UrlAlphabet = [ - "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", - "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", - "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", - "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", - "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-", "_" -]; - -function bytesToBase64(bytes: Uint8Array, urlSafe: boolean): string { - let alphabet = urlSafe? base64UrlAlphabet : base64Alphabet; - - let result = '', i: i32, l = bytes.length; - for (i = 2; i < l; i += 3) { - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)]; - result += alphabet[((bytes[i - 1] & 0x0F) << 2) | (bytes[i] >> 6)]; - result += alphabet[bytes[i] & 0x3F]; - } - if (i === l + 1) { // 1 octet yet to write - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[(bytes[i - 2] & 0x03) << 4]; - if (!urlSafe) { - result += "=="; - } - } - if (!urlSafe && i === l) { // 2 octets yet to write - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)]; - result += alphabet[(bytes[i - 1] & 0x0F) << 2]; - if (!urlSafe) { - result += "="; - } - } - return result; -} -``` diff --git a/website/src/pages/es/subgraphs/guides/_meta.js b/website/src/pages/es/subgraphs/guides/_meta.js index a1bb04fb6d3f..fd5608dcceb2 100644 --- a/website/src/pages/es/subgraphs/guides/_meta.js +++ b/website/src/pages/es/subgraphs/guides/_meta.js @@ -2,7 +2,7 @@ export default { 'subgraph-composition': '', 'subgraph-debug-forking': '', near: '', - arweave: '', + grafting: '', 'subgraph-uncrashable': '', 'transfer-to-the-graph': '', diff --git a/website/src/pages/es/subgraphs/guides/arweave.mdx b/website/src/pages/es/subgraphs/guides/arweave.mdx deleted file mode 100644 index 71c58f8afabd..000000000000 --- a/website/src/pages/es/subgraphs/guides/arweave.mdx +++ /dev/null @@ -1,239 +0,0 @@ ---- -title: Construyendo Subgrafos en Arweave ---- - -> Arweave support in Graph Node and on Subgraph Studio is in beta: please reach us on [Discord](https://discord.gg/graphprotocol) with any questions about building Arweave Subgraphs! - -En esta guía, aprenderás a construir y deployar subgrafos para indexar la blockchain de Arweave. - -## ¿Qué es Arweave? - -El protocolo Arweave permite a los developers almacenar datos de forma permanente y esa es la principal diferencia entre Arweave e IPFS, donde IPFS carece de la característica; permanencia, y los archivos almacenados en Arweave no pueden ser modificados o eliminados. - -Arweave ya ha construido numerosas bibliotecas para integrar el protocolo en varios lenguajes de programación. Para más información puede consultar: - -- [Arwiki](https://arwiki.wiki/#/en/main) -- [Arweave Resources](https://www.arweave.org/build) - -## ¿Qué son los subgrafos Arweave? - -The Graph allows you to build custom open APIs called "Subgraphs". Subgraphs are used to tell indexers (server operators) which data to index on a blockchain and save on their servers in order for you to be able to query it at any time using [GraphQL](https://graphql.org/). - -[Graph Node](https://github.com/graphprotocol/graph-node) is now able to index data on Arweave protocol. The current integration is only indexing Arweave as a blockchain (blocks and transactions), it is not indexing the stored files yet. - -## Construcción de un subgrafo Arweave - -Para poder construir y deployar subgrafos Arweave, necesita dos paquetes: - -1. `@graphprotocol/graph-cli` above version 0.30.2 - This is a command-line tool for building and deploying Subgraphs. [Click here](https://www.npmjs.com/package/@graphprotocol/graph-cli) to download using `npm`. -2. `@graphprotocol/graph-ts` above version 0.27.0 - This is library of Subgraph-specific types. [Click here](https://www.npmjs.com/package/@graphprotocol/graph-ts) to download using `npm`. - -## Componentes del subgrafo - -There are three components of a Subgraph: - -### 1. Manifest - `subgraph.yaml` - -Define las fuentes de datos de interés y cómo deben ser procesadas. Arweave es un nuevo tipo de fuente de datos. - -### 2. Schema - `schema.graphql` - -Aquí defines qué datos quieres poder consultar después de indexar tu Subgrafo usando GraphQL. Esto es en realidad similar a un modelo para una API, donde el modelo define la estructura de un cuerpo de solicitud. - -The requirements for Arweave Subgraphs are covered by the [existing documentation](/developing/creating-a-subgraph/#the-graphql-schema). - -### 3. AssemblyScript Mappings - `mapping.ts` - -Esta es la lógica que determina cómo los datos deben ser recuperados y almacenados cuando alguien interactúa con las fuentes de datos que estás escuchando. Los datos se traducen y se almacenan basándose en el esquema que has listado. - -During Subgraph development there are two key commands: - -``` -$ graph codegen # generates types from the schema file identified in the manifest -$ graph build # generates Web Assembly from the AssemblyScript files, and prepares all the Subgraph files in a /build folder -``` - -## Definición de manifiesto del subgrafo - -The Subgraph manifest `subgraph.yaml` identifies the data sources for the Subgraph, the triggers of interest, and the functions that should be run in response to those triggers. See below for an example Subgraph manifest for an Arweave Subgraph: - -```yaml -specVersion: 1.3.0 -description: Arweave Blocks Indexing -schema: - file: ./schema.graphql # link to the schema file -dataSources: - - kind: arweave - name: arweave-blocks - network: arweave-mainnet # The Graph only supports Arweave Mainnet - source: - owner: 'ID-OF-AN-OWNER' # The public key of an Arweave wallet - startBlock: 0 # set this to 0 to start indexing from chain genesis - mapping: - apiVersion: 0.0.9 - language: wasm/assemblyscript - file: ./src/blocks.ts # link to the file with the Assemblyscript mappings - entities: - - Block - - Transaction - blockHandlers: - - handler: handleBlock # the function name in the mapping file - transactionHandlers: - - handler: handleTx # the function name in the mapping file -``` - -- Arweave Subgraphs introduce a new kind of data source (`arweave`) -- The network should correspond to a network on the hosting Graph Node. In Subgraph Studio, Arweave's mainnet is `arweave-mainnet` -- Las fuentes de datos de Arweave introducen un campo opcional "source.owner", que es la clave pública de una billetera Arweave - -Las fuentes de datos de Arweave admiten dos tipos de handlers: - -- `blockHandlers` - Run on every new Arweave block. No source.owner is required. -- `transactionHandlers` - Run on every transaction where the data source's `source.owner` is the owner. Currently an owner is required for `transactionHandlers`, if users want to process all transactions they should provide "" as the `source.owner` - -> El source.owner puede ser la dirección del propietario o su clave pública. -> -> Las transacciones son los bloques de construcción de la permaweb de Arweave y son objetos creados por los usuarios finales. -> -> Note: [Irys (previously Bundlr)](https://irys.xyz/) transactions are not supported yet. - -## Definición de esquema - -Schema definition describes the structure of the resulting Subgraph database and the relationships between entities. This is agnostic of the original data source. There are more details on the Subgraph schema definition [here](/developing/creating-a-subgraph/#the-graphql-schema). - -## Asignaciones de AssemblyScript - -The handlers for processing events are written in [AssemblyScript](https://www.assemblyscript.org/). - -Arweave indexing introduces Arweave-specific data types to the [AssemblyScript API](/subgraphs/developing/creating/graph-ts/api/). - -```tsx -class Block { - timestamp: u64 - lastRetarget: u64 - height: u64 - indepHash: Bytes - nonce: Bytes - previousBlock: Bytes - diff: Bytes - hash: Bytes - txRoot: Bytes - txs: Bytes[] - walletList: Bytes - rewardAddr: Bytes - tags: Tag[] - rewardPool: Bytes - weaveSize: Bytes - blockSize: Bytes - cumulativeDiff: Bytes - hashListMerkle: Bytes - poa: ProofOfAccess -} - -class Transaction { - format: u32 - id: Bytes - lastTx: Bytes - owner: Bytes - tags: Tag[] - target: Bytes - quantity: Bytes - data: Bytes - dataSize: Bytes - dataRoot: Bytes - signature: Bytes - reward: Bytes -} -``` - -Block handlers receive a `Block`, while transactions receive a `Transaction`. - -Writing the mappings of an Arweave Subgraph is very similar to writing the mappings of an Ethereum Subgraph. For more information, click [here](/developing/creating-a-subgraph/#writing-mappings). - -## Deploying an Arweave Subgraph in Subgraph Studio - -Once your Subgraph has been created on your Subgraph Studio dashboard, you can deploy by using the `graph deploy` CLI command. - -```bash -graph deploy --access-token -``` - -## Consultando un subgrafo de Arweave - -The GraphQL endpoint for Arweave Subgraphs is determined by the schema definition, with the existing API interface. Please visit the [GraphQL API documentation](/subgraphs/querying/graphql-api/) for more information. - -## Subgrafos de ejemplo - -Here is an example Subgraph for reference: - -- [Example Subgraph for Arweave](https://github.com/graphprotocol/graph-tooling/tree/main/examples/arweave-blocks-transactions) - -## FAQ - -### Can a Subgraph index Arweave and other chains? - -No, a Subgraph can only support data sources from one chain/network. - -### ¿Puedo indexar los archivos almacenados en Arweave? - -Actualmente, The Graph sólo indexa Arweave como blockchain (sus bloques y transacciones). - -### Can I identify Bundlr bundles in my Subgraph? - -Actualmente no se admite. - -### ¿Cómo puedo filtrar las transacciones a una cuenta específica? - -El source.owner puede ser la clave pública del usuario o la dirección de la cuenta. - -### ¿Cuál es el formato actual de encriptación? - -Data is generally passed into the mappings as Bytes, which if stored directly is returned in the Subgraph in a `hex` format (ex. block and transaction hashes). You may want to convert to a `base64` or `base64 URL`-safe format in your mappings, in order to match what is displayed in block explorers like [Arweave Explorer](https://viewblock.io/arweave/). - -The following `bytesToBase64(bytes: Uint8Array, urlSafe: boolean): string` helper function can be used, and will be added to `graph-ts`: - -``` -const base64Alphabet = [ - "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", - "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", - "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", - "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", - "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "+", "/" -]; - -const base64UrlAlphabet = [ - "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", - "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", - "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", - "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", - "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-", "_" -]; - -function bytesToBase64(bytes: Uint8Array, urlSafe: boolean): string { - let alphabet = urlSafe? base64UrlAlphabet : base64Alphabet; - - let result = '', i: i32, l = bytes.length; - for (i = 2; i < l; i += 3) { - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)]; - result += alphabet[((bytes[i - 1] & 0x0F) << 2) | (bytes[i] >> 6)]; - result += alphabet[bytes[i] & 0x3F]; - } - if (i === l + 1) { // 1 octet yet to write - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[(bytes[i - 2] & 0x03) << 4]; - if (!urlSafe) { - result += "=="; - } - } - if (!urlSafe && i === l) { // 2 octets yet to write - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)]; - result += alphabet[(bytes[i - 1] & 0x0F) << 2]; - if (!urlSafe) { - result += "="; - } - } - return result; -} -``` diff --git a/website/src/pages/fr/subgraphs/guides/_meta.js b/website/src/pages/fr/subgraphs/guides/_meta.js index a1bb04fb6d3f..fd5608dcceb2 100644 --- a/website/src/pages/fr/subgraphs/guides/_meta.js +++ b/website/src/pages/fr/subgraphs/guides/_meta.js @@ -2,7 +2,7 @@ export default { 'subgraph-composition': '', 'subgraph-debug-forking': '', near: '', - arweave: '', + grafting: '', 'subgraph-uncrashable': '', 'transfer-to-the-graph': '', diff --git a/website/src/pages/fr/subgraphs/guides/arweave.mdx b/website/src/pages/fr/subgraphs/guides/arweave.mdx deleted file mode 100644 index f888e87bd16e..000000000000 --- a/website/src/pages/fr/subgraphs/guides/arweave.mdx +++ /dev/null @@ -1,239 +0,0 @@ ---- -title: Construction de subgraphs pour Arweave ---- - -> La prise en charge d'Arweave dans Graph Node et dans Subgraph Studio est en beta : n'hésitez pas à nous contacter sur [Discord](https://discord.gg/graphprotocol) pour toute question concernant la construction de subgraphs Arweave ! - -Dans ce guide, vous apprendrez comment créer et déployer des subgraphs pour indexer la blockchain Arweave. - -## Qu’est-ce qu’Arweave ? - -Arweave est un protocole qui permet aux développeurs de stocker des données de façon permanente. C'est cette caractéristique qui constitue la principale différence entre Arweave et IPFS. En effet, IPFS n'a pas la caractéristique de permanence, et les fichiers stockés sur Arweave ne peuvent pas être modifiés ou supprimés. - -Arweave a déjà construit de nombreuses bibliothèques pour intégrer le protocole dans plusieurs langages de programmation différents. Pour plus d'informations, vous pouvez consulter : - -- [Arwiki](https://arwiki.wiki/#/en/main) -- [Ressources Arweave](https://www.arweave.org/build) - -## À quoi servent les subgraphs d'Arweave ? - -The Graph vous permet de créer des API ouvertes personnalisées appelées "Subgraphs". Les subgraphs sont utilisés pour indiquer aux Indexeurs (opérateurs de serveur) quelles données indexer sur une blockchain et enregistrer sur leurs serveurs afin que vous puissiez les interroger à tout moment à l'aide de [GraphQL](https://graphql.org/). - -[Graph Node](https://github.com/graphprotocol/graph-node) est désormais capable d'indexer les données sur le protocole Arweave. L'intégration actuelle indexe uniquement Arweave en tant que blockchain (blocs et transactions), elle n'indexe pas encore les fichiers stockés. - -## Construire un subgraph Arweave - -Pour pouvoir créer et déployer des Arweave Subgraphs, vous avez besoin de deux packages : - -1. `@graphprotocol/graph-cli` au-dessus de la version 0.30.2 - C'est un outil en ligne de commande pour construire et déployer des subgraphs. [Cliquez ici](https://www.npmjs.com/package/@graphprotocol/graph-cli) pour le télécharger en utilisant `npm`. -2. `@graphprotocol/graph-ts` au-dessus de la version 0.27.0 - Il s'agit d'une bibliothèque de types spécifiques aux subgraphs. [Cliquez ici](https://www.npmjs.com/package/@graphprotocol/graph-ts) pour télécharger en utilisant `npm`. - -## Caractéristique des subgraphs - -Un subgraph se compose de trois éléments : - -### 1. Le Manifest - `subgraph.yaml` - -Définit les sources de données intéressantes et la manière dont elles doivent être traitées. Arweave est un nouveau type de source de données. - -### 2. Schéma - `schema.graphql` - -Vous définissez ici les données que vous souhaitez pouvoir interroger après avoir indexé votre subgraph à l'aide de GraphQL. Ceci est en fait similaire à un modèle pour une API, où le modèle définit la structure d'un corps de requête. - -Les exigences relatives aux subgraphs Arweave sont couvertes par la [documentation existante](/developing/creating-a-subgraph/#the-graphql-schema). - -### 3. Mappages en AssemblyScript - `mapping.ts` - -Il s'agit de la logique qui détermine comment les données doivent être récupérées et stockées lorsqu'une personne interagit avec les sources de données que vous interrogez. Les données sont traduites et stockées sur la base du schema que vous avez répertorié. - -During Subgraph development there are two key commands: - -``` -$ graph codegen # generates types from the schema file identified in the manifest -$ graph build # generates Web Assembly from the AssemblyScript files, and prepares all the Subgraph files in a /build folder -``` - -## Définition du manifeste du subgraph - -Le manifeste du subgraph `subgraph.yaml` identifie les sources de données pour le subgraph, les déclencheurs intéressants et les fonctions qui doivent être exécutées en réponse à ces déclencheurs. Voir ci-dessous un exemple de manifeste de subgraph pour un subgraph Arweave : - -```yaml -specVersion: 1.3.0 -description: Arweave Blocks Indexing -schema: - file: ./schema.graphql # link to the schema file -dataSources: - - kind: arweave - name: arweave-blocks - network: arweave-mainnet # The Graph only supports Arweave Mainnet - source: - owner: 'ID-OF-AN-OWNER' # The public key of an Arweave wallet - startBlock: 0 # set this to 0 to start indexing from chain genesis - mapping: - apiVersion: 0.0.9 - language: wasm/assemblyscript - file: ./src/blocks.ts # link to the file with the Assemblyscript mappings - entities: - - Block - - Transaction - blockHandlers: - - handler: handleBlock # the function name in the mapping file - transactionHandlers: - - handler: handleTx # the function name in the mapping file -``` - -- Les subgraphs Arweave introduisent un nouveau type de source de données (`arweave`) -- Le réseau doit correspondre à un réseau sur le Graph Node hôte. Dans Subgraph Studio, le réseau principal d'Arweave est `arweave-mainnet` -- Les sources de données Arweave introduisent un champ source.owner facultatif, qui est la clé publique d'un portefeuille Arweave - -Les sources de données Arweave prennent en charge deux types de gestionnaires : - -- `blockHandlers` - Exécuté sur chaque nouveau bloc Arweave. Aucun source.owner n'est requis. -- `transactionHandlers` - Exécute chaque transaction dont le propriétaire est `source.owner` de la source de données. Actuellement, un propriétaire est requis pour `transactionHandlers`, si les utilisateurs veulent traiter toutes les transactions, ils doivent fournir "" comme `source.owner` - -> Source.owner peut être l’adresse du propriétaire ou sa clé publique. -> -> Les transactions sont les éléments constitutifs du permaweb Arweave et ce sont des objets créés par les utilisateurs finaux. -> -> Note : Les transactions [Irys (anciennement Bundlr)](https://irys.xyz/) ne sont pas encore prises en charge. - -## Définition de schéma - -La définition du schéma décrit la structure de la base de données Subgraph résultante et les relations entre les entités. Elle est indépendante de la source de données d'origine. Vous trouverez plus de détails sur la définition du schéma du subgraph [ici](/developing/creating-a-subgraph/#the-graphql-schema). - -## Cartographies AssemblyScript - -Les gestionnaires d'événements sont écrits en [AssemblyScript](https://www.assemblyscript.org/). - -L'indexation Arweave introduit des types de données spécifiques à Arweave dans l'[API AssemblyScript](/subgraphs/developing/creating/graph-ts/api/). - -```tsx -class Block { - timestamp: u64 - lastRetarget: u64 - height: u64 - indepHash: Bytes - nonce: Bytes - previousBlock: Bytes - diff: Bytes - hash: Bytes - txRoot: Bytes - txs: Bytes[] - walletList: Bytes - rewardAddr: Bytes - tags: Tag[] - rewardPool: Bytes - weaveSize: Bytes - blockSize: Bytes - cumulativeDiff: Bytes - hashListMerkle: Bytes - poa: ProofOfAccess -} - -class Transaction { - format: u32 - id: Bytes - lastTx: Bytes - owner: Bytes - tags: Tag[] - target: Bytes - quantity: Bytes - data: Bytes - dataSize: Bytes - dataRoot: Bytes - signature: Bytes - reward: Bytes -} -``` - -Les gestionnaires de blocs reçoivent un `Block`, tandis que les transactions reçoivent un `Transaction`. - -L'écriture des mappages d'un subgraph Arweave est très similaire à l'écriture des mappages d'un subgraph Ethereum. Pour plus d'informations, cliquez [ici](/developing/creating-a-subgraph/#writing-mappings). - -## Déploiement d'un subgraph Arweave dans Subgraph Studio - -Une fois que votre subgraph a été créé sur le tableau de bord de Subgraph Studio, vous pouvez le déployer en utilisant la commande CLI `graph deploy`. - -```bash -graph deploy --access-token -``` - -## Interroger un subgraph d'Arweave - -L'Endpoint GraphQL pour les subgraphs Arweave est déterminé par la définition du schéma, avec l'interface API existante. Veuillez consulter la [documentation API GraphQL](/subgraphs/querying/graphql-api/) pour plus d'informations. - -## Exemples de subgraphs - -Voici un exemple de subgraph à titre de référence : - -- [Exemple de sous-graphe pour Arweave](https://github.com/graphprotocol/graph-tooling/tree/main/examples/arweave-blocks-transactions) - -## FAQ - -### Un subgraph peut-il indexer Arweave et d'autres blockchains ? - -No, a Subgraph can only support data sources from one chain/network. - -### Puis-je indexer les fichiers enregistrés sur Arweave ? - -Actuellement, The Graph n'indexe Arweave qu'en tant que blockchain (ses blocs et ses transactions). - -### Puis-je identifier les packages de Bundlr dans mon subgraph ? - -Cette fonction n'est pas prise en charge actuellement. - -### Comment puis-je filtrer les transactions sur un compte spécifique ? - -La source.owner peut être la clé publique de l'utilisateur ou l'adresse de son compte. - -### Quel est le format de chiffrement actuel ? - -Les données sont généralement passées dans les mappages sous forme de Bytes, qui, s'ils sont stockés directement, sont renvoyés dans le subgraph dans un format `hex` (par exemple, les hash de blocs et de transactions). Vous pouvez vouloir convertir en un format `base64` ou `base64 URL` dans vos mappages, afin de correspondre à ce qui est affiché dans les explorateurs de blocs comme [Arweave Explorer](https://viewblock.io/arweave/). - -La fonction d'assistant `bytesToBase64(bytes : Uint8Array, urlSafe : boolean) : string` suivante peut être utilisée, et sera ajoutée à `graph-ts` : - -``` -const base64Alphabet = [ - "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", - "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", - "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", - "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", - "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "+", "/" -]; - -const base64UrlAlphabet = [ - "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", - "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", - "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", - "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", - "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-", "_" -]; - -function bytesToBase64(bytes: Uint8Array, urlSafe: boolean): string { - let alphabet = urlSafe? base64UrlAlphabet : base64Alphabet; - - let result = '', i: i32, l = bytes.length; - for (i = 2; i < l; i += 3) { - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)]; - result += alphabet[((bytes[i - 1] & 0x0F) << 2) | (bytes[i] >> 6)]; - result += alphabet[bytes[i] & 0x3F]; - } - if (i === l + 1) { // 1 octet à écrire - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[(bytes[i - 2] & 0x03) << 4]; - if (!urlSafe) { - result += "=="; - } - } - if (!urlSafe && i === l) { // 2 octets à écrire - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)]; - result += alphabet[(bytes[i - 1] & 0x0F) << 2]; - if (!urlSafe) { - result += "="; - } - } - return result; -} -``` diff --git a/website/src/pages/hi/subgraphs/guides/_meta.js b/website/src/pages/hi/subgraphs/guides/_meta.js index a1bb04fb6d3f..fd5608dcceb2 100644 --- a/website/src/pages/hi/subgraphs/guides/_meta.js +++ b/website/src/pages/hi/subgraphs/guides/_meta.js @@ -2,7 +2,7 @@ export default { 'subgraph-composition': '', 'subgraph-debug-forking': '', near: '', - arweave: '', + grafting: '', 'subgraph-uncrashable': '', 'transfer-to-the-graph': '', diff --git a/website/src/pages/hi/subgraphs/guides/arweave.mdx b/website/src/pages/hi/subgraphs/guides/arweave.mdx deleted file mode 100644 index 505f7ddd5785..000000000000 --- a/website/src/pages/hi/subgraphs/guides/arweave.mdx +++ /dev/null @@ -1,239 +0,0 @@ ---- -title: आरवीव पर सब-ग्राफ्र्स बनाना ---- - -> Arweave समर्थन Graph Node और सबग्राफ Studio में बीटा में है: कृपया हमसे [Discord](https://discord.gg/graphprotocol) पर संपर्क करें यदि आपके पास Arweave सबग्राफ बनाने के बारे में कोई प्रश्न हैं! - -इस गाइड में आप आरवीव ब्लॉकचेन पर सब ग्राफ्स बनाना और डेप्लॉय करना सीखेंगे! - -## आरवीव क्या है? - -आरवीव प्रोटोकॉल डेवेलपर्स को स्थायी तौर पर डाटा स्टोर करने की क्षमता देता है जो कि IPFS और आरवीव के बीच का मुख्या अंतर भी है, जहाँ IPFS में इस क्षमता की कमी है, वहीँ आरवीवे पर फाइल्स डिलीट या बदली नहीं जा सकती | - -अरवीव द्वारा पहले से ही कई लाइब्रेरी विभिन्न प्रोग्रामिंग भाषाओं में विकशित की गई हैं| अधिक जानकारी के लिए आप इनका रुख कर सकते हैं: - -- [Arwiki](https://arwiki.wiki/#/en/main) -- [Arweave Resources](https://www.arweave.org/build) - -## आरवीवे सब ग्राफ्स क्या हैं? - -The Graph आपको कस्टम ओपन API बनाने की सुविधा देता है, जिन्हें "Subgraphs" कहा जाता है। Subgraphs का उपयोग Indexers (सर्वर ऑपरेटर्स) को यह बताने के लिए किया जाता है कि ब्लॉकचेन पर कौन सा डेटा Indexing करना है और इसे उनके सर्वर पर सहेजना है, ताकि आप इसे किसी भी समय [GraphQL](https://graphql.org/) का उपयोग करके क्वेरी कर सकें। - -[Graph Node(https://github.com/graphprotocol/graph-node) अब Arweave protocol पर डेटा को इंडेक्स करने में सक्षम है। वर्तमान इंटीग्रेशन केवल Arweave को एक ब्लॉकचेन के रूप में indexing कर रहा है (blocks and transactions), यह अभी संग्रहीत फ़ाइलों को indexing नहीं कर रहा है। - -## एक आरवीव सब ग्राफ बनाना - -आरवीवे पर सब ग्राफ बनाने के लिए हमे दो पैकेजेस की जरूरत है: - -1. `@graphprotocol/graph-cli` संस्करण 0.30.2 से ऊपर - यह एक कमांड-लाइन टूल है जो सबग्राफ बनाने और डिप्लॉय करने के लिए उपयोग किया जाता है। [यहाँ क्लिक करें](https://www.npmjs.com/package/@graphprotocol/graph-cli) `npm` का उपयोग करके डाउनलोड करने के लिए। -2. `@graphprotocol/graph-ts` संस्करण 0.27.0 से ऊपर - यह Subgraph-specific types की एक लाइब्रेरी है। [यहाँ क्लिक करें](https://www.npmjs.com/package/@graphprotocol/graph-ts) इसे `npm` का उपयोग करके डाउनलोड करने के लिए। - -## सब ग्राफ के कॉम्पोनेन्ट - -तीन घटक एक Subgraph के होते हैं: - - -### 1. मैनिफेस्ट- `subgraph.yaml` - -डाटा का स्रोत्र और उनको प्रोसेस करने के बारे में बताता है| आरवीव एक नए प्रकार का डाटा सोर्स है| - -### 2. स्कीमा- `schema.graphql` - -यहाँ आप बताते हैं की आप कौन सा डाटा इंडेक्सिंग के बाद क्वेरी करना चाहते हैं| दरसअल यह एक API के मॉडल जैसा है, जहाँ मॉडल द्वारा रिक्वेस्ट बॉडी का स्ट्रक्चर परिभाषित किया जाता है| - -आर्वीव सबग्राफ के लिए आवश्यकताओं को [मौजूदा दस्तावेज़ीकरण](/developing/creating-a-subgraph/#the-graphql-schema) द्वारा कवर किया गया है। - -### 3. AssemblyScript मैपिंग्स- `mapping.ts` - -यह किसी के द्वारा इस्तेमाल किये जा रहे डाटा सोर्स से डाटा को पुनः प्राप्त करने और स्टोर करने के लॉजिक को बताता है| डाटा अनुवादित होकर आपके द्वारा सूचीबद्ध स्कीमा के अनुसार स्टोर हो जाता है| - -Subgraph को बनाते वक़्त दो मुख्य कमांड हैं: - -``` -$ graph codegen # generates types from the schema file identified in the manifest -$ graph build # generates Web Assembly from the AssemblyScript files, and prepares all the subgraph files in a /build folder -``` - -## सब ग्राफ मैनिफेस्ट की परिभाषा - -सबग्राफ manifest `subgraph.yaml` उन डेटा स्रोतों की पहचान करता है जिनका उपयोग सबग्राफ के लिए किया जाता है, वे ट्रिगर जो रुचि के हैं, और वे फ़ंक्शन जो उन ट्रिगर्स के जवाब में चलाए जाने चाहिए। नीचे Arweave सबग्राफ के लिए एक उदाहरण सबग्राफ manifest दिया गया है: - -```yaml -specVersion: 1.3.0 -description: Arweave Blocks Indexing -schema: - file: ./schema.graphql # link to the schema file -dataSources: - - kind: arweave - name: arweave-blocks - network: arweave-mainnet # The Graph only supports Arweave Mainnet - source: - owner: 'ID-OF-AN-OWNER' # The public key of an Arweave wallet - startBlock: 0 # set this to 0 to start indexing from chain genesis - mapping: - apiVersion: 0.0.9 - language: wasm/assemblyscript - file: ./src/blocks.ts # link to the file with the Assemblyscript mappings - entities: - - Block - - Transaction - blockHandlers: - - handler: handleBlock # the function name in the mapping file - transactionHandlers: - - handler: handleTx # the function name in the mapping file -``` - -- Arweave सबग्राफ एक नए प्रकार के डेटा स्रोत (`arweave`) को प्रस्तुत करते हैं -- नेटवर्क को होस्टिंग Graph Node पर मौजूद नेटवर्क से मेल खाना चाहिए। सबग्राफ Studio में, Arweave का मुख्य नेटवर्क arweave-mainnet है। -- अरवीव डाटा सोर्स द्वारा एक वैकल्पिक source.owner फील्ड लाया गया, जो की एक आरवीव वॉलेट का मपब्लिक key है| - -आरवीव डाटा सोर्स द्वारा दो प्रकार के हैंडलर्स उपयोग किये जा सकते हैं: - -- `blockHandlers` - हर नए Arweave ब्लॉक पर चलाया जाता है। कोई source.owner आवश्यक नहीं है। -- `transactionHandlers` - प्रत्येक लेन-देन(transaction) पर चलाया जाता है जहाँ डेटा स्रोत का `source.owner` मालिक होता है। वर्तमान में, `transactionHandlers` के लिए एक मालिक आवश्यक है, यदि उपयोगकर्ता सभी लेन-देन(transaction) को प्रोसेस करना चाहते हैं, तो उन्हें `source.owner` के रूप में "" प्रदान करना चाहिए। - -> यहां source.owner ओनर का एड्रेस या उनका पब्लिक की हो सकता है| -> -> ट्रांसक्शन आरवीव परमावेब के लिए निर्माण खंड (बिल्डिंग ब्लॉक्स) की तरह होते हैं और एन्ड-यूजर के द्वारा बनाये गए ऑब्जेक्ट होते हैं| -> -> Note: [Irys (पहले Bundlr)](https://irys.xyz/) लेन-देन(transaction) अभी समर्थित नहीं हैं। - -## स्कीमा की परिभाषा - -Schema definition परिणामी सबग्राफ डेटाबेस की संरचना और entities के बीच संबंधों का वर्णन करता है। यह मूल डेटा स्रोत से स्वतंत्र होता है। सबग्राफ schema definition के बारे में अधिक विवरण [यहाँ](/developing/creating-a-subgraph/#the-graphql-schema) उपलब्ध है। - -## असेंबली स्क्रिप्ट मैप्पिंग्स - -आयोजन को प्रोसेस करने के लिए handler[AssemblyScript](https://www.assemblyscript.org/) में लिखे गए हैं। - -Arweave indexing [AssemblyScript API](/subgraphs/developing/creating/graph-ts/api/) में Arweave-विशिष्ट डेटा प्रकार प्रस्तुत करता है। - -```tsx -class Block { - timestamp: u64 - lastRetarget: u64 - height: u64 - indepHash: Bytes - nonce: Bytes - previousBlock: Bytes - diff: Bytes - hash: Bytes - txRoot: Bytes - txs: Bytes[] - walletList: Bytes - rewardAddr: Bytes - tags: Tag[] - rewardPool: Bytes - weaveSize: Bytes - blockSize: Bytes - cumulativeDiff: Bytes - hashListMerkle: Bytes - poa: ProofOfAccess -} - -class Transaction { - format: u32 - id: Bytes - lastTx: Bytes - owner: Bytes - tags: Tag[] - target: Bytes - quantity: Bytes - data: Bytes - dataSize: Bytes - dataRoot: Bytes - signature: Bytes - reward: Bytes -} -``` - -ब्लॉक हैंडलर एक Block प्राप्त करते हैं, जबकि लेनदेन एक लेन-देन(transaction) प्राप्त करते हैं। - -Arweave सबग्राफ का मैपिंग लिखना Ethereum सबग्राफ के मैपिंग लिखने के बहुत समान है। अधिक जानकारी के लिए, [यहाँ क्लिक करें](/developing/creating-a-subgraph/#writing-mappings)। - -## Deploying an Arweave Subgraph in Subgraph Studio - -एक बार जब आपका सबग्राफ आपके सबग्राफ Studio डैशबोर्ड पर बना लिया जाता है, तो आप graph deploy CLI कमांड का उपयोग करके इसे डिप्लॉय कर सकते हैं। - -```bash -graph deploy --access-token -``` - -## आरवीव सब-ग्राफ क्वेरी करना - -The GraphQL endpoint Arweave सबग्राफ के लिए schema परिभाषा द्वारा निर्धारित किया जाता है, जिसमें मौजूदा API इंटरफ़ेस होता है। अधिक जानकारी के लिए कृपया [GraphQL API documentation](/subgraphs/querying/graphql-api/) देखें। - -## सब-ग्राफ के उदाहरण - -यहाँ संदर्भ के लिए एक उदाहरण सबग्राफ दिया गया है: - - -- [उदाहरण सबग्राफ for Arweave](https://github.com/graphprotocol/graph-tooling/tree/main/examples/arweave-blocks-transactions) - -## FAQ - -### क्या सबग्राफ Arweave और अन्य चेन को इंडेक्स कर सकता है? - -नहीं, एक सब-ग्राफ केवल एक चेन/नेटवर्क से डाटा सोर्स को सपोर्ट कर सकता है - -### क्या मैं आरवीव पर स्टोर की फाइल्स को इंडेक्स कर सकता हूँ? - -वर्तमान में द ग्राफ आरवीव को केवल एक ब्लॉकचेन की तरह इंडेक्स करता है (उसके ब्लॉक्स और ट्रांसक्शन्स)| - -### क्या मैं अपने Subgraph में Bundlr bundles की पहचान कर सकता हूँ? - -यह वर्तमान में सपोर्टेड नहीं है| - -### क्या मैं किसी विशिष्ट अकाउंट से ट्रांसक्शन्स छाँट सकता हूँ? - -एक यूजर का पब्लिक की या अकाउंट एड्रेस source.owner हो सकता है - -### वर्तमान एन्क्रिप्शन फॉर्मेट क्या है? - -डेटा आमतौर पर Bytes के रूप में मैपिंग्स में पास किया जाता है, जिसे यदि सीधे संग्रहीत किया जाए, तो यह सबग्राफ में hex प्रारूप में लौटाया जाता है (उदाहरण: ब्लॉक और लेन-देन हैश)। आप अपने मैपिंग्स में इसे base64 या base64 URL-सुरक्षित प्रारूप में परिवर्तित करना चाह सकते हैं, ताकि यह उन ब्लॉक एक्सप्लोरर्स में प्रदर्शित होने वाले प्रारूप से मेल खाए, जैसे कि Arweave Explorer। - -यह `bytesToBase64(bytes: Uint8Array, urlSafe: boolean): string` हेल्पर फंक्शन का उपयोग किया जा सकता है, और इसे `graph-ts` में जोड़ा जाएगा: - -``` -const base64Alphabet = [ - "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", - "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", - "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", - "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", - "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "+", "/" -]; - -const base64UrlAlphabet = [ - "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", - "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", - "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", - "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", - "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-", "_" -]; - -function bytesToBase64(bytes: Uint8Array, urlSafe: boolean): string { - let alphabet = urlSafe? base64UrlAlphabet : base64Alphabet; - - let result = '', i: i32, l = bytes.length; - for (i = 2; i < l; i += 3) { - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)]; - result += alphabet[((bytes[i - 1] & 0x0F) << 2) | (bytes[i] >> 6)]; - result += alphabet[bytes[i] & 0x3F]; - } - if (i === l + 1) { // 1 octet yet to write - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[(bytes[i - 2] & 0x03) << 4]; - if (!urlSafe) { - result += "=="; - } - } - if (!urlSafe && i === l) { // 2 octets yet to write - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)]; - result += alphabet[(bytes[i - 1] & 0x0F) << 2]; - if (!urlSafe) { - result += "="; - } - } - return result; -} -``` diff --git a/website/src/pages/it/subgraphs/guides/_meta.js b/website/src/pages/it/subgraphs/guides/_meta.js index a1bb04fb6d3f..fd5608dcceb2 100644 --- a/website/src/pages/it/subgraphs/guides/_meta.js +++ b/website/src/pages/it/subgraphs/guides/_meta.js @@ -2,7 +2,7 @@ export default { 'subgraph-composition': '', 'subgraph-debug-forking': '', near: '', - arweave: '', + grafting: '', 'subgraph-uncrashable': '', 'transfer-to-the-graph': '', diff --git a/website/src/pages/it/subgraphs/guides/arweave.mdx b/website/src/pages/it/subgraphs/guides/arweave.mdx deleted file mode 100644 index e59abffa383f..000000000000 --- a/website/src/pages/it/subgraphs/guides/arweave.mdx +++ /dev/null @@ -1,239 +0,0 @@ ---- -title: Building Subgraphs on Arweave ---- - -> Arweave support in Graph Node and on Subgraph Studio is in beta: please reach us on [Discord](https://discord.gg/graphprotocol) with any questions about building Arweave Subgraphs! - -In this guide, you will learn how to build and deploy Subgraphs to index the Arweave blockchain. - -## What is Arweave? - -The Arweave protocol allows developers to store data permanently and that is the main difference between Arweave and IPFS, where IPFS lacks the feature; permanence, and files stored on Arweave can't be changed or deleted. - -Arweave already has built numerous libraries for integrating the protocol in a number of different programming languages. For more information you can check: - -- [Arwiki](https://arwiki.wiki/#/en/main) -- [Arweave Resources](https://www.arweave.org/build) - -## What are Arweave Subgraphs? - -The Graph allows you to build custom open APIs called "Subgraphs". Subgraphs are used to tell indexers (server operators) which data to index on a blockchain and save on their servers in order for you to be able to query it at any time using [GraphQL](https://graphql.org/). - -[Graph Node](https://github.com/graphprotocol/graph-node) is now able to index data on Arweave protocol. The current integration is only indexing Arweave as a blockchain (blocks and transactions), it is not indexing the stored files yet. - -## Building an Arweave Subgraph - -To be able to build and deploy Arweave Subgraphs, you need two packages: - -1. `@graphprotocol/graph-cli` above version 0.30.2 - This is a command-line tool for building and deploying Subgraphs. [Click here](https://www.npmjs.com/package/@graphprotocol/graph-cli) to download using `npm`. -2. `@graphprotocol/graph-ts` above version 0.27.0 - This is library of Subgraph-specific types. [Click here](https://www.npmjs.com/package/@graphprotocol/graph-ts) to download using `npm`. - -## Subgraph's components - -There are three components of a Subgraph: - -### 1. Manifest - `subgraph.yaml` - -Defines the data sources of interest, and how they should be processed. Arweave is a new kind of data source. - -### 2. Schema - `schema.graphql` - -Here you define which data you want to be able to query after indexing your Subgraph using GraphQL. This is actually similar to a model for an API, where the model defines the structure of a request body. - -The requirements for Arweave Subgraphs are covered by the [existing documentation](/developing/creating-a-subgraph/#the-graphql-schema). - -### 3. AssemblyScript Mappings - `mapping.ts` - -This is the logic that determines how data should be retrieved and stored when someone interacts with the data sources you are listening to. The data gets translated and is stored based off the schema you have listed. - -During Subgraph development there are two key commands: - -``` -$ graph codegen # generates types from the schema file identified in the manifest -$ graph build # generates Web Assembly from the AssemblyScript files, and prepares all the Subgraph files in a /build folder -``` - -## Subgraph Manifest Definition - -The Subgraph manifest `subgraph.yaml` identifies the data sources for the Subgraph, the triggers of interest, and the functions that should be run in response to those triggers. See below for an example Subgraph manifest for an Arweave Subgraph: - -```yaml -specVersion: 1.3.0 -description: Arweave Blocks Indexing -schema: - file: ./schema.graphql # link to the schema file -dataSources: - - kind: arweave - name: arweave-blocks - network: arweave-mainnet # The Graph only supports Arweave Mainnet - source: - owner: 'ID-OF-AN-OWNER' # The public key of an Arweave wallet - startBlock: 0 # set this to 0 to start indexing from chain genesis - mapping: - apiVersion: 0.0.9 - language: wasm/assemblyscript - file: ./src/blocks.ts # link to the file with the Assemblyscript mappings - entities: - - Block - - Transaction - blockHandlers: - - handler: handleBlock # the function name in the mapping file - transactionHandlers: - - handler: handleTx # the function name in the mapping file -``` - -- Arweave Subgraphs introduce a new kind of data source (`arweave`) -- The network should correspond to a network on the hosting Graph Node. In Subgraph Studio, Arweave's mainnet is `arweave-mainnet` -- Arweave data sources introduce an optional source.owner field, which is the public key of an Arweave wallet - -Arweave data sources support two types of handlers: - -- `blockHandlers` - Run on every new Arweave block. No source.owner is required. -- `transactionHandlers` - Run on every transaction where the data source's `source.owner` is the owner. Currently an owner is required for `transactionHandlers`, if users want to process all transactions they should provide "" as the `source.owner` - -> The source.owner can be the owner's address, or their Public Key. -> -> Transactions are the building blocks of the Arweave permaweb and they are objects created by end-users. -> -> Note: [Irys (previously Bundlr)](https://irys.xyz/) transactions are not supported yet. - -## Schema Definition - -Schema definition describes the structure of the resulting Subgraph database and the relationships between entities. This is agnostic of the original data source. There are more details on the Subgraph schema definition [here](/developing/creating-a-subgraph/#the-graphql-schema). - -## AssemblyScript Mappings - -The handlers for processing events are written in [AssemblyScript](https://www.assemblyscript.org/). - -Arweave indexing introduces Arweave-specific data types to the [AssemblyScript API](/subgraphs/developing/creating/graph-ts/api/). - -```tsx -class Block { - timestamp: u64 - lastRetarget: u64 - height: u64 - indepHash: Bytes - nonce: Bytes - previousBlock: Bytes - diff: Bytes - hash: Bytes - txRoot: Bytes - txs: Bytes[] - walletList: Bytes - rewardAddr: Bytes - tags: Tag[] - rewardPool: Bytes - weaveSize: Bytes - blockSize: Bytes - cumulativeDiff: Bytes - hashListMerkle: Bytes - poa: ProofOfAccess -} - -class Transaction { - format: u32 - id: Bytes - lastTx: Bytes - owner: Bytes - tags: Tag[] - target: Bytes - quantity: Bytes - data: Bytes - dataSize: Bytes - dataRoot: Bytes - signature: Bytes - reward: Bytes -} -``` - -Block handlers receive a `Block`, while transactions receive a `Transaction`. - -Writing the mappings of an Arweave Subgraph is very similar to writing the mappings of an Ethereum Subgraph. For more information, click [here](/developing/creating-a-subgraph/#writing-mappings). - -## Deploying an Arweave Subgraph in Subgraph Studio - -Once your Subgraph has been created on your Subgraph Studio dashboard, you can deploy by using the `graph deploy` CLI command. - -```bash -graph deploy --access-token -``` - -## Querying an Arweave Subgraph - -The GraphQL endpoint for Arweave Subgraphs is determined by the schema definition, with the existing API interface. Please visit the [GraphQL API documentation](/subgraphs/querying/graphql-api/) for more information. - -## Example Subgraphs - -Here is an example Subgraph for reference: - -- [Example Subgraph for Arweave](https://github.com/graphprotocol/graph-tooling/tree/main/examples/arweave-blocks-transactions) - -## FAQ - -### Can a Subgraph index Arweave and other chains? - -No, a Subgraph can only support data sources from one chain/network. - -### Can I index the stored files on Arweave? - -Currently, The Graph is only indexing Arweave as a blockchain (its blocks and transactions). - -### Can I identify Bundlr bundles in my Subgraph? - -This is not currently supported. - -### How can I filter transactions to a specific account? - -The source.owner can be the user's public key or account address. - -### What is the current encryption format? - -Data is generally passed into the mappings as Bytes, which if stored directly is returned in the Subgraph in a `hex` format (ex. block and transaction hashes). You may want to convert to a `base64` or `base64 URL`-safe format in your mappings, in order to match what is displayed in block explorers like [Arweave Explorer](https://viewblock.io/arweave/). - -The following `bytesToBase64(bytes: Uint8Array, urlSafe: boolean): string` helper function can be used, and will be added to `graph-ts`: - -``` -const base64Alphabet = [ - "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", - "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", - "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", - "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", - "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "+", "/" -]; - -const base64UrlAlphabet = [ - "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", - "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", - "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", - "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", - "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-", "_" -]; - -function bytesToBase64(bytes: Uint8Array, urlSafe: boolean): string { - let alphabet = urlSafe? base64UrlAlphabet : base64Alphabet; - - let result = '', i: i32, l = bytes.length; - for (i = 2; i < l; i += 3) { - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)]; - result += alphabet[((bytes[i - 1] & 0x0F) << 2) | (bytes[i] >> 6)]; - result += alphabet[bytes[i] & 0x3F]; - } - if (i === l + 1) { // 1 octet yet to write - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[(bytes[i - 2] & 0x03) << 4]; - if (!urlSafe) { - result += "=="; - } - } - if (!urlSafe && i === l) { // 2 octets yet to write - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)]; - result += alphabet[(bytes[i - 1] & 0x0F) << 2]; - if (!urlSafe) { - result += "="; - } - } - return result; -} -``` diff --git a/website/src/pages/ja/subgraphs/guides/_meta.js b/website/src/pages/ja/subgraphs/guides/_meta.js index a1bb04fb6d3f..fd5608dcceb2 100644 --- a/website/src/pages/ja/subgraphs/guides/_meta.js +++ b/website/src/pages/ja/subgraphs/guides/_meta.js @@ -2,7 +2,7 @@ export default { 'subgraph-composition': '', 'subgraph-debug-forking': '', near: '', - arweave: '', + grafting: '', 'subgraph-uncrashable': '', 'transfer-to-the-graph': '', diff --git a/website/src/pages/ja/subgraphs/guides/arweave.mdx b/website/src/pages/ja/subgraphs/guides/arweave.mdx deleted file mode 100644 index 66eef9c8160f..000000000000 --- a/website/src/pages/ja/subgraphs/guides/arweave.mdx +++ /dev/null @@ -1,239 +0,0 @@ ---- -title: Arweaveでのサブグラフ構築 ---- - -> Arweave support in Graph Node and on Subgraph Studio is in beta: please reach us on [Discord](https://discord.gg/graphprotocol) with any questions about building Arweave Subgraphs! - -このガイドでは、Arweaveブロックチェーンのインデックスを作成するためのサブグラフの構築とデプロイ方法について学びます。 - -## Arweaveとは? - -Arweave プロトコルは、開発者がデータを永久に保存することを可能にし、それが Arweave と IPFS の主な違いです。IPFSは永続性に欠ける一方、Arweaveに保存されたファイルは変更も削除もできません。 - -Arweaveは既に、さまざまなプログラミング言語でプロトコルを統合するための多数のライブラリを構築しています。詳細については、次を確認できます。 - -- [Arwiki](https://arwiki.wiki/#/en/main) -- [Arweave Resources](https://www.arweave.org/build) - -## Arweaveサブグラフとは? - -The Graph allows you to build custom open APIs called "Subgraphs". Subgraphs are used to tell indexers (server operators) which data to index on a blockchain and save on their servers in order for you to be able to query it at any time using [GraphQL](https://graphql.org/). - -[Graph Node](https://github.com/graphprotocol/graph-node) is now able to index data on Arweave protocol. The current integration is only indexing Arweave as a blockchain (blocks and transactions), it is not indexing the stored files yet. - -## Arweave サブグラフの作成 - -Arweaveのサブグラフを構築し展開できるようにするためには、2つのパッケージが必要です。 - -1. `@graphprotocol/graph-cli` above version 0.30.2 - This is a command-line tool for building and deploying Subgraphs. [Click here](https://www.npmjs.com/package/@graphprotocol/graph-cli) to download using `npm`. -2. `@graphprotocol/graph-ts` above version 0.27.0 - This is library of Subgraph-specific types. [Click here](https://www.npmjs.com/package/@graphprotocol/graph-ts) to download using `npm`. - -## サブグラフのコンポーネント - -There are three components of a Subgraph: - -### 1. Manifest - `subgraph.yaml` - -対象のデータ ソースとその処理方法を定義します。 Arweave は新しい種類のデータ ソースです。 - -### 2. Schema - `schema.graphql` - -ここでは、GraphQL を使用してサブグラフにインデックスを付けた後にクエリできるようにするデータを定義します。これは実際には API のモデルに似ており、モデルはリクエスト本文の構造を定義します。 - -The requirements for Arweave Subgraphs are covered by the [existing documentation](/developing/creating-a-subgraph/#the-graphql-schema). - -### 3. AssemblyScript Mappings - `mapping.ts` - -これは、リスニングしているデータソースと誰かがやりとりするときに、データをどのように取得し、保存するかを決定するロジックです。データは変換され、あなたがリストアップしたスキーマに基づいて保存されます。 - -During Subgraph development there are two key commands: - -``` -$ graph codegen # generates types from the schema file identified in the manifest -$ graph build # generates Web Assembly from the AssemblyScript files, and prepares all the Subgraph files in a /build folder -``` - -## サブグラフマニフェストの定義 - -The Subgraph manifest `subgraph.yaml` identifies the data sources for the Subgraph, the triggers of interest, and the functions that should be run in response to those triggers. See below for an example Subgraph manifest for an Arweave Subgraph: - -```yaml -specVersion: 1.3.0 -description: Arweave Blocks Indexing -schema: - file: ./schema.graphql # link to the schema file -dataSources: - - kind: arweave - name: arweave-blocks - network: arweave-mainnet # The Graph only supports Arweave Mainnet - source: - owner: 'ID-OF-AN-OWNER' # The public key of an Arweave wallet - startBlock: 0 # set this to 0 to start indexing from chain genesis - mapping: - apiVersion: 0.0.9 - language: wasm/assemblyscript - file: ./src/blocks.ts # link to the file with the Assemblyscript mappings - entities: - - Block - - Transaction - blockHandlers: - - handler: handleBlock # the function name in the mapping file - transactionHandlers: - - handler: handleTx # the function name in the mapping file -``` - -- Arweave Subgraphs introduce a new kind of data source (`arweave`) -- The network should correspond to a network on the hosting Graph Node. In Subgraph Studio, Arweave's mainnet is `arweave-mainnet` -- Arweave データ ソースには、オプションの source.owner フィールドが導入されています。これは、Arweave ウォレットの公開鍵です。 - -Arweaveデータソースは 2 種類のハンドラーをサポートしています: - -- `blockHandlers` - Run on every new Arweave block. No source.owner is required. -- `transactionHandlers` - Run on every transaction where the data source's `source.owner` is the owner. Currently an owner is required for `transactionHandlers`, if users want to process all transactions they should provide "" as the `source.owner` - -> Source.owner は、所有者のアドレスまたは公開鍵にすることができます。 -> -> トランザクションはArweave permawebの構成要素であり、エンドユーザーによって作成されるオブジェクトです。 -> -> Note: [Irys (previously Bundlr)](https://irys.xyz/) transactions are not supported yet. - -## スキーマ定義 - -Schema definition describes the structure of the resulting Subgraph database and the relationships between entities. This is agnostic of the original data source. There are more details on the Subgraph schema definition [here](/developing/creating-a-subgraph/#the-graphql-schema). - -## AssemblyScript マッピング - -The handlers for processing events are written in [AssemblyScript](https://www.assemblyscript.org/). - -Arweave indexing introduces Arweave-specific data types to the [AssemblyScript API](/subgraphs/developing/creating/graph-ts/api/). - -```tsx -class Block { - timestamp: u64 - lastRetarget: u64 - height: u64 - indepHash: Bytes - nonce: Bytes - previousBlock: Bytes - diff: Bytes - hash: Bytes - txRoot: Bytes - txs: Bytes[] - walletList: Bytes - rewardAddr: Bytes - tags: Tag[] - rewardPool: Bytes - weaveSize: Bytes - blockSize: Bytes - cumulativeDiff: Bytes - hashListMerkle: Bytes - poa: ProofOfAccess -} - -class Transaction { - format: u32 - id: Bytes - lastTx: Bytes - owner: Bytes - tags: Tag[] - target: Bytes - quantity: Bytes - data: Bytes - dataSize: Bytes - dataRoot: Bytes - signature: Bytes - reward: Bytes -} -``` - -Block handlers receive a `Block`, while transactions receive a `Transaction`. - -Writing the mappings of an Arweave Subgraph is very similar to writing the mappings of an Ethereum Subgraph. For more information, click [here](/developing/creating-a-subgraph/#writing-mappings). - -## Deploying an Arweave Subgraph in Subgraph Studio - -Once your Subgraph has been created on your Subgraph Studio dashboard, you can deploy by using the `graph deploy` CLI command. - -```bash -graph deploy --access-token -``` - -## Arweaveサブグラフのクエリ - -The GraphQL endpoint for Arweave Subgraphs is determined by the schema definition, with the existing API interface. Please visit the [GraphQL API documentation](/subgraphs/querying/graphql-api/) for more information. - -## サブグラフの例 - -Here is an example Subgraph for reference: - -- [Example Subgraph for Arweave](https://github.com/graphprotocol/graph-tooling/tree/main/examples/arweave-blocks-transactions) - -## FAQ - -### Can a Subgraph index Arweave and other chains? - -No, a Subgraph can only support data sources from one chain/network. - -### 保存されたファイルをArweaveでインデックス化することはできますか? - -現在、The Graph は Arweave をブロックチェーン (ブロックとトランザクション) としてのみインデックス化しています。 - -### Can I identify Bundlr bundles in my Subgraph? - -現在はサポートされていません。 - -### トランザクションを特定のアカウントにフィルターするにはどうすればよいですか? - -Source.ownerには、ユーザの公開鍵またはアカウントアドレスを指定することができます。 - -### 現在の暗号化フォーマットは? - -Data is generally passed into the mappings as Bytes, which if stored directly is returned in the Subgraph in a `hex` format (ex. block and transaction hashes). You may want to convert to a `base64` or `base64 URL`-safe format in your mappings, in order to match what is displayed in block explorers like [Arweave Explorer](https://viewblock.io/arweave/). - -The following `bytesToBase64(bytes: Uint8Array, urlSafe: boolean): string` helper function can be used, and will be added to `graph-ts`: - -``` -const base64Alphabet = [ - "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", - "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", - "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", - "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", - "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "+", "/" -]; - -const base64UrlAlphabet = [ - "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", - "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", - "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", - "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", - "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-", "_" -]; - -function bytesToBase64(bytes: Uint8Array, urlSafe: boolean): string { - let alphabet = urlSafe? base64UrlAlphabet : base64Alphabet; - - let result = '', i: i32, l = bytes.length; - for (i = 2; i < l; i += 3) { - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)]; - result += alphabet[((bytes[i - 1] & 0x0F) << 2) | (bytes[i] >> 6)]; - result += alphabet[bytes[i] & 0x3F]; - } - if (i === l + 1) { // 1 octet yet to write - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[(bytes[i - 2] & 0x03) << 4]; - if (!urlSafe) { - result += "=="; - } - } - if (!urlSafe && i === l) { // 2 octets yet to write - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)]; - result += alphabet[(bytes[i - 1] & 0x0F) << 2]; - if (!urlSafe) { - result += "="; - } - } - return result; -} -``` diff --git a/website/src/pages/ko/subgraphs/guides/_meta.js b/website/src/pages/ko/subgraphs/guides/_meta.js index a1bb04fb6d3f..fd5608dcceb2 100644 --- a/website/src/pages/ko/subgraphs/guides/_meta.js +++ b/website/src/pages/ko/subgraphs/guides/_meta.js @@ -2,7 +2,7 @@ export default { 'subgraph-composition': '', 'subgraph-debug-forking': '', near: '', - arweave: '', + grafting: '', 'subgraph-uncrashable': '', 'transfer-to-the-graph': '', diff --git a/website/src/pages/ko/subgraphs/guides/arweave.mdx b/website/src/pages/ko/subgraphs/guides/arweave.mdx deleted file mode 100644 index e59abffa383f..000000000000 --- a/website/src/pages/ko/subgraphs/guides/arweave.mdx +++ /dev/null @@ -1,239 +0,0 @@ ---- -title: Building Subgraphs on Arweave ---- - -> Arweave support in Graph Node and on Subgraph Studio is in beta: please reach us on [Discord](https://discord.gg/graphprotocol) with any questions about building Arweave Subgraphs! - -In this guide, you will learn how to build and deploy Subgraphs to index the Arweave blockchain. - -## What is Arweave? - -The Arweave protocol allows developers to store data permanently and that is the main difference between Arweave and IPFS, where IPFS lacks the feature; permanence, and files stored on Arweave can't be changed or deleted. - -Arweave already has built numerous libraries for integrating the protocol in a number of different programming languages. For more information you can check: - -- [Arwiki](https://arwiki.wiki/#/en/main) -- [Arweave Resources](https://www.arweave.org/build) - -## What are Arweave Subgraphs? - -The Graph allows you to build custom open APIs called "Subgraphs". Subgraphs are used to tell indexers (server operators) which data to index on a blockchain and save on their servers in order for you to be able to query it at any time using [GraphQL](https://graphql.org/). - -[Graph Node](https://github.com/graphprotocol/graph-node) is now able to index data on Arweave protocol. The current integration is only indexing Arweave as a blockchain (blocks and transactions), it is not indexing the stored files yet. - -## Building an Arweave Subgraph - -To be able to build and deploy Arweave Subgraphs, you need two packages: - -1. `@graphprotocol/graph-cli` above version 0.30.2 - This is a command-line tool for building and deploying Subgraphs. [Click here](https://www.npmjs.com/package/@graphprotocol/graph-cli) to download using `npm`. -2. `@graphprotocol/graph-ts` above version 0.27.0 - This is library of Subgraph-specific types. [Click here](https://www.npmjs.com/package/@graphprotocol/graph-ts) to download using `npm`. - -## Subgraph's components - -There are three components of a Subgraph: - -### 1. Manifest - `subgraph.yaml` - -Defines the data sources of interest, and how they should be processed. Arweave is a new kind of data source. - -### 2. Schema - `schema.graphql` - -Here you define which data you want to be able to query after indexing your Subgraph using GraphQL. This is actually similar to a model for an API, where the model defines the structure of a request body. - -The requirements for Arweave Subgraphs are covered by the [existing documentation](/developing/creating-a-subgraph/#the-graphql-schema). - -### 3. AssemblyScript Mappings - `mapping.ts` - -This is the logic that determines how data should be retrieved and stored when someone interacts with the data sources you are listening to. The data gets translated and is stored based off the schema you have listed. - -During Subgraph development there are two key commands: - -``` -$ graph codegen # generates types from the schema file identified in the manifest -$ graph build # generates Web Assembly from the AssemblyScript files, and prepares all the Subgraph files in a /build folder -``` - -## Subgraph Manifest Definition - -The Subgraph manifest `subgraph.yaml` identifies the data sources for the Subgraph, the triggers of interest, and the functions that should be run in response to those triggers. See below for an example Subgraph manifest for an Arweave Subgraph: - -```yaml -specVersion: 1.3.0 -description: Arweave Blocks Indexing -schema: - file: ./schema.graphql # link to the schema file -dataSources: - - kind: arweave - name: arweave-blocks - network: arweave-mainnet # The Graph only supports Arweave Mainnet - source: - owner: 'ID-OF-AN-OWNER' # The public key of an Arweave wallet - startBlock: 0 # set this to 0 to start indexing from chain genesis - mapping: - apiVersion: 0.0.9 - language: wasm/assemblyscript - file: ./src/blocks.ts # link to the file with the Assemblyscript mappings - entities: - - Block - - Transaction - blockHandlers: - - handler: handleBlock # the function name in the mapping file - transactionHandlers: - - handler: handleTx # the function name in the mapping file -``` - -- Arweave Subgraphs introduce a new kind of data source (`arweave`) -- The network should correspond to a network on the hosting Graph Node. In Subgraph Studio, Arweave's mainnet is `arweave-mainnet` -- Arweave data sources introduce an optional source.owner field, which is the public key of an Arweave wallet - -Arweave data sources support two types of handlers: - -- `blockHandlers` - Run on every new Arweave block. No source.owner is required. -- `transactionHandlers` - Run on every transaction where the data source's `source.owner` is the owner. Currently an owner is required for `transactionHandlers`, if users want to process all transactions they should provide "" as the `source.owner` - -> The source.owner can be the owner's address, or their Public Key. -> -> Transactions are the building blocks of the Arweave permaweb and they are objects created by end-users. -> -> Note: [Irys (previously Bundlr)](https://irys.xyz/) transactions are not supported yet. - -## Schema Definition - -Schema definition describes the structure of the resulting Subgraph database and the relationships between entities. This is agnostic of the original data source. There are more details on the Subgraph schema definition [here](/developing/creating-a-subgraph/#the-graphql-schema). - -## AssemblyScript Mappings - -The handlers for processing events are written in [AssemblyScript](https://www.assemblyscript.org/). - -Arweave indexing introduces Arweave-specific data types to the [AssemblyScript API](/subgraphs/developing/creating/graph-ts/api/). - -```tsx -class Block { - timestamp: u64 - lastRetarget: u64 - height: u64 - indepHash: Bytes - nonce: Bytes - previousBlock: Bytes - diff: Bytes - hash: Bytes - txRoot: Bytes - txs: Bytes[] - walletList: Bytes - rewardAddr: Bytes - tags: Tag[] - rewardPool: Bytes - weaveSize: Bytes - blockSize: Bytes - cumulativeDiff: Bytes - hashListMerkle: Bytes - poa: ProofOfAccess -} - -class Transaction { - format: u32 - id: Bytes - lastTx: Bytes - owner: Bytes - tags: Tag[] - target: Bytes - quantity: Bytes - data: Bytes - dataSize: Bytes - dataRoot: Bytes - signature: Bytes - reward: Bytes -} -``` - -Block handlers receive a `Block`, while transactions receive a `Transaction`. - -Writing the mappings of an Arweave Subgraph is very similar to writing the mappings of an Ethereum Subgraph. For more information, click [here](/developing/creating-a-subgraph/#writing-mappings). - -## Deploying an Arweave Subgraph in Subgraph Studio - -Once your Subgraph has been created on your Subgraph Studio dashboard, you can deploy by using the `graph deploy` CLI command. - -```bash -graph deploy --access-token -``` - -## Querying an Arweave Subgraph - -The GraphQL endpoint for Arweave Subgraphs is determined by the schema definition, with the existing API interface. Please visit the [GraphQL API documentation](/subgraphs/querying/graphql-api/) for more information. - -## Example Subgraphs - -Here is an example Subgraph for reference: - -- [Example Subgraph for Arweave](https://github.com/graphprotocol/graph-tooling/tree/main/examples/arweave-blocks-transactions) - -## FAQ - -### Can a Subgraph index Arweave and other chains? - -No, a Subgraph can only support data sources from one chain/network. - -### Can I index the stored files on Arweave? - -Currently, The Graph is only indexing Arweave as a blockchain (its blocks and transactions). - -### Can I identify Bundlr bundles in my Subgraph? - -This is not currently supported. - -### How can I filter transactions to a specific account? - -The source.owner can be the user's public key or account address. - -### What is the current encryption format? - -Data is generally passed into the mappings as Bytes, which if stored directly is returned in the Subgraph in a `hex` format (ex. block and transaction hashes). You may want to convert to a `base64` or `base64 URL`-safe format in your mappings, in order to match what is displayed in block explorers like [Arweave Explorer](https://viewblock.io/arweave/). - -The following `bytesToBase64(bytes: Uint8Array, urlSafe: boolean): string` helper function can be used, and will be added to `graph-ts`: - -``` -const base64Alphabet = [ - "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", - "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", - "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", - "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", - "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "+", "/" -]; - -const base64UrlAlphabet = [ - "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", - "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", - "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", - "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", - "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-", "_" -]; - -function bytesToBase64(bytes: Uint8Array, urlSafe: boolean): string { - let alphabet = urlSafe? base64UrlAlphabet : base64Alphabet; - - let result = '', i: i32, l = bytes.length; - for (i = 2; i < l; i += 3) { - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)]; - result += alphabet[((bytes[i - 1] & 0x0F) << 2) | (bytes[i] >> 6)]; - result += alphabet[bytes[i] & 0x3F]; - } - if (i === l + 1) { // 1 octet yet to write - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[(bytes[i - 2] & 0x03) << 4]; - if (!urlSafe) { - result += "=="; - } - } - if (!urlSafe && i === l) { // 2 octets yet to write - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)]; - result += alphabet[(bytes[i - 1] & 0x0F) << 2]; - if (!urlSafe) { - result += "="; - } - } - return result; -} -``` diff --git a/website/src/pages/mr/subgraphs/guides/_meta.js b/website/src/pages/mr/subgraphs/guides/_meta.js index a1bb04fb6d3f..fd5608dcceb2 100644 --- a/website/src/pages/mr/subgraphs/guides/_meta.js +++ b/website/src/pages/mr/subgraphs/guides/_meta.js @@ -2,7 +2,7 @@ export default { 'subgraph-composition': '', 'subgraph-debug-forking': '', near: '', - arweave: '', + grafting: '', 'subgraph-uncrashable': '', 'transfer-to-the-graph': '', diff --git a/website/src/pages/mr/subgraphs/guides/arweave.mdx b/website/src/pages/mr/subgraphs/guides/arweave.mdx deleted file mode 100644 index be076ab8f655..000000000000 --- a/website/src/pages/mr/subgraphs/guides/arweave.mdx +++ /dev/null @@ -1,239 +0,0 @@ ---- -title: Arweave वर सबग्राफ तयार करणे ---- - -> Arweave support in Graph Node and on Subgraph Studio is in beta: please reach us on [Discord](https://discord.gg/graphprotocol) with any questions about building Arweave Subgraphs! - -या मार्गदर्शकामध्ये, तुम्ही Arweave ब्लॉकचेन इंडेक्स करण्यासाठी सबग्राफ कसे तयार करावे आणि कसे तैनात करावे ते शिकाल. - -## Arweave काय आहे? - -Arweave प्रोटोकॉल विकसकांना कायमस्वरूपी डेटा संचयित करण्याची परवानगी देतो आणि Arweave आणि IPFS मधील मुख्य फरक आहे, जेथे IPFS मध्ये वैशिष्ट्याचा अभाव आहे; कायमस्वरूपी, आणि Arweave वर संचयित केलेल्या फायली बदलल्या किंवा हटवल्या जाऊ शकत नाहीत. - -अनेक वेगवेगळ्या प्रोग्रामिंग भाषांमध्ये प्रोटोकॉल समाकलित करण्यासाठी Arweave ने आधीच असंख्य लायब्ररी तयार केल्या आहेत. अधिक माहितीसाठी तुम्ही तपासू शकता: - -- [Arwiki](https://arwiki.wiki/#/en/main) -- [Arweave Resources](https://www.arweave.org/build) - -## Arweave Subgraphs काय आहेत? - -The Graph allows you to build custom open APIs called "Subgraphs". Subgraphs are used to tell indexers (server operators) which data to index on a blockchain and save on their servers in order for you to be able to query it at any time using [GraphQL](https://graphql.org/). - -[Graph Node](https://github.com/graphprotocol/graph-node) is now able to index data on Arweave protocol. The current integration is only indexing Arweave as a blockchain (blocks and transactions), it is not indexing the stored files yet. - -## Arweave Subgraph तयार करणे - -Arweave Subgraphs तयार आणि तैनात करण्यात सक्षम होण्यासाठी, तुम्हाला दोन पॅकेजेसची आवश्यकता आहे: - -1. `@graphprotocol/graph-cli` above version 0.30.2 - This is a command-line tool for building and deploying Subgraphs. [Click here](https://www.npmjs.com/package/@graphprotocol/graph-cli) to download using `npm`. -2. `@graphprotocol/graph-ts` above version 0.27.0 - This is library of Subgraph-specific types. [Click here](https://www.npmjs.com/package/@graphprotocol/graph-ts) to download using `npm`. - -## सबग्राफचे घटक - -There are three components of a Subgraph: - -### 1. Manifest - `subgraph.yaml` - -स्वारस्य असलेल्या डेटा स्रोतांची व्याख्या करते आणि त्यांची प्रक्रिया कशी करावी. Arweave हा एक नवीन प्रकारचा डेटा स्रोत आहे. - -### 2. Schema - `schema.graphql` - -GraphQL वापरून तुमचा सबग्राफ इंडेक्स केल्यानंतर तुम्ही कोणता डेटा क्वेरी करू इच्छिता ते येथे तुम्ही परिभाषित करता. हे प्रत्यक्षात API च्या मॉडेलसारखेच आहे, जेथे मॉडेल विनंती मुख्य भागाची रचना परिभाषित करते. - -The requirements for Arweave Subgraphs are covered by the [existing documentation](/developing/creating-a-subgraph/#the-graphql-schema). - -### 3. AssemblyScript Mappings - `mapping.ts` - -जेव्हा तुम्ही ऐकत असलेल्या डेटा स्रोतांशी कोणीतरी संवाद साधते तेव्हा डेटा कसा पुनर्प्राप्त आणि संग्रहित केला जावा हे हे तर्कशास्त्र आहे. डेटा अनुवादित केला जातो आणि तुम्ही सूचीबद्ध केलेल्या स्कीमावर आधारित संग्रहित केला जातो. - -During Subgraph development there are two key commands: - -``` -$ graph codegen # generates types from the schema file identified in the manifest -$ graph build # generates Web Assembly from the AssemblyScript files, and prepares all the Subgraph files in a /build folder -``` - -## सबग्राफ मॅनिफेस्ट व्याख्या - -The Subgraph manifest `subgraph.yaml` identifies the data sources for the Subgraph, the triggers of interest, and the functions that should be run in response to those triggers. See below for an example Subgraph manifest for an Arweave Subgraph: - -```yaml -specVersion: 1.3.0 -description: Arweave Blocks Indexing -schema: - file: ./schema.graphql # link to the schema file -dataSources: - - kind: arweave - name: arweave-blocks - network: arweave-mainnet # The Graph only supports Arweave Mainnet - source: - owner: 'ID-OF-AN-OWNER' # The public key of an Arweave wallet - startBlock: 0 # set this to 0 to start indexing from chain genesis - mapping: - apiVersion: 0.0.9 - language: wasm/assemblyscript - file: ./src/blocks.ts # link to the file with the Assemblyscript mappings - entities: - - Block - - Transaction - blockHandlers: - - handler: handleBlock # the function name in the mapping file - transactionHandlers: - - handler: handleTx # the function name in the mapping file -``` - -- Arweave Subgraphs introduce a new kind of data source (`arweave`) -- The network should correspond to a network on the hosting Graph Node. In Subgraph Studio, Arweave's mainnet is `arweave-mainnet` -- Arweave डेटा स्रोत पर्यायी source.owner फील्ड सादर करतात, जी Arweave वॉलेटची सार्वजनिक की आहे - -Arweave डेटा स्रोत दोन प्रकारच्या हँडलरला समर्थन देतात: - -- `blockHandlers` - Run on every new Arweave block. No source.owner is required. -- `transactionHandlers` - Run on every transaction where the data source's `source.owner` is the owner. Currently an owner is required for `transactionHandlers`, if users want to process all transactions they should provide "" as the `source.owner` - -> source.owner हा मालकाचा पत्ता किंवा त्यांची सार्वजनिक की असू शकतो. -> -> व्यवहार हे Arweave permaweb चे बिल्डिंग ब्लॉक्स आहेत आणि ते अंतिम वापरकर्त्यांनी तयार केलेल्या वस्तू आहेत. -> -> Note: [Irys (previously Bundlr)](https://irys.xyz/) transactions are not supported yet. - -## स्कीमा व्याख्या - -Schema definition describes the structure of the resulting Subgraph database and the relationships between entities. This is agnostic of the original data source. There are more details on the Subgraph schema definition [here](/developing/creating-a-subgraph/#the-graphql-schema). - -## असेंबलीस्क्रिप्ट मॅपिंग - -The handlers for processing events are written in [AssemblyScript](https://www.assemblyscript.org/). - -Arweave indexing introduces Arweave-specific data types to the [AssemblyScript API](/subgraphs/developing/creating/graph-ts/api/). - -```tsx -class Block { - timestamp: u64 - lastRetarget: u64 - height: u64 - indepHash: Bytes - nonce: Bytes - previousBlock: Bytes - diff: Bytes - hash: Bytes - txRoot: Bytes - txs: Bytes[] - walletList: Bytes - rewardAddr: Bytes - tags: Tag[] - rewardPool: Bytes - weaveSize: Bytes - blockSize: Bytes - cumulativeDiff: Bytes - hashListMerkle: Bytes - poa: ProofOfAccess -} - -class Transaction { - format: u32 - id: Bytes - lastTx: Bytes - owner: Bytes - tags: Tag[] - target: Bytes - quantity: Bytes - data: Bytes - dataSize: Bytes - dataRoot: Bytes - signature: Bytes - reward: Bytes -} -``` - -Block handlers receive a `Block`, while transactions receive a `Transaction`. - -Writing the mappings of an Arweave Subgraph is very similar to writing the mappings of an Ethereum Subgraph. For more information, click [here](/developing/creating-a-subgraph/#writing-mappings). - -## Deploying an Arweave Subgraph in Subgraph Studio - -Once your Subgraph has been created on your Subgraph Studio dashboard, you can deploy by using the `graph deploy` CLI command. - -```bash -graph deploy --access-token -``` - -## प्रश्न करत आहे Arweave सबग्राफ - -The GraphQL endpoint for Arweave Subgraphs is determined by the schema definition, with the existing API interface. Please visit the [GraphQL API documentation](/subgraphs/querying/graphql-api/) for more information. - -## उदाहरणे सबग्राफ - -Here is an example Subgraph for reference: - -- [Example Subgraph for Arweave](https://github.com/graphprotocol/graph-tooling/tree/main/examples/arweave-blocks-transactions) - -## FAQ - -### Can a Subgraph index Arweave and other chains? - -No, a Subgraph can only support data sources from one chain/network. - -### मी Arweave वर संग्रहित फाइल्स अनुक्रमित करू शकतो? - -सध्या, ग्राफ फक्त ब्लॉकचेन (त्याचे ब्लॉक्स आणि व्यवहार) म्हणून Arweave अनुक्रमित करत आहे. - -### Can I identify Bundlr bundles in my Subgraph? - -हे सध्या समर्थित नाही. - -### मी विशिष्ट खात्यातील व्यवहार कसे फिल्टर करू शकतो? - -source.owner वापरकर्त्याची सार्वजनिक की किंवा खाते पत्ता असू शकतो. - -### सध्याचे एन्क्रिप्शन स्वरूप काय आहे? - -Data is generally passed into the mappings as Bytes, which if stored directly is returned in the Subgraph in a `hex` format (ex. block and transaction hashes). You may want to convert to a `base64` or `base64 URL`-safe format in your mappings, in order to match what is displayed in block explorers like [Arweave Explorer](https://viewblock.io/arweave/). - -The following `bytesToBase64(bytes: Uint8Array, urlSafe: boolean): string` helper function can be used, and will be added to `graph-ts`: - -``` -const base64Alphabet = [ - "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", - "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", - "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", - "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", - "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "+", "/" -]; - -const base64UrlAlphabet = [ - "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", - "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", - "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", - "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", - "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-", "_" -]; - -function bytesToBase64(bytes: Uint8Array, urlSafe: boolean): string { - let alphabet = urlSafe? base64UrlAlphabet : base64Alphabet; - - let result = '', i: i32, l = bytes.length; - for (i = 2; i < l; i += 3) { - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)]; - result += alphabet[((bytes[i - 1] & 0x0F) << 2) | (bytes[i] >> 6)]; - result += alphabet[bytes[i] & 0x3F]; - } - if (i === l + 1) { // 1 octet yet to write - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[(bytes[i - 2] & 0x03) << 4]; - if (!urlSafe) { - result += "=="; - } - } - if (!urlSafe && i === l) { // 2 octets yet to write - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)]; - result += alphabet[(bytes[i - 1] & 0x0F) << 2]; - if (!urlSafe) { - result += "="; - } - } - return result; -} -``` diff --git a/website/src/pages/nl/subgraphs/guides/_meta.js b/website/src/pages/nl/subgraphs/guides/_meta.js index a1bb04fb6d3f..fd5608dcceb2 100644 --- a/website/src/pages/nl/subgraphs/guides/_meta.js +++ b/website/src/pages/nl/subgraphs/guides/_meta.js @@ -2,7 +2,7 @@ export default { 'subgraph-composition': '', 'subgraph-debug-forking': '', near: '', - arweave: '', + grafting: '', 'subgraph-uncrashable': '', 'transfer-to-the-graph': '', diff --git a/website/src/pages/nl/subgraphs/guides/arweave.mdx b/website/src/pages/nl/subgraphs/guides/arweave.mdx deleted file mode 100644 index e957c2d61226..000000000000 --- a/website/src/pages/nl/subgraphs/guides/arweave.mdx +++ /dev/null @@ -1,239 +0,0 @@ ---- -title: Bouwen van Subgraphs op Arweave ---- - -> Arweave support in Graph Node and on Subgraph Studio is in beta: please reach us on [Discord](https://discord.gg/graphprotocol) with any questions about building Arweave Subgraphs! - -In deze gids, zul je leren hoe je Subgraphs bouwt en implementeer om de Arweave blockchain te indexeren. - -## Wat is Arweave? - -Het Arweave protocol stelt ontwikkelaars in staat om gegevens permanent op te slaan, dat is het voornaamste verschil tussen Arweave en IPFS, waar IPFS deze functie mist, en bestanden die op Arweave zijn opgeslagen, kunnen niet worden gewijzigd of verwijderd. - -Arweave heeft al talloze bibliotheken gebouwd voor het integreren van het protocol in verschillende programmeertalen. Voor meer informatie kun je kijken op: - -- [Arwiki](https://arwiki.wiki/#/en/main) -- [Arweave Resources](https://www.arweave.org/build) - -## Wat zijn Arweave Subgraphs? - -The Graph allows you to build custom open APIs called "Subgraphs". Subgraphs are used to tell indexers (server operators) which data to index on a blockchain and save on their servers in order for you to be able to query it at any time using [GraphQL](https://graphql.org/). - -[Graph Node](https://github.com/graphprotocol/graph-node) is now able to index data on Arweave protocol. The current integration is only indexing Arweave as a blockchain (blocks and transactions), it is not indexing the stored files yet. - -## Bouwen van een Arweave Subgraph - -Voor het kunnen bouwen en implementeren van Arweave Subgraphs, heb je twee paketten nodig: - -1. `@graphprotocol/graph-cli` above version 0.30.2 - This is a command-line tool for building and deploying Subgraphs. [Click here](https://www.npmjs.com/package/@graphprotocol/graph-cli) to download using `npm`. -2. `@graphprotocol/graph-ts` above version 0.27.0 - This is library of Subgraph-specific types. [Click here](https://www.npmjs.com/package/@graphprotocol/graph-ts) to download using `npm`. - -## Subgraph's componenten - -There are three components of a Subgraph: - -### 1. Manifest - `subgraph.yaml` - -Definieert gegevensbronnen die van belang zijn en hoe deze verwerkt moeten worden. Arweave is een nieuw type gegevensbron. - -### 2. Schema - `schema.graphql` - -Hier definieer je welke gegevens je wilt kunnen opvragen na het indexeren van je subgraph door het gebruik van GraphQL. Dit lijkt eigenlijk op een model voor een API, waarbij het model de structuur van een verzoek definieert. - -The requirements for Arweave Subgraphs are covered by the [existing documentation](/developing/creating-a-subgraph/#the-graphql-schema). - -### 3. AssemblyScript Mappings - `mapping.ts` - -Dit is de logica die definieert hoe data zou moeten worden opgevraagd en opgeslagen wanneer iemand met de gegevens communiceert waarnaar jij aan het luisteren bent. De gegevens worden vertaald en is opgeslagen gebaseerd op het schema die je genoteerd hebt. - -During Subgraph development there are two key commands: - -``` -$ graph codegen # generates types from the schema file identified in the manifest -$ graph build # generates Web Assembly from the AssemblyScript files, and prepares all the Subgraph files in a /build folder -``` - -## Subgraph Manifest Definition - -The Subgraph manifest `subgraph.yaml` identifies the data sources for the Subgraph, the triggers of interest, and the functions that should be run in response to those triggers. See below for an example Subgraph manifest for an Arweave Subgraph: - -```yaml -specVersion: 1.3.0 -description: Arweave Blocks Indexing -schema: - file: ./schema.graphql # link to the schema file -dataSources: - - kind: arweave - name: arweave-blocks - network: arweave-mainnet # The Graph only supports Arweave Mainnet - source: - owner: 'ID-OF-AN-OWNER' # The public key of an Arweave wallet - startBlock: 0 # set this to 0 to start indexing from chain genesis - mapping: - apiVersion: 0.0.9 - language: wasm/assemblyscript - file: ./src/blocks.ts # link to the file with the Assemblyscript mappings - entities: - - Block - - Transaction - blockHandlers: - - handler: handleBlock # the function name in the mapping file - transactionHandlers: - - handler: handleTx # the function name in the mapping file -``` - -- Arweave Subgraphs introduce a new kind of data source (`arweave`) -- The network should correspond to a network on the hosting Graph Node. In Subgraph Studio, Arweave's mainnet is `arweave-mainnet` -- Arweave data bronnen introduceert een optionele bron.eigenaar veld, dat de openbare sleutel is van een Arweave wallet - -Arweave data bronnen ondersteunt twee typen verwerkers: - -- `blockHandlers` - Run on every new Arweave block. No source.owner is required. -- `transactionHandlers` - Run on every transaction where the data source's `source.owner` is the owner. Currently an owner is required for `transactionHandlers`, if users want to process all transactions they should provide "" as the `source.owner` - -> The source.owner can be the owner's address, or their Public Key. -> -> Transactions are the building blocks of the Arweave permaweb and they are objects created by end-users. -> -> Note: [Irys (previously Bundlr)](https://irys.xyz/) transactions are not supported yet. - -## Schema Definition - -Schema definition describes the structure of the resulting Subgraph database and the relationships between entities. This is agnostic of the original data source. There are more details on the Subgraph schema definition [here](/developing/creating-a-subgraph/#the-graphql-schema). - -## AssemblyScript Mappings - -The handlers for processing events are written in [AssemblyScript](https://www.assemblyscript.org/). - -Arweave indexing introduces Arweave-specific data types to the [AssemblyScript API](/subgraphs/developing/creating/graph-ts/api/). - -```tsx -class Block { - timestamp: u64 - lastRetarget: u64 - height: u64 - indepHash: Bytes - nonce: Bytes - previousBlock: Bytes - diff: Bytes - hash: Bytes - txRoot: Bytes - txs: Bytes[] - walletList: Bytes - rewardAddr: Bytes - tags: Tag[] - rewardPool: Bytes - weaveSize: Bytes - blockSize: Bytes - cumulativeDiff: Bytes - hashListMerkle: Bytes - poa: ProofOfAccess -} - -class Transaction { - format: u32 - id: Bytes - lastTx: Bytes - owner: Bytes - tags: Tag[] - target: Bytes - quantity: Bytes - data: Bytes - dataSize: Bytes - dataRoot: Bytes - signature: Bytes - reward: Bytes -} -``` - -Block handlers receive a `Block`, while transactions receive a `Transaction`. - -Writing the mappings of an Arweave Subgraph is very similar to writing the mappings of an Ethereum Subgraph. For more information, click [here](/developing/creating-a-subgraph/#writing-mappings). - -## Deploying an Arweave Subgraph in Subgraph Studio - -Once your Subgraph has been created on your Subgraph Studio dashboard, you can deploy by using the `graph deploy` CLI command. - -```bash -graph deploy --access-token -``` - -## Querying an Arweave Subgraph - -The GraphQL endpoint for Arweave Subgraphs is determined by the schema definition, with the existing API interface. Please visit the [GraphQL API documentation](/subgraphs/querying/graphql-api/) for more information. - -## Example Subgraphs - -Here is an example Subgraph for reference: - -- [Example Subgraph for Arweave](https://github.com/graphprotocol/graph-tooling/tree/main/examples/arweave-blocks-transactions) - -## FAQ - -### Can a Subgraph index Arweave and other chains? - -No, a Subgraph can only support data sources from one chain/network. - -### Can I index the stored files on Arweave? - -Currently, The Graph is only indexing Arweave as a blockchain (its blocks and transactions). - -### Can I identify Bundlr bundles in my Subgraph? - -This is not currently supported. - -### How can I filter transactions to a specific account? - -The source.owner can be the user's public key or account address. - -### What is the current encryption format? - -Data is generally passed into the mappings as Bytes, which if stored directly is returned in the Subgraph in a `hex` format (ex. block and transaction hashes). You may want to convert to a `base64` or `base64 URL`-safe format in your mappings, in order to match what is displayed in block explorers like [Arweave Explorer](https://viewblock.io/arweave/). - -The following `bytesToBase64(bytes: Uint8Array, urlSafe: boolean): string` helper function can be used, and will be added to `graph-ts`: - -``` -const base64Alphabet = [ - "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", - "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", - "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", - "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", - "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "+", "/" -]; - -const base64UrlAlphabet = [ - "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", - "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", - "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", - "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", - "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-", "_" -]; - -function bytesToBase64(bytes: Uint8Array, urlSafe: boolean): string { - let alphabet = urlSafe? base64UrlAlphabet : base64Alphabet; - - let result = '', i: i32, l = bytes.length; - for (i = 2; i < l; i += 3) { - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)]; - result += alphabet[((bytes[i - 1] & 0x0F) << 2) | (bytes[i] >> 6)]; - result += alphabet[bytes[i] & 0x3F]; - } - if (i === l + 1) { // 1 octet yet to write - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[(bytes[i - 2] & 0x03) << 4]; - if (!urlSafe) { - result += "=="; - } - } - if (!urlSafe && i === l) { // 2 octets yet to write - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)]; - result += alphabet[(bytes[i - 1] & 0x0F) << 2]; - if (!urlSafe) { - result += "="; - } - } - return result; -} -``` diff --git a/website/src/pages/pl/subgraphs/guides/_meta.js b/website/src/pages/pl/subgraphs/guides/_meta.js index a1bb04fb6d3f..fd5608dcceb2 100644 --- a/website/src/pages/pl/subgraphs/guides/_meta.js +++ b/website/src/pages/pl/subgraphs/guides/_meta.js @@ -2,7 +2,7 @@ export default { 'subgraph-composition': '', 'subgraph-debug-forking': '', near: '', - arweave: '', + grafting: '', 'subgraph-uncrashable': '', 'transfer-to-the-graph': '', diff --git a/website/src/pages/pl/subgraphs/guides/arweave.mdx b/website/src/pages/pl/subgraphs/guides/arweave.mdx deleted file mode 100644 index e59abffa383f..000000000000 --- a/website/src/pages/pl/subgraphs/guides/arweave.mdx +++ /dev/null @@ -1,239 +0,0 @@ ---- -title: Building Subgraphs on Arweave ---- - -> Arweave support in Graph Node and on Subgraph Studio is in beta: please reach us on [Discord](https://discord.gg/graphprotocol) with any questions about building Arweave Subgraphs! - -In this guide, you will learn how to build and deploy Subgraphs to index the Arweave blockchain. - -## What is Arweave? - -The Arweave protocol allows developers to store data permanently and that is the main difference between Arweave and IPFS, where IPFS lacks the feature; permanence, and files stored on Arweave can't be changed or deleted. - -Arweave already has built numerous libraries for integrating the protocol in a number of different programming languages. For more information you can check: - -- [Arwiki](https://arwiki.wiki/#/en/main) -- [Arweave Resources](https://www.arweave.org/build) - -## What are Arweave Subgraphs? - -The Graph allows you to build custom open APIs called "Subgraphs". Subgraphs are used to tell indexers (server operators) which data to index on a blockchain and save on their servers in order for you to be able to query it at any time using [GraphQL](https://graphql.org/). - -[Graph Node](https://github.com/graphprotocol/graph-node) is now able to index data on Arweave protocol. The current integration is only indexing Arweave as a blockchain (blocks and transactions), it is not indexing the stored files yet. - -## Building an Arweave Subgraph - -To be able to build and deploy Arweave Subgraphs, you need two packages: - -1. `@graphprotocol/graph-cli` above version 0.30.2 - This is a command-line tool for building and deploying Subgraphs. [Click here](https://www.npmjs.com/package/@graphprotocol/graph-cli) to download using `npm`. -2. `@graphprotocol/graph-ts` above version 0.27.0 - This is library of Subgraph-specific types. [Click here](https://www.npmjs.com/package/@graphprotocol/graph-ts) to download using `npm`. - -## Subgraph's components - -There are three components of a Subgraph: - -### 1. Manifest - `subgraph.yaml` - -Defines the data sources of interest, and how they should be processed. Arweave is a new kind of data source. - -### 2. Schema - `schema.graphql` - -Here you define which data you want to be able to query after indexing your Subgraph using GraphQL. This is actually similar to a model for an API, where the model defines the structure of a request body. - -The requirements for Arweave Subgraphs are covered by the [existing documentation](/developing/creating-a-subgraph/#the-graphql-schema). - -### 3. AssemblyScript Mappings - `mapping.ts` - -This is the logic that determines how data should be retrieved and stored when someone interacts with the data sources you are listening to. The data gets translated and is stored based off the schema you have listed. - -During Subgraph development there are two key commands: - -``` -$ graph codegen # generates types from the schema file identified in the manifest -$ graph build # generates Web Assembly from the AssemblyScript files, and prepares all the Subgraph files in a /build folder -``` - -## Subgraph Manifest Definition - -The Subgraph manifest `subgraph.yaml` identifies the data sources for the Subgraph, the triggers of interest, and the functions that should be run in response to those triggers. See below for an example Subgraph manifest for an Arweave Subgraph: - -```yaml -specVersion: 1.3.0 -description: Arweave Blocks Indexing -schema: - file: ./schema.graphql # link to the schema file -dataSources: - - kind: arweave - name: arweave-blocks - network: arweave-mainnet # The Graph only supports Arweave Mainnet - source: - owner: 'ID-OF-AN-OWNER' # The public key of an Arweave wallet - startBlock: 0 # set this to 0 to start indexing from chain genesis - mapping: - apiVersion: 0.0.9 - language: wasm/assemblyscript - file: ./src/blocks.ts # link to the file with the Assemblyscript mappings - entities: - - Block - - Transaction - blockHandlers: - - handler: handleBlock # the function name in the mapping file - transactionHandlers: - - handler: handleTx # the function name in the mapping file -``` - -- Arweave Subgraphs introduce a new kind of data source (`arweave`) -- The network should correspond to a network on the hosting Graph Node. In Subgraph Studio, Arweave's mainnet is `arweave-mainnet` -- Arweave data sources introduce an optional source.owner field, which is the public key of an Arweave wallet - -Arweave data sources support two types of handlers: - -- `blockHandlers` - Run on every new Arweave block. No source.owner is required. -- `transactionHandlers` - Run on every transaction where the data source's `source.owner` is the owner. Currently an owner is required for `transactionHandlers`, if users want to process all transactions they should provide "" as the `source.owner` - -> The source.owner can be the owner's address, or their Public Key. -> -> Transactions are the building blocks of the Arweave permaweb and they are objects created by end-users. -> -> Note: [Irys (previously Bundlr)](https://irys.xyz/) transactions are not supported yet. - -## Schema Definition - -Schema definition describes the structure of the resulting Subgraph database and the relationships between entities. This is agnostic of the original data source. There are more details on the Subgraph schema definition [here](/developing/creating-a-subgraph/#the-graphql-schema). - -## AssemblyScript Mappings - -The handlers for processing events are written in [AssemblyScript](https://www.assemblyscript.org/). - -Arweave indexing introduces Arweave-specific data types to the [AssemblyScript API](/subgraphs/developing/creating/graph-ts/api/). - -```tsx -class Block { - timestamp: u64 - lastRetarget: u64 - height: u64 - indepHash: Bytes - nonce: Bytes - previousBlock: Bytes - diff: Bytes - hash: Bytes - txRoot: Bytes - txs: Bytes[] - walletList: Bytes - rewardAddr: Bytes - tags: Tag[] - rewardPool: Bytes - weaveSize: Bytes - blockSize: Bytes - cumulativeDiff: Bytes - hashListMerkle: Bytes - poa: ProofOfAccess -} - -class Transaction { - format: u32 - id: Bytes - lastTx: Bytes - owner: Bytes - tags: Tag[] - target: Bytes - quantity: Bytes - data: Bytes - dataSize: Bytes - dataRoot: Bytes - signature: Bytes - reward: Bytes -} -``` - -Block handlers receive a `Block`, while transactions receive a `Transaction`. - -Writing the mappings of an Arweave Subgraph is very similar to writing the mappings of an Ethereum Subgraph. For more information, click [here](/developing/creating-a-subgraph/#writing-mappings). - -## Deploying an Arweave Subgraph in Subgraph Studio - -Once your Subgraph has been created on your Subgraph Studio dashboard, you can deploy by using the `graph deploy` CLI command. - -```bash -graph deploy --access-token -``` - -## Querying an Arweave Subgraph - -The GraphQL endpoint for Arweave Subgraphs is determined by the schema definition, with the existing API interface. Please visit the [GraphQL API documentation](/subgraphs/querying/graphql-api/) for more information. - -## Example Subgraphs - -Here is an example Subgraph for reference: - -- [Example Subgraph for Arweave](https://github.com/graphprotocol/graph-tooling/tree/main/examples/arweave-blocks-transactions) - -## FAQ - -### Can a Subgraph index Arweave and other chains? - -No, a Subgraph can only support data sources from one chain/network. - -### Can I index the stored files on Arweave? - -Currently, The Graph is only indexing Arweave as a blockchain (its blocks and transactions). - -### Can I identify Bundlr bundles in my Subgraph? - -This is not currently supported. - -### How can I filter transactions to a specific account? - -The source.owner can be the user's public key or account address. - -### What is the current encryption format? - -Data is generally passed into the mappings as Bytes, which if stored directly is returned in the Subgraph in a `hex` format (ex. block and transaction hashes). You may want to convert to a `base64` or `base64 URL`-safe format in your mappings, in order to match what is displayed in block explorers like [Arweave Explorer](https://viewblock.io/arweave/). - -The following `bytesToBase64(bytes: Uint8Array, urlSafe: boolean): string` helper function can be used, and will be added to `graph-ts`: - -``` -const base64Alphabet = [ - "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", - "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", - "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", - "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", - "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "+", "/" -]; - -const base64UrlAlphabet = [ - "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", - "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", - "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", - "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", - "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-", "_" -]; - -function bytesToBase64(bytes: Uint8Array, urlSafe: boolean): string { - let alphabet = urlSafe? base64UrlAlphabet : base64Alphabet; - - let result = '', i: i32, l = bytes.length; - for (i = 2; i < l; i += 3) { - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)]; - result += alphabet[((bytes[i - 1] & 0x0F) << 2) | (bytes[i] >> 6)]; - result += alphabet[bytes[i] & 0x3F]; - } - if (i === l + 1) { // 1 octet yet to write - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[(bytes[i - 2] & 0x03) << 4]; - if (!urlSafe) { - result += "=="; - } - } - if (!urlSafe && i === l) { // 2 octets yet to write - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)]; - result += alphabet[(bytes[i - 1] & 0x0F) << 2]; - if (!urlSafe) { - result += "="; - } - } - return result; -} -``` diff --git a/website/src/pages/pt/subgraphs/guides/_meta.js b/website/src/pages/pt/subgraphs/guides/_meta.js index a1bb04fb6d3f..fd5608dcceb2 100644 --- a/website/src/pages/pt/subgraphs/guides/_meta.js +++ b/website/src/pages/pt/subgraphs/guides/_meta.js @@ -2,7 +2,7 @@ export default { 'subgraph-composition': '', 'subgraph-debug-forking': '', near: '', - arweave: '', + grafting: '', 'subgraph-uncrashable': '', 'transfer-to-the-graph': '', diff --git a/website/src/pages/pt/subgraphs/guides/arweave.mdx b/website/src/pages/pt/subgraphs/guides/arweave.mdx deleted file mode 100644 index 4fdd129460c0..000000000000 --- a/website/src/pages/pt/subgraphs/guides/arweave.mdx +++ /dev/null @@ -1,239 +0,0 @@ ---- -title: Construindo Subgraphs no Arweave ---- - -> O apoio ao Arweave no Graph Node, e no Subgraph Studio, está em fase beta: por favor nos contacte no [Discord](https://discord.gg/graphprotocol) se tiver dúvidas sobre como construir subgraphs no Arweave! - -Neste guia, você aprenderá como construir e lançar Subgraphs para indexar a blockchain Arweave. - -## O que é o Arweave? - -O protocolo Arweave permite que programadores armazenem dados permanentemente. Esta é a grande diferença entre o Arweave e o IPFS, considerando que o IPFS não tem esta característica; a permanência, e os arquivos armazenados no Arweave, não podem ser mudados ou apagados. - -O Arweave já construiu várias bibliotecas para integrar o protocolo num número de línguas de programação diferentes. Para mais informações, pode-se conferir: - -- [Arwiki](https://arwiki.wiki/#/en/main) -- [Recursos do Arweave](https://www.arweave.org/build) - -## O que são Subgraphs no Arweave? - -The Graph permite a construção de APIs abertas e personalizadas chamadas "Subgraphs", que servem para contar aos indexadores (operadores de servidor) quais dados devem ser indexados em uma blockchain e guardados nos seus servidores para serem consultados a qualquer hora em queries pelo [GraphQL](https://graphql.org/). - -O [Graph Node](https://github.com/graphprotocol/graph-node) é atualmente capaz de indexar dados no protocolo Arweave. A integração atual indexa apenas o Arweave como uma blockchain (blocos e transações), mas no momento, não indexa os arquivos armazenados. - -## Construindo um Subgraph no Arweave - -Para construir e lançar Subgraphs no Arweave, são necessários dois pacotes: - -1. `@graphprotocol/graph-cli` acima da versão 0.30.2 — Esta é uma ferramenta de linha de comandos para a construção e implantação de subgraphs. [Clique aqui](https://www.npmjs.com/package/@graphprotocol/graph-cli) para baixá-la com o `npm`. -2. `@graphprotocol/graph-ts` acima da versão 0.27.0 — Uma biblioteca de tipos específicos de subgraphs. [Clique aqui](https://www.npmjs.com/package/@graphprotocol/graph-ts) para baixar com `npm`. - -## Os componentes de um subgraph - -Um subgraph tem três componentes: - -### 1. Manifest - `subgraph.yaml` - -Define as fontes de dados de interesse, e como elas devem ser processadas. O Arweave é uma nova categoria de fontes de dados. - -### 2. Schema - `schema.graphql` - -Aqui é possível definir quais dados queres consultar após indexar o seu subgraph utilizando o GraphQL. Isto é como um modelo para uma API, onde o modelo define a estrutura de um órgão de requisito. - -Os requisitos para subgraphs do Arweave estão cobertos pela [documentação](/developing/creating-a-subgraph/#the-graphql-schema). - -### 3. Mapeamentos de AssemblyScript - `mapping.ts` - -Esta é a lógica que determina como os dados devem ser retirados e armazenados quando alguém interage com as fontes de dados que estás a escutar. Os dados são traduzidos e armazenados baseados no schema que listaste. - -During Subgraph development there are two key commands: - -``` -$ graph codegen # generates types from the schema file identified in the manifest -$ graph build # generates Web Assembly from the AssemblyScript files, and prepares all the Subgraph files in a /build folder -``` - -## Definição de Manifest de Subgraph - -O manifest do subgraph `subgraph.yaml` identifica as fontes de dados para o subgraph, os gatilhos de interesse, e as funções que devem ser executadas em resposta a tais gatilhos. Veja abaixo um exemplo de um manifest, para um subgraph no Arweave: - -```yaml -specVersion: 1.3.0 -description: Arweave Blocks Indexing -schema: - file: ./schema.graphql # link to the schema file -dataSources: - - kind: arweave - name: arweave-blocks - network: arweave-mainnet # The Graph only supports Arweave Mainnet - source: - owner: 'ID-OF-AN-OWNER' # The public key of an Arweave wallet - startBlock: 0 # set this to 0 to start indexing from chain genesis - mapping: - apiVersion: 0.0.9 - language: wasm/assemblyscript - file: ./src/blocks.ts # link to the file with the Assemblyscript mappings - entities: - - Block - - Transaction - blockHandlers: - - handler: handleBlock # the function name in the mapping file - transactionHandlers: - - handler: handleTx # the function name in the mapping file -``` - -- Subgraphs no Arweave introduzem uma nova categoria de fonte de dados (`arweave`) -- A rede deve corresponder a uma rede no Graph Node que a hospeda. No Subgraph Studio, a mainnet do Arweave é `arweave-mainnet` -- Fontes de dados no Arweave introduzem um campo source.owner opcional, a chave pública de uma carteira no Arweave - -Fontes de dados no Arweave apoiam duas categorias de handlers: - -- `blockHandlers` — Executar em cada bloco novo no Arweave. Nenhum `source.owner` necessário. -- `transactionHandlers` — Executar em todas as transações cujo dono é o source.owner da fonte de dados. Atualmente, é necessário ter um dono para o transactionHandlers; caso um utilizador queira processar todas as transações, ele deve providenciar "" como o `source.owner` - -> O source.owner pode ser o endereço do dono, ou sua Chave Pública. -> -> Transações são os blocos de construção da permaweb do Arweave, além de serem objetos criados para utilizadores finais. -> -> Nota: No momento, não há apoio para transações no [Irys (antigo Bundlr)](https://irys.xyz/). - -## Definição de Schema - -A definição de Schema descreve a estrutura do banco de dados resultado do subgraph, e os relacionamentos entre entidades. Isto é agnóstico da fonte de dados original. Para mais detalhes sobre a definição de schema de subgraph, [clique aqui](/developing/creating-a-subgraph/#the-graphql-schema). - -## Mapeamentos em AssemblyScript - -Os handlers para processamento de eventos estão escritos em [AssemblyScript](https://www.assemblyscript.org/). - -A indexação do Arweave introduz tipos de dados específicos para esse ecossistema à [API do AssemblyScript](/subgraphs/developing/creating/graph-ts/api/). - -```tsx -class Block { - timestamp: u64 - lastRetarget: u64 - height: u64 - indepHash: Bytes - nonce: Bytes - previousBlock: Bytes - diff: Bytes - hash: Bytes - txRoot: Bytes - txs: Bytes[] - walletList: Bytes - rewardAddr: Bytes - tags: Tag[] - rewardPool: Bytes - weaveSize: Bytes - blockSize: Bytes - cumulativeDiff: Bytes - hashListMerkle: Bytes - poa: ProofOfAccess -} - -class Transaction { - format: u32 - id: Bytes - lastTx: Bytes - owner: Bytes - tags: Tag[] - target: Bytes - quantity: Bytes - data: Bytes - dataSize: Bytes - dataRoot: Bytes - signature: Bytes - reward: Bytes -} -``` - -Handlers de bloco recebem um `Block`, enquanto transações recebem um `Transaction`. - -Escrever os mapeamentos de um Subgraph no Arweave é parecido com a escrita dos mapeamentos de um Subgraph no Ethereum. Para mais informações, clique [aqui](/developing/creating-a-subgraph/#writing-mappings). - -## Como lançar um Subgraph no Arweave ao Subgraph Studio - -Após criar o seu Subgraph no painel de controlo do Subgraph Studio, este pode ser implantado com o comando `graph deploy`. - -```bash -graph deploy --access-token -``` - -## Consultando um Subgraph no Arweave - -O endpoint do GraphQL para subgraphs no Arweave é determinado pela definição do schema, com a interface existente da API. Visite a [documentação da API da GraphQL](/subgraphs/querying/graphql-api/) para mais informações. - -## Exemplos de Subgraphs - -Aqui está um exemplo de subgraph para referência: - -- [Exemplo de subgraph para o Arweave](https://github.com/graphprotocol/graph-tooling/tree/main/examples/arweave-blocks-transactions) - -## Perguntas Frequentes - -### Um subgraph pode indexar o Arweave e outras chains? - -No, a Subgraph can only support data sources from one chain/network. - -### Posso indexar os arquivos armazenados no Arweave? - -Atualmente, The Graph apenas indexa o Arweave como uma blockchain (seus blocos e transações). - -### Posso identificar pacotes do Bundlr no meu subgraph? - -Isto não é apoiado no momento. - -### Como posso filtrar transações para uma conta específica? - -O source.owner pode ser a chave pública ou o endereço da conta do utilizador. - -### Qual é o formato atual de encriptação? - -Os dados são geralmente passados aos mapeamentos como Bytes, que, se armazenados diretamente, são retornados ao subgraph em um formato `hex` (por ex. hashes de transações e blocos). Vale converter estes em um formato compatível com `base64` ou `base64 URL` em seus mapeamentos, para combinar com o que é exibido em exploradores de blocos, como o [Arweave Explorer](https://viewblock.io/arweave/). - -A seguinte função de helper `bytesToBase64(bytes: Uint8Array, urlSafe: boolean): string` pode ser usada, e será adicionada ao `graph-ts`: - -``` -const base64Alphabet = [ - "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", - "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", - "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", - "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", - "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "+", "/" -]; - -const base64UrlAlphabet = [ - "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", - "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", - "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", - "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", - "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-", "_" -]; - -function bytesToBase64(bytes: Uint8Array, urlSafe: boolean): string { - let alphabet = urlSafe? base64UrlAlphabet : base64Alphabet; - - let result = '', i: i32, l = bytes.length; - for (i = 2; i < l; i += 3) { - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)]; - result += alphabet[((bytes[i - 1] & 0x0F) << 2) | (bytes[i] >> 6)]; - result += alphabet[bytes[i] & 0x3F]; - } - if (i === l + 1) { // 1 octet yet to write - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[(bytes[i - 2] & 0x03) << 4]; - if (!urlSafe) { - result += "=="; - } - } - if (!urlSafe && i === l) { // 2 octets yet to write - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)]; - result += alphabet[(bytes[i - 1] & 0x0F) << 2]; - if (!urlSafe) { - result += "="; - } - } - return result; -} -``` diff --git a/website/src/pages/ro/subgraphs/guides/_meta.js b/website/src/pages/ro/subgraphs/guides/_meta.js index a1bb04fb6d3f..fd5608dcceb2 100644 --- a/website/src/pages/ro/subgraphs/guides/_meta.js +++ b/website/src/pages/ro/subgraphs/guides/_meta.js @@ -2,7 +2,7 @@ export default { 'subgraph-composition': '', 'subgraph-debug-forking': '', near: '', - arweave: '', + grafting: '', 'subgraph-uncrashable': '', 'transfer-to-the-graph': '', diff --git a/website/src/pages/ro/subgraphs/guides/arweave.mdx b/website/src/pages/ro/subgraphs/guides/arweave.mdx deleted file mode 100644 index e59abffa383f..000000000000 --- a/website/src/pages/ro/subgraphs/guides/arweave.mdx +++ /dev/null @@ -1,239 +0,0 @@ ---- -title: Building Subgraphs on Arweave ---- - -> Arweave support in Graph Node and on Subgraph Studio is in beta: please reach us on [Discord](https://discord.gg/graphprotocol) with any questions about building Arweave Subgraphs! - -In this guide, you will learn how to build and deploy Subgraphs to index the Arweave blockchain. - -## What is Arweave? - -The Arweave protocol allows developers to store data permanently and that is the main difference between Arweave and IPFS, where IPFS lacks the feature; permanence, and files stored on Arweave can't be changed or deleted. - -Arweave already has built numerous libraries for integrating the protocol in a number of different programming languages. For more information you can check: - -- [Arwiki](https://arwiki.wiki/#/en/main) -- [Arweave Resources](https://www.arweave.org/build) - -## What are Arweave Subgraphs? - -The Graph allows you to build custom open APIs called "Subgraphs". Subgraphs are used to tell indexers (server operators) which data to index on a blockchain and save on their servers in order for you to be able to query it at any time using [GraphQL](https://graphql.org/). - -[Graph Node](https://github.com/graphprotocol/graph-node) is now able to index data on Arweave protocol. The current integration is only indexing Arweave as a blockchain (blocks and transactions), it is not indexing the stored files yet. - -## Building an Arweave Subgraph - -To be able to build and deploy Arweave Subgraphs, you need two packages: - -1. `@graphprotocol/graph-cli` above version 0.30.2 - This is a command-line tool for building and deploying Subgraphs. [Click here](https://www.npmjs.com/package/@graphprotocol/graph-cli) to download using `npm`. -2. `@graphprotocol/graph-ts` above version 0.27.0 - This is library of Subgraph-specific types. [Click here](https://www.npmjs.com/package/@graphprotocol/graph-ts) to download using `npm`. - -## Subgraph's components - -There are three components of a Subgraph: - -### 1. Manifest - `subgraph.yaml` - -Defines the data sources of interest, and how they should be processed. Arweave is a new kind of data source. - -### 2. Schema - `schema.graphql` - -Here you define which data you want to be able to query after indexing your Subgraph using GraphQL. This is actually similar to a model for an API, where the model defines the structure of a request body. - -The requirements for Arweave Subgraphs are covered by the [existing documentation](/developing/creating-a-subgraph/#the-graphql-schema). - -### 3. AssemblyScript Mappings - `mapping.ts` - -This is the logic that determines how data should be retrieved and stored when someone interacts with the data sources you are listening to. The data gets translated and is stored based off the schema you have listed. - -During Subgraph development there are two key commands: - -``` -$ graph codegen # generates types from the schema file identified in the manifest -$ graph build # generates Web Assembly from the AssemblyScript files, and prepares all the Subgraph files in a /build folder -``` - -## Subgraph Manifest Definition - -The Subgraph manifest `subgraph.yaml` identifies the data sources for the Subgraph, the triggers of interest, and the functions that should be run in response to those triggers. See below for an example Subgraph manifest for an Arweave Subgraph: - -```yaml -specVersion: 1.3.0 -description: Arweave Blocks Indexing -schema: - file: ./schema.graphql # link to the schema file -dataSources: - - kind: arweave - name: arweave-blocks - network: arweave-mainnet # The Graph only supports Arweave Mainnet - source: - owner: 'ID-OF-AN-OWNER' # The public key of an Arweave wallet - startBlock: 0 # set this to 0 to start indexing from chain genesis - mapping: - apiVersion: 0.0.9 - language: wasm/assemblyscript - file: ./src/blocks.ts # link to the file with the Assemblyscript mappings - entities: - - Block - - Transaction - blockHandlers: - - handler: handleBlock # the function name in the mapping file - transactionHandlers: - - handler: handleTx # the function name in the mapping file -``` - -- Arweave Subgraphs introduce a new kind of data source (`arweave`) -- The network should correspond to a network on the hosting Graph Node. In Subgraph Studio, Arweave's mainnet is `arweave-mainnet` -- Arweave data sources introduce an optional source.owner field, which is the public key of an Arweave wallet - -Arweave data sources support two types of handlers: - -- `blockHandlers` - Run on every new Arweave block. No source.owner is required. -- `transactionHandlers` - Run on every transaction where the data source's `source.owner` is the owner. Currently an owner is required for `transactionHandlers`, if users want to process all transactions they should provide "" as the `source.owner` - -> The source.owner can be the owner's address, or their Public Key. -> -> Transactions are the building blocks of the Arweave permaweb and they are objects created by end-users. -> -> Note: [Irys (previously Bundlr)](https://irys.xyz/) transactions are not supported yet. - -## Schema Definition - -Schema definition describes the structure of the resulting Subgraph database and the relationships between entities. This is agnostic of the original data source. There are more details on the Subgraph schema definition [here](/developing/creating-a-subgraph/#the-graphql-schema). - -## AssemblyScript Mappings - -The handlers for processing events are written in [AssemblyScript](https://www.assemblyscript.org/). - -Arweave indexing introduces Arweave-specific data types to the [AssemblyScript API](/subgraphs/developing/creating/graph-ts/api/). - -```tsx -class Block { - timestamp: u64 - lastRetarget: u64 - height: u64 - indepHash: Bytes - nonce: Bytes - previousBlock: Bytes - diff: Bytes - hash: Bytes - txRoot: Bytes - txs: Bytes[] - walletList: Bytes - rewardAddr: Bytes - tags: Tag[] - rewardPool: Bytes - weaveSize: Bytes - blockSize: Bytes - cumulativeDiff: Bytes - hashListMerkle: Bytes - poa: ProofOfAccess -} - -class Transaction { - format: u32 - id: Bytes - lastTx: Bytes - owner: Bytes - tags: Tag[] - target: Bytes - quantity: Bytes - data: Bytes - dataSize: Bytes - dataRoot: Bytes - signature: Bytes - reward: Bytes -} -``` - -Block handlers receive a `Block`, while transactions receive a `Transaction`. - -Writing the mappings of an Arweave Subgraph is very similar to writing the mappings of an Ethereum Subgraph. For more information, click [here](/developing/creating-a-subgraph/#writing-mappings). - -## Deploying an Arweave Subgraph in Subgraph Studio - -Once your Subgraph has been created on your Subgraph Studio dashboard, you can deploy by using the `graph deploy` CLI command. - -```bash -graph deploy --access-token -``` - -## Querying an Arweave Subgraph - -The GraphQL endpoint for Arweave Subgraphs is determined by the schema definition, with the existing API interface. Please visit the [GraphQL API documentation](/subgraphs/querying/graphql-api/) for more information. - -## Example Subgraphs - -Here is an example Subgraph for reference: - -- [Example Subgraph for Arweave](https://github.com/graphprotocol/graph-tooling/tree/main/examples/arweave-blocks-transactions) - -## FAQ - -### Can a Subgraph index Arweave and other chains? - -No, a Subgraph can only support data sources from one chain/network. - -### Can I index the stored files on Arweave? - -Currently, The Graph is only indexing Arweave as a blockchain (its blocks and transactions). - -### Can I identify Bundlr bundles in my Subgraph? - -This is not currently supported. - -### How can I filter transactions to a specific account? - -The source.owner can be the user's public key or account address. - -### What is the current encryption format? - -Data is generally passed into the mappings as Bytes, which if stored directly is returned in the Subgraph in a `hex` format (ex. block and transaction hashes). You may want to convert to a `base64` or `base64 URL`-safe format in your mappings, in order to match what is displayed in block explorers like [Arweave Explorer](https://viewblock.io/arweave/). - -The following `bytesToBase64(bytes: Uint8Array, urlSafe: boolean): string` helper function can be used, and will be added to `graph-ts`: - -``` -const base64Alphabet = [ - "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", - "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", - "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", - "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", - "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "+", "/" -]; - -const base64UrlAlphabet = [ - "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", - "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", - "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", - "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", - "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-", "_" -]; - -function bytesToBase64(bytes: Uint8Array, urlSafe: boolean): string { - let alphabet = urlSafe? base64UrlAlphabet : base64Alphabet; - - let result = '', i: i32, l = bytes.length; - for (i = 2; i < l; i += 3) { - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)]; - result += alphabet[((bytes[i - 1] & 0x0F) << 2) | (bytes[i] >> 6)]; - result += alphabet[bytes[i] & 0x3F]; - } - if (i === l + 1) { // 1 octet yet to write - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[(bytes[i - 2] & 0x03) << 4]; - if (!urlSafe) { - result += "=="; - } - } - if (!urlSafe && i === l) { // 2 octets yet to write - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)]; - result += alphabet[(bytes[i - 1] & 0x0F) << 2]; - if (!urlSafe) { - result += "="; - } - } - return result; -} -``` diff --git a/website/src/pages/ru/subgraphs/guides/_meta.js b/website/src/pages/ru/subgraphs/guides/_meta.js index a1bb04fb6d3f..fd5608dcceb2 100644 --- a/website/src/pages/ru/subgraphs/guides/_meta.js +++ b/website/src/pages/ru/subgraphs/guides/_meta.js @@ -2,7 +2,7 @@ export default { 'subgraph-composition': '', 'subgraph-debug-forking': '', near: '', - arweave: '', + grafting: '', 'subgraph-uncrashable': '', 'transfer-to-the-graph': '', diff --git a/website/src/pages/ru/subgraphs/guides/arweave.mdx b/website/src/pages/ru/subgraphs/guides/arweave.mdx deleted file mode 100644 index 800f22842ffe..000000000000 --- a/website/src/pages/ru/subgraphs/guides/arweave.mdx +++ /dev/null @@ -1,239 +0,0 @@ ---- -title: Создание Субграфов на Arweave ---- - -> Поддержка Arweave в Graph Node и Subgraph Studio находится на стадии бета-тестирования: пожалуйста, обращайтесь к нам в [Discord](https://discord.gg/graphprotocol) с любыми вопросами о создании субграфов Arweave! - -Из этого руководства Вы узнаете, как создавать и развертывать субграфы для индексации блокчейна Arweave. - -## Что такое Arweave? - -Протокол Arweave позволяет разработчикам хранить данные на постоянной основе, и в этом основное различие между Arweave и IPFS, поскольку в IPFS отсутствует функция постоянства, а файлы, хранящиеся в Arweave, не могут быть изменены или удалены. - -Arweave уже создала множество библиотек для интеграции протокола на нескольких различных языках программирования. С дополнительной информацией Вы можете ознакомиться: - -- [Arwiki](https://arwiki.wiki/#/en/main) -- [Ресурсы Arweave](https://www.arweave.org/build) - -## Что такое субграфы Arweave? - -The Graph позволяет создавать собственные открытые API, называемые "Субграфами". Субграфы используются для указания индексаторам (операторам серверов), какие данные индексировать на блокчейне и сохранять на их серверах, чтобы Вы могли запрашивать эти данные в любое время используя [GraphQL](https://graphql.org/). - -[Graph Node](https://github.com/graphprotocol/graph-node) теперь может индексировать данные на протоколе Arweave. Текущая интеграция индексирует только Arweave как блокчейн (блоки и транзакции), она еще не индексирует сохраненные файлы. - -## Построение Субграфа на Arweave - -Чтобы иметь возможность создавать и развертывать Субграфы на Arweave, Вам понадобятся два пакета: - -1. `@graphprotocol/graph-cli` версии выше 0.30.2 — это инструмент командной строки для создания и развертывания субграфов. [Нажмите здесь](https://www.npmjs.com/package/@graphprotocol/graph-cli), чтобы скачать с помощью `npm`. -2. `@graphprotocol/graph-ts` версии выше 0.27.0 — это библиотека типов, специфичных для субграфов. [Нажмите здесь](https://www.npmjs.com/package/@graphprotocol/graph-ts), чтобы скачать с помощью `npm`. - -## Составляющие Субграфов - -Существует три компонента субграфа: - -### 1. Манифест - `subgraph.yaml` - -Определяет источники данных, представляющие интерес, и то, как они должны обрабатываться. Arweave - это новый вид источника данных. - -### 2. Схема - `schema.graphql` - -Здесь Вы определяете, какие данные хотите иметь возможность запрашивать после индексации своего субграфа с помощью GraphQL. На самом деле это похоже на модель для API, где модель определяет структуру тела запроса. - -Требования для субграфов Arweave описаны в [существующей документации](/developing/creating-a-subgraph/#the-graphql-schema). - -### 3. Мэппинги на AssemblyScript - `mapping.ts` - -Это логика, которая определяет, как данные должны извлекаться и храниться, когда кто-то взаимодействует с источниками данных, которые Вы отслеживаете. Данные переводятся и сохраняются в соответствии с указанной Вами схемой. - -Во время разработки субграфа есть две ключевые команды: - -``` -$ graph codegen # генерирует типы из файла схемы, указанного в манифесте -$ graph build # генерирует Web Assembly из файлов AssemblyScript и подготавливает все файлы субграфа в папке /build -``` - -## Определение манифеста субграфа - -Манифест субграфа `subgraph.yaml` идентифицирует источники данных для субграфа, триггеры, представляющие интерес, и функции, которые должны быть выполнены в ответ на эти триггеры. Ниже приведен пример манифеста субграфа для Arweave Subgraph: - -```yaml -specVersion: 1.3.0 -description: Arweave Blocks Indexing -schema: - file: ./schema.graphql # ссылка на файл схемы -dataSources: - - kind: arweave - name: arweave-blocks - network: arweave-mainnet # The Graph поддерживает только Arweave Mainnet - source: - owner: 'ID-OF-AN-OWNER' # Открытый ключ кошелька Arweave - startBlock: 0 # установите это значение на 0, чтобы начать индексацию с генезиса чейна - mapping: - apiVersion: 0.0.9 - language: wasm/assemblyscript - file: ./src/blocks.ts # ссылка на файл с мэппингами Assemblyscript - entities: - - Block - - Transaction - blockHandlers: - - handler: handleBlock # имя функции в файле мэппинга - transactionHandlers: - - handler: handleTx # имя функции в файле мэппинга -``` - -- Arweave Subgraphs вводят новый тип источника данных (`arweave`) -- Сеть должна соответствовать сети на размещенной Graph Node. В Subgraph Studio мейннет Arweave обозначается как `arweave-mainnet` -- Источники данных Arweave содержат необязательное поле source.owner, которое является открытым ключом кошелька Arweave - -Источники данных Arweave поддерживают два типа обработчиков: - -- `blockHandlers` — выполняется при каждом новом блоке Arweave. source.owner не требуется. -- `transactionHandlers` — выполняется при каждой транзакции, где `source.owner` является владельцем источника данных. На данный момент для `transactionHandlers` требуется указать владельца. Если пользователи хотят обрабатывать все транзакции, они должны указать `""` в качестве `source.owner` - -> Source.owner может быть адресом владельца или его Публичным ключом. -> -> Транзакции являются строительными блоками Arweave permaweb, и они представляют собой объекты, созданные конечными пользователями. -> -> Примечание: транзакции [Irys (ранее Bundlr)](https://irys.xyz/) пока не поддерживаются. - -## Определение схемы - -Определение схемы описывает структуру итоговой базы данных субграфа и отношения между объектами. Это не зависит от исходного источника данных. Более подробную информацию о определении схемы субграфа можно найти [здесь](/developing/creating-a-subgraph/#the-graphql-schema). - -## Мэппинги AssemblyScript - -Обработчики для обработки событий написаны на [AssemblyScript](https://www.assemblyscript.org/). - -Индексирование Arweave вводит специфичные для Arweave типы данных в [API AssemblyScript](https://thegraph. com/docs/using-graph-ts). - -```tsx -class Block { - timestamp: u64 - lastRetarget: u64 - height: u64 - indepHash: Bytes - nonce: Bytes - previousBlock: Bytes - diff: Bytes - hash: Bytes - txRoot: Bytes - txs: Bytes[] - walletList: Bytes - rewardAddr: Bytes - tags: Tag[] - rewardPool: Bytes - weaveSize: Bytes - blockSize: Bytes - cumulativeDiff: Bytes - hashListMerkle: Bytes - poa: ProofOfAccess -} - -class Transaction { - format: u32 - id: Bytes - lastTx: Bytes - owner: Bytes - tags: Tag[] - target: Bytes - quantity: Bytes - data: Bytes - dataSize: Bytes - dataRoot: Bytes - signature: Bytes - reward: Bytes -} -``` - -Обработчики блоков получают `Block`, в то время как обработчики транзакций получают `Transaction`. - -Написание мэппингов для субграфа Arweave очень похоже на написание мэппингов для субграфа Ethereum. Для получения дополнительной информации нажмите [сюда](/developing/creating-a-subgraph/#writing-mappings). - -## Развертывание субграфа Arweave в Subgraph Studio - -После того как Ваш субграф был создан на панели управления Subgraph Studio, вы можете развернуть его с помощью команды CLI `graph deploy`. - -```bash -graph deploy --access-token -``` - -## Запрос субграфа Arweave - -Конечная точка GraphQL для Arweave Subgraphs определяется определением схемы, с использованием существующего интерфейса API. Пожалуйста, посетите [документацию по GraphQL API](/subgraphs/querying/graphql-api/) для получения дополнительной информации. - -## Примеры субграфов - -Вот пример субграфа для справки: - -- [Пример субграфа для Arweave](https://github.com/graphprotocol/graph-tooling/tree/main/examples/arweave-blocks-transactions) - -## Часто задаваемые вопросы - -### Может ли субграф индексировать данные с Arweave и других чейнов? - -Нет, субграф может поддерживать источники данных только из одного чейна/сети. - -### Могу ли я проиндексировать сохраненные файлы в Arweave? - -В настоящее время The Graph индексирует Arweave только как блокчейн (его блоки и транзакции). - -### Могу ли я идентифицировать Bundlr-бандлы в своём субграфе? - -В настоящее время это не поддерживается. - -### Как я могу отфильтровать транзакции по определенному аккаунту? - -Source.owner может быть открытым ключом пользователя или адресом учетной записи. - -### Каков текущий формат шифрования? - -Данные обычно передаются в мэппингах в виде байтов, которые, если сохраняются напрямую, возвращаются в субграфе в формате `hex` (например, хэши блоков и транзакций). Возможно, вам захочется преобразовать их в формат `base64` или `base64 URL`-безопасный в ваших мэппингах, чтобы привести их в соответствие с тем, как они отображаются в эксплорерах блоков, таких как [Arweave Explorer](https://viewblock.io/arweave/). - -Следующая вспомогательная функция `bytesToBase64(bytes: Uint8Array, urlSafe: boolean): string` может быть использована и будет добавлена в `graph-ts`: - -``` -const base64Alphabet = [ - "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", - "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", - "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", - "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", - "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "+", "/" -]; - -const base64UrlAlphabet = [ - "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", - "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", - "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", - "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", - "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-", "_" -]; - -function bytesToBase64(bytes: Uint8Array, urlSafe: boolean): string { - let alphabet = urlSafe? base64UrlAlphabet : base64Alphabet; - - let result = '', i: i32, l = bytes.length; - for (i = 2; i < l; i += 3) { - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)]; - result += alphabet[((bytes[i - 1] & 0x0F) << 2) | (bytes[i] >> 6)]; - result += alphabet[bytes[i] & 0x3F]; - } - if (i === l + 1) { // 1 octet yet to write - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[(bytes[i - 2] & 0x03) << 4]; - if (!urlSafe) { - result += "=="; - } - } - if (!urlSafe && i === l) { // 2 octets yet to write - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)]; - result += alphabet[(bytes[i - 1] & 0x0F) << 2]; - if (!urlSafe) { - result += "="; - } - } - return result; -} -``` diff --git a/website/src/pages/sv/subgraphs/guides/_meta.js b/website/src/pages/sv/subgraphs/guides/_meta.js index a1bb04fb6d3f..fd5608dcceb2 100644 --- a/website/src/pages/sv/subgraphs/guides/_meta.js +++ b/website/src/pages/sv/subgraphs/guides/_meta.js @@ -2,7 +2,7 @@ export default { 'subgraph-composition': '', 'subgraph-debug-forking': '', near: '', - arweave: '', + grafting: '', 'subgraph-uncrashable': '', 'transfer-to-the-graph': '', diff --git a/website/src/pages/sv/subgraphs/guides/arweave.mdx b/website/src/pages/sv/subgraphs/guides/arweave.mdx deleted file mode 100644 index 4a5591b45c72..000000000000 --- a/website/src/pages/sv/subgraphs/guides/arweave.mdx +++ /dev/null @@ -1,239 +0,0 @@ ---- -title: Bygga subgrafer på Arweave ---- - -> Arweave support in Graph Node and on Subgraph Studio is in beta: please reach us on [Discord](https://discord.gg/graphprotocol) with any questions about building Arweave Subgraphs! - -I den här guiden kommer du att lära dig hur du bygger och distribuerar subgrafer för att indexera Weaver-blockkedjan. - -## Vad är Arweave? - -Arweave-protokollet tillåter utvecklare att lagra data permanent och det är den största skillnaden mellan Arweave och IPFS, där IPFS saknar funktionen; beständighet och filer lagrade på Arweave kan inte ändras eller raderas. - -Arweave har redan byggt ett flertal bibliotek för att integrera protokollet i ett antal olika programmeringsspråk. För mer information kan du kolla: - -- [Arwiki](https://arwiki.wiki/#/en/main) -- [Arweave Resources](https://www.arweave.org/build) - -## Vad är Arweave-subgrafer? - -The Graph allows you to build custom open APIs called "Subgraphs". Subgraphs are used to tell indexers (server operators) which data to index on a blockchain and save on their servers in order for you to be able to query it at any time using [GraphQL](https://graphql.org/). - -[Graph Node](https://github.com/graphprotocol/graph-node) is now able to index data on Arweave protocol. The current integration is only indexing Arweave as a blockchain (blocks and transactions), it is not indexing the stored files yet. - -## Bygga en Arweave-subgraf - -För att kunna bygga och distribuera Arweave Subgraphs behöver du två paket: - -1. `@graphprotocol/graph-cli` above version 0.30.2 - This is a command-line tool for building and deploying Subgraphs. [Click here](https://www.npmjs.com/package/@graphprotocol/graph-cli) to download using `npm`. -2. `@graphprotocol/graph-ts` above version 0.27.0 - This is library of Subgraph-specific types. [Click here](https://www.npmjs.com/package/@graphprotocol/graph-ts) to download using `npm`. - -## Subgraphs komponenter - -There are three components of a Subgraph: - -### 1. Manifest - `subgraph.yaml` - -Definierar datakällorna av intresse och hur de ska behandlas. Arweave är en ny typ av datakälla. - -### 2. Schema - `schema.graphql` - -Här definierar du vilken data du vill kunna fråga efter att du har indexerat din subgrafer med GraphQL. Detta liknar faktiskt en modell för ett API, där modellen definierar strukturen för en begäran. - -The requirements for Arweave Subgraphs are covered by the [existing documentation](/developing/creating-a-subgraph/#the-graphql-schema). - -### 3. AssemblyScript Mappings - `mapping.ts` - -Detta är logiken som avgör hur data ska hämtas och lagras när någon interagerar med datakällorna du lyssnar på. Data översätts och lagras utifrån det schema du har listat. - -During Subgraph development there are two key commands: - -``` -$ graph codegen # generates types from the schema file identified in the manifest -$ graph build # generates Web Assembly from the AssemblyScript files, and prepares all the Subgraph files in a /build folder -``` - -## Definition av subgraf manifestet - -The Subgraph manifest `subgraph.yaml` identifies the data sources for the Subgraph, the triggers of interest, and the functions that should be run in response to those triggers. See below for an example Subgraph manifest for an Arweave Subgraph: - -```yaml -specVersion: 1.3.0 -description: Arweave Blocks Indexing -schema: - file: ./schema.graphql # link to the schema file -dataSources: - - kind: arweave - name: arweave-blocks - network: arweave-mainnet # The Graph only supports Arweave Mainnet - source: - owner: 'ID-OF-AN-OWNER' # The public key of an Arweave wallet - startBlock: 0 # set this to 0 to start indexing from chain genesis - mapping: - apiVersion: 0.0.9 - language: wasm/assemblyscript - file: ./src/blocks.ts # link to the file with the Assemblyscript mappings - entities: - - Block - - Transaction - blockHandlers: - - handler: handleBlock # the function name in the mapping file - transactionHandlers: - - handler: handleTx # the function name in the mapping file -``` - -- Arweave Subgraphs introduce a new kind of data source (`arweave`) -- The network should correspond to a network on the hosting Graph Node. In Subgraph Studio, Arweave's mainnet is `arweave-mainnet` -- Arweave datakällor introducerar ett valfritt source.owner fält, som är den publika nyckeln till en Arweave plånbok - -Arweave datakällor stöder två typer av hanterare: - -- `blockHandlers` - Run on every new Arweave block. No source.owner is required. -- `transactionHandlers` - Run on every transaction where the data source's `source.owner` is the owner. Currently an owner is required for `transactionHandlers`, if users want to process all transactions they should provide "" as the `source.owner` - -> De source.owner kan vara ägarens adress eller deras publika nyckel. -> -> Transaktioner är byggstenarna i Arweave permaweb och de är objekt skapade av slutanvändare. -> -> Note: [Irys (previously Bundlr)](https://irys.xyz/) transactions are not supported yet. - -## Schema Definition - -Schema definition describes the structure of the resulting Subgraph database and the relationships between entities. This is agnostic of the original data source. There are more details on the Subgraph schema definition [here](/developing/creating-a-subgraph/#the-graphql-schema). - -## AssemblyScript mappningar - -The handlers for processing events are written in [AssemblyScript](https://www.assemblyscript.org/). - -Arweave indexing introduces Arweave-specific data types to the [AssemblyScript API](/subgraphs/developing/creating/graph-ts/api/). - -```tsx -class Block { - timestamp: u64 - lastRetarget: u64 - height: u64 - indepHash: Bytes - nonce: Bytes - previousBlock: Bytes - diff: Bytes - hash: Bytes - txRoot: Bytes - txs: Bytes[] - walletList: Bytes - rewardAddr: Bytes - tags: Tag[] - rewardPool: Bytes - weaveSize: Bytes - blockSize: Bytes - cumulativeDiff: Bytes - hashListMerkle: Bytes - poa: ProofOfAccess -} - -class Transaction { - format: u32 - id: Bytes - lastTx: Bytes - owner: Bytes - tags: Tag[] - target: Bytes - quantity: Bytes - data: Bytes - dataSize: Bytes - dataRoot: Bytes - signature: Bytes - reward: Bytes -} -``` - -Block handlers receive a `Block`, while transactions receive a `Transaction`. - -Writing the mappings of an Arweave Subgraph is very similar to writing the mappings of an Ethereum Subgraph. For more information, click [here](/developing/creating-a-subgraph/#writing-mappings). - -## Deploying an Arweave Subgraph in Subgraph Studio - -Once your Subgraph has been created on your Subgraph Studio dashboard, you can deploy by using the `graph deploy` CLI command. - -```bash -graph deploy --access-token -``` - -## Fråga efter en Arweave-subgraf - -The GraphQL endpoint for Arweave Subgraphs is determined by the schema definition, with the existing API interface. Please visit the [GraphQL API documentation](/subgraphs/querying/graphql-api/) for more information. - -## Exempel på subgrafer - -Here is an example Subgraph for reference: - -- [Example Subgraph for Arweave](https://github.com/graphprotocol/graph-tooling/tree/main/examples/arweave-blocks-transactions) - -## FAQ - -### Can a Subgraph index Arweave and other chains? - -No, a Subgraph can only support data sources from one chain/network. - -### Kan jag indexera de lagrade filerna på Arweave? - -För närvarande indexerar The Graph bara Arweave som en blockkedja (dess block och transaktioner). - -### Can I identify Bundlr bundles in my Subgraph? - -Detta stöds inte för närvarande. - -### Hur kan jag filtrera transaktioner till ett specifikt konto? - -Source.owner kan vara användarens publika nyckel eller kontoadress. - -### Vad är det aktuella krypteringsformatet? - -Data is generally passed into the mappings as Bytes, which if stored directly is returned in the Subgraph in a `hex` format (ex. block and transaction hashes). You may want to convert to a `base64` or `base64 URL`-safe format in your mappings, in order to match what is displayed in block explorers like [Arweave Explorer](https://viewblock.io/arweave/). - -The following `bytesToBase64(bytes: Uint8Array, urlSafe: boolean): string` helper function can be used, and will be added to `graph-ts`: - -``` -const base64Alphabet = [ - "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", - "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", - "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", - "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", - "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "+", "/" -]; - -const base64UrlAlphabet = [ - "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", - "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", - "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", - "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", - "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-", "_" -]; - -function bytesToBase64(bytes: Uint8Array, urlSafe: boolean): string { - let alphabet = urlSafe? base64UrlAlphabet : base64Alphabet; - - let result = '', i: i32, l = bytes.length; - for (i = 2; i < l; i += 3) { - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)]; - result += alphabet[((bytes[i - 1] & 0x0F) << 2) | (bytes[i] >> 6)]; - result += alphabet[bytes[i] & 0x3F]; - } - if (i === l + 1) { // 1 octet yet to write - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[(bytes[i - 2] & 0x03) << 4]; - if (!urlSafe) { - result += "=="; - } - } - if (!urlSafe && i === l) { // 2 octets yet to write - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)]; - result += alphabet[(bytes[i - 1] & 0x0F) << 2]; - if (!urlSafe) { - result += "="; - } - } - return result; -} -``` diff --git a/website/src/pages/tr/subgraphs/guides/_meta.js b/website/src/pages/tr/subgraphs/guides/_meta.js index a1bb04fb6d3f..fd5608dcceb2 100644 --- a/website/src/pages/tr/subgraphs/guides/_meta.js +++ b/website/src/pages/tr/subgraphs/guides/_meta.js @@ -2,7 +2,7 @@ export default { 'subgraph-composition': '', 'subgraph-debug-forking': '', near: '', - arweave: '', + grafting: '', 'subgraph-uncrashable': '', 'transfer-to-the-graph': '', diff --git a/website/src/pages/tr/subgraphs/guides/arweave.mdx b/website/src/pages/tr/subgraphs/guides/arweave.mdx deleted file mode 100644 index 9dccc056f701..000000000000 --- a/website/src/pages/tr/subgraphs/guides/arweave.mdx +++ /dev/null @@ -1,239 +0,0 @@ ---- -title: Arweave Üzerinde Subgraphlar Oluşturma ---- - -> Arweave support in Graph Node and on Subgraph Studio is in beta: please reach us on [Discord](https://discord.gg/graphprotocol) with any questions about building Arweave Subgraphs! - -Bu rehberde, Arweave blok zincirini indekslemek için nasıl Subgraphs oluşturacağınızı ve dağıtacağınızı öğreneceksiniz. - -## Arweave Nedir? - -Arweave protokolü geliştiricilere verileri kalıcı olarak depolama imkanı sağlar ve bu, Arweave ile IPFS arasındaki temel farktır. IPFS'de böyle bir özellik bulunmaz; yani IPFS'te depolanan dosyalar kalıcı değildir ve Arweave'de depolanan dosyalar değiştirilemez veya silinemez. - -Arweave, protokolü farklı programlama dillerine entegre etmek için halihazırda çok sayıda kütüphane oluşturmuştur. Daha fazla bilgi için şurayı kontrol edebilirsiniz: - -- [Arwiki](https://arwiki.wiki/#/en/main) -- [Arweave Kaynakları](https://www.arweave.org/build) - -## Arweave Subgraphları Nedir? - -The Graph, "Subgraph" adı verilen özel açık API'ler oluşturmanıza olanak tanır. Subgraph'ler, endeksleyicilere (sunucu operatörleri) bir blokzincirinde hangi verilerin endeksleneceğini ve sunucularında saklanacağını belirtmek için kullanılır. Böylece [GraphQL](https://graphql.org/) kullanarak bu verilere istediğiniz zaman sorgu yapabilirsiniz. - -[Graph Düğümü](https://github.com/graphprotocol/graph-node) artık Arweave protokolündeki verileri endeksleyebiliyor. Mevcut entegrasyon yalnızca Arweave'i bir blokzinciri olarak (bloklar ve işlemler) endekslemekte olup, henüz depolanan dosyaları endekslememektedir. - -## Bir Arweave Subgraph'ı Oluşturma - -Arweave Subgraphları oluşturabilmek ve dağıtabilmek için iki pakete ihtiyacınız vardır: - -1. `@graphprotocol/graph-cli` above version 0.30.2 - This is a command-line tool for building and deploying Subgraphs. [Click here](https://www.npmjs.com/package/@graphprotocol/graph-cli) to download using `npm`. -2. `@graphprotocol/graph-ts` above version 0.27.0 - This is library of Subgraph-specific types. [Click here](https://www.npmjs.com/package/@graphprotocol/graph-ts) to download using `npm`. - -## Subgraph'ın bileşenleri - -There are three components of a Subgraph: - -### 1. Manifesto - `subgraph.yaml` - -İlgilenilen veri kaynaklarını ve bunların nasıl işlenmesi gerektiğini tanımlar. Arweave yeni bir veri kaynağı türüdür. - -### 2. Şema - `schema.graphql` - -Burada, GraphQL kullanarak Subgraph'ınızı indeksledikten sonra hangi verileri sorgulayabilmek istediğinizi tanımlarsınız. Bu aslında, modelin bir istek gövdesinin yapısını tanımladığı bir API modeline benzer. - -The requirements for Arweave Subgraphs are covered by the [existing documentation](/developing/creating-a-subgraph/#the-graphql-schema). - -### 3. AssemblyScript Eşlemeleri - `mapping.ts` - -Bu, birisi sizin etkinliklerini gözlemlediğiniz veri kaynaklarıyla etkileşimde bulunduğunda verinin nasıl alınması ve depolanması gerektiğini belirleyen mantıktır. Veri çevrilir ve belirttiğiniz şemaya göre depolanır. - -During Subgraph development there are two key commands: - -``` -$ graph codegen # generates types from the schema file identified in the manifest -$ graph build # generates Web Assembly from the AssemblyScript files, and prepares all the Subgraph files in a /build folder -``` - -## Subgraph Manifest Tanımı - -The Subgraph manifest `subgraph.yaml` identifies the data sources for the Subgraph, the triggers of interest, and the functions that should be run in response to those triggers. See below for an example Subgraph manifest for an Arweave Subgraph: - -```yaml -specVersion: 1.3.0 -description: Arweave Blocks Indexing -schema: - file: ./schema.graphql # link to the schema file -dataSources: - - kind: arweave - name: arweave-blocks - network: arweave-mainnet # The Graph only supports Arweave Mainnet - source: - owner: 'ID-OF-AN-OWNER' # The public key of an Arweave wallet - startBlock: 0 # set this to 0 to start indexing from chain genesis - mapping: - apiVersion: 0.0.9 - language: wasm/assemblyscript - file: ./src/blocks.ts # link to the file with the Assemblyscript mappings - entities: - - Block - - Transaction - blockHandlers: - - handler: handleBlock # the function name in the mapping file - transactionHandlers: - - handler: handleTx # the function name in the mapping file -``` - -- Arweave Subgraphs introduce a new kind of data source (`arweave`) -- Ağ, sağlayıcı Graph Düğümü üzerindeki bir ağa karşılık gelmelidir. Subgraph Studio'da, Arweave'in ana ağı `arweave-mainnet` olarak tanımlanır -- Arweave veri kaynakları, bir Arweave cüzdanının genel anahtarı olan opsiyonel bir source.owner alanı sunar - -Arweave veri kaynakları iki tür işleyiciyi destekler: - -- `blockHandlers` - Her yeni Arweave blokunda çalıştırılır. source.owner belirtilmesi gerekmez. -- `transactionHandlers` - Veri kaynağının sahibinin source.owner olduğu her işlemde çalıştırılır. Şu anda ` transactionHandlers` için bir sahip (owner) gereklidir. Kullanıcılar tüm işlemleri gerçekleştirmek istiyorlarsa `source.owner` olarak boş dize "" sağlamalıdırlar - -> source.owner, sahibin adresi veya Genel Anahtarı olabilir. -> -> İşlemler Arweave permaweb'in yapı taşlarıdır ve son kullanıcılar tarafından oluşturulan nesnelerdir. -> -> Not: [Irys (önceden Bundlr)](https://irys.xyz/) işlemleri henüz desteklenmemektedir. - -## Şema Tanımı - -Schema definition describes the structure of the resulting Subgraph database and the relationships between entities. This is agnostic of the original data source. There are more details on the Subgraph schema definition [here](/developing/creating-a-subgraph/#the-graphql-schema). - -## AssemblyScript Eşlemeleri - -Olayları işlemek için kullanılan işleyiciler [AssemblyScript](https://www.assemblyscript.org/) ile yazılmıştır. - -Arweave endeksleme, [AssemblyScript API](/subgraphs/developing/creating/graph-ts/api/) için Arweave'e özgü veri türlerini tanıtır. - -```tsx -class Block { - timestamp: u64 - lastRetarget: u64 - height: u64 - indepHash: Bytes - nonce: Bytes - previousBlock: Bytes - diff: Bytes - hash: Bytes - txRoot: Bytes - txs: Bytes[] - walletList: Bytes - rewardAddr: Bytes - tags: Tag[] - rewardPool: Bytes - weaveSize: Bytes - blockSize: Bytes - cumulativeDiff: Bytes - hashListMerkle: Bytes - poa: ProofOfAccess -} - -class Transaction { - format: u32 - id: Bytes - lastTx: Bytes - owner: Bytes - tags: Tag[] - target: Bytes - quantity: Bytes - data: Bytes - dataSize: Bytes - dataRoot: Bytes - signature: Bytes - reward: Bytes -} -``` - -Blok işleyiciler bir `Block` alırken, işlemler bir `Transaction` alır. - -Arweave Subgraph'inin eşleştirmelerini yazmak, bir Ethereum Subgraph'inin eşleştirmelerini yazmaya oldukça benzerdir. Daha fazla bilgi için [buraya](/developing/creating-a-subgraph/#writing-mappings) tıklayın. - -## Subgraph Studio'da Arweave Subgraph'i Dağıtma - -Once your Subgraph has been created on your Subgraph Studio dashboard, you can deploy by using the `graph deploy` CLI command. - -```bash -graph deploy --access-token -``` - -## Arweave Subgraph'ını Sorgulama - -The GraphQL endpoint for Arweave Subgraphs is determined by the schema definition, with the existing API interface. Please visit the [GraphQL API documentation](/subgraphs/querying/graphql-api/) for more information. - -## Örnek Subgraph'ler - -Here is an example Subgraph for reference: - -- [Example Subgraph for Arweave](https://github.com/graphprotocol/graph-tooling/tree/main/examples/arweave-blocks-transactions) - -## FAQ - -### Can a Subgraph index Arweave and other chains? - -No, a Subgraph can only support data sources from one chain/network. - -### Depolanmış dosyaları Arweave üzerinde indeksleyebilir miyim? - -Şu anda Graph, Arweave'yi yalnızca bir blok zinciri (blokları ve işlemleri) olarak indekslemektedir. - -### Can I identify Bundlr bundles in my Subgraph? - -Bu şu anda desteklenmemektedir. - -### İşlemleri belirli bir hesaba özel olarak nasıl filtreleyebilirim? - -source.owner kullanıcının genel anahtarı veya hesap adresi olabilir. - -### Mevcut şifreleme formatı nedir? - -Data is generally passed into the mappings as Bytes, which if stored directly is returned in the Subgraph in a `hex` format (ex. block and transaction hashes). You may want to convert to a `base64` or `base64 URL`-safe format in your mappings, in order to match what is displayed in block explorers like [Arweave Explorer](https://viewblock.io/arweave/). - -Aşağıdaki `bytesToBase64(bytes: Uint8Array, urlSafe: boolean): string` yardımcı fonksiyonu kullanılabilir. Bu fonksiyon, `graph-ts`'e eklenecektir: - -``` -const base64Alphabet = [ - "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", - "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", - "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", - "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", - "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "+", "/" -]; - -const base64UrlAlphabet = [ - "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", - "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", - "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", - "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", - "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-", "_" -]; - -function bytesToBase64(bytes: Uint8Array, urlSafe: boolean): string { - let alphabet = urlSafe? base64UrlAlphabet : base64Alphabet; - - let result = '', i: i32, l = bytes.length; - for (i = 2; i < l; i += 3) { - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)]; - result += alphabet[((bytes[i - 1] & 0x0F) << 2) | (bytes[i] >> 6)]; - result += alphabet[bytes[i] & 0x3F]; - } - if (i === l + 1) { // 1 octet yet to write - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[(bytes[i - 2] & 0x03) << 4]; - if (!urlSafe) { - result += "=="; - } - } - if (!urlSafe && i === l) { // 2 octets yet to write - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)]; - result += alphabet[(bytes[i - 1] & 0x0F) << 2]; - if (!urlSafe) { - result += "="; - } - } - return result; -} -``` diff --git a/website/src/pages/uk/subgraphs/guides/_meta.js b/website/src/pages/uk/subgraphs/guides/_meta.js index a1bb04fb6d3f..fd5608dcceb2 100644 --- a/website/src/pages/uk/subgraphs/guides/_meta.js +++ b/website/src/pages/uk/subgraphs/guides/_meta.js @@ -2,7 +2,7 @@ export default { 'subgraph-composition': '', 'subgraph-debug-forking': '', near: '', - arweave: '', + grafting: '', 'subgraph-uncrashable': '', 'transfer-to-the-graph': '', diff --git a/website/src/pages/uk/subgraphs/guides/arweave.mdx b/website/src/pages/uk/subgraphs/guides/arweave.mdx deleted file mode 100644 index 3fe39f3a2575..000000000000 --- a/website/src/pages/uk/subgraphs/guides/arweave.mdx +++ /dev/null @@ -1,239 +0,0 @@ ---- -title: Building Subgraphs on Arweave ---- - -> Arweave support in Graph Node and on Subgraph Studio is in beta: please reach us on [Discord](https://discord.gg/graphprotocol) with any questions about building Arweave Subgraphs! - -In this guide, you will learn how to build and deploy Subgraphs to index the Arweave blockchain. - -## What is Arweave? - -The Arweave protocol allows developers to store data permanently and that is the main difference between Arweave and IPFS, where IPFS lacks the feature; permanence, and files stored on Arweave can't be changed or deleted. - -Arweave already has built numerous libraries for integrating the protocol in a number of different programming languages. For more information you can check: - -- [Arwiki](https://arwiki.wiki/#/en/main) -- [Arweave Resources](https://www.arweave.org/build) - -## What are Arweave Subgraphs? - -The Graph allows you to build custom open APIs called "Subgraphs". Subgraphs are used to tell indexers (server operators) which data to index on a blockchain and save on their servers in order for you to be able to query it at any time using [GraphQL](https://graphql.org/). - -[Graph Node](https://github.com/graphprotocol/graph-node) is now able to index data on Arweave protocol. The current integration is only indexing Arweave as a blockchain (blocks and transactions), it is not indexing the stored files yet. - -## Building an Arweave Subgraph - -To be able to build and deploy Arweave Subgraphs, you need two packages: - -1. `@graphprotocol/graph-cli` above version 0.30.2 - This is a command-line tool for building and deploying Subgraphs. [Click here](https://www.npmjs.com/package/@graphprotocol/graph-cli) to download using `npm`. -2. `@graphprotocol/graph-ts` above version 0.27.0 - This is library of Subgraph-specific types. [Click here](https://www.npmjs.com/package/@graphprotocol/graph-ts) to download using `npm`. - -## Subgraph's components - -There are three components of a Subgraph: - -### 1. Manifest - `subgraph.yaml` - -Defines the data sources of interest, and how they should be processed. Arweave is a new kind of data source. - -### 2. Schema - `schema.graphql` - -Here you define which data you want to be able to query after indexing your Subgraph using GraphQL. This is actually similar to a model for an API, where the model defines the structure of a request body. - -The requirements for Arweave Subgraphs are covered by the [existing documentation](/developing/creating-a-subgraph/#the-graphql-schema). - -### 3. AssemblyScript Mappings - `mapping.ts` - -This is the logic that determines how data should be retrieved and stored when someone interacts with the data sources you are listening to. The data gets translated and is stored based off the schema you have listed. - -During Subgraph development there are two key commands: - -``` -$ graph codegen # generates types from the schema file identified in the manifest -$ graph build # generates Web Assembly from the AssemblyScript files, and prepares all the Subgraph files in a /build folder -``` - -## Визначення маніфесту підграфів - -The Subgraph manifest `subgraph.yaml` identifies the data sources for the Subgraph, the triggers of interest, and the functions that should be run in response to those triggers. See below for an example Subgraph manifest for an Arweave Subgraph: - -```yaml -specVersion: 1.3.0 -description: Arweave Blocks Indexing -schema: - file: ./schema.graphql # link to the schema file -dataSources: - - kind: arweave - name: arweave-blocks - network: arweave-mainnet # The Graph only supports Arweave Mainnet - source: - owner: 'ID-OF-AN-OWNER' # The public key of an Arweave wallet - startBlock: 0 # set this to 0 to start indexing from chain genesis - mapping: - apiVersion: 0.0.9 - language: wasm/assemblyscript - file: ./src/blocks.ts # link to the file with the Assemblyscript mappings - entities: - - Block - - Transaction - blockHandlers: - - handler: handleBlock # the function name in the mapping file - transactionHandlers: - - handler: handleTx # the function name in the mapping file -``` - -- Arweave Subgraphs introduce a new kind of data source (`arweave`) -- The network should correspond to a network on the hosting Graph Node. In Subgraph Studio, Arweave's mainnet is `arweave-mainnet` -- Arweave data sources introduce an optional source.owner field, which is the public key of an Arweave wallet - -Arweave data sources support two types of handlers: - -- `blockHandlers` - Run on every new Arweave block. No source.owner is required. -- `transactionHandlers` - Run on every transaction where the data source's `source.owner` is the owner. Currently an owner is required for `transactionHandlers`, if users want to process all transactions they should provide "" as the `source.owner` - -> The source.owner can be the owner's address, or their Public Key. -> -> Transactions are the building blocks of the Arweave permaweb and they are objects created by end-users. -> -> Note: [Irys (previously Bundlr)](https://irys.xyz/) transactions are not supported yet. - -## Визначення схеми - -Schema definition describes the structure of the resulting Subgraph database and the relationships between entities. This is agnostic of the original data source. There are more details on the Subgraph schema definition [here](/developing/creating-a-subgraph/#the-graphql-schema). - -## AssemblyScript Mappings - -The handlers for processing events are written in [AssemblyScript](https://www.assemblyscript.org/). - -Arweave indexing introduces Arweave-specific data types to the [AssemblyScript API](/subgraphs/developing/creating/graph-ts/api/). - -```tsx -class Block { - timestamp: u64 - lastRetarget: u64 - height: u64 - indepHash: Bytes - nonce: Bytes - previousBlock: Bytes - diff: Bytes - hash: Bytes - txRoot: Bytes - txs: Bytes[] - walletList: Bytes - rewardAddr: Bytes - tags: Tag[] - rewardPool: Bytes - weaveSize: Bytes - blockSize: Bytes - cumulativeDiff: Bytes - hashListMerkle: Bytes - poa: ProofOfAccess -} - -class Transaction { - format: u32 - id: Bytes - lastTx: Bytes - owner: Bytes - tags: Tag[] - target: Bytes - quantity: Bytes - data: Bytes - dataSize: Bytes - dataRoot: Bytes - signature: Bytes - reward: Bytes -} -``` - -Block handlers receive a `Block`, while transactions receive a `Transaction`. - -Writing the mappings of an Arweave Subgraph is very similar to writing the mappings of an Ethereum Subgraph. For more information, click [here](/developing/creating-a-subgraph/#writing-mappings). - -## Deploying an Arweave Subgraph in Subgraph Studio - -Once your Subgraph has been created on your Subgraph Studio dashboard, you can deploy by using the `graph deploy` CLI command. - -```bash -graph deploy --access-token -``` - -## Querying an Arweave Subgraph - -The GraphQL endpoint for Arweave Subgraphs is determined by the schema definition, with the existing API interface. Please visit the [GraphQL API documentation](/subgraphs/querying/graphql-api/) for more information. - -## Приклади підграфів - -Here is an example Subgraph for reference: - -- [Example Subgraph for Arweave](https://github.com/graphprotocol/graph-tooling/tree/main/examples/arweave-blocks-transactions) - -## FAQ - -### Can a Subgraph index Arweave and other chains? - -No, a Subgraph can only support data sources from one chain/network. - -### Can I index the stored files on Arweave? - -Currently, The Graph is only indexing Arweave as a blockchain (its blocks and transactions). - -### Can I identify Bundlr bundles in my Subgraph? - -This is not currently supported. - -### How can I filter transactions to a specific account? - -The source.owner can be the user's public key or account address. - -### What is the current encryption format? - -Data is generally passed into the mappings as Bytes, which if stored directly is returned in the Subgraph in a `hex` format (ex. block and transaction hashes). You may want to convert to a `base64` or `base64 URL`-safe format in your mappings, in order to match what is displayed in block explorers like [Arweave Explorer](https://viewblock.io/arweave/). - -The following `bytesToBase64(bytes: Uint8Array, urlSafe: boolean): string` helper function can be used, and will be added to `graph-ts`: - -``` -const base64Alphabet = [ - "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", - "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", - "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", - "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", - "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "+", "/" -]; - -const base64UrlAlphabet = [ - "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", - "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", - "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", - "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", - "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-", "_" -]; - -function bytesToBase64(bytes: Uint8Array, urlSafe: boolean): string { - let alphabet = urlSafe? base64UrlAlphabet : base64Alphabet; - - let result = '', i: i32, l = bytes.length; - for (i = 2; i < l; i += 3) { - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)]; - result += alphabet[((bytes[i - 1] & 0x0F) << 2) | (bytes[i] >> 6)]; - result += alphabet[bytes[i] & 0x3F]; - } - if (i === l + 1) { // 1 octet yet to write - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[(bytes[i - 2] & 0x03) << 4]; - if (!urlSafe) { - result += "=="; - } - } - if (!urlSafe && i === l) { // 2 octets yet to write - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)]; - result += alphabet[(bytes[i - 1] & 0x0F) << 2]; - if (!urlSafe) { - result += "="; - } - } - return result; -} -``` diff --git a/website/src/pages/ur/subgraphs/guides/_meta.js b/website/src/pages/ur/subgraphs/guides/_meta.js index a1bb04fb6d3f..fd5608dcceb2 100644 --- a/website/src/pages/ur/subgraphs/guides/_meta.js +++ b/website/src/pages/ur/subgraphs/guides/_meta.js @@ -2,7 +2,7 @@ export default { 'subgraph-composition': '', 'subgraph-debug-forking': '', near: '', - arweave: '', + grafting: '', 'subgraph-uncrashable': '', 'transfer-to-the-graph': '', diff --git a/website/src/pages/ur/subgraphs/guides/arweave.mdx b/website/src/pages/ur/subgraphs/guides/arweave.mdx deleted file mode 100644 index 26e34b1be5ab..000000000000 --- a/website/src/pages/ur/subgraphs/guides/arweave.mdx +++ /dev/null @@ -1,239 +0,0 @@ ---- -title: بناۓ گئے سب گرافز آرویو(Arweave) پر ---- - -> Arweave support in Graph Node and on Subgraph Studio is in beta: please reach us on [Discord](https://discord.gg/graphprotocol) with any questions about building Arweave Subgraphs! - -اس گائڈ میں، آپ سیکھیں گے کہ آرویو(Arweave) بلاکچین کو انڈیکس کرنے کیلئے سب گرافز بنانے اور مستعمل کرنے کا طریقہ کار کیسے ہے۔ - -## آرویو(Arweave) کیا ہے؟ - -آرویو (Arweave) پروٹوکول ڈیولپرز کو اجازت دیتا کے وہ ڈیٹا کو مستقل طور پر اسٹور کرے اور یہی آرویو(Arweave) اور IPFS میں سب سے بڑا فرق ہے،جہاں IPFS میں خصوصیئت کی کمی ہے؛مستقل مزاجی ، اور فایلز جو آرویو(Arweave) پر اسٹور ہوتی ہیں بدل یا ختم نہیں ہو سکتی. - -آرویو(Arweave) نے پہلے ہی بہت سی کتابخانےاں تیار کی ہیں جو مختلف پروگرامنگ زبانوں میں پروٹوکول کو اندر ملانے کے لئے بنائی گئی ہیں۔ مزید معلومات کے لئے آپ یہ چیک کر سکتے ہیں: - -- [Arwiki](https://arwiki.wiki/#/en/main) -- [Arweave Resources](https://www.arweave.org/build) - -## آرویو(Arweave) سب گرافز کیا ہوتے ہیں؟ - -The Graph allows you to build custom open APIs called "Subgraphs". Subgraphs are used to tell indexers (server operators) which data to index on a blockchain and save on their servers in order for you to be able to query it at any time using [GraphQL](https://graphql.org/). - -[Graph Node](https://github.com/graphprotocol/graph-node) is now able to index data on Arweave protocol. The current integration is only indexing Arweave as a blockchain (blocks and transactions), it is not indexing the stored files yet. - -## آرویو(Arweave) سب گراف بنانا - -آرویو کے سب گراف بنانے اور تعینات کرنے کے لئے،آپ کو دو پیکجوں کی ضرورت ہے: - -1. `@graphprotocol/graph-cli` above version 0.30.2 - This is a command-line tool for building and deploying Subgraphs. [Click here](https://www.npmjs.com/package/@graphprotocol/graph-cli) to download using `npm`. -2. `@graphprotocol/graph-ts` above version 0.27.0 - This is library of Subgraph-specific types. [Click here](https://www.npmjs.com/package/@graphprotocol/graph-ts) to download using `npm`. - -## سب گراف کے حصے - -There are three components of a Subgraph: - -### 1. Manifest - `subgraph.yaml` - -دلچسپی کے ڈیٹا کے ذرایع کو بیان کرتا ہے،اور کیسے ان پر کاروائ کی جاۓ۔ آرویو ایک نئ طرح کا ڈیٹا کا ذریعہ ہے. - -### 2. Schema - `schema.graphql` - -یہاں آپ بیان کرتے ہیں کے کونسا ڈیٹا آپ کے سب گراف کا کیوری گراف کیو ایل کا استعمال کرتے ہوۓ کر سکے۔یہ دراصل اے پی آی(API) کے ماڈل سے ملتا ہے،جہاں ماڈل درخواست کے جسم کے ڈھانچے کو بیان کرتا ہے. - -The requirements for Arweave Subgraphs are covered by the [existing documentation](/developing/creating-a-subgraph/#the-graphql-schema). - -### 3. AssemblyScript Mappings - `mapping.ts` - -یہ وہ منطق جو اس بات کا پتہ لگاتا ہے کے کیسے ڈیٹا کو بازیافت اور مہفوظ کیا جاۓ جب کوئ اس ڈیٹا کے ذخیرہ سے تعامل کرے جسے آپ سن رہے ہیں۔اس ڈیٹا کا ترجمہ کیا جاتا ہے اور آپ کے درج کردہ اسکیما کی بنیاد پر مہفوظ کیا جاتا ہے. - -During Subgraph development there are two key commands: - -``` -$ graph codegen # generates types from the schema file identified in the manifest -$ graph build # generates Web Assembly from the AssemblyScript files, and prepares all the Subgraph files in a /build folder -``` - -## سب گراف مینی فیسٹ کی تعریف - -The Subgraph manifest `subgraph.yaml` identifies the data sources for the Subgraph, the triggers of interest, and the functions that should be run in response to those triggers. See below for an example Subgraph manifest for an Arweave Subgraph: - -```yaml -specVersion: 1.3.0 -description: Arweave Blocks Indexing -schema: - file: ./schema.graphql # link to the schema file -dataSources: - - kind: arweave - name: arweave-blocks - network: arweave-mainnet # The Graph only supports Arweave Mainnet - source: - owner: 'ID-OF-AN-OWNER' # The public key of an Arweave wallet - startBlock: 0 # set this to 0 to start indexing from chain genesis - mapping: - apiVersion: 0.0.9 - language: wasm/assemblyscript - file: ./src/blocks.ts # link to the file with the Assemblyscript mappings - entities: - - Block - - Transaction - blockHandlers: - - handler: handleBlock # the function name in the mapping file - transactionHandlers: - - handler: handleTx # the function name in the mapping file -``` - -- Arweave Subgraphs introduce a new kind of data source (`arweave`) -- The network should correspond to a network on the hosting Graph Node. In Subgraph Studio, Arweave's mainnet is `arweave-mainnet` -- آرویو ڈیٹا کے ذرائع ایک اختیاری source.owner فیلڈ متعارف کراتے ہیں، جو آرویو والیٹ کی عوامی کلید ہے - -آرویو ڈیٹا کے ذرائع دو قسم کے ہینڈلرز کو سپورٹ کرتے ہیں: - -- `blockHandlers` - Run on every new Arweave block. No source.owner is required. -- `transactionHandlers` - Run on every transaction where the data source's `source.owner` is the owner. Currently an owner is required for `transactionHandlers`, if users want to process all transactions they should provide "" as the `source.owner` - -> Source.owner مالک کا پتہ، یا ان کی عوامی کلید ہو سکتا ہے. -> -> ٹرانزیکشنز آرویو پرما ویب کے تعمیراتی بلاکس ہیں اور یہ آخری صارفین کے ذریعہ تخلیق کردہ اشیاء ہیں. -> -> Note: [Irys (previously Bundlr)](https://irys.xyz/) transactions are not supported yet. - -## اسکیما کی تعریف - -Schema definition describes the structure of the resulting Subgraph database and the relationships between entities. This is agnostic of the original data source. There are more details on the Subgraph schema definition [here](/developing/creating-a-subgraph/#the-graphql-schema). - -## اسمبلی اسکرپٹ سب میپنک - -The handlers for processing events are written in [AssemblyScript](https://www.assemblyscript.org/). - -Arweave indexing introduces Arweave-specific data types to the [AssemblyScript API](/subgraphs/developing/creating/graph-ts/api/). - -```tsx -class Block { - timestamp: u64 - lastRetarget: u64 - height: u64 - indepHash: Bytes - nonce: Bytes - previousBlock: Bytes - diff: Bytes - hash: Bytes - txRoot: Bytes - txs: Bytes[] - walletList: Bytes - rewardAddr: Bytes - tags: Tag[] - rewardPool: Bytes - weaveSize: Bytes - blockSize: Bytes - cumulativeDiff: Bytes - hashListMerkle: Bytes - poa: ProofOfAccess -} - -class Transaction { - format: u32 - id: Bytes - lastTx: Bytes - owner: Bytes - tags: Tag[] - target: Bytes - quantity: Bytes - data: Bytes - dataSize: Bytes - dataRoot: Bytes - signature: Bytes - reward: Bytes -} -``` - -Block handlers receive a `Block`, while transactions receive a `Transaction`. - -Writing the mappings of an Arweave Subgraph is very similar to writing the mappings of an Ethereum Subgraph. For more information, click [here](/developing/creating-a-subgraph/#writing-mappings). - -## Deploying an Arweave Subgraph in Subgraph Studio - -Once your Subgraph has been created on your Subgraph Studio dashboard, you can deploy by using the `graph deploy` CLI command. - -```bash -graph deploy --access-token -``` - -## آرویو سب گراف سے کیوری کرنا - -The GraphQL endpoint for Arweave Subgraphs is determined by the schema definition, with the existing API interface. Please visit the [GraphQL API documentation](/subgraphs/querying/graphql-api/) for more information. - -## سب گراف کی مثال - -Here is an example Subgraph for reference: - -- [Example Subgraph for Arweave](https://github.com/graphprotocol/graph-tooling/tree/main/examples/arweave-blocks-transactions) - -## FAQ - -### Can a Subgraph index Arweave and other chains? - -No, a Subgraph can only support data sources from one chain/network. - -### کیا میں آرویو پر ذخیرہ شدہ فائلوں کو انڈیکس کر سکتا ہوں؟ - -فی الحال، دی گراف صرف آرویو کو بلاک چین (اس کے بلاکس اور لین دین) کے طور پر ترتیب دے رہا ہے. - -### Can I identify Bundlr bundles in my Subgraph? - -یہ فی الحال سپورٹڈ نہیں ہے. - -### میں کسی مخصوص اکاؤنٹ میں لین دین کو کیسے فلٹر کر سکتا ہوں؟ - -Source.owner صارف کی عوامی کلید یا اکاؤنٹ ایڈریس ہو سکتا ہے. - -### موجودہ خفیہ کاری کا فارمیٹ کیا ہے؟ - -Data is generally passed into the mappings as Bytes, which if stored directly is returned in the Subgraph in a `hex` format (ex. block and transaction hashes). You may want to convert to a `base64` or `base64 URL`-safe format in your mappings, in order to match what is displayed in block explorers like [Arweave Explorer](https://viewblock.io/arweave/). - -The following `bytesToBase64(bytes: Uint8Array, urlSafe: boolean): string` helper function can be used, and will be added to `graph-ts`: - -``` -const base64Alphabet = [ - "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", - "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", - "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", - "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", - "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "+", "/" -]; - -const base64UrlAlphabet = [ - "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", - "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", - "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", - "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", - "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-", "_" -]; - -function bytesToBase64(bytes: Uint8Array, urlSafe: boolean): string { - let alphabet = urlSafe? base64UrlAlphabet : base64Alphabet; - - let result = '', i: i32, l = bytes.length; - for (i = 2; i < l; i += 3) { - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)]; - result += alphabet[((bytes[i - 1] & 0x0F) << 2) | (bytes[i] >> 6)]; - result += alphabet[bytes[i] & 0x3F]; - } - if (i === l + 1) { // 1 octet yet to write - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[(bytes[i - 2] & 0x03) << 4]; - if (!urlSafe) { - result += "=="; - } - } - if (!urlSafe && i === l) { // 2 octets yet to write - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)]; - result += alphabet[(bytes[i - 1] & 0x0F) << 2]; - if (!urlSafe) { - result += "="; - } - } - return result; -} -``` diff --git a/website/src/pages/vi/subgraphs/guides/_meta.js b/website/src/pages/vi/subgraphs/guides/_meta.js index a1bb04fb6d3f..fd5608dcceb2 100644 --- a/website/src/pages/vi/subgraphs/guides/_meta.js +++ b/website/src/pages/vi/subgraphs/guides/_meta.js @@ -2,7 +2,7 @@ export default { 'subgraph-composition': '', 'subgraph-debug-forking': '', near: '', - arweave: '', + grafting: '', 'subgraph-uncrashable': '', 'transfer-to-the-graph': '', diff --git a/website/src/pages/vi/subgraphs/guides/arweave.mdx b/website/src/pages/vi/subgraphs/guides/arweave.mdx deleted file mode 100644 index e59abffa383f..000000000000 --- a/website/src/pages/vi/subgraphs/guides/arweave.mdx +++ /dev/null @@ -1,239 +0,0 @@ ---- -title: Building Subgraphs on Arweave ---- - -> Arweave support in Graph Node and on Subgraph Studio is in beta: please reach us on [Discord](https://discord.gg/graphprotocol) with any questions about building Arweave Subgraphs! - -In this guide, you will learn how to build and deploy Subgraphs to index the Arweave blockchain. - -## What is Arweave? - -The Arweave protocol allows developers to store data permanently and that is the main difference between Arweave and IPFS, where IPFS lacks the feature; permanence, and files stored on Arweave can't be changed or deleted. - -Arweave already has built numerous libraries for integrating the protocol in a number of different programming languages. For more information you can check: - -- [Arwiki](https://arwiki.wiki/#/en/main) -- [Arweave Resources](https://www.arweave.org/build) - -## What are Arweave Subgraphs? - -The Graph allows you to build custom open APIs called "Subgraphs". Subgraphs are used to tell indexers (server operators) which data to index on a blockchain and save on their servers in order for you to be able to query it at any time using [GraphQL](https://graphql.org/). - -[Graph Node](https://github.com/graphprotocol/graph-node) is now able to index data on Arweave protocol. The current integration is only indexing Arweave as a blockchain (blocks and transactions), it is not indexing the stored files yet. - -## Building an Arweave Subgraph - -To be able to build and deploy Arweave Subgraphs, you need two packages: - -1. `@graphprotocol/graph-cli` above version 0.30.2 - This is a command-line tool for building and deploying Subgraphs. [Click here](https://www.npmjs.com/package/@graphprotocol/graph-cli) to download using `npm`. -2. `@graphprotocol/graph-ts` above version 0.27.0 - This is library of Subgraph-specific types. [Click here](https://www.npmjs.com/package/@graphprotocol/graph-ts) to download using `npm`. - -## Subgraph's components - -There are three components of a Subgraph: - -### 1. Manifest - `subgraph.yaml` - -Defines the data sources of interest, and how they should be processed. Arweave is a new kind of data source. - -### 2. Schema - `schema.graphql` - -Here you define which data you want to be able to query after indexing your Subgraph using GraphQL. This is actually similar to a model for an API, where the model defines the structure of a request body. - -The requirements for Arweave Subgraphs are covered by the [existing documentation](/developing/creating-a-subgraph/#the-graphql-schema). - -### 3. AssemblyScript Mappings - `mapping.ts` - -This is the logic that determines how data should be retrieved and stored when someone interacts with the data sources you are listening to. The data gets translated and is stored based off the schema you have listed. - -During Subgraph development there are two key commands: - -``` -$ graph codegen # generates types from the schema file identified in the manifest -$ graph build # generates Web Assembly from the AssemblyScript files, and prepares all the Subgraph files in a /build folder -``` - -## Subgraph Manifest Definition - -The Subgraph manifest `subgraph.yaml` identifies the data sources for the Subgraph, the triggers of interest, and the functions that should be run in response to those triggers. See below for an example Subgraph manifest for an Arweave Subgraph: - -```yaml -specVersion: 1.3.0 -description: Arweave Blocks Indexing -schema: - file: ./schema.graphql # link to the schema file -dataSources: - - kind: arweave - name: arweave-blocks - network: arweave-mainnet # The Graph only supports Arweave Mainnet - source: - owner: 'ID-OF-AN-OWNER' # The public key of an Arweave wallet - startBlock: 0 # set this to 0 to start indexing from chain genesis - mapping: - apiVersion: 0.0.9 - language: wasm/assemblyscript - file: ./src/blocks.ts # link to the file with the Assemblyscript mappings - entities: - - Block - - Transaction - blockHandlers: - - handler: handleBlock # the function name in the mapping file - transactionHandlers: - - handler: handleTx # the function name in the mapping file -``` - -- Arweave Subgraphs introduce a new kind of data source (`arweave`) -- The network should correspond to a network on the hosting Graph Node. In Subgraph Studio, Arweave's mainnet is `arweave-mainnet` -- Arweave data sources introduce an optional source.owner field, which is the public key of an Arweave wallet - -Arweave data sources support two types of handlers: - -- `blockHandlers` - Run on every new Arweave block. No source.owner is required. -- `transactionHandlers` - Run on every transaction where the data source's `source.owner` is the owner. Currently an owner is required for `transactionHandlers`, if users want to process all transactions they should provide "" as the `source.owner` - -> The source.owner can be the owner's address, or their Public Key. -> -> Transactions are the building blocks of the Arweave permaweb and they are objects created by end-users. -> -> Note: [Irys (previously Bundlr)](https://irys.xyz/) transactions are not supported yet. - -## Schema Definition - -Schema definition describes the structure of the resulting Subgraph database and the relationships between entities. This is agnostic of the original data source. There are more details on the Subgraph schema definition [here](/developing/creating-a-subgraph/#the-graphql-schema). - -## AssemblyScript Mappings - -The handlers for processing events are written in [AssemblyScript](https://www.assemblyscript.org/). - -Arweave indexing introduces Arweave-specific data types to the [AssemblyScript API](/subgraphs/developing/creating/graph-ts/api/). - -```tsx -class Block { - timestamp: u64 - lastRetarget: u64 - height: u64 - indepHash: Bytes - nonce: Bytes - previousBlock: Bytes - diff: Bytes - hash: Bytes - txRoot: Bytes - txs: Bytes[] - walletList: Bytes - rewardAddr: Bytes - tags: Tag[] - rewardPool: Bytes - weaveSize: Bytes - blockSize: Bytes - cumulativeDiff: Bytes - hashListMerkle: Bytes - poa: ProofOfAccess -} - -class Transaction { - format: u32 - id: Bytes - lastTx: Bytes - owner: Bytes - tags: Tag[] - target: Bytes - quantity: Bytes - data: Bytes - dataSize: Bytes - dataRoot: Bytes - signature: Bytes - reward: Bytes -} -``` - -Block handlers receive a `Block`, while transactions receive a `Transaction`. - -Writing the mappings of an Arweave Subgraph is very similar to writing the mappings of an Ethereum Subgraph. For more information, click [here](/developing/creating-a-subgraph/#writing-mappings). - -## Deploying an Arweave Subgraph in Subgraph Studio - -Once your Subgraph has been created on your Subgraph Studio dashboard, you can deploy by using the `graph deploy` CLI command. - -```bash -graph deploy --access-token -``` - -## Querying an Arweave Subgraph - -The GraphQL endpoint for Arweave Subgraphs is determined by the schema definition, with the existing API interface. Please visit the [GraphQL API documentation](/subgraphs/querying/graphql-api/) for more information. - -## Example Subgraphs - -Here is an example Subgraph for reference: - -- [Example Subgraph for Arweave](https://github.com/graphprotocol/graph-tooling/tree/main/examples/arweave-blocks-transactions) - -## FAQ - -### Can a Subgraph index Arweave and other chains? - -No, a Subgraph can only support data sources from one chain/network. - -### Can I index the stored files on Arweave? - -Currently, The Graph is only indexing Arweave as a blockchain (its blocks and transactions). - -### Can I identify Bundlr bundles in my Subgraph? - -This is not currently supported. - -### How can I filter transactions to a specific account? - -The source.owner can be the user's public key or account address. - -### What is the current encryption format? - -Data is generally passed into the mappings as Bytes, which if stored directly is returned in the Subgraph in a `hex` format (ex. block and transaction hashes). You may want to convert to a `base64` or `base64 URL`-safe format in your mappings, in order to match what is displayed in block explorers like [Arweave Explorer](https://viewblock.io/arweave/). - -The following `bytesToBase64(bytes: Uint8Array, urlSafe: boolean): string` helper function can be used, and will be added to `graph-ts`: - -``` -const base64Alphabet = [ - "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", - "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", - "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", - "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", - "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "+", "/" -]; - -const base64UrlAlphabet = [ - "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", - "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", - "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", - "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", - "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-", "_" -]; - -function bytesToBase64(bytes: Uint8Array, urlSafe: boolean): string { - let alphabet = urlSafe? base64UrlAlphabet : base64Alphabet; - - let result = '', i: i32, l = bytes.length; - for (i = 2; i < l; i += 3) { - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)]; - result += alphabet[((bytes[i - 1] & 0x0F) << 2) | (bytes[i] >> 6)]; - result += alphabet[bytes[i] & 0x3F]; - } - if (i === l + 1) { // 1 octet yet to write - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[(bytes[i - 2] & 0x03) << 4]; - if (!urlSafe) { - result += "=="; - } - } - if (!urlSafe && i === l) { // 2 octets yet to write - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)]; - result += alphabet[(bytes[i - 1] & 0x0F) << 2]; - if (!urlSafe) { - result += "="; - } - } - return result; -} -``` diff --git a/website/src/pages/zh/subgraphs/guides/_meta.js b/website/src/pages/zh/subgraphs/guides/_meta.js index a1bb04fb6d3f..fd5608dcceb2 100644 --- a/website/src/pages/zh/subgraphs/guides/_meta.js +++ b/website/src/pages/zh/subgraphs/guides/_meta.js @@ -2,7 +2,7 @@ export default { 'subgraph-composition': '', 'subgraph-debug-forking': '', near: '', - arweave: '', + grafting: '', 'subgraph-uncrashable': '', 'transfer-to-the-graph': '', diff --git a/website/src/pages/zh/subgraphs/guides/arweave.mdx b/website/src/pages/zh/subgraphs/guides/arweave.mdx deleted file mode 100644 index df35134c3233..000000000000 --- a/website/src/pages/zh/subgraphs/guides/arweave.mdx +++ /dev/null @@ -1,239 +0,0 @@ ---- -title: 在 Arweave 上构建子图 ---- - -> Graph Node和Subgraph Studio中的Arweave支持处于测试阶段:对构建Arweave子图有任何疑问,请通过[Discord](https://discord.gg/graphprotocol)联系我们! - -在本指南中,您将学习如何构建和部署子图以索引Arweave区块链。 - -## Arweave是什么? - -Arweave 协议允许开发者永久存储数据,这是 Arweave 和 IPFS 的主要区别,IPFS 没有这个特性,永久性和存储在 Arweave 上的文件不能被更改或删除。 - -Arweave 已经构建了许多库,用于将协议集成到许多不同的编程语言中。更多信息可以查看: - -- [Arwiki](https://arwiki.wiki/#/en/main) -- [Arweave Resources](https://www.arweave.org/build) - -## Arweave子图是什么? - -Graph 允许您构建称为“子图 ”的自定义开放 API。子图用于告诉索引人(服务器操作员) 在区块链上索引哪些数据,并保存在他们的服务器上,以便您能够在任何时候使用 [GraphQL](https://graphql.org/) 查询它。 - -[Graph节点](https://github.com/graphprotocol/graph-node) 现在能够在 Arweave 协议上索引数据。当前的集成只是索引 Arweave 作为一个区块链(区块和交易) ,它还没有索引存储的文件。 - -## 构建 Arweave 子图 - -为了能够构建和部署 Arweave 子图,您需要两个包: - -1. `@graphprotocol/graph-cli` 高于0.30.2版本-这是一个用于构建和部署子图的命令行工具。[点击这里](https://www.npmjs.com/package/@graphprotocol/graph-cli)下载使用 `npm`。 -2. `@ graph protocol/graph-ts` 0.27.0以上版本-这是子图特定类型的库。[点击这里](https://www.npmjs.com/package/@graphprotocol/graph-ts)下载使用 `npm`。 - -## 子图的组成部分 - -一个子图有三个组成部分: - -### 1. 数据源明细 - `subgraph.yaml` - -定义感兴趣的数据源,以及如何处理它们。Arweave是一种新型数据源。 - -### 2. 数据查询结构- `schema.graphql` - -在这里,您可以定义在使用 GraphQL 索引子图之后希望能够查询的数据。这实际上类似于 API 的模型,其中模型定义了请求主体的结构。 - -[现有文档](/developing/creating-a-subgraph/#the-graphql-schema)涵盖了对 Arweave 子图的需求。 - -### 3. AssemblyScript 映射 - `mapping.ts` - -这种逻辑决定了当有人与您正在监听的数据源进行交互时,应该如何检索和存储数据。数据将被翻译并根据您列出的模式进行存储。 - -在子图开发过程中,有两个关键命令: - -``` -$ graph codegen # generates types from the schema file identified in the manifest -$ graph build # generates Web Assembly from the AssemblyScript files, and prepares all the Subgraph files in a /build folder -``` - -## 子图清单定义 - -子图清单`subgraph.yaml` 标识子图的数据源、感兴趣的触发器以及应该响应这些触发器而运行的函数。下面是 Arweave 子图的子图清单示例: - -```yaml -specVersion: 1.3.0 -description: Arweave Blocks Indexing -schema: - file: ./schema.graphql # link to the schema file -dataSources: - - kind: arweave - name: arweave-blocks - network: arweave-mainnet # The Graph only supports Arweave Mainnet - source: - owner: 'ID-OF-AN-OWNER' # The public key of an Arweave wallet - startBlock: 0 # set this to 0 to start indexing from chain genesis - mapping: - apiVersion: 0.0.9 - language: wasm/assemblyscript - file: ./src/blocks.ts # link to the file with the Assemblyscript mappings - entities: - - Block - - Transaction - blockHandlers: - - handler: handleBlock # the function name in the mapping file - transactionHandlers: - - handler: handleTx # the function name in the mapping file -``` - -- Arweave子图引入了一种新的数据源(`arweave`)。 -- 网络应该对应于托管Graph节点上的网络。在Subgraph Studio上,Arweave 的主网是`Arweave-mainnet`。 -- Arweave 数据源引入了一个可选的 source. owner 字段,它是 Arweave 钱包的公钥 - -Arweave 数据源支持两种类型的处理程序: - -- `blockHandlers` 在每个新的 Arweave 区块上运行,不需要 source. owner。 -- `transactionHandlers` - 在数据源的`source.owner` 是所有者的每个交易上运行。目前, `transactionHandlers`需要一个所有者,如果用户想要处理所有交易,他们应该提供""作为 `source.owner` - -> Source.Owner 可以是所有者的地址,也可以是他们的公钥。 -> -> 交易是 Arweave permaweb 的构建区块,它们是终端用户创建的对象。 -> -> 注意: 目前还不支持[Irys(先前的Bundl)](https://irys.xyz/)交易。 - -## 模式定义 - -数据查询结构定义描述了生成的子图数据库的结构以及实体之间的关系,无需与原始数据源有关。[这里](/developing/creating-a-subgraph/#the-graphql-schema)有关于子图模式定义的更多细节。 - -## AssemblyScript 映射 - -处理事件的处理程序是用 [AssemblyScript](https://www.assemblyscript.org/) 编写的。 - -Arweave索引将Arweave特定的数据类型引入[AssemblyScript API](/subgraphs/developing/creating/graph-ts/api/)。 - -```tsx -class Block { - timestamp: u64 - lastRetarget: u64 - height: u64 - indepHash: Bytes - nonce: Bytes - previousBlock: Bytes - diff: Bytes - hash: Bytes - txRoot: Bytes - txs: Bytes[] - walletList: Bytes - rewardAddr: Bytes - tags: Tag[] - rewardPool: Bytes - weaveSize: Bytes - blockSize: Bytes - cumulativeDiff: Bytes - hashListMerkle: Bytes - poa: ProofOfAccess -} - -class Transaction { - format: u32 - id: Bytes - lastTx: Bytes - owner: Bytes - tags: Tag[] - target: Bytes - quantity: Bytes - data: Bytes - dataSize: Bytes - dataRoot: Bytes - signature: Bytes - reward: Bytes -} -``` - -区块处理程序接收`Block`,而交易接收`Transaction`.。 - -写 Arweave 子图的映射与写 Etherum 子图的映射非常相似。了解更多信息,请点击[这里](/developing/creating-a-subgraph/#writing-mappings)。 - -## 将Arweave子图部署到Subgraph Studio - -一旦您的子图已经在Subgraph Studio控制板上创建,您就可以通过使用`graph deploy` CLI 命令进行部署。 - -```bash -graph deploy --access-token -``` - -## 查询 Arweave 子图 - -Arweave 子图的 GraphQL 端点由模式定义和现有的 API 接口决定。有关更多信息,请访问 [GraphQLAPI 文档](/subgraphs/querying/graphql-api/)。 - -## 示例子图 - -下面是一个子图的例子,以供参考: - -- [Arweave 的子图示例](https://github.com/graphprotocol/graph-tooling/tree/main/examples/arweave-blocks-transactions) - -## 常见问题 - -### 子图可以索引 Arweave 和其他链吗? - -不,子图只能支持来自一个链或网络的数据源。 - -### 我可以索引存储在 Arweave 上的文件吗? - -目前,Graph 只是将 Arweave 索引为区块链(它的区块和交易)。 - -### 我可以识别我的子图中的 Bundlr 包吗? - -目前还不支持。 - -### 如何筛选特定账户的交易? - -Source.owner可以是用户的公钥或账户地址。 - -### 当前的加密格式是什么? - -数据通常以字节的形式传递到映射中,如果直接存储字节,则以`十六进制`格式(例如,区块和和交易hashes)返回。您可能希望在映射中转换为 `base64`或 `base64 URL` 安全格式,以便与 [Arweave Explorer](https://viewblock.io/arweave/) 等区块浏览器中显示的内容相匹配。 - -可以使用以下 `bytesToBase64(字节: Uint8Array,urlSafe: boolean): string` 辅助函数,并将其添加到 `graph-ts`: - -``` -const base64Alphabet = [ - "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", - "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", - "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", - "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", - "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "+", "/" -]; - -const base64UrlAlphabet = [ - "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", - "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", - "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", - "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", - "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-", "_" -]; - -function bytesToBase64(bytes: Uint8Array, urlSafe: boolean): string { - let alphabet = urlSafe? base64UrlAlphabet : base64Alphabet; - - let result = '', i: i32, l = bytes.length; - for (i = 2; i < l; i += 3) { - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)]; - result += alphabet[((bytes[i - 1] & 0x0F) << 2) | (bytes[i] >> 6)]; - result += alphabet[bytes[i] & 0x3F]; - } - if (i === l + 1) { // 1 octet yet to write - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[(bytes[i - 2] & 0x03) << 4]; - if (!urlSafe) { - result += "=="; - } - } - if (!urlSafe && i === l) { // 2 octets yet to write - result += alphabet[bytes[i - 2] >> 2]; - result += alphabet[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)]; - result += alphabet[(bytes[i - 1] & 0x0F) << 2]; - if (!urlSafe) { - result += "="; - } - } - return result; -} -``` From 4b7bfe227751a9a446aa49e46ea18162b12e6e3d Mon Sep 17 00:00:00 2001 From: Hau <37109389+jhjhjh94@users.noreply.github.com> Date: Wed, 10 Dec 2025 23:15:34 +0800 Subject: [PATCH 07/14] Doc update : Removed beta keyword, banner image text (#1057) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update DEX listings and sort by swap volume * Docs: removed beta keywords and wording updates * Docs: removed banner text from image The Graph Token API Quick Start banner * Update website/src/pages/en/token-api/faq.mdx Co-authored-by: Benoît Rouleau --------- Co-authored-by: Benoît Rouleau --- website/src/openApi/tokenApi.json | 2 +- website/src/pages/ar/token-api/quick-start.mdx | 4 +--- website/src/pages/cs/token-api/quick-start.mdx | 4 +--- website/src/pages/de/token-api/quick-start.mdx | 4 +--- website/src/pages/en/about.mdx | 2 +- website/src/pages/en/token-api/faq.mdx | 4 +++- website/src/pages/en/token-api/quick-start.mdx | 4 +--- website/src/pages/es/token-api/quick-start.mdx | 4 +--- website/src/pages/fr/token-api/quick-start.mdx | 4 +--- website/src/pages/hi/token-api/quick-start.mdx | 4 +--- website/src/pages/it/token-api/quick-start.mdx | 4 +--- website/src/pages/ja/token-api/quick-start.mdx | 4 +--- website/src/pages/ko/token-api/quick-start.mdx | 4 +--- website/src/pages/mr/token-api/quick-start.mdx | 4 +--- website/src/pages/nl/token-api/quick-start.mdx | 4 +--- website/src/pages/pl/token-api/quick-start.mdx | 4 +--- website/src/pages/pt/token-api/quick-start.mdx | 4 +--- website/src/pages/ro/token-api/quick-start.mdx | 4 +--- website/src/pages/ru/token-api/quick-start.mdx | 4 +--- website/src/pages/sv/token-api/quick-start.mdx | 4 +--- website/src/pages/tr/token-api/quick-start.mdx | 4 +--- website/src/pages/uk/token-api/quick-start.mdx | 4 +--- website/src/pages/ur/token-api/quick-start.mdx | 4 +--- website/src/pages/vi/token-api/quick-start.mdx | 4 +--- 24 files changed, 26 insertions(+), 66 deletions(-) diff --git a/website/src/openApi/tokenApi.json b/website/src/openApi/tokenApi.json index e2a890b9c3e6..e5a19c0a692b 100644 --- a/website/src/openApi/tokenApi.json +++ b/website/src/openApi/tokenApi.json @@ -1,7 +1,7 @@ { "openapi": "3.1.0", "info": { - "title": "Token API (Beta)", + "title": "Token API", "description": "Power your apps & AI agents with real-time token data.", "version": "3.6.0+da03655 (2025-11-20)" }, diff --git a/website/src/pages/ar/token-api/quick-start.mdx b/website/src/pages/ar/token-api/quick-start.mdx index 67c98fd5d644..5fb57dd9b4cf 100644 --- a/website/src/pages/ar/token-api/quick-start.mdx +++ b/website/src/pages/ar/token-api/quick-start.mdx @@ -3,9 +3,7 @@ title: Token API Quick Start sidebarTitle: بداية سريعة --- -![The Graph Token API Quick Start banner](/img/token-api-quickstart-banner.jpg) - -> [!CAUTION] This product is currently in Beta and under active development. If you have any feedback, please reach out to us on [Discord](https://discord.gg/graphprotocol). +![](/img/token-api-quickstart-banner.jpg) The Graph's Token API lets you access blockchain token information via a GET request. This guide is designed to help you quickly integrate the Token API into your application. diff --git a/website/src/pages/cs/token-api/quick-start.mdx b/website/src/pages/cs/token-api/quick-start.mdx index dbf444d1d68a..f026c7945a3c 100644 --- a/website/src/pages/cs/token-api/quick-start.mdx +++ b/website/src/pages/cs/token-api/quick-start.mdx @@ -3,9 +3,7 @@ title: Token API Quick Start sidebarTitle: Rychlé spuštění --- -![The Graph Token API Quick Start banner](/img/token-api-quickstart-banner.jpg) - -> [!CAUTION] This product is currently in Beta and under active development. If you have any feedback, please reach out to us on [Discord](https://discord.gg/graphprotocol). +![](/img/token-api-quickstart-banner.jpg) The Graph's Token API lets you access blockchain token information via a GET request. This guide is designed to help you quickly integrate the Token API into your application. diff --git a/website/src/pages/de/token-api/quick-start.mdx b/website/src/pages/de/token-api/quick-start.mdx index fb439a48ff80..431e2c96eae9 100644 --- a/website/src/pages/de/token-api/quick-start.mdx +++ b/website/src/pages/de/token-api/quick-start.mdx @@ -3,9 +3,7 @@ title: Token API Quick Start sidebarTitle: Schnellstart --- -![The Graph Token API Quick Start banner](/img/token-api-quickstart-banner.jpg) - -> [!CAUTION] This product is currently in Beta and under active development. If you have any feedback, please reach out to us on [Discord](https://discord.gg/graphprotocol). +![](/img/token-api-quickstart-banner.jpg) The Graph's Token API lets you access blockchain token information via a GET request. This guide is designed to help you quickly integrate the Token API into your application. diff --git a/website/src/pages/en/about.mdx b/website/src/pages/en/about.mdx index 7fda868aab9d..990d80701228 100644 --- a/website/src/pages/en/about.mdx +++ b/website/src/pages/en/about.mdx @@ -11,7 +11,7 @@ Its data services include: - [Subgraphs](/subgraphs/developing/subgraphs/): Open APIs to query blockchain data that can be created or queried by anyone. - [Substreams](/substreams/introduction/): High-performance data streams for real-time blockchain processing, built with modular components. -- [Token API Beta](/token-api/quick-start/): Instant access to standardized token data requiring zero setup. +- [Token API](/token-api/quick-start/): Instant access to standardized token data requiring zero setup. ### Why Blockchain Data is Difficult to Query diff --git a/website/src/pages/en/token-api/faq.mdx b/website/src/pages/en/token-api/faq.mdx index 6b4676a425e7..c00b1d75ee5b 100644 --- a/website/src/pages/en/token-api/faq.mdx +++ b/website/src/pages/en/token-api/faq.mdx @@ -372,7 +372,9 @@ Networks that are currently or temporarily unavailable on a given endpoint will ### Are there rate limits or usage costs? -During Beta, the Token API has a generous allowance of free usage. There are no specific rate limits, but reasonable throttling exists to prevent abuse. High request volumes may trigger HTTP 429 errors. Monitor official announcements for future pricing changes after Beta. +Yes. The Token API is provided under a tiered pricing model with defined usage limits based on the selected subscription plan. Each plan specifies allowable request volumes, batch sizes, historical data access, and rate limits. Requests that exceed the provisioned thresholds may be subject to throttling or may return HTTP 429: Too Many Requests. Additional usage beyond the included quota will be billed according to the applicable pay-as-you-go structure, unless otherwise restricted by the selected plan. + +For details on available plans, limits, and billing terms, please refer to the [Token API pricing](/token-api/endpoint-pricing/) section. ### What do I do if I notice data inconsistencies in the data returned by the Token API? diff --git a/website/src/pages/en/token-api/quick-start.mdx b/website/src/pages/en/token-api/quick-start.mdx index 786c6b69a02f..70631be0d91b 100644 --- a/website/src/pages/en/token-api/quick-start.mdx +++ b/website/src/pages/en/token-api/quick-start.mdx @@ -5,9 +5,7 @@ sidebarTitle: Quick Start import { Check } from '@edgeandnode/gds/icons' -![The Graph Token API Quick Start banner](/img/token-api-quickstart-banner.jpg) - -> [!CAUTION] This product is currently in Beta and under active development. If you have any feedback, please reach out to us on [Discord](https://discord.gg/graphprotocol). +![](/img/token-api-quickstart-banner.jpg) The Graph's Token API lets you access blockchain token information via a GET request. This guide is designed to help you quickly integrate the Token API into your application. diff --git a/website/src/pages/es/token-api/quick-start.mdx b/website/src/pages/es/token-api/quick-start.mdx index 41d5bace3c07..2fd195b936bb 100644 --- a/website/src/pages/es/token-api/quick-start.mdx +++ b/website/src/pages/es/token-api/quick-start.mdx @@ -3,9 +3,7 @@ title: Token API Quick Start sidebarTitle: Comienzo Rapido --- -![The Graph Token API Quick Start banner](/img/token-api-quickstart-banner.jpg) - -> [!CAUTION] This product is currently in Beta and under active development. If you have any feedback, please reach out to us on [Discord](https://discord.gg/graphprotocol). +![](/img/token-api-quickstart-banner.jpg) The Graph's Token API lets you access blockchain token information via a GET request. This guide is designed to help you quickly integrate the Token API into your application. diff --git a/website/src/pages/fr/token-api/quick-start.mdx b/website/src/pages/fr/token-api/quick-start.mdx index 76ed894405c6..9eed274150e6 100644 --- a/website/src/pages/fr/token-api/quick-start.mdx +++ b/website/src/pages/fr/token-api/quick-start.mdx @@ -3,9 +3,7 @@ title: Token API Quick Start sidebarTitle: Démarrage rapide --- -![The Graph Token API Quick Start banner](/img/token-api-quickstart-banner.jpg) - -> [!CAUTION] This product is currently in Beta and under active development. If you have any feedback, please reach out to us on [Discord](https://discord.gg/graphprotocol). +![](/img/token-api-quickstart-banner.jpg) The Graph's Token API lets you access blockchain token information via a GET request. This guide is designed to help you quickly integrate the Token API into your application. diff --git a/website/src/pages/hi/token-api/quick-start.mdx b/website/src/pages/hi/token-api/quick-start.mdx index 7afe85e38342..67d9829b5cca 100644 --- a/website/src/pages/hi/token-api/quick-start.mdx +++ b/website/src/pages/hi/token-api/quick-start.mdx @@ -3,9 +3,7 @@ title: Token API Quick Start sidebarTitle: Quick Start --- -![The Graph Token API Quick Start banner](/img/token-api-quickstart-banner.jpg) - -> [!CAUTION] This product is currently in Beta and under active development. If you have any feedback, please reach out to us on [Discord](https://discord.gg/graphprotocol). +![](/img/token-api-quickstart-banner.jpg) The Graph's Token API lets you access blockchain token information via a GET request. This guide is designed to help you quickly integrate the Token API into your application. diff --git a/website/src/pages/it/token-api/quick-start.mdx b/website/src/pages/it/token-api/quick-start.mdx index d59d0fadfbbd..830bb022adba 100644 --- a/website/src/pages/it/token-api/quick-start.mdx +++ b/website/src/pages/it/token-api/quick-start.mdx @@ -3,9 +3,7 @@ title: Token API Quick Start sidebarTitle: Quick Start --- -![The Graph Token API Quick Start banner](/img/token-api-quickstart-banner.jpg) - -> [!CAUTION] This product is currently in Beta and under active development. If you have any feedback, please reach out to us on [Discord](https://discord.gg/graphprotocol). +![](/img/token-api-quickstart-banner.jpg) The Graph's Token API lets you access blockchain token information via a GET request. This guide is designed to help you quickly integrate the Token API into your application. diff --git a/website/src/pages/ja/token-api/quick-start.mdx b/website/src/pages/ja/token-api/quick-start.mdx index b6f05fffbe40..9ecd4e7e4458 100644 --- a/website/src/pages/ja/token-api/quick-start.mdx +++ b/website/src/pages/ja/token-api/quick-start.mdx @@ -3,9 +3,7 @@ title: Token API Quick Start sidebarTitle: クイックスタート --- -![The Graph Token API Quick Start banner](/img/token-api-quickstart-banner.jpg) - -> [!CAUTION] This product is currently in Beta and under active development. If you have any feedback, please reach out to us on [Discord](https://discord.gg/graphprotocol). +![](/img/token-api-quickstart-banner.jpg) The Graph's Token API lets you access blockchain token information via a GET request. This guide is designed to help you quickly integrate the Token API into your application. diff --git a/website/src/pages/ko/token-api/quick-start.mdx b/website/src/pages/ko/token-api/quick-start.mdx index d59d0fadfbbd..830bb022adba 100644 --- a/website/src/pages/ko/token-api/quick-start.mdx +++ b/website/src/pages/ko/token-api/quick-start.mdx @@ -3,9 +3,7 @@ title: Token API Quick Start sidebarTitle: Quick Start --- -![The Graph Token API Quick Start banner](/img/token-api-quickstart-banner.jpg) - -> [!CAUTION] This product is currently in Beta and under active development. If you have any feedback, please reach out to us on [Discord](https://discord.gg/graphprotocol). +![](/img/token-api-quickstart-banner.jpg) The Graph's Token API lets you access blockchain token information via a GET request. This guide is designed to help you quickly integrate the Token API into your application. diff --git a/website/src/pages/mr/token-api/quick-start.mdx b/website/src/pages/mr/token-api/quick-start.mdx index 6e10a65b99c4..9850fbc2263f 100644 --- a/website/src/pages/mr/token-api/quick-start.mdx +++ b/website/src/pages/mr/token-api/quick-start.mdx @@ -3,9 +3,7 @@ title: Token API Quick Start sidebarTitle: क्विक स्टार्ट --- -![The Graph Token API Quick Start banner](/img/token-api-quickstart-banner.jpg) - -> [!CAUTION] This product is currently in Beta and under active development. If you have any feedback, please reach out to us on [Discord](https://discord.gg/graphprotocol). +![](/img/token-api-quickstart-banner.jpg) The Graph's Token API lets you access blockchain token information via a GET request. This guide is designed to help you quickly integrate the Token API into your application. diff --git a/website/src/pages/nl/token-api/quick-start.mdx b/website/src/pages/nl/token-api/quick-start.mdx index ae048307463e..092432070bf7 100644 --- a/website/src/pages/nl/token-api/quick-start.mdx +++ b/website/src/pages/nl/token-api/quick-start.mdx @@ -3,9 +3,7 @@ title: Token API Quick Start sidebarTitle: Snelle Start --- -![The Graph Token API Quick Start banner](/img/token-api-quickstart-banner.jpg) - -> [!CAUTION] This product is currently in Beta and under active development. If you have any feedback, please reach out to us on [Discord](https://discord.gg/graphprotocol). +![](/img/token-api-quickstart-banner.jpg) The Graph's Token API lets you access blockchain token information via a GET request. This guide is designed to help you quickly integrate the Token API into your application. diff --git a/website/src/pages/pl/token-api/quick-start.mdx b/website/src/pages/pl/token-api/quick-start.mdx index ba7606150964..99b6b08f2713 100644 --- a/website/src/pages/pl/token-api/quick-start.mdx +++ b/website/src/pages/pl/token-api/quick-start.mdx @@ -3,9 +3,7 @@ title: Token API Quick Start sidebarTitle: ' Na start' --- -![The Graph Token API Quick Start banner](/img/token-api-quickstart-banner.jpg) - -> [!CAUTION] This product is currently in Beta and under active development. If you have any feedback, please reach out to us on [Discord](https://discord.gg/graphprotocol). +![](/img/token-api-quickstart-banner.jpg) The Graph's Token API lets you access blockchain token information via a GET request. This guide is designed to help you quickly integrate the Token API into your application. diff --git a/website/src/pages/pt/token-api/quick-start.mdx b/website/src/pages/pt/token-api/quick-start.mdx index 963ec773a8f7..b8632c90f35d 100644 --- a/website/src/pages/pt/token-api/quick-start.mdx +++ b/website/src/pages/pt/token-api/quick-start.mdx @@ -3,9 +3,7 @@ title: Token API Quick Start sidebarTitle: Começo Rápido --- -![The Graph Token API Quick Start banner](/img/token-api-quickstart-banner.jpg) - -> [!CAUTION] This product is currently in Beta and under active development. If you have any feedback, please reach out to us on [Discord](https://discord.gg/graphprotocol). +![](/img/token-api-quickstart-banner.jpg) The Graph's Token API lets you access blockchain token information via a GET request. This guide is designed to help you quickly integrate the Token API into your application. diff --git a/website/src/pages/ro/token-api/quick-start.mdx b/website/src/pages/ro/token-api/quick-start.mdx index d59d0fadfbbd..830bb022adba 100644 --- a/website/src/pages/ro/token-api/quick-start.mdx +++ b/website/src/pages/ro/token-api/quick-start.mdx @@ -3,9 +3,7 @@ title: Token API Quick Start sidebarTitle: Quick Start --- -![The Graph Token API Quick Start banner](/img/token-api-quickstart-banner.jpg) - -> [!CAUTION] This product is currently in Beta and under active development. If you have any feedback, please reach out to us on [Discord](https://discord.gg/graphprotocol). +![](/img/token-api-quickstart-banner.jpg) The Graph's Token API lets you access blockchain token information via a GET request. This guide is designed to help you quickly integrate the Token API into your application. diff --git a/website/src/pages/ru/token-api/quick-start.mdx b/website/src/pages/ru/token-api/quick-start.mdx index d86c20050e3a..49d1d91acf0f 100644 --- a/website/src/pages/ru/token-api/quick-start.mdx +++ b/website/src/pages/ru/token-api/quick-start.mdx @@ -3,9 +3,7 @@ title: Token API Quick Start sidebarTitle: Быстрый старт --- -![The Graph Token API Quick Start banner](/img/token-api-quickstart-banner.jpg) - -> [!CAUTION] This product is currently in Beta and under active development. If you have any feedback, please reach out to us on [Discord](https://discord.gg/graphprotocol). +![](/img/token-api-quickstart-banner.jpg) The Graph's Token API lets you access blockchain token information via a GET request. This guide is designed to help you quickly integrate the Token API into your application. diff --git a/website/src/pages/sv/token-api/quick-start.mdx b/website/src/pages/sv/token-api/quick-start.mdx index df21ab39cec8..58f77116e562 100644 --- a/website/src/pages/sv/token-api/quick-start.mdx +++ b/website/src/pages/sv/token-api/quick-start.mdx @@ -3,9 +3,7 @@ title: Token API Quick Start sidebarTitle: Snabbstart --- -![The Graph Token API Quick Start banner](/img/token-api-quickstart-banner.jpg) - -> [!CAUTION] This product is currently in Beta and under active development. If you have any feedback, please reach out to us on [Discord](https://discord.gg/graphprotocol). +![](/img/token-api-quickstart-banner.jpg) The Graph's Token API lets you access blockchain token information via a GET request. This guide is designed to help you quickly integrate the Token API into your application. diff --git a/website/src/pages/tr/token-api/quick-start.mdx b/website/src/pages/tr/token-api/quick-start.mdx index abe3c6ad76b7..9bb7cc16ee2c 100644 --- a/website/src/pages/tr/token-api/quick-start.mdx +++ b/website/src/pages/tr/token-api/quick-start.mdx @@ -3,9 +3,7 @@ title: Token API Quick Start sidebarTitle: Hızlı Başlangıç --- -![The Graph Token API Quick Start banner](/img/token-api-quickstart-banner.jpg) - -> [!CAUTION] This product is currently in Beta and under active development. If you have any feedback, please reach out to us on [Discord](https://discord.gg/graphprotocol). +![](/img/token-api-quickstart-banner.jpg) The Graph's Token API lets you access blockchain token information via a GET request. This guide is designed to help you quickly integrate the Token API into your application. diff --git a/website/src/pages/uk/token-api/quick-start.mdx b/website/src/pages/uk/token-api/quick-start.mdx index a6694b9a5bc0..83b438b0ffbb 100644 --- a/website/src/pages/uk/token-api/quick-start.mdx +++ b/website/src/pages/uk/token-api/quick-start.mdx @@ -3,9 +3,7 @@ title: Token API Quick Start sidebarTitle: Швидкий старт --- -![The Graph Token API Quick Start banner](/img/token-api-quickstart-banner.jpg) - -> [!CAUTION] This product is currently in Beta and under active development. If you have any feedback, please reach out to us on [Discord](https://discord.gg/graphprotocol). +![](/img/token-api-quickstart-banner.jpg) The Graph's Token API lets you access blockchain token information via a GET request. This guide is designed to help you quickly integrate the Token API into your application. diff --git a/website/src/pages/ur/token-api/quick-start.mdx b/website/src/pages/ur/token-api/quick-start.mdx index 5444e9024188..8d3a14ee7557 100644 --- a/website/src/pages/ur/token-api/quick-start.mdx +++ b/website/src/pages/ur/token-api/quick-start.mdx @@ -3,9 +3,7 @@ title: Token API Quick Start sidebarTitle: فورا شروع کریں --- -![The Graph Token API Quick Start banner](/img/token-api-quickstart-banner.jpg) - -> [!CAUTION] This product is currently in Beta and under active development. If you have any feedback, please reach out to us on [Discord](https://discord.gg/graphprotocol). +![](/img/token-api-quickstart-banner.jpg) The Graph's Token API lets you access blockchain token information via a GET request. This guide is designed to help you quickly integrate the Token API into your application. diff --git a/website/src/pages/vi/token-api/quick-start.mdx b/website/src/pages/vi/token-api/quick-start.mdx index 608c62f29601..c0a4ed4c1260 100644 --- a/website/src/pages/vi/token-api/quick-start.mdx +++ b/website/src/pages/vi/token-api/quick-start.mdx @@ -3,9 +3,7 @@ title: Token API Quick Start sidebarTitle: Bắt đầu nhanh --- -![The Graph Token API Quick Start banner](/img/token-api-quickstart-banner.jpg) - -> [!CAUTION] This product is currently in Beta and under active development. If you have any feedback, please reach out to us on [Discord](https://discord.gg/graphprotocol). +![](/img/token-api-quickstart-banner.jpg) The Graph's Token API lets you access blockchain token information via a GET request. This guide is designed to help you quickly integrate the Token API into your application. From bffec72d17b5222b61b0473a0f01647e6e3c8dff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Rouleau?= Date: Wed, 10 Dec 2025 14:25:28 -0500 Subject: [PATCH 08/14] Revert "Update DEX listings and sort by swap volume, fixed chain names on Protocol Contracts page" (#1058) Revert "Update DEX listings and sort by swap volume, fixed chain names on Protocol Contracts page (#1055)" This reverts commit 5d33d3575104facc8ee19ccf2cfe9692ab36ae5a. --- website/src/pages/en/contracts.mdx | 4 ++-- website/src/pages/en/token-api/faq.mdx | 16 ++-------------- 2 files changed, 4 insertions(+), 16 deletions(-) diff --git a/website/src/pages/en/contracts.mdx b/website/src/pages/en/contracts.mdx index 3a3450cfbedf..3938844149c1 100644 --- a/website/src/pages/en/contracts.mdx +++ b/website/src/pages/en/contracts.mdx @@ -6,13 +6,13 @@ import { ProtocolContractsTable } from '@/contracts' Below are the deployed contracts which power The Graph Network. Visit the official [contracts repository](https://github.com/graphprotocol/contracts) to learn more. -## Arbitrum One +## Arbitrum This is the principal deployment of The Graph Network. -## Ethereum Mainnet +## Mainnet This was the original deployment of The Graph Network. [Learn more](/archived/arbitrum/arbitrum-faq/) about The Graph's scaling with Arbitrum. diff --git a/website/src/pages/en/token-api/faq.mdx b/website/src/pages/en/token-api/faq.mdx index c00b1d75ee5b..72aec6f7665b 100644 --- a/website/src/pages/en/token-api/faq.mdx +++ b/website/src/pages/en/token-api/faq.mdx @@ -131,12 +131,8 @@ Swaps are being reported via Aggregator programs and do not include amm_pool fie - Uniswap V2 - Uniswap V3 -- Uniswap V1 - Uniswap V4 - SushiSwap V2 -- Balancer -- Curve -- Bancor - Ring Swap - Shiba Inu - Crypto.com: DeFi Swap @@ -163,8 +159,6 @@ Swaps are being reported via Aggregator programs and do not include amm_pool fie - Uniswap V3 - Uniswap V4 - SushiSwap V3 -- Balancer -- Curve - Ramses - SushiSwap V2 - Uniswap V2 @@ -187,8 +181,6 @@ Swaps are being reported via Aggregator programs and do not include amm_pool fie - Uniswap V4 - SushiSwap V2 - Uniswap V2 -- Balancer -- Curve - Stabl.fi - SushiSwap V3 - SweepnFlip @@ -230,7 +222,6 @@ Swaps are being reported via Aggregator programs and do not include amm_pool fie - Uniswap V4 - Velodrome V3 - Velodrome V2 -- Balancer - Curve - Beethoven X @@ -245,7 +236,6 @@ Swaps are being reported via Aggregator programs and do not include amm_pool fie - Uniswap V4 - Lydia Finance - SushiSwap V2 -- Curve - OliveSwap #### Base Mainnet @@ -254,8 +244,6 @@ Swaps are being reported via Aggregator programs and do not include amm_pool fie - Uniswap V2 - Uniswap V4 - SushiSwap V2 -- Balancer -- Curve - BaseSwap - Alien Base V3 - BaseSwap V2 @@ -264,9 +252,9 @@ Swaps are being reported via Aggregator programs and do not include amm_pool fie #### Tron Mainnet -- SunPump -- SunSwap V2 - SunSwap V1 (JustSwap) +- SunSwap V2 +- SunPump - USwap - SunSwap 1.5 (JustSwap) - ISwap V1 From 3cffd9a7326c160bca4590590ba104b81db7bda9 Mon Sep 17 00:00:00 2001 From: nsjames Date: Fri, 12 Dec 2025 09:22:48 -0500 Subject: [PATCH 09/14] add sdk for typescript --- website/src/pages/en/token-api/quick-start.mdx | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/website/src/pages/en/token-api/quick-start.mdx b/website/src/pages/en/token-api/quick-start.mdx index ef96bed5aa3e..4e728b38ca7c 100644 --- a/website/src/pages/en/token-api/quick-start.mdx +++ b/website/src/pages/en/token-api/quick-start.mdx @@ -25,16 +25,16 @@ All API endpoints are authenticated using a header: ```typescript - const result = await fetch(`https://token-api.thegraph.com/v1/evm/balances?network=mainnet&address=0x2a0c0dbecc7e4d658f48e01e3fa353f44050c208`, { - method: 'GET', - headers: { - Accept: 'application/json', - Authorization: 'Bearer YOUR_TOKEN', - }, + import {EVMChains, TokenAPI} from "@pinax/token-api"; + + const client = new TokenAPI({ + apiToken: process.env.TOKEN_API_KEY || "" + }); + + const result = await client.evm.tokens.getBalances({ + network: EVMChains.Ethereum, + address: ['0x2a0c0dbecc7e4d658f48e01e3fa353f44050c208'] }) - .then((response) => response.json()) - .then((data) => console.log(data)) - .catch((err) => console.error(err)) ``` From 2cfc5efb24b9e5d9b1785381f9b48837684ac45b Mon Sep 17 00:00:00 2001 From: nsjames Date: Fri, 12 Dec 2025 09:27:14 -0500 Subject: [PATCH 10/14] clarify api key locations --- website/src/pages/en/token-api/quick-start.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/src/pages/en/token-api/quick-start.mdx b/website/src/pages/en/token-api/quick-start.mdx index 4e728b38ca7c..ab48c5e1cb50 100644 --- a/website/src/pages/en/token-api/quick-start.mdx +++ b/website/src/pages/en/token-api/quick-start.mdx @@ -12,7 +12,7 @@ from the [Dashboard](https://thegraph.market/dashboard). ## Use authenticated routes -All API endpoints are authenticated using a header: +Raw API endpoints are authenticated using a header, and the TypeScript Node.js SDK accepts the token as a configuration option. From 0b44d8097972a2309e3fd2582ae32fb58862aa4a Mon Sep 17 00:00:00 2001 From: Joseph Livesey Date: Fri, 12 Dec 2025 15:50:17 -0500 Subject: [PATCH 11/14] docs(tap): Update GraphTally guide for Graph Horizon (#1059) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * docs(tap): remove outdated reference to Scalar * docs(tap): update GraphTally guide for post-Horizon - Remove legacy V1 content (contracts, separate escrow subgraph) - Add Graph Horizon context and link to overview - Simplify to Horizon-first configuration with horizon.enabled = true - Add GraphOps gateway aggregator endpoint - Document operator_mnemonics for key rotation - Streamline architecture overview and getting started - Remove migration framing in favor of current setup guide * docs(tap): add Horizon contract addresses - Add TAP Verifier, Subgraph Service, and Escrow contract addresses - Update config example to use Horizon V2 addresses - Include both mainnet and testnet addresses * docs(tap): fix Horizon config with V1/V2 TAP verifier addresses Add missing receipts_verifier_address_v2 required when horizon.enabled = true. Without this, indexer-service-rs fails at startup. Also clarifies V1 vs V2 verifier distinction in contracts table and adds note about escrow subgraph. * docs(tap): add Horizon (TAP V2) migration guide Document the critical requirement that both indexer-service-rs and indexer-tap-agent must have Horizon enabled for V2 receipts to work. Includes configuration checklist, log verification examples, and troubleshooting for common misconfigurations. * Apply suggestion from @benface --------- Co-authored-by: Benoît Rouleau --- website/src/pages/en/indexing/tap.mdx | 292 +++++++++++++++++--------- 1 file changed, 193 insertions(+), 99 deletions(-) diff --git a/website/src/pages/en/indexing/tap.mdx b/website/src/pages/en/indexing/tap.mdx index 176ef02b8a48..79113906e023 100644 --- a/website/src/pages/en/indexing/tap.mdx +++ b/website/src/pages/en/indexing/tap.mdx @@ -2,182 +2,169 @@ title: GraphTally Guide --- -Learn about The Graph's new payment system, **GraphTally** [(previously Timeline Aggregation Protocol)](https://docs.rs/tap_core/latest/tap_core/index.html). This system provides fast, efficient microtransactions with minimized trust. +Learn about The Graph's payment system, **GraphTally** [(previously Timeline Aggregation Protocol)](https://docs.rs/tap_core/latest/tap_core/index.html). GraphTally provides fast, efficient microtransactions with minimized trust. ## Overview -GraphTally is a drop-in replacement to the Scalar payment system currently in place. It provides the following key features: +GraphTally is the payment system for The Graph, integrated into the core protocol through [Graph Horizon](/graph-horizon/overview). It enables efficient pay-per-query payments between gateways and indexers. -- Efficiently handles micropayments. -- Adds a layer of consolidations to onchain transactions and costs. -- Allows Indexers control of receipts and payments, guaranteeing payment for queries. -- Enables decentralized, trustless gateways and improves indexer service performance for multiple senders. +Key benefits: -### How It Works +- **Efficient micropayments**: Pay-per-query without high transaction costs +- **Reduced onchain costs**: Receipts aggregate into single blockchain transactions +- **Payment guarantees**: Indexers control receipt aggregation, ensuring payment for served queries +- **Trustless operation**: Decentralized gateways with cryptographic verification -GraphTally allows a sender to make multiple payments to a receiver through **Receipts**, which are then aggregated into a single payment called a **Receipt Aggregate Voucher (RAV)**. This aggregated payment can be verified on the blockchain, reducing the number of transactions and simplifying the payment process. +## How It Works -For each query, the gateway sends a signed receipt that is stored in your database. The `indexer-tap-agent` aggregates these receipts into RAVs through periodic requests. You can update a RAV by sending it with newer receipts, which generates a new RAV with an increased value. +GraphTally enables a sender (gateway) to make multiple payments to a receiver (indexer) through **Receipts**, which aggregate into a **Receipt Aggregate Voucher (RAV)**. RAVs can be verified and redeemed on the blockchain. + +**Payment flow:** + +1. Gateway sends a signed receipt with each query +2. `indexer-service-rs` validates and stores receipts in your database +3. `indexer-tap-agent` periodically aggregates receipts into RAVs +4. RAVs accumulate value as new receipts arrive +5. After allocation closure, the final RAV is redeemed onchain ### RAV Details -- RAVs represent money waiting to be sent to the blockchain. -- The system continuously aggregates receipts to ensure that the total value of non-aggregated receipts does not exceed the configured `max_amount_willing_to_lose_grt`. -- Each RAV can be redeemed once in the contracts, which is why they are sent after the allocation is closed. +- RAVs represent pending payments waiting for blockchain redemption +- The system aggregates receipts continuously, keeping unaggregated value below `max_amount_willing_to_lose_grt` +- Each RAV redeems once onchain, so final RAVs are created after allocation closure ### Redeeming RAVs -The redemption process is fully automated when running both `indexer-tap-agent` and `indexer-agent`: +RAV redemption is fully automated when running `indexer-tap-agent` and `indexer-agent`: -1. An Indexer closes an allocation. -2. After the `recently-closed-allocation-buffer` period, `indexer-tap-agent` takes all pending receipts for that allocation and requests aggregation into a final RAV, marking it as `last`. -3. `indexer-agent` takes all the last RAVs and sends redeem requests to the blockchain, updating the `redeem_at` value. +1. Indexer closes an allocation +2. After the `recently-closed-allocation-buffer` period, `indexer-tap-agent` aggregates remaining receipts into a final RAV marked as `last` +3. `indexer-agent` submits redeem transactions to the blockchain 4. During the `finality-time` period, `indexer-agent` monitors for blockchain reorganizations: - - If the transaction was reverted, the RAV is resent to the blockchain. - - If not reverted, it gets marked as `final`. + - Reverted transactions are resubmitted + - Confirmed transactions are marked `final` ## Blockchain Addresses ### Contracts -| Contract | Arbitrum Mainnet (42161) | Arbitrum Sepolia (421614) | -| ------------------- | -------------------------------------------- | -------------------------------------------- | -| TAP Verifier | `0x33f9E93266ce0E108fc85DdE2f71dab555A0F05a` | `0xfC24cE7a4428A6B89B52645243662A02BA734ECF` | -| AllocationIDTracker | `0x5B2F33d7Ca6Ec88f5586f2528f58c20843D9FE7c` | `0xAaC28a10d707bbc6e02029f1bfDAEB5084b2aD11` | -| Escrow | `0x8f477709eF277d4A880801D01A140a9CF88bA0d3` | `0x1e4dC4f9F95E102635D8F7ED71c5CdbFa20e2d02` | +| Contract | Arbitrum Mainnet (42161) | Arbitrum Sepolia (421614) | +| ----------------- | -------------------------------------------- | -------------------------------------------- | +| TAP Verifier (V1) | `0x33f9E93266ce0E108fc85DdE2f71dab555A0F05a` | `0xfC24cE7a4428A6B89B52645243662A02BA734ECF` | +| TAP Verifier (V2) | `0x8f69F5C07477Ac46FBc491B1E6D91E2be0111A9e` | `0x382863e7B662027117449bd2c49285582bbBd21B` | +| Subgraph Service | `0xb2Bb92d0DE618878E438b55D5846cfecD9301105` | `0xc24A3dAC5d06d771f657A48B20cE1a671B78f26b` | +| TAP Escrow | `0x8f477709eF277d4A880801D01A140a9CF88bA0d3` | `0x1e4dC4f9F95E102635D8F7ED71c5CdbFa20e2d02` | ### Gateway -| Component | Edge and Node Mainnet (Arbitrum Mainnet) | Edge and Node Testnet (Arbitrum Sepolia) | +| Component | Arbitrum Mainnet | Arbitrum Sepolia (Testnet) | | ---------- | --------------------------------------------- | --------------------------------------------- | | Sender | `0xDDE4cfFd3D9052A9cb618fC05a1Cd02be1f2F467` | `0xC3dDf37906724732FfD748057FEBe23379b0710D` | | Signers | `0xfF4B7A5EfD00Ff2EC3518D4F250A27e4c29A2211` | `0xFb142dE83E261e43a81e9ACEADd1c66A0DB121FE` | | Aggregator | `https://tap-aggregator.network.thegraph.com` | `https://tap-aggregator.testnet.thegraph.com` | -## Prerequisites - -In addition to typical indexer requirements, you'll need a `tap-escrow-subgraph` endpoint to query escrow information. You can use The Graph Network to query or self-host on your `graph-node`: - -- [Graph TAP Arbitrum Sepolia Subgraph (for The Graph testnet)](https://thegraph.com/explorer/subgraphs/7ubx365MiqBH5iUz6XWXWT8PTof5BVAyEzdb8m17RvbD) -- [Graph TAP Arbitrum One Subgraph (for The Graph mainnet)](https://thegraph.com/explorer/subgraphs/4sukbNVTzGELnhdnpyPqsf1QqtzNHEYKKmJkgaT8z6M1) - -> Note: `indexer-agent` does not currently handle the indexing of this Subgraph like it does for the Network Subgraph deployment. You must index it manually. - -## Migration Guide +## Getting Started ### Software Requirements -#### Required Versions - -- **indexer-agent**: [Latest version supporting TAP](https://github.com/graphprotocol/indexer/releases) +- **indexer-agent**: [Latest version](https://github.com/graphprotocol/indexer/releases) - **indexer-service-rs**: [Latest release](https://github.com/graphprotocol/indexer-rs/releases?q=indexer-service-rs) - **indexer-tap-agent**: [Latest release](https://github.com/graphprotocol/indexer-rs/releases?q=indexer-tap-agent) -#### Docker Images +### Docker Images ```bash -# Indexer Service docker pull ghcr.io/graphprotocol/indexer-service-rs:latest - -# TAP Agent docker pull ghcr.io/graphprotocol/indexer-tap-agent:latest ``` -### Migration Steps +### Architecture Overview -#### 1. Update Indexer Agent +Your indexer stack consists of: -- Continue using your existing `indexer-agent` -- Add the `--tap-subgraph-endpoint` argument to enable TAP functionality and RAV redemption -- Example: `--tap-subgraph-endpoint https://api.thegraph.com/subgraphs/name/graphprotocol/tap-mainnet` +- **indexer-service-rs**: Handles incoming queries, validates receipts, routes to graph-node. Stateless and horizontally scalable. +- **indexer-tap-agent**: Aggregates receipts into RAVs. Run exactly **one instance**. +- **indexer-agent**: Manages allocations and redeems RAVs onchain. -#### 2. Replace Indexer Service +All three components share the same PostgreSQL database. -- Fully replace your TypeScript indexer-service with `indexer-service-rs` -- The new service is stateless and can be scaled horizontally -- Use the same database as your existing setup +### Configuration -#### 3. Deploy TAP Agent +Both `indexer-service-rs` and `indexer-tap-agent` use a shared TOML configuration file. Pass it with `--config /path/to/config.toml`. -- Run exactly **one instance** of `indexer-tap-agent` -- This component manages receipt aggregation and RAV creation -- It must have access to the same database as other indexer components - -#### 4. Configuration - -Both `indexer-service-rs` and `indexer-tap-agent` share a TOML configuration file. Create a configuration file and pass it with `--config /path/to/config.toml`. - -##### Minimal Configuration Example +#### Configuration Example ```toml -# Essential configuration for indexer-rs components -# All values below must be updated to match your setup - [indexer] indexer_address = "0x1111111111111111111111111111111111111111" operator_mnemonic = "your twelve word mnemonic phrase here ..." +# For key rotation, you can specify multiple mnemonics: +# operator_mnemonics = [ +# "current mnemonic phrase here", +# "previous mnemonic if you rotated keys" +# ] + [database] -# Use the same database as your indexer-agent postgres_url = "postgresql://user:password@localhost:5432/indexer_db" [graph_node] -# Your graph-node endpoints query_url = "http://graph-node:8000" status_url = "http://graph-node:8000/graphql" [subgraphs.network] -# The Graph Network Subgraph (use query_url OR deployment_id, not both) +# The Graph Network Subgraph (includes escrow data with Graph Horizon) +# Use query_url for hosted service, or deployment_id for local indexing (recommended) query_url = "https://api.thegraph.com/subgraphs/name/graphprotocol/graph-network-arbitrum" # deployment_id = "QmUVskWrz1ZiQZ76AtyhcfFDEH1ELnRpoyEhVL8p6NFTbR" -[subgraphs.escrow] -# TAP Escrow Subgraph (use query_url OR deployment_id, not both) -query_url = "https://api.thegraph.com/subgraphs/name/graphprotocol/tap-arbitrum-one" -# deployment_id = "QmPcbDomKwfsmVBNbvncU8gdWTvUiH9zVFYxDMc5ohpjvU" +# Note: With Graph Horizon, escrow data is included in the Network Subgraph. +# The separate [subgraphs.escrow] config is only needed for legacy V1 receipt processing. [blockchain] -# For Arbitrum mainnet chain_id = 42161 +# V1 TAP Verifier (for legacy receipts during migration) receipts_verifier_address = "0x33f9E93266ce0E108fc85DdE2f71dab555A0F05a" +# V2 Horizon TAP Verifier +receipts_verifier_address_v2 = "0x8f69F5C07477Ac46FBc491B1E6D91E2be0111A9e" +subgraph_service_address = "0xb2Bb92d0DE618878E438b55D5846cfecD9301105" -# For Arbitrum Sepolia testnet, use: +# For testnet: # chain_id = 421614 # receipts_verifier_address = "0xfC24cE7a4428A6B89B52645243662A02BA734ECF" +# receipts_verifier_address_v2 = "0x382863e7B662027117449bd2c49285582bbBd21B" +# subgraph_service_address = "0xc24A3dAC5d06d771f657A48B20cE1a671B78f26b" [tap] -# Maximum GRT amount to risk before requiring aggregation -# Use string format to prevent rounding errors max_amount_willing_to_lose_grt = "0.1" [tap.sender_aggregator_endpoints] -# Gateway endpoints for RAV aggregation -# Mainnet +# Mainnet gateways "0xDDE4cfFd3D9052A9cb618fC05a1Cd02be1f2F467" = "https://tap-aggregator.network.thegraph.com" +"0xDD6a6f76eb36B873C1C184e8b9b9e762FE216490" = "https://tap-aggregator-arbitrum-one.graphops.xyz" -# For testnet, use: +# For testnet: # "0xC3dDf37906724732FfD748057FEBe23379b0710D" = "https://tap-aggregator.testnet.thegraph.com" + +[horizon] +enabled = true ``` -##### Environment Variable Overrides +#### Environment Variable Overrides -You can override any configuration value using environment variables: +Override any configuration value using environment variables: ```bash # Pattern: [PREFIX]__[SECTION]__[KEY] -# PREFIX can be INDEXER_SERVICE or TAP_AGENT +# PREFIX: INDEXER_SERVICE or TAP_AGENT -# Examples: export INDEXER_SERVICE__DATABASE__POSTGRES_URL="postgresql://..." export TAP_AGENT__TAP__MAX_AMOUNT_WILLING_TO_LOSE_GRT="0.5" -export INDEXER_SERVICE__BLOCKCHAIN__RECEIPTS_VERIFIER_ADDRESS="0x..." ``` -##### Advanced Configuration +#### Advanced Configuration -For all configuration options, see: - -- [Full configuration example](https://github.com/graphprotocol/indexer-rs/blob/main/crates/config/maximal-config-example.toml) +- [Full configuration reference](https://github.com/graphprotocol/indexer-rs/blob/main/crates/config/maximal-config-example.toml) - [Default values](https://github.com/graphprotocol/indexer-rs/blob/main/crates/config/default_values.toml) ### Logging @@ -190,9 +177,6 @@ export RUST_LOG=indexer_service=info,indexer_tap_agent=info # For debugging export RUST_LOG=indexer_service=debug,indexer_tap_agent=debug - -# TAP-specific debugging -export RUST_LOG=indexer_tap_agent=debug,info ``` ## Monitoring @@ -213,9 +197,9 @@ Key metrics to monitor: ### Grafana Dashboard -Import the [official Grafana dashboard](https://github.com/graphprotocol/indexer-rs/blob/main/docs/dashboard.json) for comprehensive monitoring of: +Import the [official Grafana dashboard](https://github.com/graphprotocol/indexer-rs/blob/main/docs/dashboard.json) for monitoring: -- TAP receipt flow and aggregation status +- Receipt flow and aggregation status - RAV creation and redemption lifecycle - System performance and error rates - Database query performance @@ -230,7 +214,7 @@ Common issues and solutions: - Review debug logs for specific error messages 2. **Receipts not aggregating**: - - Ensure `tap-agent` is running (only one instance) + - Ensure `indexer-tap-agent` is running (only one instance) - Check database connectivity - Verify `max_amount_willing_to_lose_grt` is not too high @@ -239,21 +223,131 @@ Common issues and solutions: - Check if specific senders are having aggregation issues - Monitor the Grafana dashboard for aggregation patterns +## Horizon (TAP V2) Migration + +Horizon is the next-generation Graph protocol with updated smart contracts and a new receipt format (V2). This section covers how to enable Horizon support in your indexer stack. + +### Critical: Both Services Must Be Configured + +> **Warning**: `indexer-service-rs` and `indexer-tap-agent` have **separate configurations** and **both must have Horizon enabled** for V2 receipts to be processed correctly. +> +> A common misconfiguration is enabling Horizon only on `indexer-service` while leaving `tap-agent` in legacy mode. This results in: +> +> - `indexer-service` accepting V2 receipts and storing them in the database +> - `tap-agent` ignoring all Horizon allocations (showing 0 allocations tracked) +> - **No RAVs created, no redemptions possible** + +### Horizon Configuration Checklist + +#### Step 1: Obtain Horizon Contract Addresses + +You need two new addresses for Horizon (check [The Graph documentation](#blockchain-addresses) for current values): + +| Contract | Purpose | +| ------------------------------ | ----------------------------------------------------- | +| `receipts_verifier_address_v2` | TAP Verifier V2 contract for Horizon receipts | +| `subgraph_service_address` | Subgraph Service contract for allocation verification | + +#### Step 2: Update Configuration File + +Add the Horizon settings to your shared TOML configuration: + +```toml +[blockchain] +chain_id = 42161 +# Legacy V1 verifier (keep for existing receipts) +receipts_verifier_address = "0x33f9E93266ce0E108fc85DdE2f71dab555A0F05a" +# Horizon V2 addresses +receipts_verifier_address_v2 = "0x..." # Get from The Graph docs +subgraph_service_address = "0x..." # Get from The Graph docs + +[horizon] +enabled = true +``` + +#### Step 3: Configure Environment Variables (if not using config file) + +If you use environment variables, you must set them for **both services**: + +```bash +# For indexer-service +export INDEXER_SERVICE__HORIZON__ENABLED=true +export INDEXER_SERVICE__BLOCKCHAIN__RECEIPTS_VERIFIER_ADDRESS_V2="0x..." +export INDEXER_SERVICE__BLOCKCHAIN__SUBGRAPH_SERVICE_ADDRESS="0x..." + +# For tap-agent (REQUIRED - don't forget this!) +export TAP_AGENT__HORIZON__ENABLED=true +export TAP_AGENT__BLOCKCHAIN__RECEIPTS_VERIFIER_ADDRESS_V2="0x..." +export TAP_AGENT__BLOCKCHAIN__SUBGRAPH_SERVICE_ADDRESS="0x..." +``` + +#### Step 4: Verify Configuration + +After restarting both services, check the logs to confirm Horizon is active: + +**indexer-service logs (expected):** + +``` +INFO indexer_service_rs::service: Horizon mode configured - checking if Horizon contracts are active +INFO indexer_service_rs::service: Horizon contracts detected - using Horizon migration mode +``` + +**tap-agent logs (expected):** + +``` +INFO indexer_tap_agent::agent: Horizon mode configured - checking if Horizon contracts are active +INFO indexer_tap_agent::agent::sender_accounts_manager: horizon_active: true +``` + +**tap-agent logs (PROBLEM - Horizon not enabled):** + +``` +INFO indexer_tap_agent::agent: Horizon not configured - using pure legacy mode +INFO indexer_tap_agent::agent::sender_accounts_manager: horizon_active: false +``` + +If you see "pure legacy mode" in tap-agent but have Horizon allocations, your receipts will not be processed! + +### Horizon Migration Modes + +When Horizon is enabled and contracts are detected: + +- **Hybrid Migration Mode**: The system accepts new V2 receipts while continuing to process existing V1 receipts +- **V2 Receipts Only**: New queries generate V2 receipts (stored in `scalar_tap_receipts_v2` table) +- **Legacy Processing**: Existing V1 receipts continue to be aggregated until allocations close + +### Troubleshooting Horizon + +1. **TAP agent shows 0 allocations but you have Horizon allocations**: + - Check that `TAP_AGENT__HORIZON__ENABLED=true` is set + - Verify `subgraph_service_address` is configured for tap-agent + - Look for "pure legacy mode" in tap-agent logs + +2. **"mismatched" allocations in tap-agent logs**: + + ``` + total: 788, legacy: 0, horizon: 788, mismatched: 788, normalized: 0 + ``` + + This indicates tap-agent is in legacy mode but all your allocations are Horizon. Enable Horizon on tap-agent. + +3. **Receipts stored but not aggregated**: + - Confirm both services have matching `receipts_verifier_address_v2` values + - Check that `subgraph_service_address` matches between services + ## Deployment Options ### Docker Compose -Example compose configuration for both services: +Example compose configuration: ```yaml -version: '3.8' - services: indexer-service: image: ghcr.io/graphprotocol/indexer-service-rs:latest ports: - - '7600:7600' # Service port - - '7300:7300' # Metrics port + - '7600:7600' + - '7300:7300' volumes: - ./config.toml:/config.toml command: ['--config', '/config.toml'] @@ -264,7 +358,7 @@ services: tap-agent: image: ghcr.io/graphprotocol/indexer-tap-agent:latest ports: - - '7301:7300' # Metrics port (different host port) + - '7301:7300' volumes: - ./config.toml:/config.toml command: ['--config', '/config.toml'] @@ -291,7 +385,7 @@ For Kubernetes deployments, see the [Graph Launchpad charts](https://github.com/ 2. **High Availability**: - Run multiple `indexer-service-rs` instances behind a load balancer - - Keep `tap-agent` as a single instance with proper monitoring + - Keep `indexer-tap-agent` as a single instance with proper monitoring - Use database connection pooling 3. **Security**: From 21e14a380c14950a957c4ace7976aba1b13ae7b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Rouleau?= Date: Sat, 13 Dec 2025 16:46:28 -0500 Subject: [PATCH 12/14] Update dependencies + add `Horizon` icon to nav (#1060) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update dependencies * Add `Horizon` icon to nav * Fix network count (to match dynamic “see all _ networks”) * Try to fix CI * Try something else * Run `pnpm prebuild:ci` --- .github/workflows/ci-cd-pull-request.yml | 8 + .github/workflows/opengraph.yml | 2 + .github/workflows/website-integrity.yml | 2 + package.json | 10 +- packages/og-image/package.json | 2 +- pnpm-lock.yaml | 1772 ++++++++--------- website/package.json | 18 +- website/route-lockfile.txt | 98 +- website/src/HomePage.tsx | 2 +- website/src/components/Card.tsx | 9 +- website/src/layout/Layout.tsx | 8 +- website/src/openApi/tokenApi.json | 16 +- website/src/pages/ar/index.json | 2 +- website/src/pages/ar/token-api/_meta.js | 2 +- .../ar/token-api/guides/_meta-titles.json | 4 + .../src/pages/ar/token-api/guides/_meta.js | 4 + website/src/pages/ar/token-api/guides/gpt.mdx | 121 ++ .../token-api/{ => guides}/upgrade-to-v1.mdx | 122 +- website/src/pages/cs/index.json | 2 +- .../src/pages/cs/subgraphs/guides/_meta.js | 1 - website/src/pages/cs/token-api/_meta.js | 2 +- .../cs/token-api/guides/_meta-titles.json | 4 + .../src/pages/cs/token-api/guides/_meta.js | 4 + website/src/pages/cs/token-api/guides/gpt.mdx | 121 ++ .../token-api/{ => guides}/upgrade-to-v1.mdx | 122 +- website/src/pages/de/index.json | 2 +- .../src/pages/de/subgraphs/guides/_meta.js | 1 - website/src/pages/de/token-api/_meta.js | 2 +- .../de/token-api/guides/_meta-titles.json | 4 + .../src/pages/de/token-api/guides/_meta.js | 4 + website/src/pages/de/token-api/guides/gpt.mdx | 121 ++ .../token-api/{ => guides}/upgrade-to-v1.mdx | 122 +- website/src/pages/en/about.mdx | 2 +- website/src/pages/en/index.json | 2 +- .../src/pages/en/subgraphs/guides/_meta.js | 1 - .../src/pages/en/token-api/_meta-titles.json | 3 +- website/src/pages/en/token-api/_meta.js | 2 +- website/src/pages/es/index.json | 2 +- .../src/pages/es/subgraphs/guides/_meta.js | 1 - website/src/pages/es/token-api/_meta.js | 2 +- .../es/token-api/guides/_meta-titles.json | 4 + .../src/pages/es/token-api/guides/_meta.js | 4 + website/src/pages/es/token-api/guides/gpt.mdx | 121 ++ .../token-api/{ => guides}/upgrade-to-v1.mdx | 122 +- website/src/pages/fr/index.json | 2 +- .../src/pages/fr/subgraphs/guides/_meta.js | 1 - website/src/pages/fr/token-api/_meta.js | 2 +- .../fr/token-api/guides/_meta-titles.json | 4 + .../src/pages/fr/token-api/guides/_meta.js | 4 + website/src/pages/fr/token-api/guides/gpt.mdx | 121 ++ .../fr/token-api/guides/upgrade-to-v1.mdx | 346 ++++ .../src/pages/fr/token-api/upgrade-to-v1.mdx | 254 --- website/src/pages/hi/index.json | 2 +- .../src/pages/hi/subgraphs/guides/_meta.js | 1 - website/src/pages/hi/token-api/_meta.js | 2 +- .../hi/token-api/guides/_meta-titles.json | 4 + .../src/pages/hi/token-api/guides/_meta.js | 4 + website/src/pages/hi/token-api/guides/gpt.mdx | 121 ++ .../hi/token-api/guides/upgrade-to-v1.mdx | 346 ++++ .../src/pages/hi/token-api/upgrade-to-v1.mdx | 254 --- website/src/pages/it/index.json | 2 +- .../src/pages/it/subgraphs/guides/_meta.js | 1 - website/src/pages/it/token-api/_meta.js | 2 +- .../it/token-api/guides/_meta-titles.json | 4 + .../src/pages/it/token-api/guides/_meta.js | 4 + website/src/pages/it/token-api/guides/gpt.mdx | 121 ++ .../it/token-api/guides/upgrade-to-v1.mdx | 346 ++++ .../src/pages/it/token-api/upgrade-to-v1.mdx | 254 --- website/src/pages/ja/index.json | 2 +- .../src/pages/ja/subgraphs/guides/_meta.js | 1 - website/src/pages/ja/token-api/_meta.js | 2 +- .../ja/token-api/guides/_meta-titles.json | 4 + .../src/pages/ja/token-api/guides/_meta.js | 4 + website/src/pages/ja/token-api/guides/gpt.mdx | 121 ++ .../ja/token-api/guides/upgrade-to-v1.mdx | 346 ++++ .../src/pages/ja/token-api/upgrade-to-v1.mdx | 254 --- website/src/pages/ko/index.json | 2 +- .../src/pages/ko/subgraphs/guides/_meta.js | 1 - website/src/pages/ko/token-api/_meta.js | 2 +- .../ko/token-api/guides/_meta-titles.json | 4 + .../src/pages/ko/token-api/guides/_meta.js | 4 + website/src/pages/ko/token-api/guides/gpt.mdx | 121 ++ .../ko/token-api/guides/upgrade-to-v1.mdx | 346 ++++ .../src/pages/ko/token-api/upgrade-to-v1.mdx | 254 --- website/src/pages/mr/index.json | 2 +- .../src/pages/mr/subgraphs/guides/_meta.js | 1 - website/src/pages/mr/token-api/_meta.js | 2 +- .../mr/token-api/guides/_meta-titles.json | 4 + .../src/pages/mr/token-api/guides/_meta.js | 4 + website/src/pages/mr/token-api/guides/gpt.mdx | 121 ++ .../mr/token-api/guides/upgrade-to-v1.mdx | 346 ++++ .../src/pages/mr/token-api/upgrade-to-v1.mdx | 254 --- website/src/pages/nl/index.json | 2 +- .../src/pages/nl/subgraphs/guides/_meta.js | 1 - website/src/pages/nl/token-api/_meta.js | 2 +- .../nl/token-api/guides/_meta-titles.json | 4 + .../src/pages/nl/token-api/guides/_meta.js | 4 + website/src/pages/nl/token-api/guides/gpt.mdx | 121 ++ .../nl/token-api/guides/upgrade-to-v1.mdx | 346 ++++ .../src/pages/nl/token-api/upgrade-to-v1.mdx | 254 --- website/src/pages/pl/index.json | 2 +- .../src/pages/pl/subgraphs/guides/_meta.js | 1 - website/src/pages/pl/token-api/_meta.js | 2 +- .../pl/token-api/guides/_meta-titles.json | 4 + .../src/pages/pl/token-api/guides/_meta.js | 4 + website/src/pages/pl/token-api/guides/gpt.mdx | 121 ++ .../pl/token-api/guides/upgrade-to-v1.mdx | 346 ++++ .../src/pages/pl/token-api/upgrade-to-v1.mdx | 254 --- website/src/pages/pt/index.json | 2 +- .../src/pages/pt/subgraphs/guides/_meta.js | 1 - website/src/pages/pt/token-api/_meta.js | 2 +- .../pt/token-api/guides/_meta-titles.json | 4 + .../src/pages/pt/token-api/guides/_meta.js | 4 + website/src/pages/pt/token-api/guides/gpt.mdx | 121 ++ .../pt/token-api/guides/upgrade-to-v1.mdx | 346 ++++ .../src/pages/pt/token-api/upgrade-to-v1.mdx | 254 --- website/src/pages/ro/index.json | 2 +- .../src/pages/ro/subgraphs/guides/_meta.js | 1 - website/src/pages/ro/token-api/_meta.js | 2 +- .../ro/token-api/guides/_meta-titles.json | 4 + .../src/pages/ro/token-api/guides/_meta.js | 4 + website/src/pages/ro/token-api/guides/gpt.mdx | 121 ++ .../ro/token-api/guides/upgrade-to-v1.mdx | 346 ++++ .../src/pages/ro/token-api/upgrade-to-v1.mdx | 254 --- website/src/pages/ru/index.json | 2 +- .../src/pages/ru/subgraphs/guides/_meta.js | 1 - website/src/pages/ru/token-api/_meta.js | 2 +- .../ru/token-api/guides/_meta-titles.json | 4 + .../src/pages/ru/token-api/guides/_meta.js | 4 + website/src/pages/ru/token-api/guides/gpt.mdx | 121 ++ .../ru/token-api/guides/upgrade-to-v1.mdx | 346 ++++ .../src/pages/ru/token-api/upgrade-to-v1.mdx | 254 --- website/src/pages/sv/index.json | 2 +- .../src/pages/sv/subgraphs/guides/_meta.js | 1 - website/src/pages/sv/token-api/_meta.js | 2 +- .../sv/token-api/guides/_meta-titles.json | 4 + .../src/pages/sv/token-api/guides/_meta.js | 4 + website/src/pages/sv/token-api/guides/gpt.mdx | 121 ++ .../sv/token-api/guides/upgrade-to-v1.mdx | 346 ++++ .../src/pages/sv/token-api/upgrade-to-v1.mdx | 254 --- website/src/pages/tr/index.json | 2 +- .../src/pages/tr/subgraphs/guides/_meta.js | 1 - website/src/pages/tr/token-api/_meta.js | 2 +- .../tr/token-api/guides/_meta-titles.json | 4 + .../src/pages/tr/token-api/guides/_meta.js | 4 + website/src/pages/tr/token-api/guides/gpt.mdx | 121 ++ .../tr/token-api/guides/upgrade-to-v1.mdx | 346 ++++ .../src/pages/tr/token-api/upgrade-to-v1.mdx | 254 --- website/src/pages/uk/index.json | 2 +- .../src/pages/uk/subgraphs/guides/_meta.js | 1 - website/src/pages/uk/token-api/_meta.js | 2 +- .../uk/token-api/guides/_meta-titles.json | 4 + .../src/pages/uk/token-api/guides/_meta.js | 4 + website/src/pages/uk/token-api/guides/gpt.mdx | 121 ++ .../uk/token-api/guides/upgrade-to-v1.mdx | 346 ++++ .../src/pages/uk/token-api/upgrade-to-v1.mdx | 254 --- website/src/pages/ur/index.json | 2 +- .../src/pages/ur/subgraphs/guides/_meta.js | 1 - website/src/pages/ur/token-api/_meta.js | 2 +- .../ur/token-api/guides/_meta-titles.json | 4 + .../src/pages/ur/token-api/guides/_meta.js | 4 + website/src/pages/ur/token-api/guides/gpt.mdx | 121 ++ .../ur/token-api/guides/upgrade-to-v1.mdx | 346 ++++ .../src/pages/ur/token-api/upgrade-to-v1.mdx | 254 --- website/src/pages/vi/index.json | 2 +- .../src/pages/vi/subgraphs/guides/_meta.js | 1 - website/src/pages/vi/token-api/_meta.js | 2 +- .../vi/token-api/guides/_meta-titles.json | 4 + .../src/pages/vi/token-api/guides/_meta.js | 4 + website/src/pages/vi/token-api/guides/gpt.mdx | 121 ++ .../vi/token-api/guides/upgrade-to-v1.mdx | 346 ++++ .../src/pages/vi/token-api/upgrade-to-v1.mdx | 254 --- website/src/pages/zh/index.json | 2 +- .../src/pages/zh/subgraphs/guides/_meta.js | 1 - website/src/pages/zh/token-api/_meta.js | 2 +- .../zh/token-api/guides/_meta-titles.json | 4 + .../src/pages/zh/token-api/guides/_meta.js | 4 + website/src/pages/zh/token-api/guides/gpt.mdx | 121 ++ .../zh/token-api/guides/upgrade-to-v1.mdx | 346 ++++ .../src/pages/zh/token-api/upgrade-to-v1.mdx | 254 --- 180 files changed, 10005 insertions(+), 5453 deletions(-) create mode 100644 website/src/pages/ar/token-api/guides/_meta-titles.json create mode 100644 website/src/pages/ar/token-api/guides/_meta.js create mode 100644 website/src/pages/ar/token-api/guides/gpt.mdx rename website/src/pages/ar/token-api/{ => guides}/upgrade-to-v1.mdx (74%) create mode 100644 website/src/pages/cs/token-api/guides/_meta-titles.json create mode 100644 website/src/pages/cs/token-api/guides/_meta.js create mode 100644 website/src/pages/cs/token-api/guides/gpt.mdx rename website/src/pages/cs/token-api/{ => guides}/upgrade-to-v1.mdx (74%) create mode 100644 website/src/pages/de/token-api/guides/_meta-titles.json create mode 100644 website/src/pages/de/token-api/guides/_meta.js create mode 100644 website/src/pages/de/token-api/guides/gpt.mdx rename website/src/pages/de/token-api/{ => guides}/upgrade-to-v1.mdx (74%) create mode 100644 website/src/pages/es/token-api/guides/_meta-titles.json create mode 100644 website/src/pages/es/token-api/guides/_meta.js create mode 100644 website/src/pages/es/token-api/guides/gpt.mdx rename website/src/pages/es/token-api/{ => guides}/upgrade-to-v1.mdx (74%) create mode 100644 website/src/pages/fr/token-api/guides/_meta-titles.json create mode 100644 website/src/pages/fr/token-api/guides/_meta.js create mode 100644 website/src/pages/fr/token-api/guides/gpt.mdx create mode 100644 website/src/pages/fr/token-api/guides/upgrade-to-v1.mdx delete mode 100644 website/src/pages/fr/token-api/upgrade-to-v1.mdx create mode 100644 website/src/pages/hi/token-api/guides/_meta-titles.json create mode 100644 website/src/pages/hi/token-api/guides/_meta.js create mode 100644 website/src/pages/hi/token-api/guides/gpt.mdx create mode 100644 website/src/pages/hi/token-api/guides/upgrade-to-v1.mdx delete mode 100644 website/src/pages/hi/token-api/upgrade-to-v1.mdx create mode 100644 website/src/pages/it/token-api/guides/_meta-titles.json create mode 100644 website/src/pages/it/token-api/guides/_meta.js create mode 100644 website/src/pages/it/token-api/guides/gpt.mdx create mode 100644 website/src/pages/it/token-api/guides/upgrade-to-v1.mdx delete mode 100644 website/src/pages/it/token-api/upgrade-to-v1.mdx create mode 100644 website/src/pages/ja/token-api/guides/_meta-titles.json create mode 100644 website/src/pages/ja/token-api/guides/_meta.js create mode 100644 website/src/pages/ja/token-api/guides/gpt.mdx create mode 100644 website/src/pages/ja/token-api/guides/upgrade-to-v1.mdx delete mode 100644 website/src/pages/ja/token-api/upgrade-to-v1.mdx create mode 100644 website/src/pages/ko/token-api/guides/_meta-titles.json create mode 100644 website/src/pages/ko/token-api/guides/_meta.js create mode 100644 website/src/pages/ko/token-api/guides/gpt.mdx create mode 100644 website/src/pages/ko/token-api/guides/upgrade-to-v1.mdx delete mode 100644 website/src/pages/ko/token-api/upgrade-to-v1.mdx create mode 100644 website/src/pages/mr/token-api/guides/_meta-titles.json create mode 100644 website/src/pages/mr/token-api/guides/_meta.js create mode 100644 website/src/pages/mr/token-api/guides/gpt.mdx create mode 100644 website/src/pages/mr/token-api/guides/upgrade-to-v1.mdx delete mode 100644 website/src/pages/mr/token-api/upgrade-to-v1.mdx create mode 100644 website/src/pages/nl/token-api/guides/_meta-titles.json create mode 100644 website/src/pages/nl/token-api/guides/_meta.js create mode 100644 website/src/pages/nl/token-api/guides/gpt.mdx create mode 100644 website/src/pages/nl/token-api/guides/upgrade-to-v1.mdx delete mode 100644 website/src/pages/nl/token-api/upgrade-to-v1.mdx create mode 100644 website/src/pages/pl/token-api/guides/_meta-titles.json create mode 100644 website/src/pages/pl/token-api/guides/_meta.js create mode 100644 website/src/pages/pl/token-api/guides/gpt.mdx create mode 100644 website/src/pages/pl/token-api/guides/upgrade-to-v1.mdx delete mode 100644 website/src/pages/pl/token-api/upgrade-to-v1.mdx create mode 100644 website/src/pages/pt/token-api/guides/_meta-titles.json create mode 100644 website/src/pages/pt/token-api/guides/_meta.js create mode 100644 website/src/pages/pt/token-api/guides/gpt.mdx create mode 100644 website/src/pages/pt/token-api/guides/upgrade-to-v1.mdx delete mode 100644 website/src/pages/pt/token-api/upgrade-to-v1.mdx create mode 100644 website/src/pages/ro/token-api/guides/_meta-titles.json create mode 100644 website/src/pages/ro/token-api/guides/_meta.js create mode 100644 website/src/pages/ro/token-api/guides/gpt.mdx create mode 100644 website/src/pages/ro/token-api/guides/upgrade-to-v1.mdx delete mode 100644 website/src/pages/ro/token-api/upgrade-to-v1.mdx create mode 100644 website/src/pages/ru/token-api/guides/_meta-titles.json create mode 100644 website/src/pages/ru/token-api/guides/_meta.js create mode 100644 website/src/pages/ru/token-api/guides/gpt.mdx create mode 100644 website/src/pages/ru/token-api/guides/upgrade-to-v1.mdx delete mode 100644 website/src/pages/ru/token-api/upgrade-to-v1.mdx create mode 100644 website/src/pages/sv/token-api/guides/_meta-titles.json create mode 100644 website/src/pages/sv/token-api/guides/_meta.js create mode 100644 website/src/pages/sv/token-api/guides/gpt.mdx create mode 100644 website/src/pages/sv/token-api/guides/upgrade-to-v1.mdx delete mode 100644 website/src/pages/sv/token-api/upgrade-to-v1.mdx create mode 100644 website/src/pages/tr/token-api/guides/_meta-titles.json create mode 100644 website/src/pages/tr/token-api/guides/_meta.js create mode 100644 website/src/pages/tr/token-api/guides/gpt.mdx create mode 100644 website/src/pages/tr/token-api/guides/upgrade-to-v1.mdx delete mode 100644 website/src/pages/tr/token-api/upgrade-to-v1.mdx create mode 100644 website/src/pages/uk/token-api/guides/_meta-titles.json create mode 100644 website/src/pages/uk/token-api/guides/_meta.js create mode 100644 website/src/pages/uk/token-api/guides/gpt.mdx create mode 100644 website/src/pages/uk/token-api/guides/upgrade-to-v1.mdx delete mode 100644 website/src/pages/uk/token-api/upgrade-to-v1.mdx create mode 100644 website/src/pages/ur/token-api/guides/_meta-titles.json create mode 100644 website/src/pages/ur/token-api/guides/_meta.js create mode 100644 website/src/pages/ur/token-api/guides/gpt.mdx create mode 100644 website/src/pages/ur/token-api/guides/upgrade-to-v1.mdx delete mode 100644 website/src/pages/ur/token-api/upgrade-to-v1.mdx create mode 100644 website/src/pages/vi/token-api/guides/_meta-titles.json create mode 100644 website/src/pages/vi/token-api/guides/_meta.js create mode 100644 website/src/pages/vi/token-api/guides/gpt.mdx create mode 100644 website/src/pages/vi/token-api/guides/upgrade-to-v1.mdx delete mode 100644 website/src/pages/vi/token-api/upgrade-to-v1.mdx create mode 100644 website/src/pages/zh/token-api/guides/_meta-titles.json create mode 100644 website/src/pages/zh/token-api/guides/_meta.js create mode 100644 website/src/pages/zh/token-api/guides/gpt.mdx create mode 100644 website/src/pages/zh/token-api/guides/upgrade-to-v1.mdx delete mode 100644 website/src/pages/zh/token-api/upgrade-to-v1.mdx diff --git a/.github/workflows/ci-cd-pull-request.yml b/.github/workflows/ci-cd-pull-request.yml index 43cb0de5a275..cc6efa51a0d9 100644 --- a/.github/workflows/ci-cd-pull-request.yml +++ b/.github/workflows/ci-cd-pull-request.yml @@ -20,6 +20,8 @@ jobs: - name: Set up env uses: the-guild-org/shared-config/setup@v1 + with: + node-version: 22 - name: Install dependencies run: pnpm install @@ -41,6 +43,8 @@ jobs: - name: Set up env uses: the-guild-org/shared-config/setup@v1 + with: + node-version: 22 - name: Install dependencies run: pnpm install @@ -62,6 +66,8 @@ jobs: - name: Set up env uses: the-guild-org/shared-config/setup@v1 + with: + node-version: 22 - name: Install dependencies run: pnpm install @@ -84,6 +90,8 @@ jobs: - name: Set up env uses: the-guild-org/shared-config/setup@v1 + with: + node-version: 22 - name: Install dependencies run: pnpm install diff --git a/.github/workflows/opengraph.yml b/.github/workflows/opengraph.yml index 680e9607621c..ffd91e72e842 100644 --- a/.github/workflows/opengraph.yml +++ b/.github/workflows/opengraph.yml @@ -25,6 +25,8 @@ jobs: - name: Set up env uses: the-guild-org/shared-config/setup@v1 + with: + node-version: 22 - name: Deploy working-directory: ./packages/og-image diff --git a/.github/workflows/website-integrity.yml b/.github/workflows/website-integrity.yml index 9b2b5bea0619..2e3ede255986 100644 --- a/.github/workflows/website-integrity.yml +++ b/.github/workflows/website-integrity.yml @@ -22,6 +22,8 @@ jobs: - name: Set up env uses: the-guild-org/shared-config/setup@v1 + with: + node-version: 22 - name: Run pre-build scripts run: pnpm prebuild:ci diff --git a/package.json b/package.json index 5ea6ba19e17d..65fc90090c28 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "graph-docs", "private": true, "version": "1.0.0", - "packageManager": "pnpm@10.23.0", + "packageManager": "pnpm@10.25.0", "scripts": { "dev": "turbo run dev", "build": "NODE_OPTIONS='--max-old-space-size=8192' turbo run build", @@ -21,17 +21,17 @@ }, "devDependencies": { "@edgeandnode/eslint-config": "^2.0.3", - "@types/node": "^22.19.1", + "@types/node": "^22.19.2", "eslint": "^8.57.1", "eslint-plugin-mdx": "^3.6.2", - "prettier": "^3.6.2", - "prettier-plugin-tailwindcss": "^0.7.1", + "prettier": "^3.7.4", + "prettier-plugin-tailwindcss": "^0.7.2", "remark-frontmatter": "^5.0.0", "remark-lint-first-heading-level": "^4.0.1", "remark-lint-heading-increment": "^4.0.1", "remark-lint-no-heading-punctuation": "^4.0.1", "remark-lint-restrict-elements": "workspace:*", - "turbo": "^2.6.1", + "turbo": "^2.6.3", "typescript": "^5.9.3" }, "resolutions": { diff --git a/packages/og-image/package.json b/packages/og-image/package.json index e3bcd5140446..e1f55cd65d89 100644 --- a/packages/og-image/package.json +++ b/packages/og-image/package.json @@ -16,7 +16,7 @@ "yoga-wasm-web": "^0.3.3" }, "devDependencies": { - "@cloudflare/workers-types": "^4.20251120.0", + "@cloudflare/workers-types": "^4.20251213.0", "@types/react": "^18.3.27", "jest-image-snapshot": "^6.5.1", "tsx": "4.20.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c9328c36cd1a..5148f0f09bac 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,8 +15,8 @@ importers: specifier: ^2.0.3 version: 2.0.3(eslint@8.57.1)(typescript@5.9.3) '@types/node': - specifier: ^22.19.1 - version: 22.19.1 + specifier: ^22.19.2 + version: 22.19.2 eslint: specifier: ^8.57.1 version: 8.57.1 @@ -24,11 +24,11 @@ importers: specifier: ^3.6.2 version: 3.6.2(eslint@8.57.1) prettier: - specifier: ^3.6.2 - version: 3.6.2 + specifier: ^3.7.4 + version: 3.7.4 prettier-plugin-tailwindcss: - specifier: ^0.7.1 - version: 0.7.1(prettier@3.6.2) + specifier: ^0.7.2 + version: 0.7.2(prettier@3.7.4) remark-frontmatter: specifier: ^5.0.0 version: 5.0.0 @@ -45,8 +45,8 @@ importers: specifier: workspace:* version: link:packages/remark-lint-restrict-elements turbo: - specifier: ^2.6.1 - version: 2.6.1 + specifier: ^2.6.3 + version: 2.6.3 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -67,8 +67,8 @@ importers: version: 0.3.3 devDependencies: '@cloudflare/workers-types': - specifier: ^4.20251120.0 - version: 4.20251120.0 + specifier: ^4.20251213.0 + version: 4.20251213.0 '@types/react': specifier: ^18.3.27 version: 18.3.27 @@ -83,10 +83,10 @@ importers: version: 5.9.3 vitest: specifier: ^2.1.9 - version: 2.1.9(@types/node@22.19.1)(jsdom@24.1.3) + version: 2.1.9(@types/node@22.19.2)(jsdom@24.1.3) wrangler: specifier: ^3.114.15 - version: 3.114.15(@cloudflare/workers-types@4.20251120.0) + version: 3.114.15(@cloudflare/workers-types@4.20251213.0) packages/remark-lint-restrict-elements: dependencies: @@ -101,16 +101,16 @@ importers: dependencies: '@docsearch/react': specifier: ^3.9.0 - version: 3.9.0(@algolia/client-search@5.43.0)(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3) + version: 3.9.0(@algolia/client-search@5.46.0)(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3) '@edgeandnode/common': specifier: ^7.0.4 - version: 7.0.4(hardhat@2.27.0(typescript@5.9.3)) + version: 7.0.4(hardhat@2.27.2(typescript@5.9.3)) '@edgeandnode/gds': - specifier: ^6.7.8 - version: 6.7.8(@emotion/is-prop-valid@0.8.8)(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(dayjs@1.11.19)(hardhat@2.27.0(typescript@5.9.3))(next@14.2.33(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)(theme-ui@0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1))(tsx@4.20.4)(typescript@5.9.3)(yaml@2.8.1) + specifier: ^6.8.1 + version: 6.8.1(@emotion/is-prop-valid@0.8.8)(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(dayjs@1.11.19)(hardhat@2.27.2(typescript@5.9.3))(next@14.2.35(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)(theme-ui@0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1))(tsx@4.20.4)(typescript@5.9.3)(yaml@2.8.2) '@edgeandnode/go': - specifier: ^10.3.12 - version: 10.3.12(e70f93497728a8960fcd273532040bed) + specifier: ^10.4.1 + version: 10.4.1(b7fbd4cfc283779f7cf7c16f0f72c4f6) '@emotion/react': specifier: ^11.14.0 version: 11.14.0(@types/react@18.3.27)(react@18.3.1) @@ -145,26 +145,26 @@ importers: specifier: ^3.2.0 version: 3.2.0 mdast-util-to-hast: - specifier: ^13.2.0 - version: 13.2.0 + specifier: ^13.2.1 + version: 13.2.1 mixpanel-browser: specifier: ^2.72.0 version: 2.72.0(@mixpanel/rrweb-utils@2.0.0-alpha.18.2) motion: - specifier: ^12.23.24 - version: 12.23.24(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^12.23.26 + version: 12.23.26(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) next: - specifier: ^14.2.33 - version: 14.2.33(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^14.2.35 + version: 14.2.35(react-dom@18.3.1(react@18.3.1))(react@18.3.1) next-seo: specifier: ^6.8.0 - version: 6.8.0(next@14.2.33(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 6.8.0(next@14.2.35(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) next-sitemap: specifier: ^4.2.3 - version: 4.2.3(next@14.2.33(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + version: 4.2.3(next@14.2.35(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) nextra: specifier: ^3.3.1 - version: 3.3.1(@types/react@18.3.27)(next@14.2.33(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.3) + version: 3.3.1(@types/react@18.3.27)(next@14.2.35(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.3) openapi-types: specifier: ^12.1.3 version: 12.1.3 @@ -209,8 +209,8 @@ importers: specifier: ^3.0.4 version: 3.0.4 '@types/lodash': - specifier: ^4.17.20 - version: 4.17.20 + specifier: ^4.17.21 + version: 4.17.21 '@types/mdast': specifier: ^4.0.4 version: 4.0.4 @@ -218,8 +218,8 @@ importers: specifier: ^2.66.0 version: 2.66.0(@mixpanel/rrweb-utils@2.0.0-alpha.18.2) '@types/node': - specifier: ^22.19.1 - version: 22.19.1 + specifier: ^22.19.2 + version: 22.19.2 '@types/react': specifier: ^18.3.27 version: 18.3.27 @@ -233,17 +233,17 @@ importers: specifier: ^10.4.22 version: 10.4.22(postcss@8.5.6) fast-xml-parser: - specifier: ^5.3.2 - version: 5.3.2 + specifier: ^5.3.3 + version: 5.3.3 postcss: specifier: ^8.5.6 version: 8.5.6 tailwindcss: - specifier: ^3.4.18 - version: 3.4.18(tsx@4.20.4)(yaml@2.8.1) + specifier: ^3.4.19 + version: 3.4.19(tsx@4.20.4)(yaml@2.8.2) tsup: specifier: ^8.5.1 - version: 8.5.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.4)(typescript@5.9.3)(yaml@2.8.1) + version: 8.5.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.4)(typescript@5.9.3)(yaml@2.8.2) tsx: specifier: 4.20.4 version: 4.20.4 @@ -256,8 +256,8 @@ packages: '@adraffy/ens-normalize@1.11.1': resolution: {integrity: sha512-nhCBV3quEgesuf7c7KYfperqSS14T8bYuvJ8PcLJp6znkZpFc0AuW4qBtr8eKVyPPe/8RSr7sglCWPU5eaxwKQ==} - '@algolia/abtesting@1.9.0': - resolution: {integrity: sha512-4q9QCxFPiDIx1n5w41A1JMkrXI8p0ugCQnCGFtCKZPmWtwgWCqwVRncIbp++81xSELFZVQUfiB7Kbsla1tIBSw==} + '@algolia/abtesting@1.12.0': + resolution: {integrity: sha512-EfW0bfxjPs+C7ANkJDw2TATntfBKsFiy7APh+KO0pQ8A6HYa5I0NjFuCGCXWfzzzLXNZta3QUl3n5Kmm6aJo9Q==} engines: {node: '>= 14.0.0'} '@algolia/autocomplete-core@1.17.9': @@ -280,56 +280,56 @@ packages: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' - '@algolia/client-abtesting@5.43.0': - resolution: {integrity: sha512-YsKYkohIMxiYEAu8nppZi5EioYDUIo9Heoor8K8vMUnkUtGCOEU/Q4p5OWaYSSBx3evo09Ga9rG4jsKViIcDzQ==} + '@algolia/client-abtesting@5.46.0': + resolution: {integrity: sha512-eG5xV8rujK4ZIHXrRshvv9O13NmU/k42Rnd3w43iKH5RaQ2zWuZO6Q7XjaoJjAFVCsJWqRbXzbYyPGrbF3wGNg==} engines: {node: '>= 14.0.0'} - '@algolia/client-analytics@5.43.0': - resolution: {integrity: sha512-kDGJWt3nzf0nu5RPFXQhNGl6Q0cn35fazxVWXhd0Fw3Vo6gcVfrcezcBenHb66laxnVJ7uwr1uKhmsu3Wy25sQ==} + '@algolia/client-analytics@5.46.0': + resolution: {integrity: sha512-AYh2uL8IUW9eZrbbT+wZElyb7QkkeV3US2NEKY7doqMlyPWE8lErNfkVN1NvZdVcY4/SVic5GDbeDz2ft8YIiQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-common@5.43.0': - resolution: {integrity: sha512-RAFipkAnI8xhL/Sgi/gpXgNWN5HDM6F7z4NNNOcI8ZMYysZEBsqVXojg/WdKEKkQCOHVTZ3mooIjc5BaQdyVtA==} + '@algolia/client-common@5.46.0': + resolution: {integrity: sha512-0emZTaYOeI9WzJi0TcNd2k3SxiN6DZfdWc2x2gHt855Jl9jPUOzfVTL6gTvCCrOlT4McvpDGg5nGO+9doEjjig==} engines: {node: '>= 14.0.0'} - '@algolia/client-insights@5.43.0': - resolution: {integrity: sha512-PmVs83THco8Qig3cAjU9a5eAGaSxsfgh7PdmWMQFE/MCmIcLPv0MVpgfcGGyPjZGYvPC4cg+3q7JJxcNSsEaTg==} + '@algolia/client-insights@5.46.0': + resolution: {integrity: sha512-wrBJ8fE+M0TDG1As4DDmwPn2TXajrvmvAN72Qwpuv8e2JOKNohF7+JxBoF70ZLlvP1A1EiH8DBu+JpfhBbNphQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-personalization@5.43.0': - resolution: {integrity: sha512-Bs4zMLXvkAr19FSOZWNizlNUpRFxZVxtvyEJ+q3n3+hPZUcKjo0LIh15qghhRcQPEihjBN6Gr/U+AqRfOCsvnA==} + '@algolia/client-personalization@5.46.0': + resolution: {integrity: sha512-LnkeX4p0ENt0DoftDJJDzQQJig/sFQmD1eQifl/iSjhUOGUIKC/7VTeXRcKtQB78naS8njUAwpzFvxy1CDDXDQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-query-suggestions@5.43.0': - resolution: {integrity: sha512-pwHv+z8TZAKbwAWt9+v2gIqlqcCFiMdteTdgdPn2yOBRx4WUQdsIWAaG9GiV3by8jO51FuFQnTohhauuI63y3A==} + '@algolia/client-query-suggestions@5.46.0': + resolution: {integrity: sha512-aF9tc4ex/smypXw+W3lBPB1jjKoaGHpZezTqofvDOI/oK1dR2sdTpFpK2Ru+7IRzYgwtRqHF3znmTlyoNs9dpA==} engines: {node: '>= 14.0.0'} - '@algolia/client-search@5.43.0': - resolution: {integrity: sha512-wKy6x6fKcnB1CsfeNNdGp4dzLzz04k8II3JLt6Sp81F8s57Ks3/K9qsysmL9SJa8P486s719bBttVLE8JJYurQ==} + '@algolia/client-search@5.46.0': + resolution: {integrity: sha512-22SHEEVNjZfFWkFks3P6HilkR3rS7a6GjnCIqR22Zz4HNxdfT0FG+RE7efTcFVfLUkTTMQQybvaUcwMrHXYa7Q==} engines: {node: '>= 14.0.0'} - '@algolia/ingestion@1.43.0': - resolution: {integrity: sha512-TA21h2KwqCUyPXhSAWF3R2UES/FAnzjaVPDI6cRPXeadX+pdrGN0GWat5gSUATJVcMHECn+lGvuMMRxO86o2Pg==} + '@algolia/ingestion@1.46.0': + resolution: {integrity: sha512-2LT0/Z+/sFwEpZLH6V17WSZ81JX2uPjgvv5eNlxgU7rPyup4NXXfuMbtCJ+6uc4RO/LQpEJd3Li59ke3wtyAsA==} engines: {node: '>= 14.0.0'} - '@algolia/monitoring@1.43.0': - resolution: {integrity: sha512-rvWVEiA1iLcFmHS3oIXGIBreHIxNZqEFDjiNyRtLEffgd62kul2DjXM7H5bOouDMTo1ywMWT9OeQnzrhlTGAwA==} + '@algolia/monitoring@1.46.0': + resolution: {integrity: sha512-uivZ9wSWZ8mz2ZU0dgDvQwvVZV8XBv6lYBXf8UtkQF3u7WeTqBPeU8ZoeTyLpf0jAXCYOvc1mAVmK0xPLuEwOQ==} engines: {node: '>= 14.0.0'} - '@algolia/recommend@5.43.0': - resolution: {integrity: sha512-scCijGd38npvH2uHbYhO4f1SR8It5R2FZqOjNcMfw/7Ph7Hxvl+cd7Mo6RzIxsNRcLW5RrwjtpTK3gpDe8r/WQ==} + '@algolia/recommend@5.46.0': + resolution: {integrity: sha512-O2BB8DuySuddgOAbhyH4jsGbL+KyDGpzJRtkDZkv091OMomqIA78emhhMhX9d/nIRrzS1wNLWB/ix7Hb2eV5rg==} engines: {node: '>= 14.0.0'} - '@algolia/requester-browser-xhr@5.43.0': - resolution: {integrity: sha512-jMkRLWJYr4Hcmpl89e4vIWs69Mkf8Uwx7MG5ZKk2UxW3G3TmouGjI0Ph5mVPmg3Jf1UG3AdmVDc4XupzycT1Jw==} + '@algolia/requester-browser-xhr@5.46.0': + resolution: {integrity: sha512-eW6xyHCyYrJD0Kjk9Mz33gQ40LfWiEA51JJTVfJy3yeoRSw/NXhAL81Pljpa0qslTs6+LO/5DYPZddct6HvISQ==} engines: {node: '>= 14.0.0'} - '@algolia/requester-fetch@5.43.0': - resolution: {integrity: sha512-KyQiVz+HdYtissC0J9KIGhHhKytQyJX+82GVsbv5rSCXbETnAoojvUyCn+3KRtWUvMDYCsZ+Y7hM71STTUJUJg==} + '@algolia/requester-fetch@5.46.0': + resolution: {integrity: sha512-Vn2+TukMGHy4PIxmdvP667tN/MhS7MPT8EEvEhS6JyFLPx3weLcxSa1F9gVvrfHWCUJhLWoMVJVB2PT8YfRGcw==} engines: {node: '>= 14.0.0'} - '@algolia/requester-node-http@5.43.0': - resolution: {integrity: sha512-UnUBNY0U+oT0bkYDsEqVsCkErC2w7idk4CRiLSzicqY8tGylD9oP0j13X/fse1CuiAFCCr3jfl+cBlN6dC0OFw==} + '@algolia/requester-node-http@5.46.0': + resolution: {integrity: sha512-xaqXyna5yBZ+r1SJ9my/DM6vfTqJg9FJgVydRJ0lnO+D5NhqGW/qaRG/iBGKr/d4fho34el6WakV7BqJvrl/HQ==} engines: {node: '>= 14.0.0'} '@alloc/quick-lru@5.2.0': @@ -339,9 +339,6 @@ packages: '@antfu/install-pkg@1.1.0': resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} - '@antfu/utils@9.3.0': - resolution: {integrity: sha512-9hFT4RauhcUzqOE4f1+frMKLZrgNog5b06I7VmZQV1BkvwvqrbC8EBZf3L1eEL2AKb6rNKjER0sEvJiSP1FXEA==} - '@apidevtools/json-schema-ref-parser@13.0.5': resolution: {integrity: sha512-xfh4xVJD62gG6spIc7lwxoWT+l16nZu1ELyU8FkjaP/oD2yP09EvLAU6KhtudN9aML2Khhs9pY6Slr7KGTES3w==} engines: {node: '>= 16'} @@ -470,8 +467,8 @@ packages: cpu: [x64] os: [win32] - '@cloudflare/workers-types@4.20251120.0': - resolution: {integrity: sha512-/uy0Oleot60ZS037I2mxR9NEft6eQYdknKBnM76W91I+7BKznzXKj2MtXMfSXTLsxyP+6MluYRNPrRCQDlk8kw==} + '@cloudflare/workers-types@4.20251213.0': + resolution: {integrity: sha512-PJAGdKfU7hs39C2YOFNLTdrfdqG6rbaVj5UuI306zS+TPokiskRLEgUXKqS6avN9Uu9Nyuf2a0hqoumLQCnJlQ==} '@corex/deepmerge@4.0.43': resolution: {integrity: sha512-N8uEMrMPL0cu/bdboEWpQYb/0i2K5Qn8eCsxzOmxSggJbbQte7ljMRoXm917AbntqTGOzdTu+vP3KOOzoC70HQ==} @@ -545,8 +542,8 @@ packages: typescript: optional: true - '@edgeandnode/gds@6.7.8': - resolution: {integrity: sha512-2tqMNFAIT5tW2SMxjWGci9bQcLyvzOSeHs9RL6iSe6keTVHfnQCyefnQ58FjCEOhwv32Ki3dulN2xM6TGR6++A==} + '@edgeandnode/gds@6.8.1': + resolution: {integrity: sha512-gpiY1ramhJA9HxNjYBG+Y/kNU21+ENE1Xi4Pov0c09sGq2mvvQB/Qwj6DyoYKsCoyUQzkYI4VQJoYS9iEZLBkQ==} peerDependencies: '@emotion/react': ^11 dayjs: ^1.11 @@ -558,12 +555,12 @@ packages: next: optional: true - '@edgeandnode/go@10.3.12': - resolution: {integrity: sha512-6B+Fo9TNYxqdrJ/cmsn9arhcxCTyz9rUPaXsw9dxDjJB5KMciIFphj5RH3BGzF27kJEydDHEaqLKQmyUsWEQeg==} + '@edgeandnode/go@10.4.1': + resolution: {integrity: sha512-/q9rkXkiFJ6aQClmxGdpoFQ7TttwvaRhD2XKXW37gPAqlH4NYufxJU7rdox7L8JxFoPkJnyoixGUiFsQhF9V0A==} peerDependencies: '@edgeandnode/common': ^7.0.4 '@edgeandnode/ens': ^2.3.1 - '@edgeandnode/gds': ^6.7.8 + '@edgeandnode/gds': ^6.8.1 '@emotion/react': ^11 '@tanstack/react-query': ^5 graphql: '>=16.9' @@ -576,11 +573,11 @@ packages: next: optional: true - '@emnapi/core@1.7.0': - resolution: {integrity: sha512-pJdKGq/1iquWYtv1RRSljZklxHCOCAJFJrImO5ZLKPJVJlVUcs8yFwNQlqS0Lo8xT1VAXXTCZocF9n26FWEKsw==} + '@emnapi/core@1.7.1': + resolution: {integrity: sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==} - '@emnapi/runtime@1.7.0': - resolution: {integrity: sha512-oAYoQnCYaQZKVS53Fq23ceWMRxq5EhQsE0x0RdQ55jT7wagMu5k+fS39v1fiSLrtrLQlXwVINenqhLMtTrV/1Q==} + '@emnapi/runtime@1.7.1': + resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==} '@emnapi/wasi-threads@1.1.0': resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} @@ -638,8 +635,8 @@ packages: '@ensdomains/address-encoder@1.0.0-rc.3': resolution: {integrity: sha512-8o6zH69rObIqDY4PusEWuN9jvVOct+9jj9AOPO7ifc3ev8nmsly0e8TE1sHkhk0iKFbd3DlSsUnJ+yuRWmdLCQ==} - '@ensdomains/address-encoder@1.1.1': - resolution: {integrity: sha512-yg7s+suCuKRhaGsgLu57W/jxIs/Lnqs/SU7jT7UwS4ATSnW94jbUCbmyyZ82CQwKsmwaUE8uYvvVb4N6lfz29A==} + '@ensdomains/address-encoder@1.1.3': + resolution: {integrity: sha512-QS4ax0YkA8tsbQcWgBNmLLtb3aG0jsOQtED9SRyX9Ixflt1jDMuC/0i3ONMnNJNG5HTIko0Te4Y1JIGXjNcnUg==} '@ensdomains/content-hash@3.1.0-rc.1': resolution: {integrity: sha512-OzdkXgdFmduzcJKU4KRkkJkQHnm5p7m7FkX8k+bHOEoOIzc0ueGT/Jay4nnb60wNk1wSHRmzY+hHBMpFDiGReg==} @@ -648,8 +645,9 @@ packages: resolution: {integrity: sha512-lSuYnUvUV+kBviQ82XUldtpiE0lA4gWrCilsoCWbTKtc/fH6re9NaTkhbPEy/7OF96MMAG1BDnuoTsfSMAzFBg==} engines: {node: '>=16.8'} - '@ensdomains/ensjs@4.0.2': - resolution: {integrity: sha512-4vDIZEFAa1doNA3H9MppUHxflSDYYPVNyaDbdHLksTa4taq3y4dGpletX67Xea8nxI+cMfjEi4nOzLJmPzRE/g==} + '@ensdomains/ensjs@4.2.0': + resolution: {integrity: sha512-6E8LnKCJ45HySx8PSlepL8VfHJg0PgQRmP1xM8Snu9IcOkSpwI1LEiGOUYfEHX/I7yEglGSYMyGgeiqk0LeCcw==} + engines: {node: '>=22'} peerDependencies: viem: ^2.9.2 @@ -675,8 +673,8 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.27.0': - resolution: {integrity: sha512-KuZrd2hRjz01y5JK9mEBSD3Vj3mbCvemhT466rSuJYeE/hjuBrHfjjcjMdTm/sz7au+++sdbJZJmuBwQLuw68A==} + '@esbuild/aix-ppc64@0.27.1': + resolution: {integrity: sha512-HHB50pdsBX6k47S4u5g/CaLjqS3qwaOVE5ILsq64jyzgMhLuCuZ8rGzM9yhsAjfjkbgUPMzZEPa7DAp7yz6vuA==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] @@ -699,8 +697,8 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.27.0': - resolution: {integrity: sha512-CC3vt4+1xZrs97/PKDkl0yN7w8edvU2vZvAFGD16n9F0Cvniy5qvzRXjfO1l94efczkkQE6g1x0i73Qf5uthOQ==} + '@esbuild/android-arm64@0.27.1': + resolution: {integrity: sha512-45fuKmAJpxnQWixOGCrS+ro4Uvb4Re9+UTieUY2f8AEc+t7d4AaZ6eUJ3Hva7dtrxAAWHtlEFsXFMAgNnGU9uQ==} engines: {node: '>=18'} cpu: [arm64] os: [android] @@ -723,8 +721,8 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.27.0': - resolution: {integrity: sha512-j67aezrPNYWJEOHUNLPj9maeJte7uSMM6gMoxfPC9hOg8N02JuQi/T7ewumf4tNvJadFkvLZMlAq73b9uwdMyQ==} + '@esbuild/android-arm@0.27.1': + resolution: {integrity: sha512-kFqa6/UcaTbGm/NncN9kzVOODjhZW8e+FRdSeypWe6j33gzclHtwlANs26JrupOntlcWmB0u8+8HZo8s7thHvg==} engines: {node: '>=18'} cpu: [arm] os: [android] @@ -747,8 +745,8 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.27.0': - resolution: {integrity: sha512-wurMkF1nmQajBO1+0CJmcN17U4BP6GqNSROP8t0X/Jiw2ltYGLHpEksp9MpoBqkrFR3kv2/te6Sha26k3+yZ9Q==} + '@esbuild/android-x64@0.27.1': + resolution: {integrity: sha512-LBEpOz0BsgMEeHgenf5aqmn/lLNTFXVfoWMUox8CtWWYK9X4jmQzWjoGoNb8lmAYml/tQ/Ysvm8q7szu7BoxRQ==} engines: {node: '>=18'} cpu: [x64] os: [android] @@ -771,8 +769,8 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.27.0': - resolution: {integrity: sha512-uJOQKYCcHhg07DL7i8MzjvS2LaP7W7Pn/7uA0B5S1EnqAirJtbyw4yC5jQ5qcFjHK9l6o/MX9QisBg12kNkdHg==} + '@esbuild/darwin-arm64@0.27.1': + resolution: {integrity: sha512-veg7fL8eMSCVKL7IW4pxb54QERtedFDfY/ASrumK/SbFsXnRazxY4YykN/THYqFnFwJ0aVjiUrVG2PwcdAEqQQ==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] @@ -795,8 +793,8 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.27.0': - resolution: {integrity: sha512-8mG6arH3yB/4ZXiEnXof5MK72dE6zM9cDvUcPtxhUZsDjESl9JipZYW60C3JGreKCEP+p8P/72r69m4AZGJd5g==} + '@esbuild/darwin-x64@0.27.1': + resolution: {integrity: sha512-+3ELd+nTzhfWb07Vol7EZ+5PTbJ/u74nC6iv4/lwIU99Ip5uuY6QoIf0Hn4m2HoV0qcnRivN3KSqc+FyCHjoVQ==} engines: {node: '>=18'} cpu: [x64] os: [darwin] @@ -819,8 +817,8 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.27.0': - resolution: {integrity: sha512-9FHtyO988CwNMMOE3YIeci+UV+x5Zy8fI2qHNpsEtSF83YPBmE8UWmfYAQg6Ux7Gsmd4FejZqnEUZCMGaNQHQw==} + '@esbuild/freebsd-arm64@0.27.1': + resolution: {integrity: sha512-/8Rfgns4XD9XOSXlzUDepG8PX+AVWHliYlUkFI3K3GB6tqbdjYqdhcb4BKRd7C0BhZSoaCxhv8kTcBrcZWP+xg==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] @@ -843,8 +841,8 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.27.0': - resolution: {integrity: sha512-zCMeMXI4HS/tXvJz8vWGexpZj2YVtRAihHLk1imZj4efx1BQzN76YFeKqlDr3bUWI26wHwLWPd3rwh6pe4EV7g==} + '@esbuild/freebsd-x64@0.27.1': + resolution: {integrity: sha512-GITpD8dK9C+r+5yRT/UKVT36h/DQLOHdwGVwwoHidlnA168oD3uxA878XloXebK4Ul3gDBBIvEdL7go9gCUFzQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] @@ -867,8 +865,8 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.27.0': - resolution: {integrity: sha512-AS18v0V+vZiLJyi/4LphvBE+OIX682Pu7ZYNsdUHyUKSoRwdnOsMf6FDekwoAFKej14WAkOef3zAORJgAtXnlQ==} + '@esbuild/linux-arm64@0.27.1': + resolution: {integrity: sha512-W9//kCrh/6in9rWIBdKaMtuTTzNj6jSeG/haWBADqLLa9P8O5YSRDzgD5y9QBok4AYlzS6ARHifAb75V6G670Q==} engines: {node: '>=18'} cpu: [arm64] os: [linux] @@ -891,8 +889,8 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.27.0': - resolution: {integrity: sha512-t76XLQDpxgmq2cNXKTVEB7O7YMb42atj2Re2Haf45HkaUpjM2J0UuJZDuaGbPbamzZ7bawyGFUkodL+zcE+jvQ==} + '@esbuild/linux-arm@0.27.1': + resolution: {integrity: sha512-ieMID0JRZY/ZeCrsFQ3Y3NlHNCqIhTprJfDgSB3/lv5jJZ8FX3hqPyXWhe+gvS5ARMBJ242PM+VNz/ctNj//eA==} engines: {node: '>=18'} cpu: [arm] os: [linux] @@ -915,8 +913,8 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.27.0': - resolution: {integrity: sha512-Mz1jxqm/kfgKkc/KLHC5qIujMvnnarD9ra1cEcrs7qshTUSksPihGrWHVG5+osAIQ68577Zpww7SGapmzSt4Nw==} + '@esbuild/linux-ia32@0.27.1': + resolution: {integrity: sha512-VIUV4z8GD8rtSVMfAj1aXFahsi/+tcoXXNYmXgzISL+KB381vbSTNdeZHHHIYqFyXcoEhu9n5cT+05tRv13rlw==} engines: {node: '>=18'} cpu: [ia32] os: [linux] @@ -939,8 +937,8 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.27.0': - resolution: {integrity: sha512-QbEREjdJeIreIAbdG2hLU1yXm1uu+LTdzoq1KCo4G4pFOLlvIspBm36QrQOar9LFduavoWX2msNFAAAY9j4BDg==} + '@esbuild/linux-loong64@0.27.1': + resolution: {integrity: sha512-l4rfiiJRN7sTNI//ff65zJ9z8U+k6zcCg0LALU5iEWzY+a1mVZ8iWC1k5EsNKThZ7XCQ6YWtsZ8EWYm7r1UEsg==} engines: {node: '>=18'} cpu: [loong64] os: [linux] @@ -963,8 +961,8 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.27.0': - resolution: {integrity: sha512-sJz3zRNe4tO2wxvDpH/HYJilb6+2YJxo/ZNbVdtFiKDufzWq4JmKAiHy9iGoLjAV7r/W32VgaHGkk35cUXlNOg==} + '@esbuild/linux-mips64el@0.27.1': + resolution: {integrity: sha512-U0bEuAOLvO/DWFdygTHWY8C067FXz+UbzKgxYhXC0fDieFa0kDIra1FAhsAARRJbvEyso8aAqvPdNxzWuStBnA==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] @@ -987,8 +985,8 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.27.0': - resolution: {integrity: sha512-z9N10FBD0DCS2dmSABDBb5TLAyF1/ydVb+N4pi88T45efQ/w4ohr/F/QYCkxDPnkhkp6AIpIcQKQ8F0ANoA2JA==} + '@esbuild/linux-ppc64@0.27.1': + resolution: {integrity: sha512-NzdQ/Xwu6vPSf/GkdmRNsOfIeSGnh7muundsWItmBsVpMoNPVpM61qNzAVY3pZ1glzzAxLR40UyYM23eaDDbYQ==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] @@ -1011,8 +1009,8 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.27.0': - resolution: {integrity: sha512-pQdyAIZ0BWIC5GyvVFn5awDiO14TkT/19FTmFcPdDec94KJ1uZcmFs21Fo8auMXzD4Tt+diXu1LW1gHus9fhFQ==} + '@esbuild/linux-riscv64@0.27.1': + resolution: {integrity: sha512-7zlw8p3IApcsN7mFw0O1Z1PyEk6PlKMu18roImfl3iQHTnr/yAfYv6s4hXPidbDoI2Q0pW+5xeoM4eTCC0UdrQ==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] @@ -1035,8 +1033,8 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.27.0': - resolution: {integrity: sha512-hPlRWR4eIDDEci953RI1BLZitgi5uqcsjKMxwYfmi4LcwyWo2IcRP+lThVnKjNtk90pLS8nKdroXYOqW+QQH+w==} + '@esbuild/linux-s390x@0.27.1': + resolution: {integrity: sha512-cGj5wli+G+nkVQdZo3+7FDKC25Uh4ZVwOAK6A06Hsvgr8WqBBuOy/1s+PUEd/6Je+vjfm6stX0kmib5b/O2Ykw==} engines: {node: '>=18'} cpu: [s390x] os: [linux] @@ -1059,8 +1057,8 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.27.0': - resolution: {integrity: sha512-1hBWx4OUJE2cab++aVZ7pObD6s+DK4mPGpemtnAORBvb5l/g5xFGk0vc0PjSkrDs0XaXj9yyob3d14XqvnQ4gw==} + '@esbuild/linux-x64@0.27.1': + resolution: {integrity: sha512-z3H/HYI9MM0HTv3hQZ81f+AKb+yEoCRlUby1F80vbQ5XdzEMyY/9iNlAmhqiBKw4MJXwfgsh7ERGEOhrM1niMA==} engines: {node: '>=18'} cpu: [x64] os: [linux] @@ -1071,8 +1069,8 @@ packages: cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-arm64@0.27.0': - resolution: {integrity: sha512-6m0sfQfxfQfy1qRuecMkJlf1cIzTOgyaeXaiVaaki8/v+WB+U4hc6ik15ZW6TAllRlg/WuQXxWj1jx6C+dfy3w==} + '@esbuild/netbsd-arm64@0.27.1': + resolution: {integrity: sha512-wzC24DxAvk8Em01YmVXyjl96Mr+ecTPyOuADAvjGg+fyBpGmxmcr2E5ttf7Im8D0sXZihpxzO1isus8MdjMCXQ==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] @@ -1095,8 +1093,8 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.27.0': - resolution: {integrity: sha512-xbbOdfn06FtcJ9d0ShxxvSn2iUsGd/lgPIO2V3VZIPDbEaIj1/3nBBe1AwuEZKXVXkMmpr6LUAgMkLD/4D2PPA==} + '@esbuild/netbsd-x64@0.27.1': + resolution: {integrity: sha512-1YQ8ybGi2yIXswu6eNzJsrYIGFpnlzEWRl6iR5gMgmsrR0FcNoV1m9k9sc3PuP5rUBLshOZylc9nqSgymI+TYg==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] @@ -1107,8 +1105,8 @@ packages: cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-arm64@0.27.0': - resolution: {integrity: sha512-fWgqR8uNbCQ/GGv0yhzttj6sU/9Z5/Sv/VGU3F5OuXK6J6SlriONKrQ7tNlwBrJZXRYk5jUhuWvF7GYzGguBZQ==} + '@esbuild/openbsd-arm64@0.27.1': + resolution: {integrity: sha512-5Z+DzLCrq5wmU7RDaMDe2DVXMRm2tTDvX2KU14JJVBN2CT/qov7XVix85QoJqHltpvAOZUAc3ndU56HSMWrv8g==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] @@ -1131,8 +1129,8 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.27.0': - resolution: {integrity: sha512-aCwlRdSNMNxkGGqQajMUza6uXzR/U0dIl1QmLjPtRbLOx3Gy3otfFu/VjATy4yQzo9yFDGTxYDo1FfAD9oRD2A==} + '@esbuild/openbsd-x64@0.27.1': + resolution: {integrity: sha512-Q73ENzIdPF5jap4wqLtsfh8YbYSZ8Q0wnxplOlZUOyZy7B4ZKW8DXGWgTCZmF8VWD7Tciwv5F4NsRf6vYlZtqg==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] @@ -1143,8 +1141,8 @@ packages: cpu: [arm64] os: [openharmony] - '@esbuild/openharmony-arm64@0.27.0': - resolution: {integrity: sha512-nyvsBccxNAsNYz2jVFYwEGuRRomqZ149A39SHWk4hV0jWxKM0hjBPm3AmdxcbHiFLbBSwG6SbpIcUbXjgyECfA==} + '@esbuild/openharmony-arm64@0.27.1': + resolution: {integrity: sha512-ajbHrGM/XiK+sXM0JzEbJAen+0E+JMQZ2l4RR4VFwvV9JEERx+oxtgkpoKv1SevhjavK2z2ReHk32pjzktWbGg==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] @@ -1167,8 +1165,8 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.27.0': - resolution: {integrity: sha512-Q1KY1iJafM+UX6CFEL+F4HRTgygmEW568YMqDA5UV97AuZSm21b7SXIrRJDwXWPzr8MGr75fUZPV67FdtMHlHA==} + '@esbuild/sunos-x64@0.27.1': + resolution: {integrity: sha512-IPUW+y4VIjuDVn+OMzHc5FV4GubIwPnsz6ubkvN8cuhEqH81NovB53IUlrlBkPMEPxvNnf79MGBoz8rZ2iW8HA==} engines: {node: '>=18'} cpu: [x64] os: [sunos] @@ -1191,8 +1189,8 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.27.0': - resolution: {integrity: sha512-W1eyGNi6d+8kOmZIwi/EDjrL9nxQIQ0MiGqe/AWc6+IaHloxHSGoeRgDRKHFISThLmsewZ5nHFvGFWdBYlgKPg==} + '@esbuild/win32-arm64@0.27.1': + resolution: {integrity: sha512-RIVRWiljWA6CdVu8zkWcRmGP7iRRIIwvhDKem8UMBjPql2TXM5PkDVvvrzMtj1V+WFPB4K7zkIGM7VzRtFkjdg==} engines: {node: '>=18'} cpu: [arm64] os: [win32] @@ -1215,8 +1213,8 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.27.0': - resolution: {integrity: sha512-30z1aKL9h22kQhilnYkORFYt+3wp7yZsHWus+wSKAJR8JtdfI76LJ4SBdMsCopTR3z/ORqVu5L1vtnHZWVj4cQ==} + '@esbuild/win32-ia32@0.27.1': + resolution: {integrity: sha512-2BR5M8CPbptC1AK5JbJT1fWrHLvejwZidKx3UMSF0ecHMa+smhi16drIrCEggkgviBwLYd5nwrFLSl5Kho96RQ==} engines: {node: '>=18'} cpu: [ia32] os: [win32] @@ -1239,8 +1237,8 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.27.0': - resolution: {integrity: sha512-aIitBcjQeyOhMTImhLZmtxfdOcuNRpwlPNmlFKPcHQYPhEssw75Cl1TSXJXpMkzaua9FUetx/4OQKq7eJul5Cg==} + '@esbuild/win32-x64@0.27.1': + resolution: {integrity: sha512-d5X6RMYv6taIymSk8JBP+nxv8DQAMY6A51GPgusqLdK9wBz5wWIXy1KjTck6HnjE9hqJzJRdk+1p/t5soSbCtw==} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -1372,8 +1370,8 @@ packages: resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} engines: {node: '>=14'} - '@figma/code-connect@1.3.8': - resolution: {integrity: sha512-Yn5d8fUEnfYlaQ5PYJUQ6yeLoUuxZQ/yjN4C/1kY4GBjY1DHMOoYsG2M5/EHUBXAf0Q6JQFRX7d3kwa5Nc8svw==} + '@figma/code-connect@1.3.12': + resolution: {integrity: sha512-hQtBHRRCRxGLzlssT+7OwK63p+S+IWsq3tqlwtoYNwA2dp7UyppFA6YR/UTAxZFGrEvPO0Kyc8x/lldI6lvuJw==} engines: {node: '>=18'} hasBin: true @@ -1460,8 +1458,8 @@ packages: '@iconify/types@2.0.0': resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} - '@iconify/utils@3.0.2': - resolution: {integrity: sha512-EfJS0rLfVuRuJRn4psJHtK2A9TqVnkxPpHY6lYHiB9+8eSuudsxbwMiavocG45ujOo6FJ+CIRlRnlOGinzkaGQ==} + '@iconify/utils@3.1.0': + resolution: {integrity: sha512-Zlzem1ZXhI1iHeeERabLNzBHdOa4VhQbqAcOQaMKuTuyZCpwKbC2R4Dd0Zo3g9EAc+Y4fiarO8HIHRAth7+skw==} '@img/sharp-darwin-arm64@0.33.5': resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} @@ -1744,8 +1742,8 @@ packages: '@next/env@13.5.11': resolution: {integrity: sha512-fbb2C7HChgM7CemdCY+y3N1n8pcTKdqtQLbC7/EQtPdLvlMUT9JX/dBYl8MMZAtYG4uVMyPFHXckb68q/NRwqg==} - '@next/env@14.2.33': - resolution: {integrity: sha512-CgVHNZ1fRIlxkLhIX22flAZI/HmpDaZ8vwyJ/B0SDPTBuLZ1PJ+DWMjCHhqnExfmSQzA/PbZi8OAc7PAq2w9IA==} + '@next/env@14.2.35': + resolution: {integrity: sha512-DuhvCtj4t9Gwrx80dmz2F4t/zKQ4ktN8WrMwOuVzkJfBilwAwGr6v16M5eI8yCuZ63H9TTuEU09Iu2HqkzFPVQ==} '@next/eslint-plugin-next@13.4.9': resolution: {integrity: sha512-nDtGpa992tNyAkT/KmSMy7QkHfNZmGCBYhHtafU97DubqxzNdvLsqRtliQ4FU04CysRCtvP2hg8rRC1sAKUTUA==} @@ -1857,36 +1855,36 @@ packages: resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} engines: {node: '>=12.4.0'} - '@nomicfoundation/edr-darwin-arm64@0.12.0-next.14': - resolution: {integrity: sha512-sl0DibKSUOS7JXhUtaQ6FJUY+nk+uq5gx+Fyd9iiqs8awZPNn6KSuvV1EbWCi+yd3mrxgZ/wO8E77C1Dxj4xQA==} + '@nomicfoundation/edr-darwin-arm64@0.12.0-next.16': + resolution: {integrity: sha512-no/8BPVBzVxDGGbDba0zsAxQmVNIq6SLjKzzhCxVKt4tatArXa6+24mr4jXJEmhVBvTNpQsNBO+MMpuEDVaTzQ==} engines: {node: '>= 20'} - '@nomicfoundation/edr-darwin-x64@0.12.0-next.14': - resolution: {integrity: sha512-lfmatc1MSOaw0rDFB+ynnAGz5TWm3hSeY/+zDpPZghMODZelXm4JCqF41CQ6paLsW3X/pXcHM1HUGCUBWeoI/A==} + '@nomicfoundation/edr-darwin-x64@0.12.0-next.16': + resolution: {integrity: sha512-tf36YbcC6po3XYRbi+v0gjwzqg1MvyRqVUujNMXPHgjNWATXNRNOLyjwt2qDn+RD15qtzk70SHVnz9n9mPWzwg==} engines: {node: '>= 20'} - '@nomicfoundation/edr-linux-arm64-gnu@0.12.0-next.14': - resolution: {integrity: sha512-sWun3PhVgat8d4lg1d5MAXSIsFlSMBzvrpMSDFNOU9hPJEclSHbHBMRcarQuGqwm/5ZBzTwCS25u78A+UATTrg==} + '@nomicfoundation/edr-linux-arm64-gnu@0.12.0-next.16': + resolution: {integrity: sha512-Kr6t9icKSaKtPVbb0TjUcbn3XHqXOGIn+KjKKSSpm6542OkL0HyOi06amh6/8CNke9Gf6Lwion8UJ0aGQhnFwA==} engines: {node: '>= 20'} - '@nomicfoundation/edr-linux-arm64-musl@0.12.0-next.14': - resolution: {integrity: sha512-omWKioD8fFp7ayCeSDu2CqvG78+oYw8zdVECDwZVmE0jpszRCsTufNYflWRQnlGqH6GqjEUwq2c3yLxFgOTjFg==} + '@nomicfoundation/edr-linux-arm64-musl@0.12.0-next.16': + resolution: {integrity: sha512-HaStgfxctSg5PYF+6ooDICL1O59KrgM4XEUsIqoRrjrQax9HnMBXcB8eAj+0O52FWiO9FlchBni2dzh4RjQR2g==} engines: {node: '>= 20'} - '@nomicfoundation/edr-linux-x64-gnu@0.12.0-next.14': - resolution: {integrity: sha512-vk0s4SaC7s1wa98W24a4zqunTK/yIcSEnsSLRM/Nl+JJs6iqS8tvmnh/BbFINORMBJ065OWc10qw2Lsbu/rxtg==} + '@nomicfoundation/edr-linux-x64-gnu@0.12.0-next.16': + resolution: {integrity: sha512-8JPTxEZkwOPTgnN4uTWut9ze9R8rp7+T4IfmsKK9i+lDtdbJIxkrFY275YHG2BEYLd7Y5jTa/I4nC74ZpTAvpA==} engines: {node: '>= 20'} - '@nomicfoundation/edr-linux-x64-musl@0.12.0-next.14': - resolution: {integrity: sha512-/xKQD6c2RXQBIb30iTeh/NrMdYvHs6Nd+2UXS6wxlfX7GzRPOkpVDiDGD7Sda82JI459KH67dADOD6CpX8cpHQ==} + '@nomicfoundation/edr-linux-x64-musl@0.12.0-next.16': + resolution: {integrity: sha512-KugTrq3iHukbG64DuCYg8uPgiBtrrtX4oZSLba5sjocp0Ul6WWI1FeP1Qule+vClUrHSpJ+wR1G6SE7G0lyS/Q==} engines: {node: '>= 20'} - '@nomicfoundation/edr-win32-x64-msvc@0.12.0-next.14': - resolution: {integrity: sha512-GZcyGdOoLWnUtfPU+6B1vUi4fwf3bouSRf3xuKFHz3p/WNhpDK+8Esq3UmOmYAZWRgFT0ZR6XUk9H2owGDTVvQ==} + '@nomicfoundation/edr-win32-x64-msvc@0.12.0-next.16': + resolution: {integrity: sha512-Idy0ZjurxElfSmepUKXh6QdptLbW5vUNeIaydvqNogWoTbkJIM6miqZd9lXUy1TYxY7G4Rx5O50c52xc4pFwXQ==} engines: {node: '>= 20'} - '@nomicfoundation/edr@0.12.0-next.14': - resolution: {integrity: sha512-MGHY2x7JaNdkqlQxFBYoM7Miw2EqsQrI3ReVZMwLP5mULSRTAOnt3hCw6cnjXxGi991HnejNAedJofke6OdqqA==} + '@nomicfoundation/edr@0.12.0-next.16': + resolution: {integrity: sha512-bBL/nHmQwL1WCveALwg01VhJcpVVklJyunG1d/bhJbHgbjzAn6kohVJc7A6gFZegw+Rx38vdxpBkeCDjAEprzw==} engines: {node: '>= 20'} '@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.2': @@ -3016,113 +3014,113 @@ packages: resolution: {integrity: sha512-FqALmHI8D4o6lk/LRWDnhw95z5eO+eAa6ORjVg09YRR7BkcM6oPHU9uyC0gtQG5vpFLvgpeU4+zEAz2H8APHNw==} engines: {node: '>= 10'} - '@rollup/rollup-android-arm-eabi@4.53.2': - resolution: {integrity: sha512-yDPzwsgiFO26RJA4nZo8I+xqzh7sJTZIWQOxn+/XOdPE31lAvLIYCKqjV+lNH/vxE2L2iH3plKxDCRK6i+CwhA==} + '@rollup/rollup-android-arm-eabi@4.53.3': + resolution: {integrity: sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.53.2': - resolution: {integrity: sha512-k8FontTxIE7b0/OGKeSN5B6j25EuppBcWM33Z19JoVT7UTXFSo3D9CdU39wGTeb29NO3XxpMNauh09B+Ibw+9g==} + '@rollup/rollup-android-arm64@4.53.3': + resolution: {integrity: sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.53.2': - resolution: {integrity: sha512-A6s4gJpomNBtJ2yioj8bflM2oogDwzUiMl2yNJ2v9E7++sHrSrsQ29fOfn5DM/iCzpWcebNYEdXpaK4tr2RhfQ==} + '@rollup/rollup-darwin-arm64@4.53.3': + resolution: {integrity: sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.53.2': - resolution: {integrity: sha512-e6XqVmXlHrBlG56obu9gDRPW3O3hLxpwHpLsBJvuI8qqnsrtSZ9ERoWUXtPOkY8c78WghyPHZdmPhHLWNdAGEw==} + '@rollup/rollup-darwin-x64@4.53.3': + resolution: {integrity: sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.53.2': - resolution: {integrity: sha512-v0E9lJW8VsrwPux5Qe5CwmH/CF/2mQs6xU1MF3nmUxmZUCHazCjLgYvToOk+YuuUqLQBio1qkkREhxhc656ViA==} + '@rollup/rollup-freebsd-arm64@4.53.3': + resolution: {integrity: sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.53.2': - resolution: {integrity: sha512-ClAmAPx3ZCHtp6ysl4XEhWU69GUB1D+s7G9YjHGhIGCSrsg00nEGRRZHmINYxkdoJehde8VIsDC5t9C0gb6yqA==} + '@rollup/rollup-freebsd-x64@4.53.3': + resolution: {integrity: sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.53.2': - resolution: {integrity: sha512-EPlb95nUsz6Dd9Qy13fI5kUPXNSljaG9FiJ4YUGU1O/Q77i5DYFW5KR8g1OzTcdZUqQQ1KdDqsTohdFVwCwjqg==} + '@rollup/rollup-linux-arm-gnueabihf@4.53.3': + resolution: {integrity: sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.53.2': - resolution: {integrity: sha512-BOmnVW+khAUX+YZvNfa0tGTEMVVEerOxN0pDk2E6N6DsEIa2Ctj48FOMfNDdrwinocKaC7YXUZ1pHlKpnkja/Q==} + '@rollup/rollup-linux-arm-musleabihf@4.53.3': + resolution: {integrity: sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.53.2': - resolution: {integrity: sha512-Xt2byDZ+6OVNuREgBXr4+CZDJtrVso5woFtpKdGPhpTPHcNG7D8YXeQzpNbFRxzTVqJf7kvPMCub/pcGUWgBjA==} + '@rollup/rollup-linux-arm64-gnu@4.53.3': + resolution: {integrity: sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.53.2': - resolution: {integrity: sha512-+LdZSldy/I9N8+klim/Y1HsKbJ3BbInHav5qE9Iy77dtHC/pibw1SR/fXlWyAk0ThnpRKoODwnAuSjqxFRDHUQ==} + '@rollup/rollup-linux-arm64-musl@4.53.3': + resolution: {integrity: sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loong64-gnu@4.53.2': - resolution: {integrity: sha512-8ms8sjmyc1jWJS6WdNSA23rEfdjWB30LH8Wqj0Cqvv7qSHnvw6kgMMXRdop6hkmGPlyYBdRPkjJnj3KCUHV/uQ==} + '@rollup/rollup-linux-loong64-gnu@4.53.3': + resolution: {integrity: sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-ppc64-gnu@4.53.2': - resolution: {integrity: sha512-3HRQLUQbpBDMmzoxPJYd3W6vrVHOo2cVW8RUo87Xz0JPJcBLBr5kZ1pGcQAhdZgX9VV7NbGNipah1omKKe23/g==} + '@rollup/rollup-linux-ppc64-gnu@4.53.3': + resolution: {integrity: sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.53.2': - resolution: {integrity: sha512-fMjKi+ojnmIvhk34gZP94vjogXNNUKMEYs+EDaB/5TG/wUkoeua7p7VCHnE6T2Tx+iaghAqQX8teQzcvrYpaQA==} + '@rollup/rollup-linux-riscv64-gnu@4.53.3': + resolution: {integrity: sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.53.2': - resolution: {integrity: sha512-XuGFGU+VwUUV5kLvoAdi0Wz5Xbh2SrjIxCtZj6Wq8MDp4bflb/+ThZsVxokM7n0pcbkEr2h5/pzqzDYI7cCgLQ==} + '@rollup/rollup-linux-riscv64-musl@4.53.3': + resolution: {integrity: sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.53.2': - resolution: {integrity: sha512-w6yjZF0P+NGzWR3AXWX9zc0DNEGdtvykB03uhonSHMRa+oWA6novflo2WaJr6JZakG2ucsyb+rvhrKac6NIy+w==} + '@rollup/rollup-linux-s390x-gnu@4.53.3': + resolution: {integrity: sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.53.2': - resolution: {integrity: sha512-yo8d6tdfdeBArzC7T/PnHd7OypfI9cbuZzPnzLJIyKYFhAQ8SvlkKtKBMbXDxe1h03Rcr7u++nFS7tqXz87Gtw==} + '@rollup/rollup-linux-x64-gnu@4.53.3': + resolution: {integrity: sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.53.2': - resolution: {integrity: sha512-ah59c1YkCxKExPP8O9PwOvs+XRLKwh/mV+3YdKqQ5AMQ0r4M4ZDuOrpWkUaqO7fzAHdINzV9tEVu8vNw48z0lA==} + '@rollup/rollup-linux-x64-musl@4.53.3': + resolution: {integrity: sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==} cpu: [x64] os: [linux] - '@rollup/rollup-openharmony-arm64@4.53.2': - resolution: {integrity: sha512-4VEd19Wmhr+Zy7hbUsFZ6YXEiP48hE//KPLCSVNY5RMGX2/7HZ+QkN55a3atM1C/BZCGIgqN+xrVgtdak2S9+A==} + '@rollup/rollup-openharmony-arm64@4.53.3': + resolution: {integrity: sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.53.2': - resolution: {integrity: sha512-IlbHFYc/pQCgew/d5fslcy1KEaYVCJ44G8pajugd8VoOEI8ODhtb/j8XMhLpwHCMB3yk2J07ctup10gpw2nyMA==} + '@rollup/rollup-win32-arm64-msvc@4.53.3': + resolution: {integrity: sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.53.2': - resolution: {integrity: sha512-lNlPEGgdUfSzdCWU176ku/dQRnA7W+Gp8d+cWv73jYrb8uT7HTVVxq62DUYxjbaByuf1Yk0RIIAbDzp+CnOTFg==} + '@rollup/rollup-win32-ia32-msvc@4.53.3': + resolution: {integrity: sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.53.2': - resolution: {integrity: sha512-S6YojNVrHybQis2lYov1sd+uj7K0Q05NxHcGktuMMdIQ2VixGwAfbJ23NnlvvVV1bdpR2m5MsNBViHJKcA4ADw==} + '@rollup/rollup-win32-x64-gnu@4.53.3': + resolution: {integrity: sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.53.2': - resolution: {integrity: sha512-k+/Rkcyx//P6fetPoLMb8pBeqJBNGx81uuf7iljX9++yNBVRDQgD04L+SVXmXmh5ZP4/WOp4mWF0kmi06PW2tA==} + '@rollup/rollup-win32-x64-msvc@4.53.3': + resolution: {integrity: sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ==} cpu: [x64] os: [win32] @@ -3187,32 +3185,32 @@ packages: '@shikijs/core@1.29.2': resolution: {integrity: sha512-vju0lY9r27jJfOY4Z7+Rt/nIOjzJpZ3y+nYpqtUZInVoXQ/TJZcfGnNOGnKjFdVZb8qexiCuSlZRKcGfhhTTZQ==} - '@shikijs/core@3.15.0': - resolution: {integrity: sha512-8TOG6yG557q+fMsSVa8nkEDOZNTSxjbbR8l6lF2gyr6Np+jrPlslqDxQkN6rMXCECQ3isNPZAGszAfYoJOPGlg==} + '@shikijs/core@3.20.0': + resolution: {integrity: sha512-f2ED7HYV4JEk827mtMDwe/yQ25pRiXZmtHjWF8uzZKuKiEsJR7Ce1nuQ+HhV9FzDcbIo4ObBCD9GPTzNuy9S1g==} '@shikijs/engine-javascript@1.29.2': resolution: {integrity: sha512-iNEZv4IrLYPv64Q6k7EPpOCE/nuvGiKl7zxdq0WFuRPF5PAE9PRo2JGq/d8crLusM59BRemJ4eOqrFrC4wiQ+A==} - '@shikijs/engine-javascript@3.15.0': - resolution: {integrity: sha512-ZedbOFpopibdLmvTz2sJPJgns8Xvyabe2QbmqMTz07kt1pTzfEvKZc5IqPVO/XFiEbbNyaOpjPBkkr1vlwS+qg==} + '@shikijs/engine-javascript@3.20.0': + resolution: {integrity: sha512-OFx8fHAZuk7I42Z9YAdZ95To6jDePQ9Rnfbw9uSRTSbBhYBp1kEOKv/3jOimcj3VRUKusDYM6DswLauwfhboLg==} '@shikijs/engine-oniguruma@1.29.2': resolution: {integrity: sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA==} - '@shikijs/engine-oniguruma@3.15.0': - resolution: {integrity: sha512-HnqFsV11skAHvOArMZdLBZZApRSYS4LSztk2K3016Y9VCyZISnlYUYsL2hzlS7tPqKHvNqmI5JSUJZprXloMvA==} + '@shikijs/engine-oniguruma@3.20.0': + resolution: {integrity: sha512-Yx3gy7xLzM0ZOjqoxciHjA7dAt5tyzJE3L4uQoM83agahy+PlW244XJSrmJRSBvGYELDhYXPacD4R/cauV5bzQ==} '@shikijs/langs@1.29.2': resolution: {integrity: sha512-FIBA7N3LZ+223U7cJDUYd5shmciFQlYkFXlkKVaHsCPgfVLiO+e12FmQE6Tf9vuyEsFe3dIl8qGWKXgEHL9wmQ==} - '@shikijs/langs@3.15.0': - resolution: {integrity: sha512-WpRvEFvkVvO65uKYW4Rzxs+IG0gToyM8SARQMtGGsH4GDMNZrr60qdggXrFOsdfOVssG/QQGEl3FnJ3EZ+8w8A==} + '@shikijs/langs@3.20.0': + resolution: {integrity: sha512-le+bssCxcSHrygCWuOrYJHvjus6zhQ2K7q/0mgjiffRbkhM4o1EWu2m+29l0yEsHDbWaWPNnDUTRVVBvBBeKaA==} '@shikijs/themes@1.29.2': resolution: {integrity: sha512-i9TNZlsq4uoyqSbluIcZkmPL9Bfi3djVxRnofUHwvx/h6SRW3cwgBC5SML7vsDcWyukY0eCzVN980rqP6qNl9g==} - '@shikijs/themes@3.15.0': - resolution: {integrity: sha512-8ow2zWb1IDvCKjYb0KiLNrK4offFdkfNVPXb1OZykpLCzRU6j+efkY+Y7VQjNlNFXonSw+4AOdGYtmqykDbRiQ==} + '@shikijs/themes@3.20.0': + resolution: {integrity: sha512-U1NSU7Sl26Q7ErRvJUouArxfM2euWqq1xaSrbqMu2iqa+tSp0D1Yah8216sDYbdDHw4C8b75UpE65eWorm2erQ==} '@shikijs/twoslash@1.29.2': resolution: {integrity: sha512-2S04ppAEa477tiaLfGEn1QJWbZUmbk8UoPbAEw4PifsrxkBXtAtOflIZJNtuCwz8ptc/TPxy7CO7gW4Uoi6o/g==} @@ -3220,8 +3218,8 @@ packages: '@shikijs/types@1.29.2': resolution: {integrity: sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw==} - '@shikijs/types@3.15.0': - resolution: {integrity: sha512-BnP+y/EQnhihgHy4oIAN+6FFtmfTekwOLsQbRw9hOKwqgNy8Bdsjq8B05oAt/ZgvIWWFrshV71ytOrlPfYjIJw==} + '@shikijs/types@3.20.0': + resolution: {integrity: sha512-lhYAATn10nkZcBQ0BlzSbJA3wcmL5MXUUF8d2Zzon6saZDlToKaiRX60n2+ZaHJCmXEcZRWNzn+k9vplr8Jhsw==} '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} @@ -3293,22 +3291,22 @@ packages: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - '@tanstack/query-core@5.90.8': - resolution: {integrity: sha512-4E0RP/0GJCxSNiRF2kAqE/LQkTJVlL/QNU7gIJSptaseV9HP6kOuA+N11y4bZKZxa3QopK3ZuewwutHx6DqDXQ==} + '@tanstack/query-core@5.90.12': + resolution: {integrity: sha512-T1/8t5DhV/SisWjDnaiU2drl6ySvsHj1bHBCWNXd+/T+Hh1cf6JodyEYMd5sgwm+b/mETT4EV3H+zCVczCU5hg==} - '@tanstack/react-query@5.90.8': - resolution: {integrity: sha512-/3b9QGzkf4rE5/miL6tyhldQRlLXzMHcySOm/2Tm2OLEFE9P1ImkH0+OviDBSvyAvtAOJocar5xhd7vxdLi3aQ==} + '@tanstack/react-query@5.90.12': + resolution: {integrity: sha512-graRZspg7EoEaw0a8faiUASCyJrqjKPdqJ9EwuDRUF9mEYJ1YPczI9H+/agJ0mOJkPCJDk0lsz5QTrLZ/jQ2rg==} peerDependencies: react: ^18 || ^19 - '@tanstack/react-virtual@3.13.12': - resolution: {integrity: sha512-Gd13QdxPSukP8ZrkbgS2RwoZseTTbQPLnQEn7HY/rqtM+8Zt95f7xKC7N0EsKs7aoz0WzZ+fditZux+F8EzYxA==} + '@tanstack/react-virtual@3.13.13': + resolution: {integrity: sha512-4o6oPMDvQv+9gMi8rE6gWmsOjtUZUYIJHv7EB+GblyYdi8U6OqLl8rhHWIUZSL1dUU2dPwTdTgybCKf9EjIrQg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - '@tanstack/virtual-core@3.13.12': - resolution: {integrity: sha512-1YBOJfRHV4sXUmWsFSf5rQor4Ss82G8dQWLRbnk3GA4jeP8hQt1hxXh0tmflpC0dz3VgEv/1+qwPyLeWkQuPFA==} + '@tanstack/virtual-core@3.13.13': + resolution: {integrity: sha512-uQFoSdKKf5S8k51W5t7b2qpfkyIbdHMzAn+AMQvHPxKUPeo1SsGaA4JRISQT87jm28b7z8OEqPcg1IOZagQHcA==} '@theguild/remark-mermaid@0.1.3': resolution: {integrity: sha512-2FjVlaaKXK7Zj7UJAgOVTyaahn/3/EAfqYhyXg0BfDBVUl+lXcoIWRaxzqfnDr2rv8ax6GsC5mNh6hAaT86PDw==} @@ -3499,8 +3497,8 @@ packages: '@types/katex@0.16.7': resolution: {integrity: sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==} - '@types/lodash@4.17.20': - resolution: {integrity: sha512-H3MHACvFUEiujabxhaI/ImO6gUrd8oOurg7LQtS7mbwIXA/cUqWrvBsaeJ23aZEPk1TAYkurjfMbSELfoCXlGA==} + '@types/lodash@4.17.21': + resolution: {integrity: sha512-FOvQ0YPD5NOfPgMzJihoT+Za5pdkDJWcbpuj1DjaKZIr/gxodQjY/uWEFlTNqW2ugXHUiL8lRQgw63dzKHZdeQ==} '@types/mdast@4.0.4': resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} @@ -3518,8 +3516,8 @@ packages: '@types/nlcst@2.0.3': resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==} - '@types/node@22.19.1': - resolution: {integrity: sha512-LCCV0HdSZZZb34qifBsyWlUmok6W7ouER+oQIGBScS8EsZsQbrtFTUrDX4hOl+CS6p7cnNC4td+qrSVGSCTUfQ==} + '@types/node@22.19.2': + resolution: {integrity: sha512-LPM2G3Syo1GLzXLGJAKdqoU35XvrWzGJ21/7sgZTUpbkBaOasTj8tjwn6w+hCkqaa1TfJ/w67rJSwYItlJ2mYw==} '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} @@ -3541,8 +3539,8 @@ packages: '@types/semver@7.7.1': resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==} - '@types/styled-system@5.1.24': - resolution: {integrity: sha512-bItgWb7lQsynxuSoyfPj2LZCNB9aeRCv70NYvMKZN1xbcQ/j6IS2PWsIlQqkIzDQgHbdcrRbWEIg9vKlbbgnGw==} + '@types/styled-system@5.1.25': + resolution: {integrity: sha512-B1oyjE4oeAbVnkigcB0WqU2gPFuTwLV/KkLa/uJZWFB9JWVKq1Fs0QwodZXZ9Sq6cb9ngY4kDqRY/dictIchjA==} '@types/supports-color@8.1.3': resolution: {integrity: sha512-Hy6UMpxhE3j1tLpl27exp1XqHD7n8chAiNPzWfz16LPZoMMoSc4dzLl6w9qijkEb/r5O1ozdu1CWGA2L83ZeZg==} @@ -3630,8 +3628,8 @@ packages: resolution: {integrity: sha512-f6UIliwBbRsgVLxIaBANF6w09tYqc6Y/qXdsrbEmXHyFA7ILiKrIwRFXe1yOg8M3cksgVsO9N7yuL2DdCGQKBA==} engines: {node: '>=10'} - '@uniswap/sdk-core@7.9.0': - resolution: {integrity: sha512-HHUFNK3LMi4KMQCAiHkdUyL62g/nrZLvNT44CY8RN4p8kWO6XYWzqdQt6OcjCsIbhMZ/Ifhe6Py5oOoccg/jUQ==} + '@uniswap/sdk-core@7.10.0': + resolution: {integrity: sha512-tT0yYqcUxqFknVrcD97yFO2MHd810u4zK5IvGZiH2CpOwC82yeb5OSOIyePcP3iEl4V1Vp0gIhTzIL1TlALm2g==} engines: {node: '>=10'} '@uniswap/swap-router-contracts@1.3.1': @@ -3792,13 +3790,13 @@ packages: '@vitest/utils@2.1.9': resolution: {integrity: sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ==} - '@web3icons/common@0.11.27': - resolution: {integrity: sha512-CWPzmBwp4WLuQRyfwso/pYaObX1Dem1TDEJiY3HJ9fOiRU2qtU9F6BQiumKpXD6PPUBNF7BAGUXafIxyZj6Rqg==} + '@web3icons/common@0.11.35': + resolution: {integrity: sha512-fBJOsmld+HYl1MJHM01FXAGPuIVPU5zbnBBCb0BDVtwtYpY4qi61GacBNtHd1v2+hC8ST6wRNgfeJIDTao5C/A==} peerDependencies: typescript: ^5.0.0 - '@web3icons/react@4.0.35': - resolution: {integrity: sha512-bKu/5Q58a3b22r3nR3yCchcZAXpAv0sS4s3Ja7CoNeTaaPLbAEYp5Md1fSWdCyutI8ia5VWDxPFvK3/xo4uyrA==} + '@web3icons/react@4.1.6': + resolution: {integrity: sha512-yR4rnjk9BG8Okaf9gMycajvZUHdLHcrKbLno6L1WRBh7Rsh+VKaAly1sY23C4iaa4rl0RsuwO7PHBsgBcnYb4Q==} peerDependencies: react: ^18.0.0 || ^19.0.0 @@ -3836,8 +3834,8 @@ packages: zod: optional: true - abitype@1.1.1: - resolution: {integrity: sha512-Loe5/6tAgsBukY95eGaPSDmQHIjRZYQq8PB1MpsNccDIK8WiV+Uw6WzaIXipvaxTEL2yEB0OpEaQv3gs8pkS9Q==} + abitype@1.2.2: + resolution: {integrity: sha512-4DOIMWscIB3j8hboLAUjLZCE8TMLdgecBpHFumfU4PdO/C1SBCVx4Nu1wPYXaL2iK8B0Jk3tiwnDLCpUtm3fZg==} peerDependencies: typescript: '>=5.0.4' zod: ^3.22.0 || ^4.0.0 @@ -3899,8 +3897,8 @@ packages: ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} - algoliasearch@5.43.0: - resolution: {integrity: sha512-hbkK41JsuGYhk+atBDxlcKxskjDCh3OOEDpdKZPtw+3zucBqhlojRG5e5KtCmByGyYvwZswVeaSWglgLn2fibg==} + algoliasearch@5.46.0: + resolution: {integrity: sha512-7ML6fa2K93FIfifG3GMWhDEwT5qQzPTmoHKCTvhzGEwdbQ4n0yYUWZlLYT75WllTGJCJtNUI0C1ybN4BCegqvg==} engines: {node: '>= 14.0.0'} ansi-align@3.0.1: @@ -4061,8 +4059,8 @@ packages: base64-sol@1.0.1: resolution: {integrity: sha512-ld3cCNMeXt4uJXmLZBHFGMvVpK9KsLVEhPpFRXnvSVAqABKbuNZg/+dsq3NuM+wxFLb/UrVkz7m1ciWmkMfTbg==} - baseline-browser-mapping@2.8.28: - resolution: {integrity: sha512-gYjt7OIqdM0PcttNYP2aVrr2G0bMALkBaoehD4BuRGjAOtipg0b6wHg1yNL+s5zSnLZZrGHOw4IrND8CD+3oIQ==} + baseline-browser-mapping@2.9.7: + resolution: {integrity: sha512-k9xFKplee6KIio3IDbwj+uaCLpqzOwakOgmqzPezM0sFJlFKcg30vk2wOiAJtkTSfx0SSQDSe8q+mWA/fSH5Zg==} hasBin: true bech32@1.1.4: @@ -4116,8 +4114,8 @@ packages: browser-stdout@1.3.1: resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} - browserslist@4.28.0: - resolution: {integrity: sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==} + browserslist@4.28.1: + resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -4172,8 +4170,8 @@ packages: camelize@1.0.1: resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} - caniuse-lite@1.0.30001754: - resolution: {integrity: sha512-x6OeBXueoAceOmotzx3PO4Zpt4rzpeIFsSr6AAePTZxSkXiYDUmpypEl7e2+8NCd9bD7bXjqyef8CJYPC1jfxg==} + caniuse-lite@1.0.30001760: + resolution: {integrity: sha512-7AAMPcueWELt1p3mi13HR/LHH0TJLT11cnwDJEs3xA4+CK/PLKeO9Kl1oru24htkyUKtkGCvAx4ohB0Ttry8Dw==} ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -4276,8 +4274,8 @@ packages: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} - color-convert@3.1.2: - resolution: {integrity: sha512-UNqkvCDXstVck3kdowtOTWROIJQwafjOfXSmddoDrXo4cewMKmusCeF22Q24zvjR8nwWib/3S/dfyzPItPEiJg==} + color-convert@3.1.3: + resolution: {integrity: sha512-fasDH2ont2GqF5HpyO4w0+BcewlhHEZOFn9c1ckZdHpJ56Qb7MHhH/IcJZbBGgvdtwdwNbLvxiBEdg336iA9Sg==} engines: {node: '>=14.6'} color-name@1.1.4: @@ -4290,16 +4288,16 @@ packages: color-string@1.9.1: resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} - color-string@2.1.2: - resolution: {integrity: sha512-RxmjYxbWemV9gKu4zPgiZagUxbH3RQpEIO77XoSSX0ivgABDZ+h8Zuash/EMFLTI4N9QgFPOJ6JQpPZKFxa+dA==} + color-string@2.1.4: + resolution: {integrity: sha512-Bb6Cq8oq0IjDOe8wJmi4JeNn763Xs9cfrBcaylK1tPypWzyoy2G3l90v9k64kjphl/ZJjPIShFztenRomi8WTg==} engines: {node: '>=18'} color@4.2.3: resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} engines: {node: '>=12.5.0'} - color@5.0.2: - resolution: {integrity: sha512-e2hz5BzbUPcYlIRHo8ieAhYgoajrJr+hWoceg6E345TPsATMUKqDgzt8fSXZJJbxfpiPzkWyphz8yn8At7q3fA==} + color@5.0.3: + resolution: {integrity: sha512-ezmVcLR3xAVp8kYOm4GS45ZLLgIE6SPAFoduLr6hTDajwb3KZ2F46gulK3XpcwRFb5KKGCSezCBAY4Dw4HsyXA==} engines: {node: '>=18'} combined-stream@1.0.8: @@ -4345,9 +4343,6 @@ packages: confbox@0.1.8: resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} - confbox@0.2.2: - resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==} - consola@3.4.2: resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} engines: {node: ^14.18.0 || >=16.10.0} @@ -4373,9 +4368,6 @@ packages: resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} engines: {node: '>=10'} - cross-fetch@3.2.0: - resolution: {integrity: sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==} - cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} @@ -4409,9 +4401,6 @@ packages: resolution: {integrity: sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==} engines: {node: '>=18'} - csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - csstype@3.2.3: resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} @@ -4708,8 +4697,8 @@ packages: dom-helpers@5.2.1: resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} - dompurify@3.3.0: - resolution: {integrity: sha512-r+f6MYR1gGN1eJv0TVQbhA7if/U7P87cdPl3HN5rikqaBSBxLiCb/b9O+2eG0cxz0ghyU+mU1QkbsOwERMYlWQ==} + dompurify@3.3.1: + resolution: {integrity: sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q==} dotenv@14.3.2: resolution: {integrity: sha512-vwEppIphpFdvaMCaHfCEv9IgwcxMljMw2TnAQBB4VWPvzXQLTb82jwmdOKzlEVUL3gNFT4l4TPKO+Bn+sqcrVQ==} @@ -4726,8 +4715,8 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - electron-to-chromium@1.5.250: - resolution: {integrity: sha512-/5UMj9IiGDMOFBnN4i7/Ry5onJrAGSbOGo3s9FEKmwobGq6xw832ccET0CE3CkkMBZ8GJSlUIesZofpyurqDXw==} + electron-to-chromium@1.5.267: + resolution: {integrity: sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==} elliptic@6.6.1: resolution: {integrity: sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==} @@ -4769,8 +4758,8 @@ packages: error-stack-parser@1.3.6: resolution: {integrity: sha512-xhuSYd8wLgOXwNgjcPeXMPL/IiiA1Huck+OPvClpJViVNNlJVtM41o+1emp7bPvlCJwCatFX2DWc05/DgfbWzA==} - es-abstract@1.24.0: - resolution: {integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==} + es-abstract@1.24.1: + resolution: {integrity: sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==} engines: {node: '>= 0.4'} es-define-property@1.0.1: @@ -4825,8 +4814,8 @@ packages: engines: {node: '>=18'} hasBin: true - esbuild@0.27.0: - resolution: {integrity: sha512-jd0f4NHbD6cALCyGElNpGAOtWxSq46l9X/sWB0Nzd5er4Kz2YTm+Vl0qKFT9KUJvD8+fiO8AvoHhFvEatfVixA==} + esbuild@0.27.1: + resolution: {integrity: sha512-yY35KZckJJuVVPXpvjgxiCuVEJT67F6zDeVTv4rizyPrfGBUpZQsvmxnN+C371c2esD/hNMjj4tpBhuueLN7aA==} engines: {node: '>=18'} hasBin: true @@ -5041,8 +5030,8 @@ packages: resolution: {integrity: sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==} engines: {node: '>=6'} - expect-type@1.2.2: - resolution: {integrity: sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==} + expect-type@1.3.0: + resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} engines: {node: '>=12.0.0'} exsolve@1.0.8: @@ -5058,8 +5047,8 @@ packages: fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - fast-equals@5.3.3: - resolution: {integrity: sha512-/boTcHZeIAQ2r/tL11voclBHDeP9WPxLt+tyAbVSyyXuUFyh0Tne7gJZTqGbxnvj79TjLdCXLOY7UIPhyG5MTw==} + fast-equals@5.4.0: + resolution: {integrity: sha512-jt2DW/aNFNwke7AUd+Z+e6pz39KO5rzdbbFCg2sGafS4mk13MI7Z8O5z9cADNn5lhGODIgLwug6TZO2ctf7kcw==} engines: {node: '>=6.0.0'} fast-fuzzy@1.12.0: @@ -5078,8 +5067,8 @@ packages: fast-uri@3.1.0: resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} - fast-xml-parser@5.3.2: - resolution: {integrity: sha512-n8v8b6p4Z1sMgqRmqLJm3awW4NX7NkaKPfb3uJIBTSH7Pdvufi3PQ3/lJLQrvxcMYl7JI2jnDO90siPEpD8JBA==} + fast-xml-parser@5.3.3: + resolution: {integrity: sha512-2O3dkPAAC6JavuMm8+4+pgTk+5hoAs+CjZ+sWcQLkX9+/tHRuTkQh/Oaifr8qDmZ8iEHb771Ea6G8CdwkrgvYA==} hasBin: true fastq@1.19.1: @@ -5154,8 +5143,8 @@ packages: resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} engines: {node: '>=14'} - form-data@4.0.4: - resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==} + form-data@4.0.5: + resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} engines: {node: '>= 6'} format@0.2.2: @@ -5168,8 +5157,8 @@ packages: fraction.js@5.3.4: resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==} - framer-motion@12.23.24: - resolution: {integrity: sha512-HMi5HRoRCTou+3fb3h9oTLyJGBxHfW+HnNE25tAXOvVx/IvwMHK0cx7IR4a2ZU6sh3IX1Z+4ts32PcYBOqka8w==} + framer-motion@12.23.26: + resolution: {integrity: sha512-cPcIhgR42xBn1Uj+PzOyheMtZ73H927+uWPDVhUMqxy8UHt6Okavb6xIz9J/phFUHUj0OncR6UvMfJTXoc/LKA==} peerDependencies: '@emotion/is-prop-valid': '*' react: ^18.0.0 || ^19.0.0 @@ -5259,8 +5248,13 @@ packages: glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - glob@10.4.5: - resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + glob@10.5.0: + resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} + hasBin: true + + glob@11.1.0: + resolution: {integrity: sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==} + engines: {node: 20 || >=22} hasBin: true glob@7.1.7: @@ -5280,10 +5274,6 @@ packages: resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} engines: {node: '>=8'} - globals@15.15.0: - resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} - engines: {node: '>=18'} - globalthis@1.0.4: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} @@ -5308,13 +5298,13 @@ packages: graphemesplit@2.6.0: resolution: {integrity: sha512-rG9w2wAfkpg0DILa1pjnjNfucng3usON360shisqIMUBw/87pojcBSrHmeE4UwryAuBih7g8m1oilf5/u8EWdQ==} - graphql-request@6.1.0: - resolution: {integrity: sha512-p+XPfS4q7aIpKVcgmnZKhMNqhltk20hfXtkaIkTfjjmiKMJ5xrt5c743cL03y/K7y1rg3WrIC49xGiEQ4mxdNw==} + graphql-request@7.1.2: + resolution: {integrity: sha512-+XE3iuC55C2di5ZUrB4pjgwe+nIQBuXVIK9J98wrVwojzDW3GMdSBZfxUk8l4j9TieIpjpggclxhNEU9ebGF8w==} peerDependencies: graphql: 14 - 16 - graphql-request@7.3.3: - resolution: {integrity: sha512-I0ZSz53XTpDiQZ0/KGElwfnzIqsdNek/D6tcZgheL8QOVeSbkgE3qG7r1G/MKtnNenWtEjHbsDf2iPlXSWxFtw==} + graphql-request@7.4.0: + resolution: {integrity: sha512-xfr+zFb/QYbs4l4ty0dltqiXIp07U6sl+tOKAb0t50/EnQek6CVVBLjETXi+FghElytvgaAWtIOt3EV7zLzIAQ==} peerDependencies: graphql: 14 - 16 @@ -5340,8 +5330,8 @@ packages: peerDependencies: hardhat: ^2.0.0 - hardhat@2.27.0: - resolution: {integrity: sha512-du7ecjx1/ueAUjvtZhVkJvWytPCjlagG3ZktYTphfzAbc1Flc6sRolw5mhKL/Loub1EIFRaflutM4bdB/YsUUw==} + hardhat@2.27.2: + resolution: {integrity: sha512-2N51AWD3Hg9T+4+A1zmJ70RkJgHzK+JYASrRtSmD3nVsoceYrFxwIJHUucw5fuy7Z9x9JTSMGO5dgCYe7MX8FQ==} hasBin: true peerDependencies: ts-node: '*' @@ -5415,8 +5405,8 @@ packages: hast-util-to-jsx-runtime@2.3.6: resolution: {integrity: sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==} - hast-util-to-parse5@8.0.0: - resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==} + hast-util-to-parse5@8.0.1: + resolution: {integrity: sha512-MlWT6Pjt4CG9lFCjiz4BH7l9wmrMkfkJYCxFwKQic8+RTZgWPuWxwAfjJElsXkex7DJjfSJsQIt931ilUgmwdA==} hast-util-to-string@3.0.1: resolution: {integrity: sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==} @@ -5462,8 +5452,8 @@ packages: html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} - http-errors@2.0.0: - resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + http-errors@2.0.1: + resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} engines: {node: '>= 0.8'} http-proxy-agent@7.0.2: @@ -5530,8 +5520,8 @@ packages: resolution: {integrity: sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - inline-style-parser@0.2.6: - resolution: {integrity: sha512-gtGXVaBdl5mAes3rPcMedEBm12ibjt1kDMFfheul1wUAOVEJW60voNdMVzVkfLN06O7ZaD/rxhfKgtlgtTbMjg==} + inline-style-parser@0.2.7: + resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==} internal-slot@1.1.0: resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} @@ -5764,6 +5754,10 @@ packages: jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + jackspeak@4.1.1: + resolution: {integrity: sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==} + engines: {node: 20 || >=22} + jest-image-snapshot@6.5.1: resolution: {integrity: sha512-xlJFufgfY2Z4DsRsjcnTwxuynvo1bKdhf4OfcEftNuUAK+BwSCUtPmwlBGJhQ0XJXfm9JMAi/4BhQiHbaV8HrA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -5790,8 +5784,8 @@ packages: js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + js-yaml@3.14.2: + resolution: {integrity: sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==} hasBin: true js-yaml@4.1.1: @@ -5853,8 +5847,8 @@ packages: resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} engines: {node: '>=4.0'} - katex@0.16.25: - resolution: {integrity: sha512-woHRUZ/iF23GBP1dkDQMh1QBad9dmr8/PAwNA54VrSOVYgI12MAcE14TqnDdQOdzyEonGzMepYnqBMYdsoAr8Q==} + katex@0.16.27: + resolution: {integrity: sha512-aeQoDkuRWSqQN6nSvVCEFvfXdqo1OQiCmmW1kc9xSdjutPv7BGO7pqY9sQRJpMOGrEdfDgF2TfRXe5eUAD2Waw==} hasBin: true keccak@3.0.4: @@ -5879,9 +5873,6 @@ packages: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} - kolorist@1.8.0: - resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} - langium@3.3.1: resolution: {integrity: sha512-QJv/h939gDpvT+9SiLVlY7tZC3xB2qK57v0J04Sh9wpMb6MP1q8gB21L3WIo8T5P1MSMg3Ep14L7KkDCFG3y4w==} engines: {node: '>=16.0.0'} @@ -5928,10 +5919,6 @@ packages: resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - local-pkg@1.1.2: - resolution: {integrity: sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==} - engines: {node: '>=14'} - locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} @@ -5962,6 +5949,10 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + lru-cache@11.2.4: + resolution: {integrity: sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==} + engines: {node: 20 || >=22} + lru_map@0.3.3: resolution: {integrity: sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==} @@ -6039,8 +6030,8 @@ packages: mdast-util-phrasing@4.1.0: resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} - mdast-util-to-hast@13.2.0: - resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} + mdast-util-to-hast@13.2.1: + resolution: {integrity: sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==} mdast-util-to-markdown@2.1.2: resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} @@ -6059,8 +6050,8 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - mermaid@11.12.1: - resolution: {integrity: sha512-UlIZrRariB11TY1RtTgUWp65tphtBv4CSq7vyS2ZZ2TgoMjs2nloq+wFqxiwcxlhHUvs7DPGgMjs2aeQxz5h9g==} + mermaid@11.12.2: + resolution: {integrity: sha512-n34QPDPEKmaeCG4WDMGy0OT6PSyxKCfy2pJgShP+Qow2KLrvWjclwbc3yXfSIf4BanqWEhQEpngWwNp/XhZt6w==} mhchemparser@4.2.1: resolution: {integrity: sha512-kYmyrCirqJf3zZ9t/0wGgRZ4/ZJw//VwaRVGA75C4nhE60vtnIzhl9J9ndkX/h6hxSN7pjg/cE0VxbnNM+bnDQ==} @@ -6270,8 +6261,8 @@ packages: motion-utils@12.23.6: resolution: {integrity: sha512-eAWoPgr4eFEOFfg2WjIsMoqJTW6Z8MTUCgn/GZ3VRpClWBdnbjryiA3ZSNLyxCTmCQx4RmYX6jX1iWHbenUPNQ==} - motion@12.23.24: - resolution: {integrity: sha512-Rc5E7oe2YZ72N//S3QXGzbnXgqNrTESv8KKxABR20q2FLch9gHLo0JLyYo2hZ238bZ9Gx6cWhj9VO0IgwbMjCw==} + motion@12.23.26: + resolution: {integrity: sha512-Ll8XhVxY8LXMVYTCfme27WH2GjBrCIzY4+ndr5QKxsK+YwCtOi2B/oBi5jcIbik5doXuWT/4KKDOVAZJkeY5VQ==} peerDependencies: '@emotion/is-prop-valid': '*' react: ^18.0.0 || ^19.0.0 @@ -6329,8 +6320,8 @@ packages: peerDependencies: next: '*' - next@14.2.33: - resolution: {integrity: sha512-GiKHLsD00t4ACm1p00VgrI0rUFAC9cRDGReKyERlM57aeEZkOQGcZTpIbsGn0b562FTPJWmYfKwplfO9EaT6ng==} + next@14.2.35: + resolution: {integrity: sha512-KhYd2Hjt/O1/1aZVX3dCwGXM1QmOV4eNM2UTacK5gipDdPN/oHHK/4oVGy7X8GMfPMsUTUEmGlsy0EY1YGAkig==} engines: {node: '>=18.17.0'} hasBin: true peerDependencies: @@ -6361,15 +6352,6 @@ packages: node-addon-api@2.0.2: resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==} - node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - node-gyp-build@4.8.4: resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} hasBin: true @@ -6421,8 +6403,8 @@ packages: numeral@2.0.6: resolution: {integrity: sha512-qaKRmtYPZ5qdw4jWJD6bxEf1FJEqllJrwxCLIm0sQU/A7v2/czigzOb+C2uSiFsa9lBUzeH7M1oK+Q+OLxL3kA==} - nwsapi@2.2.22: - resolution: {integrity: sha512-ujSMe1OWVn55euT1ihwCI1ZcAaAU3nxUiDwfDQldc51ZXaB9m2AyOn6/jh1BLe2t/G8xd6uKG1UBF2aZJeg2SQ==} + nwsapi@2.2.23: + resolution: {integrity: sha512-7wfH4sLbt4M0gCDzGE6vzQBo0bfTKjU7Sfpqy/7gs1qBfYz2vEJH6vXcBKpO3+6Yu1telwd0t9HpyOoLEQQbIQ==} object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} @@ -6483,8 +6465,8 @@ packages: oniguruma-to-es@2.3.0: resolution: {integrity: sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g==} - oniguruma-to-es@4.3.3: - resolution: {integrity: sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg==} + oniguruma-to-es@4.3.4: + resolution: {integrity: sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA==} openapi-types@12.1.3: resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==} @@ -6532,8 +6514,8 @@ packages: package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - package-manager-detector@1.5.0: - resolution: {integrity: sha512-uBj69dVlYe/+wxj8JOpr97XfsxH/eumMt6HqjNTmJDf/6NO9s+0uxeOneIz3AsPt2m6y9PqzDzd3ATcU17MNfw==} + package-manager-detector@1.6.0: + resolution: {integrity: sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==} pako@0.2.9: resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} @@ -6597,6 +6579,10 @@ packages: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} + path-scurry@2.0.1: + resolution: {integrity: sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==} + engines: {node: 20 || >=22} + path-to-regexp@6.3.0: resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} @@ -6640,9 +6626,6 @@ packages: pkg-types@1.3.1: resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} - pkg-types@2.3.0: - resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==} - pluralize@8.0.0: resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} engines: {node: '>=4'} @@ -6720,8 +6703,8 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - prettier-plugin-tailwindcss@0.7.1: - resolution: {integrity: sha512-Bzv1LZcuiR1Sk02iJTS1QzlFNp/o5l2p3xkopwOrbPmtMeh3fK9rVW5M3neBQzHq+kGKj/4LGQMTNcTH4NGPtQ==} + prettier-plugin-tailwindcss@0.7.2: + resolution: {integrity: sha512-LkphyK3Fw+q2HdMOoiEHWf93fNtYJwfamoKPl7UwtjFQdei/iIBoX11G6j706FzN3ymX9mPVi97qIY8328vdnA==} engines: {node: '>=20.19'} peerDependencies: '@ianvs/prettier-plugin-sort-imports': '*' @@ -6780,8 +6763,8 @@ packages: engines: {node: '>=10.13.0'} hasBin: true - prettier@3.6.2: - resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==} + prettier@3.7.4: + resolution: {integrity: sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==} engines: {node: '>=14'} hasBin: true @@ -6820,9 +6803,6 @@ packages: prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} - property-information@6.5.0: - resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} - property-information@7.1.0: resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} @@ -6837,9 +6817,6 @@ packages: resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} engines: {node: '>=0.6'} - quansync@0.2.11: - resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} - querystringify@2.2.0: resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} @@ -6849,8 +6826,8 @@ packages: randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - raw-body@2.5.2: - resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + raw-body@2.5.3: + resolution: {integrity: sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==} engines: {node: '>= 0.8'} react-aria@3.44.0: @@ -6899,8 +6876,8 @@ packages: react-is@18.3.1: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} - react-keyed-flatten-children@5.0.1: - resolution: {integrity: sha512-bZhTocogwo+q6zz3+HAQexckXhm+Ko8CaujKO6A138kVpRtF4xN8OmLE7F1Qv9YcDJrZ8gPXkJdM/VgcKjJimg==} + react-keyed-flatten-children@5.1.1: + resolution: {integrity: sha512-+DXMhjG0nbKq7AuWvAp1NUWCcg4jsUuBCdtDW8ySl45m3+MTjbXbR+TxvoM/1dTH7reSDqksBipkc/e/gpUnDg==} peerDependencies: react: '>=18.0.0' react-is: '>=18.0.0' @@ -6927,8 +6904,8 @@ packages: '@types/react': optional: true - react-remove-scroll@2.7.1: - resolution: {integrity: sha512-HpMh8+oahmIdOuS5aFKKY6Pyog+FNaZV/XyJOq7b4YFwsFHe5yYfdbIalI4k3vU2nSDql7YskmUseHsRrJqIPA==} + react-remove-scroll@2.7.2: + resolution: {integrity: sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q==} engines: {node: '>=10'} peerDependencies: '@types/react': '*' @@ -6959,8 +6936,8 @@ packages: react: '>=16.6.0' react-dom: '>=16.6.0' - react-virtuoso@4.14.1: - resolution: {integrity: sha512-NRUF1ak8lY+Tvc6WN9cce59gU+lilzVtOozP+pm9J7iHshLGGjsiAB4rB2qlBPHjFbcXOQpT+7womNHGDUql8w==} + react-virtuoso@4.17.0: + resolution: {integrity: sha512-od3pi2v13v31uzn5zPXC2u3ouISFCVhjFVFch2VvS2Cx7pWA2F1aJa3XhNTN2F07M3lhfnMnsmGeH+7wZICr7w==} peerDependencies: react: '>=16 || >=17 || >= 18 || >= 19' react-dom: '>=16 || >=17 || >= 18 || >=19' @@ -7031,8 +7008,8 @@ packages: regex@5.1.1: resolution: {integrity: sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==} - regex@6.0.1: - resolution: {integrity: sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==} + regex@6.1.0: + resolution: {integrity: sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==} regexp.prototype.flags@1.5.4: resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} @@ -7172,8 +7149,8 @@ packages: rollup-pluginutils@2.8.2: resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==} - rollup@4.53.2: - resolution: {integrity: sha512-MHngMYwGJVi6Fmnk6ISmnk7JAHRNF0UkuucA0CUW3N3a4KnONPEZz+vUanQP/ZC/iY1Qkf3bwPWzyY84wEks1g==} + rollup@4.53.3: + resolution: {integrity: sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -7281,8 +7258,8 @@ packages: shiki@1.29.2: resolution: {integrity: sha512-njXuliz/cP+67jU2hukkxCNuH1yUi4QfdZZY+sMr5PPrIyXSu5iTb/qYC4BiWWB0vZ+7TbdvYUCeL23zpwCfbg==} - shiki@3.15.0: - resolution: {integrity: sha512-kLdkY6iV3dYbtPwS9KXU7mjfmDm25f5m0IPNFnaXO7TBPcvbUOY72PYXSuSqDzwp+vlH/d7MXpHlKO/x+QoLXw==} + shiki@3.20.0: + resolution: {integrity: sha512-kgCOlsnyWb+p0WU+01RjkCH+eBVsjL1jOwUYWv0YDWkM2/A46+LDKVs5yZCUXjJG6bj4ndFoAg5iLIIue6dulg==} side-channel-list@1.0.0: resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} @@ -7409,8 +7386,8 @@ packages: stacktracey@2.1.8: resolution: {integrity: sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==} - statuses@2.0.1: - resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + statuses@2.0.2: + resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} engines: {node: '>= 0.8'} std-env@3.10.0: @@ -7500,14 +7477,14 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - strnum@2.1.1: - resolution: {integrity: sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==} + strnum@2.1.2: + resolution: {integrity: sha512-l63NF9y/cLROq/yqKXSLtcMeeyOfnSQlfMSlzFt/K73oIaD8DGaQWd7Z34X9GPiKqP5rbSh84Hl4bOlLcjiSrQ==} - style-to-js@1.1.19: - resolution: {integrity: sha512-Ev+SgeqiNGT1ufsXyVC5RrJRXdrkRJ1Gol9Qw7Pb72YCKJXrBvP0ckZhBeVSrw2m06DJpei2528uIpjMb4TsoQ==} + style-to-js@1.1.21: + resolution: {integrity: sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==} - style-to-object@1.0.12: - resolution: {integrity: sha512-ddJqYnoT4t97QvN2C95bCgt+m7AAgXjVnkk/jxAfmp7EAB8nnqqZYEbMd3em7/vEomDb2LAQKAy1RFfv41mdNw==} + style-to-object@1.0.14: + resolution: {integrity: sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==} styled-jsx@5.1.1: resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} @@ -7531,8 +7508,8 @@ packages: stylis@4.3.6: resolution: {integrity: sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==} - sucrase@3.35.0: - resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + sucrase@3.35.1: + resolution: {integrity: sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==} engines: {node: '>=16 || 14 >=14.17'} hasBin: true @@ -7566,8 +7543,8 @@ packages: tabbable@6.3.0: resolution: {integrity: sha512-EIHvdY5bPLuWForiR/AN2Bxngzpuwn1is4asboytXtpTgsArc+WmSJKVLlhdh71u7jFcryDqB2A8lQvj78MkyQ==} - tailwindcss@3.4.18: - resolution: {integrity: sha512-6A2rnmW5xZMdw11LYjhcI5846rt9pbLSabY5XPxo+XWdxwZaFEn47Go4NzFiHu9sNNmr/kXivP1vStfvMaK1GQ==} + tailwindcss@3.4.19: + resolution: {integrity: sha512-3ofp+LL8E+pK/JuPLPggVAIaEuhvIz4qNcf3nA1Xn2o/7fb7s/TYpHhwGDv1ZU3PkBluUVaF8PyCHcm48cKLWQ==} engines: {node: '>=14.0.0'} hasBin: true @@ -7645,9 +7622,6 @@ packages: resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} engines: {node: '>=6'} - tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - tr46@5.1.1: resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==} engines: {node: '>=18'} @@ -7717,38 +7691,38 @@ packages: engines: {node: '>=18.0.0'} hasBin: true - turbo-darwin-64@2.6.1: - resolution: {integrity: sha512-Dm0HwhyZF4J0uLqkhUyCVJvKM9Rw7M03v3J9A7drHDQW0qAbIGBrUijQ8g4Q9Cciw/BXRRd8Uzkc3oue+qn+ZQ==} + turbo-darwin-64@2.6.3: + resolution: {integrity: sha512-BlJJDc1CQ7SK5Y5qnl7AzpkvKSnpkfPmnA+HeU/sgny3oHZckPV2776ebO2M33CYDSor7+8HQwaodY++IINhYg==} cpu: [x64] os: [darwin] - turbo-darwin-arm64@2.6.1: - resolution: {integrity: sha512-U0PIPTPyxdLsrC3jN7jaJUwgzX5sVUBsKLO7+6AL+OASaa1NbT1pPdiZoTkblBAALLP76FM0LlnsVQOnmjYhyw==} + turbo-darwin-arm64@2.6.3: + resolution: {integrity: sha512-MwVt7rBKiOK7zdYerenfCRTypefw4kZCue35IJga9CH1+S50+KTiCkT6LBqo0hHeoH2iKuI0ldTF2a0aB72z3w==} cpu: [arm64] os: [darwin] - turbo-linux-64@2.6.1: - resolution: {integrity: sha512-eM1uLWgzv89bxlK29qwQEr9xYWBhmO/EGiH22UGfq+uXr+QW1OvNKKMogSN65Ry8lElMH4LZh0aX2DEc7eC0Mw==} + turbo-linux-64@2.6.3: + resolution: {integrity: sha512-cqpcw+dXxbnPtNnzeeSyWprjmuFVpHJqKcs7Jym5oXlu/ZcovEASUIUZVN3OGEM6Y/OTyyw0z09tOHNt5yBAVg==} cpu: [x64] os: [linux] - turbo-linux-arm64@2.6.1: - resolution: {integrity: sha512-MFFh7AxAQAycXKuZDrbeutfWM5Ep0CEZ9u7zs4Hn2FvOViTCzIfEhmuJou3/a5+q5VX1zTxQrKGy+4Lf5cdpsA==} + turbo-linux-arm64@2.6.3: + resolution: {integrity: sha512-MterpZQmjXyr4uM7zOgFSFL3oRdNKeflY7nsjxJb2TklsYqiu3Z9pQ4zRVFFH8n0mLGna7MbQMZuKoWqqHb45w==} cpu: [arm64] os: [linux] - turbo-windows-64@2.6.1: - resolution: {integrity: sha512-buq7/VAN7KOjMYi4tSZT5m+jpqyhbRU2EUTTvp6V0Ii8dAkY2tAAjQN1q5q2ByflYWKecbQNTqxmVploE0LVwQ==} + turbo-windows-64@2.6.3: + resolution: {integrity: sha512-biDU70v9dLwnBdLf+daoDlNJVvqOOP8YEjqNipBHzgclbQlXbsi6Gqqelp5er81Qo3BiRgmTNx79oaZQTPb07Q==} cpu: [x64] os: [win32] - turbo-windows-arm64@2.6.1: - resolution: {integrity: sha512-7w+AD5vJp3R+FB0YOj1YJcNcOOvBior7bcHTodqp90S3x3bLgpr7tE6xOea1e8JkP7GK6ciKVUpQvV7psiwU5Q==} + turbo-windows-arm64@2.6.3: + resolution: {integrity: sha512-dDHVKpSeukah3VsI/xMEKeTnV9V9cjlpFSUs4bmsUiLu3Yv2ENlgVEZv65wxbeE0bh0jjpmElDT+P1KaCxArQQ==} cpu: [arm64] os: [win32] - turbo@2.6.1: - resolution: {integrity: sha512-qBwXXuDT3rA53kbNafGbT5r++BrhRgx3sAo0cHoDAeG9g1ItTmUMgltz3Hy7Hazy1ODqNpR+C7QwqL6DYB52yA==} + turbo@2.6.3: + resolution: {integrity: sha512-bf6YKUv11l5Xfcmg76PyWoy/e2vbkkxFNBGJSnfdSXQC33ZiUfutYh6IXidc5MhsnrFkWfdNNLyaRk+kHMLlwA==} hasBin: true twoslash-protocol@0.2.12: @@ -7905,8 +7879,8 @@ packages: unrs-resolver@1.11.1: resolution: {integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==} - update-browserslist-db@1.1.4: - resolution: {integrity: sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==} + update-browserslist-db@1.2.2: + resolution: {integrity: sha512-E85pfNzMQ9jpKkA7+TJAi4TJN+tBCuWh5rUcS/sv6cFi+1q9LYDwDI5dpUL0u/73EElyQ8d3TEaeW4sPedBqYA==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -7995,8 +7969,8 @@ packages: victory-vendor@36.9.2: resolution: {integrity: sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ==} - viem@2.39.0: - resolution: {integrity: sha512-rCN+IfnMESlrg/iPyyVL+M9NS/BHzyyNy72470tFmbTuscY3iPaZGMtJDcHKKV8TC6HV9DjWk0zWX6cpu0juyA==} + viem@2.41.2: + resolution: {integrity: sha512-LYliajglBe1FU6+EH9mSWozp+gRA/QcHfxeD9Odf83AdH5fwUS7DroH4gHvlv6Sshqi1uXrYFA2B/EOczxd15g==} peerDependencies: typescript: '>=5.0.4' peerDependenciesMeta: @@ -8097,9 +8071,6 @@ packages: web-namespaces@2.0.1: resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - webidl-conversions@7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} @@ -8116,9 +8087,6 @@ packages: resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==} engines: {node: '>=18'} - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - which-boxed-primitive@1.1.1: resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} engines: {node: '>= 0.4'} @@ -8244,8 +8212,8 @@ packages: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} - yaml@2.8.1: - resolution: {integrity: sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==} + yaml@2.8.2: + resolution: {integrity: sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==} engines: {node: '>= 14.6'} hasBin: true @@ -8293,8 +8261,8 @@ packages: zod@3.25.76: resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} - zod@4.1.12: - resolution: {integrity: sha512-JInaHOamG8pt5+Ey8kGmdcAcg3OL9reK8ltczgHTAwNhMys/6ThXHityHxVV2p3fkw/c+MAvBHFVYHFZDmjMCQ==} + zod@4.1.13: + resolution: {integrity: sha512-AvvthqfqrAhNH9dnfmrfKzX5upOdjUVJYFqNSlkmGf64gRaTzlPwz99IHYnVs28qYAybvAlBV+H7pn0saFY4Ig==} zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} @@ -8305,127 +8273,125 @@ snapshots: '@adraffy/ens-normalize@1.11.1': {} - '@algolia/abtesting@1.9.0': + '@algolia/abtesting@1.12.0': dependencies: - '@algolia/client-common': 5.43.0 - '@algolia/requester-browser-xhr': 5.43.0 - '@algolia/requester-fetch': 5.43.0 - '@algolia/requester-node-http': 5.43.0 + '@algolia/client-common': 5.46.0 + '@algolia/requester-browser-xhr': 5.46.0 + '@algolia/requester-fetch': 5.46.0 + '@algolia/requester-node-http': 5.46.0 - '@algolia/autocomplete-core@1.17.9(@algolia/client-search@5.43.0)(algoliasearch@5.43.0)(search-insights@2.17.3)': + '@algolia/autocomplete-core@1.17.9(@algolia/client-search@5.46.0)(algoliasearch@5.46.0)(search-insights@2.17.3)': dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.17.9(@algolia/client-search@5.43.0)(algoliasearch@5.43.0)(search-insights@2.17.3) - '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.43.0)(algoliasearch@5.43.0) + '@algolia/autocomplete-plugin-algolia-insights': 1.17.9(@algolia/client-search@5.46.0)(algoliasearch@5.46.0)(search-insights@2.17.3) + '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.46.0)(algoliasearch@5.46.0) transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - search-insights - '@algolia/autocomplete-plugin-algolia-insights@1.17.9(@algolia/client-search@5.43.0)(algoliasearch@5.43.0)(search-insights@2.17.3)': + '@algolia/autocomplete-plugin-algolia-insights@1.17.9(@algolia/client-search@5.46.0)(algoliasearch@5.46.0)(search-insights@2.17.3)': dependencies: - '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.43.0)(algoliasearch@5.43.0) + '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.46.0)(algoliasearch@5.46.0) search-insights: 2.17.3 transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - '@algolia/autocomplete-preset-algolia@1.17.9(@algolia/client-search@5.43.0)(algoliasearch@5.43.0)': + '@algolia/autocomplete-preset-algolia@1.17.9(@algolia/client-search@5.46.0)(algoliasearch@5.46.0)': dependencies: - '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.43.0)(algoliasearch@5.43.0) - '@algolia/client-search': 5.43.0 - algoliasearch: 5.43.0 + '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.46.0)(algoliasearch@5.46.0) + '@algolia/client-search': 5.46.0 + algoliasearch: 5.46.0 - '@algolia/autocomplete-shared@1.17.9(@algolia/client-search@5.43.0)(algoliasearch@5.43.0)': + '@algolia/autocomplete-shared@1.17.9(@algolia/client-search@5.46.0)(algoliasearch@5.46.0)': dependencies: - '@algolia/client-search': 5.43.0 - algoliasearch: 5.43.0 + '@algolia/client-search': 5.46.0 + algoliasearch: 5.46.0 - '@algolia/client-abtesting@5.43.0': + '@algolia/client-abtesting@5.46.0': dependencies: - '@algolia/client-common': 5.43.0 - '@algolia/requester-browser-xhr': 5.43.0 - '@algolia/requester-fetch': 5.43.0 - '@algolia/requester-node-http': 5.43.0 + '@algolia/client-common': 5.46.0 + '@algolia/requester-browser-xhr': 5.46.0 + '@algolia/requester-fetch': 5.46.0 + '@algolia/requester-node-http': 5.46.0 - '@algolia/client-analytics@5.43.0': + '@algolia/client-analytics@5.46.0': dependencies: - '@algolia/client-common': 5.43.0 - '@algolia/requester-browser-xhr': 5.43.0 - '@algolia/requester-fetch': 5.43.0 - '@algolia/requester-node-http': 5.43.0 + '@algolia/client-common': 5.46.0 + '@algolia/requester-browser-xhr': 5.46.0 + '@algolia/requester-fetch': 5.46.0 + '@algolia/requester-node-http': 5.46.0 - '@algolia/client-common@5.43.0': {} + '@algolia/client-common@5.46.0': {} - '@algolia/client-insights@5.43.0': + '@algolia/client-insights@5.46.0': dependencies: - '@algolia/client-common': 5.43.0 - '@algolia/requester-browser-xhr': 5.43.0 - '@algolia/requester-fetch': 5.43.0 - '@algolia/requester-node-http': 5.43.0 + '@algolia/client-common': 5.46.0 + '@algolia/requester-browser-xhr': 5.46.0 + '@algolia/requester-fetch': 5.46.0 + '@algolia/requester-node-http': 5.46.0 - '@algolia/client-personalization@5.43.0': + '@algolia/client-personalization@5.46.0': dependencies: - '@algolia/client-common': 5.43.0 - '@algolia/requester-browser-xhr': 5.43.0 - '@algolia/requester-fetch': 5.43.0 - '@algolia/requester-node-http': 5.43.0 + '@algolia/client-common': 5.46.0 + '@algolia/requester-browser-xhr': 5.46.0 + '@algolia/requester-fetch': 5.46.0 + '@algolia/requester-node-http': 5.46.0 - '@algolia/client-query-suggestions@5.43.0': + '@algolia/client-query-suggestions@5.46.0': dependencies: - '@algolia/client-common': 5.43.0 - '@algolia/requester-browser-xhr': 5.43.0 - '@algolia/requester-fetch': 5.43.0 - '@algolia/requester-node-http': 5.43.0 + '@algolia/client-common': 5.46.0 + '@algolia/requester-browser-xhr': 5.46.0 + '@algolia/requester-fetch': 5.46.0 + '@algolia/requester-node-http': 5.46.0 - '@algolia/client-search@5.43.0': + '@algolia/client-search@5.46.0': dependencies: - '@algolia/client-common': 5.43.0 - '@algolia/requester-browser-xhr': 5.43.0 - '@algolia/requester-fetch': 5.43.0 - '@algolia/requester-node-http': 5.43.0 + '@algolia/client-common': 5.46.0 + '@algolia/requester-browser-xhr': 5.46.0 + '@algolia/requester-fetch': 5.46.0 + '@algolia/requester-node-http': 5.46.0 - '@algolia/ingestion@1.43.0': + '@algolia/ingestion@1.46.0': dependencies: - '@algolia/client-common': 5.43.0 - '@algolia/requester-browser-xhr': 5.43.0 - '@algolia/requester-fetch': 5.43.0 - '@algolia/requester-node-http': 5.43.0 + '@algolia/client-common': 5.46.0 + '@algolia/requester-browser-xhr': 5.46.0 + '@algolia/requester-fetch': 5.46.0 + '@algolia/requester-node-http': 5.46.0 - '@algolia/monitoring@1.43.0': + '@algolia/monitoring@1.46.0': dependencies: - '@algolia/client-common': 5.43.0 - '@algolia/requester-browser-xhr': 5.43.0 - '@algolia/requester-fetch': 5.43.0 - '@algolia/requester-node-http': 5.43.0 + '@algolia/client-common': 5.46.0 + '@algolia/requester-browser-xhr': 5.46.0 + '@algolia/requester-fetch': 5.46.0 + '@algolia/requester-node-http': 5.46.0 - '@algolia/recommend@5.43.0': + '@algolia/recommend@5.46.0': dependencies: - '@algolia/client-common': 5.43.0 - '@algolia/requester-browser-xhr': 5.43.0 - '@algolia/requester-fetch': 5.43.0 - '@algolia/requester-node-http': 5.43.0 + '@algolia/client-common': 5.46.0 + '@algolia/requester-browser-xhr': 5.46.0 + '@algolia/requester-fetch': 5.46.0 + '@algolia/requester-node-http': 5.46.0 - '@algolia/requester-browser-xhr@5.43.0': + '@algolia/requester-browser-xhr@5.46.0': dependencies: - '@algolia/client-common': 5.43.0 + '@algolia/client-common': 5.46.0 - '@algolia/requester-fetch@5.43.0': + '@algolia/requester-fetch@5.46.0': dependencies: - '@algolia/client-common': 5.43.0 + '@algolia/client-common': 5.46.0 - '@algolia/requester-node-http@5.43.0': + '@algolia/requester-node-http@5.46.0': dependencies: - '@algolia/client-common': 5.43.0 + '@algolia/client-common': 5.46.0 '@alloc/quick-lru@5.2.0': {} '@antfu/install-pkg@1.1.0': dependencies: - package-manager-detector: 1.5.0 + package-manager-detector: 1.6.0 tinyexec: 1.0.2 - '@antfu/utils@9.3.0': {} - '@apidevtools/json-schema-ref-parser@13.0.5': dependencies: '@types/json-schema': 7.0.15 @@ -8554,7 +8520,7 @@ snapshots: '@cloudflare/workerd-windows-64@1.20250718.0': optional: true - '@cloudflare/workers-types@4.20251120.0': {} + '@cloudflare/workers-types@4.20251213.0': {} '@corex/deepmerge@4.0.43': {} @@ -8584,12 +8550,12 @@ snapshots: '@docsearch/css@3.9.0': {} - '@docsearch/react@3.9.0(@algolia/client-search@5.43.0)(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)': + '@docsearch/react@3.9.0(@algolia/client-search@5.46.0)(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)': dependencies: - '@algolia/autocomplete-core': 1.17.9(@algolia/client-search@5.43.0)(algoliasearch@5.43.0)(search-insights@2.17.3) - '@algolia/autocomplete-preset-algolia': 1.17.9(@algolia/client-search@5.43.0)(algoliasearch@5.43.0) + '@algolia/autocomplete-core': 1.17.9(@algolia/client-search@5.46.0)(algoliasearch@5.46.0)(search-insights@2.17.3) + '@algolia/autocomplete-preset-algolia': 1.17.9(@algolia/client-search@5.46.0)(algoliasearch@5.46.0) '@docsearch/css': 3.9.0 - algoliasearch: 5.43.0 + algoliasearch: 5.46.0 optionalDependencies: '@types/react': 18.3.27 react: 18.3.1 @@ -8598,13 +8564,13 @@ snapshots: transitivePeerDependencies: - '@algolia/client-search' - '@edgeandnode/common@7.0.4(hardhat@2.27.0(typescript@5.9.3))': + '@edgeandnode/common@7.0.4(hardhat@2.27.2(typescript@5.9.3))': dependencies: '@ethersproject/providers': 5.8.0 '@pinax/graph-networks-registry': 0.6.7 - '@uniswap/sdk-core': 7.9.0 + '@uniswap/sdk-core': 7.10.0 '@uniswap/v3-core': 1.0.1 - '@uniswap/v3-sdk': 3.26.0(hardhat@2.27.0(typescript@5.9.3)) + '@uniswap/v3-sdk': 3.26.0(hardhat@2.27.2(typescript@5.9.3)) dataloader: 2.2.3 dayjs: 1.11.19 decimal.js: 10.6.0 @@ -8618,15 +8584,14 @@ snapshots: - hardhat - utf-8-validate - '@edgeandnode/ens@2.3.1(typescript@5.9.3)(viem@2.39.0(typescript@5.9.3)(zod@3.25.76))': + '@edgeandnode/ens@2.3.1(typescript@5.9.3)(viem@2.41.2(typescript@5.9.3)(zod@3.25.76))': dependencies: - '@ensdomains/ensjs': 4.0.2(typescript@5.9.3)(viem@2.39.0(typescript@5.9.3)(zod@3.25.76))(zod@4.1.12) + '@ensdomains/ensjs': 4.2.0(typescript@5.9.3)(viem@2.41.2(typescript@5.9.3)(zod@3.25.76))(zod@4.1.13) graphql: 16.12.0 - graphql-request: 7.3.3(graphql@16.12.0) - viem: 2.39.0(typescript@5.9.3)(zod@3.25.76) - zod: 4.1.12 + graphql-request: 7.4.0(graphql@16.12.0) + viem: 2.41.2(typescript@5.9.3)(zod@3.25.76) + zod: 4.1.13 transitivePeerDependencies: - - encoding - typescript '@edgeandnode/eslint-config@2.0.3(eslint@8.57.1)(typescript@5.9.3)': @@ -8652,13 +8617,13 @@ snapshots: - eslint-plugin-import-x - supports-color - '@edgeandnode/gds@6.7.8(@emotion/is-prop-valid@0.8.8)(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(dayjs@1.11.19)(hardhat@2.27.0(typescript@5.9.3))(next@14.2.33(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)(theme-ui@0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1))(tsx@4.20.4)(typescript@5.9.3)(yaml@2.8.1)': + '@edgeandnode/gds@6.8.1(@emotion/is-prop-valid@0.8.8)(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(dayjs@1.11.19)(hardhat@2.27.2(typescript@5.9.3))(next@14.2.35(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)(theme-ui@0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1))(tsx@4.20.4)(typescript@5.9.3)(yaml@2.8.2)': dependencies: '@base-ui-components/react': 1.0.0-alpha.7(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@bramus/style-observer': 2.0.2 - '@edgeandnode/common': 7.0.4(hardhat@2.27.0(typescript@5.9.3)) + '@edgeandnode/common': 7.0.4(hardhat@2.27.2(typescript@5.9.3)) '@emotion/react': 11.14.0(@types/react@18.3.27)(react@18.3.1) - '@figma/code-connect': 1.3.8 + '@figma/code-connect': 1.3.12 '@floating-ui/react-dom': 2.1.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@headlessui/react': 2.2.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@phosphor-icons/react': 2.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -8676,19 +8641,19 @@ snapshots: '@radix-ui/react-tooltip': 1.2.8(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@react-aria/utils': 3.31.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@react-hookz/web': 25.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@tailwindcss/container-queries': 0.1.1(tailwindcss@3.4.18(tsx@4.20.4)(yaml@2.8.1)) + '@tailwindcss/container-queries': 0.1.1(tailwindcss@3.4.19(tsx@4.20.4)(yaml@2.8.2)) '@tanem/react-nprogress': 5.0.56(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@theme-ui/css': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1)) '@theme-ui/match-media': 0.17.2(@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1))(@theme-ui/css@0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1)))(react@18.3.1) - '@web3icons/react': 4.0.35(react@18.3.1)(typescript@5.9.3) + '@web3icons/react': 4.1.6(react@18.3.1)(typescript@5.9.3) '@xstate/react': 3.2.2(@types/react@18.3.27)(react@18.3.1)(xstate@4.38.3) - color: 5.0.2 + color: 5.0.3 dayjs: 1.11.19 escape-string-regexp: 5.0.0 ethers: 5.8.0 lodash: 4.17.21 md5: 2.3.0 - motion: 12.23.24(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + motion: 12.23.26(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) numeral: 2.0.6 prism-react-renderer: 2.4.1(react@18.3.1) prismjs: 1.30.0 @@ -8699,18 +8664,18 @@ snapshots: react-dropzone: 14.3.8(react@18.3.1) react-ga4: 2.1.0 react-image-crop: 11.0.10(react@18.3.1) - react-keyed-flatten-children: 5.0.1(react-is@18.3.1)(react@18.3.1) + react-keyed-flatten-children: 5.1.1(react-is@18.3.1)(react@18.3.1) react-transition-group: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-virtuoso: 4.14.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-virtuoso: 4.17.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) recharts: 2.15.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - shiki: 3.15.0 - tailwindcss: 3.4.18(tsx@4.20.4)(yaml@2.8.1) + shiki: 3.20.0 + tailwindcss: 3.4.19(tsx@4.20.4)(yaml@2.8.2) theme-ui: 0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1) typy: 3.3.0 universal-cookie: 7.2.2 xstate: 4.38.3 optionalDependencies: - next: 14.2.33(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next: 14.2.35(react-dom@18.3.1(react@18.3.1))(react@18.3.1) transitivePeerDependencies: - '@emotion/is-prop-valid' - '@theme-ui/core' @@ -8728,11 +8693,11 @@ snapshots: - utf-8-validate - yaml - '@edgeandnode/go@10.3.12(e70f93497728a8960fcd273532040bed)': + '@edgeandnode/go@10.4.1(b7fbd4cfc283779f7cf7c16f0f72c4f6)': dependencies: - '@edgeandnode/common': 7.0.4(hardhat@2.27.0(typescript@5.9.3)) - '@edgeandnode/ens': 2.3.1(typescript@5.9.3)(viem@2.39.0(typescript@5.9.3)(zod@3.25.76)) - '@edgeandnode/gds': 6.7.8(@emotion/is-prop-valid@0.8.8)(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(dayjs@1.11.19)(hardhat@2.27.0(typescript@5.9.3))(next@14.2.33(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)(theme-ui@0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1))(tsx@4.20.4)(typescript@5.9.3)(yaml@2.8.1) + '@edgeandnode/common': 7.0.4(hardhat@2.27.2(typescript@5.9.3)) + '@edgeandnode/ens': 2.3.1(typescript@5.9.3)(viem@2.41.2(typescript@5.9.3)(zod@3.25.76)) + '@edgeandnode/gds': 6.8.1(@emotion/is-prop-valid@0.8.8)(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(dayjs@1.11.19)(hardhat@2.27.2(typescript@5.9.3))(next@14.2.35(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1)(theme-ui@0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1))(tsx@4.20.4)(typescript@5.9.3)(yaml@2.8.2) '@emotion/react': 11.14.0(@types/react@18.3.27)(react@18.3.1) '@graphql-typed-document-node/core': 3.2.0(graphql@16.12.0) '@radix-ui/react-collapsible': 1.1.12(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -8740,19 +8705,19 @@ snapshots: '@radix-ui/react-navigation-menu': 1.2.14(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-portal': 1.1.10(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@react-aria/utils': 3.31.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@tanstack/react-query': 5.90.8(react@18.3.1) + '@tanstack/react-query': 5.90.12(react@18.3.1) '@theme-ui/css': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1)) - '@web3icons/react': 4.0.35(react@18.3.1)(typescript@5.9.3) + '@web3icons/react': 4.1.6(react@18.3.1)(typescript@5.9.3) escape-string-regexp: 5.0.0 graphql: 16.12.0 - graphql-request: 7.3.3(graphql@16.12.0) - motion: 12.23.24(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + graphql-request: 7.4.0(graphql@16.12.0) + motion: 12.23.26(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - tailwindcss: 3.4.18(tsx@4.20.4)(yaml@2.8.1) + tailwindcss: 3.4.19(tsx@4.20.4)(yaml@2.8.2) theme-ui: 0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1) optionalDependencies: - next: 14.2.33(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next: 14.2.35(react-dom@18.3.1(react@18.3.1))(react@18.3.1) transitivePeerDependencies: - '@emotion/is-prop-valid' - '@types/react' @@ -8761,13 +8726,13 @@ snapshots: - typescript - yaml - '@emnapi/core@1.7.0': + '@emnapi/core@1.7.1': dependencies: '@emnapi/wasi-threads': 1.1.0 tslib: 2.8.1 optional: true - '@emnapi/runtime@1.7.0': + '@emnapi/runtime@1.7.1': dependencies: tslib: 2.8.1 optional: true @@ -8835,7 +8800,7 @@ snapshots: '@emotion/memoize': 0.9.0 '@emotion/unitless': 0.10.0 '@emotion/utils': 1.4.2 - csstype: 3.1.3 + csstype: 3.2.3 '@emotion/sheet@1.4.0': {} @@ -8855,7 +8820,7 @@ snapshots: '@noble/hashes': 1.8.0 '@scure/base': 1.2.6 - '@ensdomains/address-encoder@1.1.1': + '@ensdomains/address-encoder@1.1.3': dependencies: '@noble/curves': 1.9.7 '@noble/hashes': 1.8.0 @@ -8873,21 +8838,20 @@ snapshots: dns-packet: 5.6.1 typescript-logging: 1.0.1 - '@ensdomains/ensjs@4.0.2(typescript@5.9.3)(viem@2.39.0(typescript@5.9.3)(zod@3.25.76))(zod@4.1.12)': + '@ensdomains/ensjs@4.2.0(typescript@5.9.3)(viem@2.41.2(typescript@5.9.3)(zod@3.25.76))(zod@4.1.13)': dependencies: '@adraffy/ens-normalize': 1.10.1 - '@ensdomains/address-encoder': 1.1.1 + '@ensdomains/address-encoder': 1.1.3 '@ensdomains/content-hash': 3.1.0-rc.1 '@ensdomains/dnsprovejs': 0.5.2 - abitype: 1.1.1(typescript@5.9.3)(zod@4.1.12) + abitype: 1.2.2(typescript@5.9.3)(zod@4.1.13) dns-packet: 5.6.1 graphql: 16.12.0 - graphql-request: 6.1.0(graphql@16.12.0) + graphql-request: 7.1.2(graphql@16.12.0) pako: 2.1.0 ts-pattern: 5.9.0 - viem: 2.39.0(typescript@5.9.3)(zod@3.25.76) + viem: 2.41.2(typescript@5.9.3)(zod@3.25.76) transitivePeerDependencies: - - encoding - typescript - zod @@ -8907,7 +8871,7 @@ snapshots: '@esbuild/aix-ppc64@0.25.12': optional: true - '@esbuild/aix-ppc64@0.27.0': + '@esbuild/aix-ppc64@0.27.1': optional: true '@esbuild/android-arm64@0.17.19': @@ -8919,7 +8883,7 @@ snapshots: '@esbuild/android-arm64@0.25.12': optional: true - '@esbuild/android-arm64@0.27.0': + '@esbuild/android-arm64@0.27.1': optional: true '@esbuild/android-arm@0.17.19': @@ -8931,7 +8895,7 @@ snapshots: '@esbuild/android-arm@0.25.12': optional: true - '@esbuild/android-arm@0.27.0': + '@esbuild/android-arm@0.27.1': optional: true '@esbuild/android-x64@0.17.19': @@ -8943,7 +8907,7 @@ snapshots: '@esbuild/android-x64@0.25.12': optional: true - '@esbuild/android-x64@0.27.0': + '@esbuild/android-x64@0.27.1': optional: true '@esbuild/darwin-arm64@0.17.19': @@ -8955,7 +8919,7 @@ snapshots: '@esbuild/darwin-arm64@0.25.12': optional: true - '@esbuild/darwin-arm64@0.27.0': + '@esbuild/darwin-arm64@0.27.1': optional: true '@esbuild/darwin-x64@0.17.19': @@ -8967,7 +8931,7 @@ snapshots: '@esbuild/darwin-x64@0.25.12': optional: true - '@esbuild/darwin-x64@0.27.0': + '@esbuild/darwin-x64@0.27.1': optional: true '@esbuild/freebsd-arm64@0.17.19': @@ -8979,7 +8943,7 @@ snapshots: '@esbuild/freebsd-arm64@0.25.12': optional: true - '@esbuild/freebsd-arm64@0.27.0': + '@esbuild/freebsd-arm64@0.27.1': optional: true '@esbuild/freebsd-x64@0.17.19': @@ -8991,7 +8955,7 @@ snapshots: '@esbuild/freebsd-x64@0.25.12': optional: true - '@esbuild/freebsd-x64@0.27.0': + '@esbuild/freebsd-x64@0.27.1': optional: true '@esbuild/linux-arm64@0.17.19': @@ -9003,7 +8967,7 @@ snapshots: '@esbuild/linux-arm64@0.25.12': optional: true - '@esbuild/linux-arm64@0.27.0': + '@esbuild/linux-arm64@0.27.1': optional: true '@esbuild/linux-arm@0.17.19': @@ -9015,7 +8979,7 @@ snapshots: '@esbuild/linux-arm@0.25.12': optional: true - '@esbuild/linux-arm@0.27.0': + '@esbuild/linux-arm@0.27.1': optional: true '@esbuild/linux-ia32@0.17.19': @@ -9027,7 +8991,7 @@ snapshots: '@esbuild/linux-ia32@0.25.12': optional: true - '@esbuild/linux-ia32@0.27.0': + '@esbuild/linux-ia32@0.27.1': optional: true '@esbuild/linux-loong64@0.17.19': @@ -9039,7 +9003,7 @@ snapshots: '@esbuild/linux-loong64@0.25.12': optional: true - '@esbuild/linux-loong64@0.27.0': + '@esbuild/linux-loong64@0.27.1': optional: true '@esbuild/linux-mips64el@0.17.19': @@ -9051,7 +9015,7 @@ snapshots: '@esbuild/linux-mips64el@0.25.12': optional: true - '@esbuild/linux-mips64el@0.27.0': + '@esbuild/linux-mips64el@0.27.1': optional: true '@esbuild/linux-ppc64@0.17.19': @@ -9063,7 +9027,7 @@ snapshots: '@esbuild/linux-ppc64@0.25.12': optional: true - '@esbuild/linux-ppc64@0.27.0': + '@esbuild/linux-ppc64@0.27.1': optional: true '@esbuild/linux-riscv64@0.17.19': @@ -9075,7 +9039,7 @@ snapshots: '@esbuild/linux-riscv64@0.25.12': optional: true - '@esbuild/linux-riscv64@0.27.0': + '@esbuild/linux-riscv64@0.27.1': optional: true '@esbuild/linux-s390x@0.17.19': @@ -9087,7 +9051,7 @@ snapshots: '@esbuild/linux-s390x@0.25.12': optional: true - '@esbuild/linux-s390x@0.27.0': + '@esbuild/linux-s390x@0.27.1': optional: true '@esbuild/linux-x64@0.17.19': @@ -9099,13 +9063,13 @@ snapshots: '@esbuild/linux-x64@0.25.12': optional: true - '@esbuild/linux-x64@0.27.0': + '@esbuild/linux-x64@0.27.1': optional: true '@esbuild/netbsd-arm64@0.25.12': optional: true - '@esbuild/netbsd-arm64@0.27.0': + '@esbuild/netbsd-arm64@0.27.1': optional: true '@esbuild/netbsd-x64@0.17.19': @@ -9117,13 +9081,13 @@ snapshots: '@esbuild/netbsd-x64@0.25.12': optional: true - '@esbuild/netbsd-x64@0.27.0': + '@esbuild/netbsd-x64@0.27.1': optional: true '@esbuild/openbsd-arm64@0.25.12': optional: true - '@esbuild/openbsd-arm64@0.27.0': + '@esbuild/openbsd-arm64@0.27.1': optional: true '@esbuild/openbsd-x64@0.17.19': @@ -9135,13 +9099,13 @@ snapshots: '@esbuild/openbsd-x64@0.25.12': optional: true - '@esbuild/openbsd-x64@0.27.0': + '@esbuild/openbsd-x64@0.27.1': optional: true '@esbuild/openharmony-arm64@0.25.12': optional: true - '@esbuild/openharmony-arm64@0.27.0': + '@esbuild/openharmony-arm64@0.27.1': optional: true '@esbuild/sunos-x64@0.17.19': @@ -9153,7 +9117,7 @@ snapshots: '@esbuild/sunos-x64@0.25.12': optional: true - '@esbuild/sunos-x64@0.27.0': + '@esbuild/sunos-x64@0.27.1': optional: true '@esbuild/win32-arm64@0.17.19': @@ -9165,7 +9129,7 @@ snapshots: '@esbuild/win32-arm64@0.25.12': optional: true - '@esbuild/win32-arm64@0.27.0': + '@esbuild/win32-arm64@0.27.1': optional: true '@esbuild/win32-ia32@0.17.19': @@ -9177,7 +9141,7 @@ snapshots: '@esbuild/win32-ia32@0.25.12': optional: true - '@esbuild/win32-ia32@0.27.0': + '@esbuild/win32-ia32@0.27.1': optional: true '@esbuild/win32-x64@0.17.19': @@ -9189,7 +9153,7 @@ snapshots: '@esbuild/win32-x64@0.25.12': optional: true - '@esbuild/win32-x64@0.27.0': + '@esbuild/win32-x64@0.27.1': optional: true '@eslint-community/eslint-utils@4.9.0(eslint@8.57.1)': @@ -9490,7 +9454,7 @@ snapshots: '@fastify/busboy@2.1.1': {} - '@figma/code-connect@1.3.8': + '@figma/code-connect@1.3.12': dependencies: boxen: 5.1.1 chalk: 4.1.2 @@ -9500,7 +9464,7 @@ snapshots: dotenv: 16.6.1 fast-fuzzy: 1.12.0 find-up: 5.0.0 - glob: 10.4.5 + glob: 11.1.0 jsdom: 24.1.3 lodash: 4.17.21 minimatch: 9.0.5 @@ -9598,7 +9562,7 @@ snapshots: '@floating-ui/react': 0.26.28(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@react-aria/focus': 3.21.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@react-aria/interactions': 3.25.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@tanstack/react-virtual': 3.13.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tanstack/react-virtual': 3.13.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) use-sync-external-store: 1.6.0(react@18.3.1) @@ -9619,18 +9583,11 @@ snapshots: '@iconify/types@2.0.0': {} - '@iconify/utils@3.0.2': + '@iconify/utils@3.1.0': dependencies: '@antfu/install-pkg': 1.1.0 - '@antfu/utils': 9.3.0 '@iconify/types': 2.0.0 - debug: 4.4.3(supports-color@8.1.1) - globals: 15.15.0 - kolorist: 1.8.0 - local-pkg: 1.1.2 mlly: 1.8.0 - transitivePeerDependencies: - - supports-color '@img/sharp-darwin-arm64@0.33.5': optionalDependencies: @@ -9698,7 +9655,7 @@ snapshots: '@img/sharp-wasm32@0.33.5': dependencies: - '@emnapi/runtime': 1.7.0 + '@emnapi/runtime': 1.7.1 optional: true '@img/sharp-win32-ia32@0.33.5': @@ -9893,14 +9850,14 @@ snapshots: '@napi-rs/wasm-runtime@0.2.12': dependencies: - '@emnapi/core': 1.7.0 - '@emnapi/runtime': 1.7.0 + '@emnapi/core': 1.7.1 + '@emnapi/runtime': 1.7.1 '@tybys/wasm-util': 0.10.1 optional: true '@next/env@13.5.11': {} - '@next/env@14.2.33': {} + '@next/env@14.2.35': {} '@next/eslint-plugin-next@13.4.9': dependencies: @@ -9975,29 +9932,29 @@ snapshots: '@nolyfill/is-core-module@1.0.39': {} - '@nomicfoundation/edr-darwin-arm64@0.12.0-next.14': {} + '@nomicfoundation/edr-darwin-arm64@0.12.0-next.16': {} - '@nomicfoundation/edr-darwin-x64@0.12.0-next.14': {} + '@nomicfoundation/edr-darwin-x64@0.12.0-next.16': {} - '@nomicfoundation/edr-linux-arm64-gnu@0.12.0-next.14': {} + '@nomicfoundation/edr-linux-arm64-gnu@0.12.0-next.16': {} - '@nomicfoundation/edr-linux-arm64-musl@0.12.0-next.14': {} + '@nomicfoundation/edr-linux-arm64-musl@0.12.0-next.16': {} - '@nomicfoundation/edr-linux-x64-gnu@0.12.0-next.14': {} + '@nomicfoundation/edr-linux-x64-gnu@0.12.0-next.16': {} - '@nomicfoundation/edr-linux-x64-musl@0.12.0-next.14': {} + '@nomicfoundation/edr-linux-x64-musl@0.12.0-next.16': {} - '@nomicfoundation/edr-win32-x64-msvc@0.12.0-next.14': {} + '@nomicfoundation/edr-win32-x64-msvc@0.12.0-next.16': {} - '@nomicfoundation/edr@0.12.0-next.14': + '@nomicfoundation/edr@0.12.0-next.16': dependencies: - '@nomicfoundation/edr-darwin-arm64': 0.12.0-next.14 - '@nomicfoundation/edr-darwin-x64': 0.12.0-next.14 - '@nomicfoundation/edr-linux-arm64-gnu': 0.12.0-next.14 - '@nomicfoundation/edr-linux-arm64-musl': 0.12.0-next.14 - '@nomicfoundation/edr-linux-x64-gnu': 0.12.0-next.14 - '@nomicfoundation/edr-linux-x64-musl': 0.12.0-next.14 - '@nomicfoundation/edr-win32-x64-msvc': 0.12.0-next.14 + '@nomicfoundation/edr-darwin-arm64': 0.12.0-next.16 + '@nomicfoundation/edr-darwin-x64': 0.12.0-next.16 + '@nomicfoundation/edr-linux-arm64-gnu': 0.12.0-next.16 + '@nomicfoundation/edr-linux-arm64-musl': 0.12.0-next.16 + '@nomicfoundation/edr-linux-x64-gnu': 0.12.0-next.16 + '@nomicfoundation/edr-linux-x64-musl': 0.12.0-next.16 + '@nomicfoundation/edr-win32-x64-msvc': 0.12.0-next.16 '@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.2': optional: true @@ -10060,7 +10017,7 @@ snapshots: '@npmcli/map-workspaces@3.0.6': dependencies: '@npmcli/name-from-folder': 2.0.0 - glob: 10.4.5 + glob: 10.5.0 minimatch: 9.0.5 read-package-json-fast: 3.0.2 @@ -10069,7 +10026,7 @@ snapshots: '@npmcli/package-json@5.2.1': dependencies: '@npmcli/git': 5.0.8 - glob: 10.4.5 + glob: 10.5.0 hosted-git-info: 7.0.2 json-parse-even-better-errors: 3.0.2 normalize-package-data: 6.0.2 @@ -10201,7 +10158,7 @@ snapshots: aria-hidden: 1.2.6 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-remove-scroll: 2.7.1(@types/react@18.3.27)(react@18.3.1) + react-remove-scroll: 2.7.2(@types/react@18.3.27)(react@18.3.1) optionalDependencies: '@types/react': 18.3.27 '@types/react-dom': 18.3.7(@types/react@18.3.27) @@ -10294,7 +10251,7 @@ snapshots: aria-hidden: 1.2.6 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-remove-scroll: 2.7.1(@types/react@18.3.27)(react@18.3.1) + react-remove-scroll: 2.7.2(@types/react@18.3.27)(react@18.3.1) optionalDependencies: '@types/react': 18.3.27 '@types/react-dom': 18.3.7(@types/react@18.3.27) @@ -10339,7 +10296,7 @@ snapshots: aria-hidden: 1.2.6 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-remove-scroll: 2.7.1(@types/react@18.3.27)(react@18.3.1) + react-remove-scroll: 2.7.2(@types/react@18.3.27)(react@18.3.1) optionalDependencies: '@types/react': 18.3.27 '@types/react-dom': 18.3.7(@types/react@18.3.27) @@ -11574,70 +11531,70 @@ snapshots: '@resvg/resvg-wasm@2.6.2': {} - '@rollup/rollup-android-arm-eabi@4.53.2': + '@rollup/rollup-android-arm-eabi@4.53.3': optional: true - '@rollup/rollup-android-arm64@4.53.2': + '@rollup/rollup-android-arm64@4.53.3': optional: true - '@rollup/rollup-darwin-arm64@4.53.2': + '@rollup/rollup-darwin-arm64@4.53.3': optional: true - '@rollup/rollup-darwin-x64@4.53.2': + '@rollup/rollup-darwin-x64@4.53.3': optional: true - '@rollup/rollup-freebsd-arm64@4.53.2': + '@rollup/rollup-freebsd-arm64@4.53.3': optional: true - '@rollup/rollup-freebsd-x64@4.53.2': + '@rollup/rollup-freebsd-x64@4.53.3': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.53.2': + '@rollup/rollup-linux-arm-gnueabihf@4.53.3': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.53.2': + '@rollup/rollup-linux-arm-musleabihf@4.53.3': optional: true - '@rollup/rollup-linux-arm64-gnu@4.53.2': + '@rollup/rollup-linux-arm64-gnu@4.53.3': optional: true - '@rollup/rollup-linux-arm64-musl@4.53.2': + '@rollup/rollup-linux-arm64-musl@4.53.3': optional: true - '@rollup/rollup-linux-loong64-gnu@4.53.2': + '@rollup/rollup-linux-loong64-gnu@4.53.3': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.53.2': + '@rollup/rollup-linux-ppc64-gnu@4.53.3': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.53.2': + '@rollup/rollup-linux-riscv64-gnu@4.53.3': optional: true - '@rollup/rollup-linux-riscv64-musl@4.53.2': + '@rollup/rollup-linux-riscv64-musl@4.53.3': optional: true - '@rollup/rollup-linux-s390x-gnu@4.53.2': + '@rollup/rollup-linux-s390x-gnu@4.53.3': optional: true - '@rollup/rollup-linux-x64-gnu@4.53.2': + '@rollup/rollup-linux-x64-gnu@4.53.3': optional: true - '@rollup/rollup-linux-x64-musl@4.53.2': + '@rollup/rollup-linux-x64-musl@4.53.3': optional: true - '@rollup/rollup-openharmony-arm64@4.53.2': + '@rollup/rollup-openharmony-arm64@4.53.3': optional: true - '@rollup/rollup-win32-arm64-msvc@4.53.2': + '@rollup/rollup-win32-arm64-msvc@4.53.3': optional: true - '@rollup/rollup-win32-ia32-msvc@4.53.2': + '@rollup/rollup-win32-ia32-msvc@4.53.3': optional: true - '@rollup/rollup-win32-x64-gnu@4.53.2': + '@rollup/rollup-win32-x64-gnu@4.53.3': optional: true - '@rollup/rollup-win32-x64-msvc@4.53.2': + '@rollup/rollup-win32-x64-msvc@4.53.3': optional: true '@rtsao/scc@1.1.0': {} @@ -11662,7 +11619,7 @@ snapshots: '@scure/bip32@1.7.0': dependencies: - '@noble/curves': 1.9.7 + '@noble/curves': 1.9.1 '@noble/hashes': 1.8.0 '@scure/base': 1.2.6 @@ -11739,9 +11696,9 @@ snapshots: '@types/hast': 3.0.4 hast-util-to-html: 9.0.5 - '@shikijs/core@3.15.0': + '@shikijs/core@3.20.0': dependencies: - '@shikijs/types': 3.15.0 + '@shikijs/types': 3.20.0 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 hast-util-to-html: 9.0.5 @@ -11752,37 +11709,37 @@ snapshots: '@shikijs/vscode-textmate': 10.0.2 oniguruma-to-es: 2.3.0 - '@shikijs/engine-javascript@3.15.0': + '@shikijs/engine-javascript@3.20.0': dependencies: - '@shikijs/types': 3.15.0 + '@shikijs/types': 3.20.0 '@shikijs/vscode-textmate': 10.0.2 - oniguruma-to-es: 4.3.3 + oniguruma-to-es: 4.3.4 '@shikijs/engine-oniguruma@1.29.2': dependencies: '@shikijs/types': 1.29.2 '@shikijs/vscode-textmate': 10.0.2 - '@shikijs/engine-oniguruma@3.15.0': + '@shikijs/engine-oniguruma@3.20.0': dependencies: - '@shikijs/types': 3.15.0 + '@shikijs/types': 3.20.0 '@shikijs/vscode-textmate': 10.0.2 '@shikijs/langs@1.29.2': dependencies: '@shikijs/types': 1.29.2 - '@shikijs/langs@3.15.0': + '@shikijs/langs@3.20.0': dependencies: - '@shikijs/types': 3.15.0 + '@shikijs/types': 3.20.0 '@shikijs/themes@1.29.2': dependencies: '@shikijs/types': 1.29.2 - '@shikijs/themes@3.15.0': + '@shikijs/themes@3.20.0': dependencies: - '@shikijs/types': 3.15.0 + '@shikijs/types': 3.20.0 '@shikijs/twoslash@1.29.2(typescript@5.9.3)': dependencies: @@ -11798,7 +11755,7 @@ snapshots: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 - '@shikijs/types@3.15.0': + '@shikijs/types@3.20.0': dependencies: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 @@ -11878,9 +11835,9 @@ snapshots: '@swc/counter': 0.1.3 tslib: 2.8.1 - '@tailwindcss/container-queries@0.1.1(tailwindcss@3.4.18(tsx@4.20.4)(yaml@2.8.1))': + '@tailwindcss/container-queries@0.1.1(tailwindcss@3.4.19(tsx@4.20.4)(yaml@2.8.2))': dependencies: - tailwindcss: 3.4.18(tsx@4.20.4)(yaml@2.8.1) + tailwindcss: 3.4.19(tsx@4.20.4)(yaml@2.8.2) '@tanem/react-nprogress@5.0.56(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: @@ -11889,28 +11846,26 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@tanstack/query-core@5.90.8': {} + '@tanstack/query-core@5.90.12': {} - '@tanstack/react-query@5.90.8(react@18.3.1)': + '@tanstack/react-query@5.90.12(react@18.3.1)': dependencies: - '@tanstack/query-core': 5.90.8 + '@tanstack/query-core': 5.90.12 react: 18.3.1 - '@tanstack/react-virtual@3.13.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@tanstack/react-virtual@3.13.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tanstack/virtual-core': 3.13.12 + '@tanstack/virtual-core': 3.13.13 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@tanstack/virtual-core@3.13.12': {} + '@tanstack/virtual-core@3.13.13': {} '@theguild/remark-mermaid@0.1.3(react@18.3.1)': dependencies: - mermaid: 11.12.1 + mermaid: 11.12.2 react: 18.3.1 unist-util-visit: 5.0.0 - transitivePeerDependencies: - - supports-color '@theguild/remark-npm2yarn@0.3.3': dependencies: @@ -11934,7 +11889,7 @@ snapshots: '@theme-ui/core': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1) '@theme-ui/css': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1)) '@theme-ui/theme-provider': 0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1) - '@types/styled-system': 5.1.24 + '@types/styled-system': 5.1.25 react: 18.3.1 '@theme-ui/core@0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1)': @@ -11947,7 +11902,7 @@ snapshots: '@theme-ui/css@0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))': dependencies: '@emotion/react': 11.14.0(@types/react@18.3.27)(react@18.3.1) - csstype: 3.1.3 + csstype: 3.2.3 '@theme-ui/global@0.17.2(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(react@18.3.1)': dependencies: @@ -11983,7 +11938,7 @@ snapshots: '@types/concat-stream@2.0.3': dependencies: - '@types/node': 22.19.1 + '@types/node': 22.19.2 '@types/cookie@0.6.0': {} @@ -12132,7 +12087,7 @@ snapshots: '@types/katex@0.16.7': {} - '@types/lodash@4.17.20': {} + '@types/lodash@4.17.21': {} '@types/mdast@4.0.4': dependencies: @@ -12152,7 +12107,7 @@ snapshots: dependencies: '@types/unist': 3.0.3 - '@types/node@22.19.1': + '@types/node@22.19.2': dependencies: undici-types: 6.21.0 @@ -12173,9 +12128,9 @@ snapshots: '@types/semver@7.7.1': {} - '@types/styled-system@5.1.24': + '@types/styled-system@5.1.25': dependencies: - csstype: 3.1.3 + csstype: 3.2.3 '@types/supports-color@8.1.3': {} @@ -12287,7 +12242,7 @@ snapshots: '@uniswap/lib@4.0.1-alpha': {} - '@uniswap/sdk-core@7.9.0': + '@uniswap/sdk-core@7.10.0': dependencies: '@ethersproject/address': 5.8.0 '@ethersproject/bytes': 5.8.0 @@ -12299,14 +12254,14 @@ snapshots: tiny-invariant: 1.3.3 toformat: 2.0.0 - '@uniswap/swap-router-contracts@1.3.1(hardhat@2.27.0(typescript@5.9.3))': + '@uniswap/swap-router-contracts@1.3.1(hardhat@2.27.2(typescript@5.9.3))': dependencies: '@openzeppelin/contracts': 3.4.2-solc-0.7 '@uniswap/v2-core': 1.0.1 '@uniswap/v3-core': 1.0.1 '@uniswap/v3-periphery': 1.4.4 dotenv: 14.3.2 - hardhat-watcher: 2.5.0(hardhat@2.27.0(typescript@5.9.3)) + hardhat-watcher: 2.5.0(hardhat@2.27.2(typescript@5.9.3)) transitivePeerDependencies: - hardhat @@ -12324,12 +12279,12 @@ snapshots: '@uniswap/v3-core': 1.0.1 base64-sol: 1.0.1 - '@uniswap/v3-sdk@3.26.0(hardhat@2.27.0(typescript@5.9.3))': + '@uniswap/v3-sdk@3.26.0(hardhat@2.27.2(typescript@5.9.3))': dependencies: '@ethersproject/abi': 5.8.0 '@ethersproject/solidity': 5.8.0 - '@uniswap/sdk-core': 7.9.0 - '@uniswap/swap-router-contracts': 1.3.1(hardhat@2.27.0(typescript@5.9.3)) + '@uniswap/sdk-core': 7.10.0 + '@uniswap/swap-router-contracts': 1.3.1(hardhat@2.27.2(typescript@5.9.3)) '@uniswap/v3-periphery': 1.4.4 '@uniswap/v3-staker': 1.0.0 tiny-invariant: 1.3.3 @@ -12411,13 +12366,13 @@ snapshots: chai: 5.3.3 tinyrainbow: 1.2.0 - '@vitest/mocker@2.1.9(vite@5.4.21(@types/node@22.19.1))': + '@vitest/mocker@2.1.9(vite@5.4.21(@types/node@22.19.2))': dependencies: '@vitest/spy': 2.1.9 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 5.4.21(@types/node@22.19.1) + vite: 5.4.21(@types/node@22.19.2) '@vitest/pretty-format@2.1.9': dependencies: @@ -12444,13 +12399,13 @@ snapshots: loupe: 3.2.1 tinyrainbow: 1.2.0 - '@web3icons/common@0.11.27(typescript@5.9.3)': + '@web3icons/common@0.11.35(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@web3icons/react@4.0.35(react@18.3.1)(typescript@5.9.3)': + '@web3icons/react@4.1.6(react@18.3.1)(typescript@5.9.3)': dependencies: - '@web3icons/common': 0.11.27(typescript@5.9.3) + '@web3icons/common': 0.11.35(typescript@5.9.3) react: 18.3.1 transitivePeerDependencies: - typescript @@ -12476,15 +12431,10 @@ snapshots: typescript: 5.9.3 zod: 3.25.76 - abitype@1.1.1(typescript@5.9.3)(zod@3.25.76): + abitype@1.2.2(typescript@5.9.3)(zod@4.1.13): optionalDependencies: typescript: 5.9.3 - zod: 3.25.76 - - abitype@1.1.1(typescript@5.9.3)(zod@4.1.12): - optionalDependencies: - typescript: 5.9.3 - zod: 4.1.12 + zod: 4.1.13 acorn-jsx@5.3.2(acorn@8.15.0): dependencies: @@ -12531,22 +12481,22 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - algoliasearch@5.43.0: - dependencies: - '@algolia/abtesting': 1.9.0 - '@algolia/client-abtesting': 5.43.0 - '@algolia/client-analytics': 5.43.0 - '@algolia/client-common': 5.43.0 - '@algolia/client-insights': 5.43.0 - '@algolia/client-personalization': 5.43.0 - '@algolia/client-query-suggestions': 5.43.0 - '@algolia/client-search': 5.43.0 - '@algolia/ingestion': 1.43.0 - '@algolia/monitoring': 1.43.0 - '@algolia/recommend': 5.43.0 - '@algolia/requester-browser-xhr': 5.43.0 - '@algolia/requester-fetch': 5.43.0 - '@algolia/requester-node-http': 5.43.0 + algoliasearch@5.46.0: + dependencies: + '@algolia/abtesting': 1.12.0 + '@algolia/client-abtesting': 5.46.0 + '@algolia/client-analytics': 5.46.0 + '@algolia/client-common': 5.46.0 + '@algolia/client-insights': 5.46.0 + '@algolia/client-personalization': 5.46.0 + '@algolia/client-query-suggestions': 5.46.0 + '@algolia/client-search': 5.46.0 + '@algolia/ingestion': 1.46.0 + '@algolia/monitoring': 1.46.0 + '@algolia/recommend': 5.46.0 + '@algolia/requester-browser-xhr': 5.46.0 + '@algolia/requester-fetch': 5.46.0 + '@algolia/requester-node-http': 5.46.0 ansi-align@3.0.1: dependencies: @@ -12599,7 +12549,7 @@ snapshots: call-bind: 1.0.8 call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-object-atoms: 1.1.1 get-intrinsic: 1.3.0 is-string: 1.1.1 @@ -12613,7 +12563,7 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-errors: 1.3.0 es-object-atoms: 1.1.1 es-shim-unscopables: 1.1.0 @@ -12623,7 +12573,7 @@ snapshots: call-bind: 1.0.8 call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-errors: 1.3.0 es-object-atoms: 1.1.1 es-shim-unscopables: 1.1.0 @@ -12632,21 +12582,21 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-shim-unscopables: 1.1.0 array.prototype.flatmap@1.3.3: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-shim-unscopables: 1.1.0 array.prototype.tosorted@1.1.4: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-errors: 1.3.0 es-shim-unscopables: 1.1.0 @@ -12655,7 +12605,7 @@ snapshots: array-buffer-byte-length: 1.0.2 call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-errors: 1.3.0 get-intrinsic: 1.3.0 is-array-buffer: 3.0.5 @@ -12678,8 +12628,8 @@ snapshots: autoprefixer@10.4.22(postcss@8.5.6): dependencies: - browserslist: 4.28.0 - caniuse-lite: 1.0.30001754 + browserslist: 4.28.1 + caniuse-lite: 1.0.30001760 fraction.js: 5.3.4 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -12712,7 +12662,7 @@ snapshots: base64-sol@1.0.1: {} - baseline-browser-mapping@2.8.28: {} + baseline-browser-mapping@2.9.7: {} bech32@1.1.4: {} @@ -12776,13 +12726,13 @@ snapshots: browser-stdout@1.3.1: {} - browserslist@4.28.0: + browserslist@4.28.1: dependencies: - baseline-browser-mapping: 2.8.28 - caniuse-lite: 1.0.30001754 - electron-to-chromium: 1.5.250 + baseline-browser-mapping: 2.9.7 + caniuse-lite: 1.0.30001760 + electron-to-chromium: 1.5.267 node-releases: 2.0.27 - update-browserslist-db: 1.1.4(browserslist@4.28.0) + update-browserslist-db: 1.2.2(browserslist@4.28.1) buffer-from@1.1.2: {} @@ -12791,9 +12741,9 @@ snapshots: base64-js: 1.5.1 ieee754: 1.2.1 - bundle-require@5.1.0(esbuild@0.27.0): + bundle-require@5.1.0(esbuild@0.27.1): dependencies: - esbuild: 0.27.0 + esbuild: 0.27.1 load-tsconfig: 0.2.5 busboy@1.6.0: @@ -12829,7 +12779,7 @@ snapshots: camelize@1.0.1: {} - caniuse-lite@1.0.30001754: {} + caniuse-lite@1.0.30001760: {} ccount@2.0.1: {} @@ -12930,7 +12880,7 @@ snapshots: dependencies: color-name: 1.1.4 - color-convert@3.1.2: + color-convert@3.1.3: dependencies: color-name: 2.1.0 @@ -12944,7 +12894,7 @@ snapshots: simple-swizzle: 0.2.4 optional: true - color-string@2.1.2: + color-string@2.1.4: dependencies: color-name: 2.1.0 @@ -12954,10 +12904,10 @@ snapshots: color-string: 1.9.1 optional: true - color@5.0.2: + color@5.0.3: dependencies: - color-convert: 3.1.2 - color-string: 2.1.2 + color-convert: 3.1.3 + color-string: 2.1.4 combined-stream@1.0.8: dependencies: @@ -12990,8 +12940,6 @@ snapshots: confbox@0.1.8: {} - confbox@0.2.2: {} - consola@3.4.2: {} convert-source-map@1.9.0: {} @@ -13016,12 +12964,6 @@ snapshots: path-type: 4.0.0 yaml: 1.10.2 - cross-fetch@3.2.0: - dependencies: - node-fetch: 2.7.0 - transitivePeerDependencies: - - encoding - cross-spawn@7.0.6: dependencies: path-key: 3.1.1 @@ -13051,8 +12993,6 @@ snapshots: '@asamuzakjp/css-color': 3.2.0 rrweb-cssom: 0.8.0 - csstype@3.1.3: {} - csstype@3.2.3: {} cytoscape-cose-bilkent@4.1.0(cytoscape@3.33.1): @@ -13358,9 +13298,9 @@ snapshots: dom-helpers@5.2.1: dependencies: '@babel/runtime': 7.28.4 - csstype: 3.1.3 + csstype: 3.2.3 - dompurify@3.3.0: + dompurify@3.3.1: optionalDependencies: '@types/trusted-types': 2.0.7 @@ -13376,7 +13316,7 @@ snapshots: eastasianwidth@0.2.0: {} - electron-to-chromium@1.5.250: {} + electron-to-chromium@1.5.267: {} elliptic@6.6.1: dependencies: @@ -13417,7 +13357,7 @@ snapshots: dependencies: stackframe: 0.3.1 - es-abstract@1.24.0: + es-abstract@1.24.1: dependencies: array-buffer-byte-length: 1.0.2 arraybuffer.prototype.slice: 1.0.4 @@ -13483,7 +13423,7 @@ snapshots: call-bind: 1.0.8 call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-errors: 1.3.0 es-set-tostringtag: 2.1.0 function-bind: 1.1.2 @@ -13614,34 +13554,34 @@ snapshots: '@esbuild/win32-ia32': 0.25.12 '@esbuild/win32-x64': 0.25.12 - esbuild@0.27.0: + esbuild@0.27.1: optionalDependencies: - '@esbuild/aix-ppc64': 0.27.0 - '@esbuild/android-arm': 0.27.0 - '@esbuild/android-arm64': 0.27.0 - '@esbuild/android-x64': 0.27.0 - '@esbuild/darwin-arm64': 0.27.0 - '@esbuild/darwin-x64': 0.27.0 - '@esbuild/freebsd-arm64': 0.27.0 - '@esbuild/freebsd-x64': 0.27.0 - '@esbuild/linux-arm': 0.27.0 - '@esbuild/linux-arm64': 0.27.0 - '@esbuild/linux-ia32': 0.27.0 - '@esbuild/linux-loong64': 0.27.0 - '@esbuild/linux-mips64el': 0.27.0 - '@esbuild/linux-ppc64': 0.27.0 - '@esbuild/linux-riscv64': 0.27.0 - '@esbuild/linux-s390x': 0.27.0 - '@esbuild/linux-x64': 0.27.0 - '@esbuild/netbsd-arm64': 0.27.0 - '@esbuild/netbsd-x64': 0.27.0 - '@esbuild/openbsd-arm64': 0.27.0 - '@esbuild/openbsd-x64': 0.27.0 - '@esbuild/openharmony-arm64': 0.27.0 - '@esbuild/sunos-x64': 0.27.0 - '@esbuild/win32-arm64': 0.27.0 - '@esbuild/win32-ia32': 0.27.0 - '@esbuild/win32-x64': 0.27.0 + '@esbuild/aix-ppc64': 0.27.1 + '@esbuild/android-arm': 0.27.1 + '@esbuild/android-arm64': 0.27.1 + '@esbuild/android-x64': 0.27.1 + '@esbuild/darwin-arm64': 0.27.1 + '@esbuild/darwin-x64': 0.27.1 + '@esbuild/freebsd-arm64': 0.27.1 + '@esbuild/freebsd-x64': 0.27.1 + '@esbuild/linux-arm': 0.27.1 + '@esbuild/linux-arm64': 0.27.1 + '@esbuild/linux-ia32': 0.27.1 + '@esbuild/linux-loong64': 0.27.1 + '@esbuild/linux-mips64el': 0.27.1 + '@esbuild/linux-ppc64': 0.27.1 + '@esbuild/linux-riscv64': 0.27.1 + '@esbuild/linux-s390x': 0.27.1 + '@esbuild/linux-x64': 0.27.1 + '@esbuild/netbsd-arm64': 0.27.1 + '@esbuild/netbsd-x64': 0.27.1 + '@esbuild/openbsd-arm64': 0.27.1 + '@esbuild/openbsd-x64': 0.27.1 + '@esbuild/openharmony-arm64': 0.27.1 + '@esbuild/sunos-x64': 0.27.1 + '@esbuild/win32-arm64': 0.27.1 + '@esbuild/win32-ia32': 0.27.1 + '@esbuild/win32-x64': 0.27.1 escalade@3.2.0: {} @@ -13994,7 +13934,7 @@ snapshots: exit-hook@2.2.1: {} - expect-type@1.2.2: {} + expect-type@1.3.0: {} exsolve@1.0.8: {} @@ -14006,7 +13946,7 @@ snapshots: fast-deep-equal@3.1.3: {} - fast-equals@5.3.3: {} + fast-equals@5.4.0: {} fast-fuzzy@1.12.0: dependencies: @@ -14026,9 +13966,9 @@ snapshots: fast-uri@3.1.0: {} - fast-xml-parser@5.3.2: + fast-xml-parser@5.3.3: dependencies: - strnum: 2.1.1 + strnum: 2.1.2 fastq@1.19.1: dependencies: @@ -14072,7 +14012,7 @@ snapshots: dependencies: magic-string: 0.30.21 mlly: 1.8.0 - rollup: 4.53.2 + rollup: 4.53.3 flat-cache@3.2.0: dependencies: @@ -14097,7 +14037,7 @@ snapshots: cross-spawn: 7.0.6 signal-exit: 4.1.0 - form-data@4.0.4: + form-data@4.0.5: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 @@ -14111,7 +14051,7 @@ snapshots: fraction.js@5.3.4: {} - framer-motion@12.23.24(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + framer-motion@12.23.26(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: motion-dom: 12.23.23 motion-utils: 12.23.6 @@ -14202,7 +14142,7 @@ snapshots: glob-to-regexp@0.4.1: {} - glob@10.4.5: + glob@10.5.0: dependencies: foreground-child: 3.3.1 jackspeak: 3.4.3 @@ -14211,6 +14151,15 @@ snapshots: package-json-from-dist: 1.0.1 path-scurry: 1.11.1 + glob@11.1.0: + dependencies: + foreground-child: 3.3.1 + jackspeak: 4.1.1 + minimatch: 10.1.1 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 2.0.1 + glob@7.1.7: dependencies: fs.realpath: 1.0.0 @@ -14241,8 +14190,6 @@ snapshots: dependencies: type-fest: 0.20.2 - globals@15.15.0: {} - globalthis@1.0.4: dependencies: define-properties: 1.2.1 @@ -14270,15 +14217,12 @@ snapshots: js-base64: 3.7.8 unicode-trie: 2.0.0 - graphql-request@6.1.0(graphql@16.12.0): + graphql-request@7.1.2(graphql@16.12.0): dependencies: '@graphql-typed-document-node/core': 3.2.0(graphql@16.12.0) - cross-fetch: 3.2.0 graphql: 16.12.0 - transitivePeerDependencies: - - encoding - graphql-request@7.3.3(graphql@16.12.0): + graphql-request@7.4.0(graphql@16.12.0): dependencies: '@graphql-typed-document-node/core': 3.2.0(graphql@16.12.0) graphql: 16.12.0 @@ -14292,23 +14236,23 @@ snapshots: gray-matter@4.0.3: dependencies: - js-yaml: 3.14.1 + js-yaml: 3.14.2 kind-of: 6.0.3 section-matter: 1.0.0 strip-bom-string: 1.0.0 hachure-fill@0.5.2: {} - hardhat-watcher@2.5.0(hardhat@2.27.0(typescript@5.9.3)): + hardhat-watcher@2.5.0(hardhat@2.27.2(typescript@5.9.3)): dependencies: chokidar: 3.6.0 - hardhat: 2.27.0(typescript@5.9.3) + hardhat: 2.27.2(typescript@5.9.3) - hardhat@2.27.0(typescript@5.9.3): + hardhat@2.27.2(typescript@5.9.3): dependencies: '@ethereumjs/util': 9.1.0 '@ethersproject/abi': 5.8.0 - '@nomicfoundation/edr': 0.12.0-next.14 + '@nomicfoundation/edr': 0.12.0-next.16 '@nomicfoundation/solidity-analyzer': 0.1.2 '@sentry/node': 5.30.0 adm-zip: 0.4.16 @@ -14334,7 +14278,7 @@ snapshots: mocha: 10.8.2 p-map: 4.0.0 picocolors: 1.1.1 - raw-body: 2.5.2 + raw-body: 2.5.3 resolve: 1.17.0 semver: 6.3.1 solc: 0.8.26(debug@4.4.3) @@ -14429,7 +14373,7 @@ snapshots: mdast-util-mdx-jsx: 3.2.0 property-information: 7.1.0 space-separated-tokens: 2.0.2 - style-to-js: 1.1.19 + style-to-js: 1.1.21 transitivePeerDependencies: - supports-color @@ -14439,9 +14383,9 @@ snapshots: '@types/unist': 3.0.3 '@ungap/structured-clone': 1.3.0 hast-util-from-parse5: 8.0.3 - hast-util-to-parse5: 8.0.0 + hast-util-to-parse5: 8.0.1 html-void-elements: 3.0.0 - mdast-util-to-hast: 13.2.0 + mdast-util-to-hast: 13.2.1 parse5: 7.3.0 unist-util-position: 5.0.0 unist-util-visit: 5.0.0 @@ -14464,7 +14408,7 @@ snapshots: mdast-util-mdxjs-esm: 2.0.1 property-information: 7.1.0 space-separated-tokens: 2.0.2 - style-to-js: 1.1.19 + style-to-js: 1.1.21 unist-util-position: 5.0.0 zwitch: 2.0.4 transitivePeerDependencies: @@ -14478,7 +14422,7 @@ snapshots: comma-separated-tokens: 2.0.3 hast-util-whitespace: 3.0.0 html-void-elements: 3.0.0 - mdast-util-to-hast: 13.2.0 + mdast-util-to-hast: 13.2.1 property-information: 7.1.0 space-separated-tokens: 2.0.2 stringify-entities: 4.0.4 @@ -14498,18 +14442,18 @@ snapshots: mdast-util-mdxjs-esm: 2.0.1 property-information: 7.1.0 space-separated-tokens: 2.0.2 - style-to-js: 1.1.19 + style-to-js: 1.1.21 unist-util-position: 5.0.0 vfile-message: 4.0.3 transitivePeerDependencies: - supports-color - hast-util-to-parse5@8.0.0: + hast-util-to-parse5@8.0.1: dependencies: '@types/hast': 3.0.4 comma-separated-tokens: 2.0.3 devlop: 1.1.0 - property-information: 6.5.0 + property-information: 7.1.0 space-separated-tokens: 2.0.2 web-namespaces: 2.0.1 zwitch: 2.0.4 @@ -14565,12 +14509,12 @@ snapshots: html-void-elements@3.0.0: {} - http-errors@2.0.0: + http-errors@2.0.1: dependencies: depd: 2.0.0 inherits: 2.0.4 setprototypeof: 1.2.0 - statuses: 2.0.1 + statuses: 2.0.2 toidentifier: 1.0.1 http-proxy-agent@7.0.2: @@ -14632,7 +14576,7 @@ snapshots: ini@4.1.3: {} - inline-style-parser@0.2.6: {} + inline-style-parser@0.2.7: {} internal-slot@1.1.0: dependencies: @@ -14852,6 +14796,10 @@ snapshots: optionalDependencies: '@pkgjs/parseargs': 0.11.0 + jackspeak@4.1.1: + dependencies: + '@isaacs/cliui': 8.0.2 + jest-image-snapshot@6.5.1: dependencies: chalk: 4.1.2 @@ -14872,7 +14820,7 @@ snapshots: js-tokens@4.0.0: {} - js-yaml@3.14.1: + js-yaml@3.14.2: dependencies: argparse: 1.0.10 esprima: 4.0.1 @@ -14888,12 +14836,12 @@ snapshots: cssstyle: 4.6.0 data-urls: 5.0.0 decimal.js: 10.6.0 - form-data: 4.0.4 + form-data: 4.0.5 html-encoding-sniffer: 4.0.0 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.22 + nwsapi: 2.2.23 parse5: 7.3.0 rrweb-cssom: 0.7.1 saxes: 6.0.0 @@ -14944,7 +14892,7 @@ snapshots: object.assign: 4.1.7 object.values: 1.2.1 - katex@0.16.25: + katex@0.16.27: dependencies: commander: 8.3.0 @@ -14966,8 +14914,6 @@ snapshots: kleur@4.1.5: {} - kolorist@1.8.0: {} - langium@3.3.1: dependencies: chevrotain: 11.0.3 @@ -15013,12 +14959,6 @@ snapshots: load-tsconfig@0.2.5: {} - local-pkg@1.1.2: - dependencies: - mlly: 1.8.0 - pkg-types: 2.3.0 - quansync: 0.2.11 - locate-path@6.0.0: dependencies: p-locate: 5.0.0 @@ -15044,6 +14984,8 @@ snapshots: lru-cache@10.4.3: {} + lru-cache@11.2.4: {} + lru_map@0.3.3: {} magic-string@0.25.9: @@ -15233,7 +15175,7 @@ snapshots: '@types/mdast': 4.0.4 unist-util-is: 6.0.1 - mdast-util-to-hast@13.2.0: + mdast-util-to-hast@13.2.1: dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 @@ -15267,10 +15209,10 @@ snapshots: merge2@1.4.1: {} - mermaid@11.12.1: + mermaid@11.12.2: dependencies: '@braintree/sanitize-url': 7.1.1 - '@iconify/utils': 3.0.2 + '@iconify/utils': 3.1.0 '@mermaid-js/parser': 0.6.3 '@types/d3': 7.4.3 cytoscape: 3.33.1 @@ -15280,8 +15222,8 @@ snapshots: d3-sankey: 0.12.3 dagre-d3-es: 7.0.13 dayjs: 1.11.19 - dompurify: 3.3.0 - katex: 0.16.25 + dompurify: 3.3.1 + katex: 0.16.27 khroma: 2.1.0 lodash-es: 4.17.21 marked: 16.4.2 @@ -15289,8 +15231,6 @@ snapshots: stylis: 4.3.6 ts-dedent: 2.2.0 uuid: 11.1.0 - transitivePeerDependencies: - - supports-color mhchemparser@4.2.1: {} @@ -15392,7 +15332,7 @@ snapshots: dependencies: '@types/katex': 0.16.7 devlop: 1.1.0 - katex: 0.16.25 + katex: 0.16.27 micromark-factory-space: 2.0.1 micromark-util-character: 2.1.1 micromark-util-symbol: 2.0.1 @@ -15698,9 +15638,9 @@ snapshots: motion-utils@12.23.6: {} - motion@12.23.24(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + motion@12.23.26(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - framer-motion: 12.23.24(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + framer-motion: 12.23.26(@emotion/is-prop-valid@0.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) tslib: 2.8.1 optionalDependencies: '@emotion/is-prop-valid': 0.8.8 @@ -15727,26 +15667,26 @@ snapshots: negotiator@1.0.0: {} - next-seo@6.8.0(next@14.2.33(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + next-seo@6.8.0(next@14.2.35(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - next: 14.2.33(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next: 14.2.35(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - next-sitemap@4.2.3(next@14.2.33(react-dom@18.3.1(react@18.3.1))(react@18.3.1)): + next-sitemap@4.2.3(next@14.2.35(react-dom@18.3.1(react@18.3.1))(react@18.3.1)): dependencies: '@corex/deepmerge': 4.0.43 '@next/env': 13.5.11 fast-glob: 3.3.3 minimist: 1.2.8 - next: 14.2.33(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next: 14.2.35(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - next@14.2.33(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + next@14.2.35(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - '@next/env': 14.2.33 + '@next/env': 14.2.35 '@swc/helpers': 0.5.5 busboy: 1.6.0 - caniuse-lite: 1.0.30001754 + caniuse-lite: 1.0.30001760 graceful-fs: 4.2.11 postcss: 8.4.31 react: 18.3.1 @@ -15766,7 +15706,7 @@ snapshots: - '@babel/core' - babel-plugin-macros - nextra@3.3.1(@types/react@18.3.27)(next@14.2.33(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.3): + nextra@3.3.1(@types/react@18.3.27)(next@14.2.35(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.3): dependencies: '@formatjs/intl-localematcher': 0.5.10 '@headlessui/react': 2.2.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -15784,12 +15724,12 @@ snapshots: graceful-fs: 4.2.11 gray-matter: 4.0.3 hast-util-to-estree: 3.1.3 - katex: 0.16.25 + katex: 0.16.27 mdast-util-from-markdown: 2.0.2 mdast-util-gfm: 3.1.0 - mdast-util-to-hast: 13.2.0 + mdast-util-to-hast: 13.2.1 negotiator: 1.0.0 - next: 14.2.33(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next: 14.2.35(react-dom@18.3.1(react@18.3.1))(react@18.3.1) p-limit: 6.2.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -15807,7 +15747,7 @@ snapshots: title: 4.0.1 unist-util-remove: 4.0.0 unist-util-visit: 5.0.0 - yaml: 2.8.1 + yaml: 2.8.2 zod: 3.25.76 zod-validation-error: 3.5.4(zod@3.25.76) transitivePeerDependencies: @@ -15821,10 +15761,6 @@ snapshots: node-addon-api@2.0.2: {} - node-fetch@2.7.0: - dependencies: - whatwg-url: 5.0.0 - node-gyp-build@4.8.4: {} node-releases@2.0.27: {} @@ -15871,7 +15807,7 @@ snapshots: numeral@2.0.6: {} - nwsapi@2.2.22: {} + nwsapi@2.2.23: {} object-assign@4.1.1: {} @@ -15901,14 +15837,14 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-object-atoms: 1.1.1 object.groupby@1.0.3: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 object.values@1.2.1: dependencies: @@ -15941,10 +15877,10 @@ snapshots: regex: 5.1.1 regex-recursion: 5.1.1 - oniguruma-to-es@4.3.3: + oniguruma-to-es@4.3.4: dependencies: oniguruma-parser: 0.12.1 - regex: 6.0.1 + regex: 6.1.0 regex-recursion: 6.0.2 openapi-types@12.1.3: {} @@ -15986,7 +15922,7 @@ snapshots: '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.1.1(typescript@5.9.3)(zod@3.25.76) + abitype: 1.1.0(typescript@5.9.3)(zod@3.25.76) eventemitter3: 5.0.1 optionalDependencies: typescript: 5.9.3 @@ -16011,7 +15947,7 @@ snapshots: package-json-from-dist@1.0.1: {} - package-manager-detector@1.5.0: {} + package-manager-detector@1.6.0: {} pako@0.2.9: {} @@ -16085,6 +16021,11 @@ snapshots: lru-cache: 10.4.3 minipass: 7.1.2 + path-scurry@2.0.1: + dependencies: + lru-cache: 11.2.4 + minipass: 7.1.2 + path-to-regexp@6.3.0: {} path-type@4.0.0: {} @@ -16115,12 +16056,6 @@ snapshots: mlly: 1.8.0 pathe: 2.0.3 - pkg-types@2.3.0: - dependencies: - confbox: 0.2.2 - exsolve: 1.0.8 - pathe: 2.0.3 - pluralize@8.0.0: {} pngjs@3.4.0: {} @@ -16148,14 +16083,14 @@ snapshots: camelcase-css: 2.0.1 postcss: 8.5.6 - postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.4)(yaml@2.8.1): + postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.4)(yaml@2.8.2): dependencies: lilconfig: 3.1.3 optionalDependencies: jiti: 1.21.7 postcss: 8.5.6 tsx: 4.20.4 - yaml: 2.8.1 + yaml: 2.8.2 postcss-nested@6.2.0(postcss@8.5.6): dependencies: @@ -16183,13 +16118,13 @@ snapshots: prelude-ls@1.2.1: {} - prettier-plugin-tailwindcss@0.7.1(prettier@3.6.2): + prettier-plugin-tailwindcss@0.7.2(prettier@3.7.4): dependencies: - prettier: 3.6.2 + prettier: 3.7.4 prettier@2.8.8: {} - prettier@3.6.2: {} + prettier@3.7.4: {} printable-characters@1.0.42: {} @@ -16221,8 +16156,6 @@ snapshots: object-assign: 4.1.1 react-is: 16.13.1 - property-information@6.5.0: {} - property-information@7.1.0: {} psl@1.15.0: @@ -16235,8 +16168,6 @@ snapshots: dependencies: side-channel: 1.1.0 - quansync@0.2.11: {} - querystringify@2.2.0: {} queue-microtask@1.2.3: {} @@ -16245,10 +16176,10 @@ snapshots: dependencies: safe-buffer: 5.2.1 - raw-body@2.5.2: + raw-body@2.5.3: dependencies: bytes: 3.1.2 - http-errors: 2.0.0 + http-errors: 2.0.1 iconv-lite: 0.4.24 unpipe: 1.0.0 @@ -16334,7 +16265,7 @@ snapshots: react-is@18.3.1: {} - react-keyed-flatten-children@5.0.1(react-is@18.3.1)(react@18.3.1): + react-keyed-flatten-children@5.1.1(react-is@18.3.1)(react@18.3.1): dependencies: react: 18.3.1 react-is: 18.3.1 @@ -16347,7 +16278,7 @@ snapshots: devlop: 1.1.0 hast-util-to-jsx-runtime: 2.3.6 html-url-attributes: 3.0.1 - mdast-util-to-hast: 13.2.0 + mdast-util-to-hast: 13.2.1 react: 18.3.1 remark-parse: 11.0.0 remark-rehype: 11.1.2 @@ -16370,7 +16301,7 @@ snapshots: optionalDependencies: '@types/react': 18.3.27 - react-remove-scroll@2.7.1(@types/react@18.3.27)(react@18.3.1): + react-remove-scroll@2.7.2(@types/react@18.3.27)(react@18.3.1): dependencies: react: 18.3.1 react-remove-scroll-bar: 2.3.8(@types/react@18.3.27)(react@18.3.1) @@ -16383,7 +16314,7 @@ snapshots: react-smooth@4.0.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - fast-equals: 5.3.3 + fast-equals: 5.4.0 prop-types: 15.8.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -16406,7 +16337,7 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-virtuoso@4.14.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + react-virtuoso@4.17.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -16488,7 +16419,7 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-errors: 1.3.0 es-object-atoms: 1.1.1 get-intrinsic: 1.3.0 @@ -16510,7 +16441,7 @@ snapshots: dependencies: regex-utilities: 2.3.0 - regex@6.0.1: + regex@6.1.0: dependencies: regex-utilities: 2.3.0 @@ -16529,7 +16460,7 @@ snapshots: '@types/katex': 0.16.7 hast-util-from-html-isomorphic: 2.0.0 hast-util-to-text: 4.0.2 - katex: 0.16.25 + katex: 0.16.27 unist-util-visit-parents: 6.0.2 vfile: 6.0.3 @@ -16661,7 +16592,7 @@ snapshots: dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 - mdast-util-to-hast: 13.2.0 + mdast-util-to-hast: 13.2.1 unified: 11.0.5 vfile: 6.0.3 @@ -16760,32 +16691,32 @@ snapshots: dependencies: estree-walker: 0.6.1 - rollup@4.53.2: + rollup@4.53.3: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.53.2 - '@rollup/rollup-android-arm64': 4.53.2 - '@rollup/rollup-darwin-arm64': 4.53.2 - '@rollup/rollup-darwin-x64': 4.53.2 - '@rollup/rollup-freebsd-arm64': 4.53.2 - '@rollup/rollup-freebsd-x64': 4.53.2 - '@rollup/rollup-linux-arm-gnueabihf': 4.53.2 - '@rollup/rollup-linux-arm-musleabihf': 4.53.2 - '@rollup/rollup-linux-arm64-gnu': 4.53.2 - '@rollup/rollup-linux-arm64-musl': 4.53.2 - '@rollup/rollup-linux-loong64-gnu': 4.53.2 - '@rollup/rollup-linux-ppc64-gnu': 4.53.2 - '@rollup/rollup-linux-riscv64-gnu': 4.53.2 - '@rollup/rollup-linux-riscv64-musl': 4.53.2 - '@rollup/rollup-linux-s390x-gnu': 4.53.2 - '@rollup/rollup-linux-x64-gnu': 4.53.2 - '@rollup/rollup-linux-x64-musl': 4.53.2 - '@rollup/rollup-openharmony-arm64': 4.53.2 - '@rollup/rollup-win32-arm64-msvc': 4.53.2 - '@rollup/rollup-win32-ia32-msvc': 4.53.2 - '@rollup/rollup-win32-x64-gnu': 4.53.2 - '@rollup/rollup-win32-x64-msvc': 4.53.2 + '@rollup/rollup-android-arm-eabi': 4.53.3 + '@rollup/rollup-android-arm64': 4.53.3 + '@rollup/rollup-darwin-arm64': 4.53.3 + '@rollup/rollup-darwin-x64': 4.53.3 + '@rollup/rollup-freebsd-arm64': 4.53.3 + '@rollup/rollup-freebsd-x64': 4.53.3 + '@rollup/rollup-linux-arm-gnueabihf': 4.53.3 + '@rollup/rollup-linux-arm-musleabihf': 4.53.3 + '@rollup/rollup-linux-arm64-gnu': 4.53.3 + '@rollup/rollup-linux-arm64-musl': 4.53.3 + '@rollup/rollup-linux-loong64-gnu': 4.53.3 + '@rollup/rollup-linux-ppc64-gnu': 4.53.3 + '@rollup/rollup-linux-riscv64-gnu': 4.53.3 + '@rollup/rollup-linux-riscv64-musl': 4.53.3 + '@rollup/rollup-linux-s390x-gnu': 4.53.3 + '@rollup/rollup-linux-x64-gnu': 4.53.3 + '@rollup/rollup-linux-x64-musl': 4.53.3 + '@rollup/rollup-openharmony-arm64': 4.53.3 + '@rollup/rollup-win32-arm64-msvc': 4.53.3 + '@rollup/rollup-win32-ia32-msvc': 4.53.3 + '@rollup/rollup-win32-x64-gnu': 4.53.3 + '@rollup/rollup-win32-x64-msvc': 4.53.3 fsevents: 2.3.3 roughjs@4.6.6: @@ -16941,14 +16872,14 @@ snapshots: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 - shiki@3.15.0: + shiki@3.20.0: dependencies: - '@shikijs/core': 3.15.0 - '@shikijs/engine-javascript': 3.15.0 - '@shikijs/engine-oniguruma': 3.15.0 - '@shikijs/langs': 3.15.0 - '@shikijs/themes': 3.15.0 - '@shikijs/types': 3.15.0 + '@shikijs/core': 3.20.0 + '@shikijs/engine-javascript': 3.20.0 + '@shikijs/engine-oniguruma': 3.20.0 + '@shikijs/langs': 3.20.0 + '@shikijs/themes': 3.20.0 + '@shikijs/types': 3.20.0 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 @@ -17084,7 +17015,7 @@ snapshots: as-table: 1.0.55 get-source: 2.0.12 - statuses@2.0.1: {} + statuses@2.0.2: {} std-env@3.10.0: {} @@ -17121,14 +17052,14 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 string.prototype.matchall@4.0.12: dependencies: call-bind: 1.0.8 call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-errors: 1.3.0 es-object-atoms: 1.1.1 get-intrinsic: 1.3.0 @@ -17142,7 +17073,7 @@ snapshots: string.prototype.repeat@1.0.0: dependencies: define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 string.prototype.trim@1.2.10: dependencies: @@ -17150,7 +17081,7 @@ snapshots: call-bound: 1.0.4 define-data-property: 1.1.4 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-object-atoms: 1.1.1 has-property-descriptors: 1.0.2 @@ -17198,15 +17129,15 @@ snapshots: strip-json-comments@3.1.1: {} - strnum@2.1.1: {} + strnum@2.1.2: {} - style-to-js@1.1.19: + style-to-js@1.1.21: dependencies: - style-to-object: 1.0.12 + style-to-object: 1.0.14 - style-to-object@1.0.12: + style-to-object@1.0.14: dependencies: - inline-style-parser: 0.2.6 + inline-style-parser: 0.2.7 styled-jsx@5.1.1(react@18.3.1): dependencies: @@ -17233,14 +17164,14 @@ snapshots: stylis@4.3.6: {} - sucrase@3.35.0: + sucrase@3.35.1: dependencies: '@jridgewell/gen-mapping': 0.3.13 commander: 4.1.1 - glob: 10.4.5 lines-and-columns: 1.2.4 mz: 2.7.0 pirates: 4.0.7 + tinyglobby: 0.2.15 ts-interface-checker: 0.1.13 supports-color@7.2.0: @@ -17265,7 +17196,7 @@ snapshots: tabbable@6.3.0: {} - tailwindcss@3.4.18(tsx@4.20.4)(yaml@2.8.1): + tailwindcss@3.4.19(tsx@4.20.4)(yaml@2.8.2): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -17284,11 +17215,11 @@ snapshots: postcss: 8.5.6 postcss-import: 15.1.0(postcss@8.5.6) postcss-js: 4.1.0(postcss@8.5.6) - postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.4)(yaml@2.8.1) + postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.4)(yaml@2.8.2) postcss-nested: 6.2.0(postcss@8.5.6) postcss-selector-parser: 6.1.2 resolve: 1.22.11 - sucrase: 3.35.0 + sucrase: 3.35.1 transitivePeerDependencies: - tsx - yaml @@ -17362,8 +17293,6 @@ snapshots: universalify: 0.2.0 url-parse: 1.5.10 - tr46@0.0.3: {} - tr46@5.1.1: dependencies: punycode: 2.3.1 @@ -17402,22 +17331,22 @@ snapshots: tsort@0.0.1: {} - tsup@8.5.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.4)(typescript@5.9.3)(yaml@2.8.1): + tsup@8.5.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.4)(typescript@5.9.3)(yaml@2.8.2): dependencies: - bundle-require: 5.1.0(esbuild@0.27.0) + bundle-require: 5.1.0(esbuild@0.27.1) cac: 6.7.14 chokidar: 4.0.3 consola: 3.4.2 debug: 4.4.3(supports-color@8.1.1) - esbuild: 0.27.0 + esbuild: 0.27.1 fix-dts-default-cjs-exports: 1.0.1 joycon: 3.1.1 picocolors: 1.1.1 - postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.4)(yaml@2.8.1) + postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.4)(yaml@2.8.2) resolve-from: 5.0.0 - rollup: 4.53.2 + rollup: 4.53.3 source-map: 0.7.6 - sucrase: 3.35.0 + sucrase: 3.35.1 tinyexec: 0.3.2 tinyglobby: 0.2.15 tree-kill: 1.2.2 @@ -17437,32 +17366,32 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - turbo-darwin-64@2.6.1: + turbo-darwin-64@2.6.3: optional: true - turbo-darwin-arm64@2.6.1: + turbo-darwin-arm64@2.6.3: optional: true - turbo-linux-64@2.6.1: + turbo-linux-64@2.6.3: optional: true - turbo-linux-arm64@2.6.1: + turbo-linux-arm64@2.6.3: optional: true - turbo-windows-64@2.6.1: + turbo-windows-64@2.6.3: optional: true - turbo-windows-arm64@2.6.1: + turbo-windows-arm64@2.6.3: optional: true - turbo@2.6.1: + turbo@2.6.3: optionalDependencies: - turbo-darwin-64: 2.6.1 - turbo-darwin-arm64: 2.6.1 - turbo-linux-64: 2.6.1 - turbo-linux-arm64: 2.6.1 - turbo-windows-64: 2.6.1 - turbo-windows-arm64: 2.6.1 + turbo-darwin-64: 2.6.3 + turbo-darwin-arm64: 2.6.3 + turbo-linux-64: 2.6.3 + turbo-linux-arm64: 2.6.3 + turbo-windows-64: 2.6.3 + turbo-windows-arm64: 2.6.3 twoslash-protocol@0.2.12: {} @@ -17564,12 +17493,12 @@ snapshots: '@types/concat-stream': 2.0.3 '@types/debug': 4.1.12 '@types/is-empty': 1.2.3 - '@types/node': 22.19.1 + '@types/node': 22.19.2 '@types/unist': 3.0.3 concat-stream: 2.0.0 debug: 4.4.3(supports-color@8.1.1) extend: 3.0.2 - glob: 10.4.5 + glob: 10.5.0 ignore: 6.0.2 is-empty: 1.2.0 is-plain-obj: 4.1.0 @@ -17581,7 +17510,7 @@ snapshots: vfile-message: 4.0.3 vfile-reporter: 8.1.1 vfile-statistics: 3.0.0 - yaml: 2.8.1 + yaml: 2.8.2 transitivePeerDependencies: - bluebird - supports-color @@ -17709,9 +17638,9 @@ snapshots: '@unrs/resolver-binding-win32-ia32-msvc': 1.11.1 '@unrs/resolver-binding-win32-x64-msvc': 1.11.1 - update-browserslist-db@1.1.4(browserslist@4.28.0): + update-browserslist-db@1.2.2(browserslist@4.28.1): dependencies: - browserslist: 4.28.0 + browserslist: 4.28.1 escalade: 3.2.0 picocolors: 1.1.1 @@ -17822,7 +17751,7 @@ snapshots: d3-time: 3.1.0 d3-timer: 3.0.1 - viem@2.39.0(typescript@5.9.3)(zod@3.25.76): + viem@2.41.2(typescript@5.9.3)(zod@3.25.76): dependencies: '@noble/curves': 1.9.1 '@noble/hashes': 1.8.0 @@ -17839,13 +17768,13 @@ snapshots: - utf-8-validate - zod - vite-node@2.1.9(@types/node@22.19.1): + vite-node@2.1.9(@types/node@22.19.2): dependencies: cac: 6.7.14 debug: 4.4.3(supports-color@8.1.1) es-module-lexer: 1.7.0 pathe: 1.1.2 - vite: 5.4.21(@types/node@22.19.1) + vite: 5.4.21(@types/node@22.19.2) transitivePeerDependencies: - '@types/node' - less @@ -17857,19 +17786,19 @@ snapshots: - supports-color - terser - vite@5.4.21(@types/node@22.19.1): + vite@5.4.21(@types/node@22.19.2): dependencies: esbuild: 0.21.5 postcss: 8.5.6 - rollup: 4.53.2 + rollup: 4.53.3 optionalDependencies: - '@types/node': 22.19.1 + '@types/node': 22.19.2 fsevents: 2.3.3 - vitest@2.1.9(@types/node@22.19.1)(jsdom@24.1.3): + vitest@2.1.9(@types/node@22.19.2)(jsdom@24.1.3): dependencies: '@vitest/expect': 2.1.9 - '@vitest/mocker': 2.1.9(vite@5.4.21(@types/node@22.19.1)) + '@vitest/mocker': 2.1.9(vite@5.4.21(@types/node@22.19.2)) '@vitest/pretty-format': 2.1.9 '@vitest/runner': 2.1.9 '@vitest/snapshot': 2.1.9 @@ -17877,7 +17806,7 @@ snapshots: '@vitest/utils': 2.1.9 chai: 5.3.3 debug: 4.4.3(supports-color@8.1.1) - expect-type: 1.2.2 + expect-type: 1.3.0 magic-string: 0.30.21 pathe: 1.1.2 std-env: 3.10.0 @@ -17885,11 +17814,11 @@ snapshots: tinyexec: 0.3.2 tinypool: 1.1.1 tinyrainbow: 1.2.0 - vite: 5.4.21(@types/node@22.19.1) - vite-node: 2.1.9(@types/node@22.19.1) + vite: 5.4.21(@types/node@22.19.2) + vite-node: 2.1.9(@types/node@22.19.2) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.19.1 + '@types/node': 22.19.2 jsdom: 24.1.3 transitivePeerDependencies: - less @@ -17931,8 +17860,6 @@ snapshots: web-namespaces@2.0.1: {} - webidl-conversions@3.0.1: {} - webidl-conversions@7.0.0: {} whatwg-encoding@3.1.1: @@ -17946,11 +17873,6 @@ snapshots: tr46: 5.1.1 webidl-conversions: 7.0.0 - whatwg-url@5.0.0: - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - which-boxed-primitive@1.1.1: dependencies: is-bigint: 1.1.0 @@ -18023,7 +17945,7 @@ snapshots: workerpool@6.5.1: {} - wrangler@3.114.15(@cloudflare/workers-types@4.20251120.0): + wrangler@3.114.15(@cloudflare/workers-types@4.20251213.0): dependencies: '@cloudflare/kv-asset-handler': 0.3.4 '@cloudflare/unenv-preset': 2.0.2(unenv@2.0.0-rc.14)(workerd@1.20250718.0) @@ -18036,7 +17958,7 @@ snapshots: unenv: 2.0.0-rc.14 workerd: 1.20250718.0 optionalDependencies: - '@cloudflare/workers-types': 4.20251120.0 + '@cloudflare/workers-types': 4.20251213.0 fsevents: 2.3.3 sharp: 0.33.5 transitivePeerDependencies: @@ -18073,7 +17995,7 @@ snapshots: yaml@1.10.2: {} - yaml@2.8.1: {} + yaml@2.8.2: {} yargs-parser@20.2.9: {} @@ -18122,6 +18044,6 @@ snapshots: zod@3.25.76: {} - zod@4.1.12: {} + zod@4.1.13: {} zwitch@2.0.4: {} diff --git a/website/package.json b/website/package.json index e578836b6949..209aa3c9cd1c 100644 --- a/website/package.json +++ b/website/package.json @@ -19,8 +19,8 @@ "dependencies": { "@docsearch/react": "^3.9.0", "@edgeandnode/common": "^7.0.4", - "@edgeandnode/gds": "^6.7.8", - "@edgeandnode/go": "^10.3.12", + "@edgeandnode/gds": "^6.8.1", + "@edgeandnode/go": "^10.4.1", "@emotion/react": "^11.14.0", "@graphprotocol/contracts": "^7.3.0", "@pinax/graph-networks-registry": "^0.7.1", @@ -32,10 +32,10 @@ "hast-util-whitespace": "^3.0.0", "lodash": "^4.17.21", "mdast-util-mdx-jsx": "^3.2.0", - "mdast-util-to-hast": "^13.2.0", + "mdast-util-to-hast": "^13.2.1", "mixpanel-browser": "^2.72.0", - "motion": "^12.23.24", - "next": "^14.2.33", + "motion": "^12.23.26", + "next": "^14.2.35", "next-seo": "^6.8.0", "next-sitemap": "^4.2.3", "nextra": "^3.3.1", @@ -55,17 +55,17 @@ }, "devDependencies": { "@types/hast": "^3.0.4", - "@types/lodash": "^4.17.20", + "@types/lodash": "^4.17.21", "@types/mdast": "^4.0.4", "@types/mixpanel-browser": "^2.66.0", - "@types/node": "^22.19.1", + "@types/node": "^22.19.2", "@types/react": "^18.3.27", "@types/react-dom": "^18.3.7", "@types/vfile": "^4.0.0", "autoprefixer": "^10.4.22", - "fast-xml-parser": "^5.3.2", + "fast-xml-parser": "^5.3.3", "postcss": "^8.5.6", - "tailwindcss": "^3.4.18", + "tailwindcss": "^3.4.19", "tsup": "^8.5.1", "tsx": "4.20.4" } diff --git a/website/route-lockfile.txt b/website/route-lockfile.txt index d8d2c2233666..098bfe022482 100644 --- a/website/route-lockfile.txt +++ b/website/route-lockfile.txt @@ -68,7 +68,6 @@ /ar/subgraphs/developing/subgraphs/ /ar/subgraphs/explorer/ /ar/subgraphs/fair-use-policy/ -/ar/subgraphs/guides/arweave/ /ar/subgraphs/guides/contract-analyzer/ /ar/subgraphs/guides/enums/ /ar/subgraphs/guides/grafting/ @@ -119,7 +118,6 @@ /ar/supported-networks/blast-testnet/ /ar/supported-networks/bnb-op/ /ar/supported-networks/bnb-svm/ -/ar/supported-networks/boba-bnb/ /ar/supported-networks/boba-testnet/ /ar/supported-networks/boba/ /ar/supported-networks/botanix-testnet/ @@ -138,7 +136,6 @@ /ar/supported-networks/etherlink-mainnet/ /ar/supported-networks/etherlink-shadownet/ /ar/supported-networks/etherlink-testnet/ -/ar/supported-networks/expchain-testnet/ /ar/supported-networks/fantom-testnet/ /ar/supported-networks/fantom/ /ar/supported-networks/fraxtal/ @@ -187,6 +184,7 @@ /ar/supported-networks/mbase/ /ar/supported-networks/megaeth-testnet/ /ar/supported-networks/megaeth-timothy/ +/ar/supported-networks/megaeth/ /ar/supported-networks/metis/ /ar/supported-networks/mint-sepolia/ /ar/supported-networks/mint/ @@ -222,6 +220,7 @@ /ar/supported-networks/soneium/ /ar/supported-networks/sonic-testnet/ /ar/supported-networks/sonic/ +/ar/supported-networks/stable/ /ar/supported-networks/starknet-mainnet/ /ar/supported-networks/starknet-testnet/ /ar/supported-networks/status-sepolia/ @@ -241,6 +240,7 @@ /ar/supported-networks/viction/ /ar/supported-networks/wax-testnet/ /ar/supported-networks/wax/ +/ar/supported-networks/worldchain/ /ar/supported-networks/xlayer-mainnet/ /ar/supported-networks/xlayer-sepolia/ /ar/supported-networks/zetachain/ @@ -357,7 +357,6 @@ /cs/subgraphs/developing/subgraphs/ /cs/subgraphs/explorer/ /cs/subgraphs/fair-use-policy/ -/cs/subgraphs/guides/arweave/ /cs/subgraphs/guides/contract-analyzer/ /cs/subgraphs/guides/enums/ /cs/subgraphs/guides/grafting/ @@ -408,7 +407,6 @@ /cs/supported-networks/blast-testnet/ /cs/supported-networks/bnb-op/ /cs/supported-networks/bnb-svm/ -/cs/supported-networks/boba-bnb/ /cs/supported-networks/boba-testnet/ /cs/supported-networks/boba/ /cs/supported-networks/botanix-testnet/ @@ -427,7 +425,6 @@ /cs/supported-networks/etherlink-mainnet/ /cs/supported-networks/etherlink-shadownet/ /cs/supported-networks/etherlink-testnet/ -/cs/supported-networks/expchain-testnet/ /cs/supported-networks/fantom-testnet/ /cs/supported-networks/fantom/ /cs/supported-networks/fraxtal/ @@ -476,6 +473,7 @@ /cs/supported-networks/mbase/ /cs/supported-networks/megaeth-testnet/ /cs/supported-networks/megaeth-timothy/ +/cs/supported-networks/megaeth/ /cs/supported-networks/metis/ /cs/supported-networks/mint-sepolia/ /cs/supported-networks/mint/ @@ -511,6 +509,7 @@ /cs/supported-networks/soneium/ /cs/supported-networks/sonic-testnet/ /cs/supported-networks/sonic/ +/cs/supported-networks/stable/ /cs/supported-networks/starknet-mainnet/ /cs/supported-networks/starknet-testnet/ /cs/supported-networks/status-sepolia/ @@ -530,6 +529,7 @@ /cs/supported-networks/viction/ /cs/supported-networks/wax-testnet/ /cs/supported-networks/wax/ +/cs/supported-networks/worldchain/ /cs/supported-networks/xlayer-mainnet/ /cs/supported-networks/xlayer-sepolia/ /cs/supported-networks/zetachain/ @@ -646,7 +646,6 @@ /de/subgraphs/developing/subgraphs/ /de/subgraphs/explorer/ /de/subgraphs/fair-use-policy/ -/de/subgraphs/guides/arweave/ /de/subgraphs/guides/contract-analyzer/ /de/subgraphs/guides/enums/ /de/subgraphs/guides/grafting/ @@ -697,7 +696,6 @@ /de/supported-networks/blast-testnet/ /de/supported-networks/bnb-op/ /de/supported-networks/bnb-svm/ -/de/supported-networks/boba-bnb/ /de/supported-networks/boba-testnet/ /de/supported-networks/boba/ /de/supported-networks/botanix-testnet/ @@ -716,7 +714,6 @@ /de/supported-networks/etherlink-mainnet/ /de/supported-networks/etherlink-shadownet/ /de/supported-networks/etherlink-testnet/ -/de/supported-networks/expchain-testnet/ /de/supported-networks/fantom-testnet/ /de/supported-networks/fantom/ /de/supported-networks/fraxtal/ @@ -765,6 +762,7 @@ /de/supported-networks/mbase/ /de/supported-networks/megaeth-testnet/ /de/supported-networks/megaeth-timothy/ +/de/supported-networks/megaeth/ /de/supported-networks/metis/ /de/supported-networks/mint-sepolia/ /de/supported-networks/mint/ @@ -800,6 +798,7 @@ /de/supported-networks/soneium/ /de/supported-networks/sonic-testnet/ /de/supported-networks/sonic/ +/de/supported-networks/stable/ /de/supported-networks/starknet-mainnet/ /de/supported-networks/starknet-testnet/ /de/supported-networks/status-sepolia/ @@ -819,6 +818,7 @@ /de/supported-networks/viction/ /de/supported-networks/wax-testnet/ /de/supported-networks/wax/ +/de/supported-networks/worldchain/ /de/supported-networks/xlayer-mainnet/ /de/supported-networks/xlayer-sepolia/ /de/supported-networks/zetachain/ @@ -935,7 +935,6 @@ /en/subgraphs/developing/subgraphs/ /en/subgraphs/explorer/ /en/subgraphs/fair-use-policy/ -/en/subgraphs/guides/arweave/ /en/subgraphs/guides/contract-analyzer/ /en/subgraphs/guides/enums/ /en/subgraphs/guides/grafting/ @@ -986,7 +985,6 @@ /en/supported-networks/blast-testnet/ /en/supported-networks/bnb-op/ /en/supported-networks/bnb-svm/ -/en/supported-networks/boba-bnb/ /en/supported-networks/boba-testnet/ /en/supported-networks/boba/ /en/supported-networks/botanix-testnet/ @@ -1005,7 +1003,6 @@ /en/supported-networks/etherlink-mainnet/ /en/supported-networks/etherlink-shadownet/ /en/supported-networks/etherlink-testnet/ -/en/supported-networks/expchain-testnet/ /en/supported-networks/fantom-testnet/ /en/supported-networks/fantom/ /en/supported-networks/fraxtal/ @@ -1054,6 +1051,7 @@ /en/supported-networks/mbase/ /en/supported-networks/megaeth-testnet/ /en/supported-networks/megaeth-timothy/ +/en/supported-networks/megaeth/ /en/supported-networks/metis/ /en/supported-networks/mint-sepolia/ /en/supported-networks/mint/ @@ -1089,6 +1087,7 @@ /en/supported-networks/soneium/ /en/supported-networks/sonic-testnet/ /en/supported-networks/sonic/ +/en/supported-networks/stable/ /en/supported-networks/starknet-mainnet/ /en/supported-networks/starknet-testnet/ /en/supported-networks/status-sepolia/ @@ -1108,6 +1107,7 @@ /en/supported-networks/viction/ /en/supported-networks/wax-testnet/ /en/supported-networks/wax/ +/en/supported-networks/worldchain/ /en/supported-networks/xlayer-mainnet/ /en/supported-networks/xlayer-sepolia/ /en/supported-networks/zetachain/ @@ -1134,6 +1134,8 @@ /en/token-api/evm-tokens/tokens/ /en/token-api/evm-tokens/transfers/ /en/token-api/faq/ +/en/token-api/guides/gpt/ +/en/token-api/guides/upgrade-to-v1/ /en/token-api/monitoring/health/ /en/token-api/monitoring/networks/ /en/token-api/monitoring/version/ @@ -1154,7 +1156,6 @@ /en/token-api/tvm-tokens/tokens/ /en/token-api/tvm-tokens/transfers-native/ /en/token-api/tvm-tokens/transfers/ -/en/token-api/upgrade-to-v1/ /es/ /es/404/ /es/about/ @@ -1224,7 +1225,6 @@ /es/subgraphs/developing/subgraphs/ /es/subgraphs/explorer/ /es/subgraphs/fair-use-policy/ -/es/subgraphs/guides/arweave/ /es/subgraphs/guides/contract-analyzer/ /es/subgraphs/guides/enums/ /es/subgraphs/guides/grafting/ @@ -1275,7 +1275,6 @@ /es/supported-networks/blast-testnet/ /es/supported-networks/bnb-op/ /es/supported-networks/bnb-svm/ -/es/supported-networks/boba-bnb/ /es/supported-networks/boba-testnet/ /es/supported-networks/boba/ /es/supported-networks/botanix-testnet/ @@ -1294,7 +1293,6 @@ /es/supported-networks/etherlink-mainnet/ /es/supported-networks/etherlink-shadownet/ /es/supported-networks/etherlink-testnet/ -/es/supported-networks/expchain-testnet/ /es/supported-networks/fantom-testnet/ /es/supported-networks/fantom/ /es/supported-networks/fraxtal/ @@ -1343,6 +1341,7 @@ /es/supported-networks/mbase/ /es/supported-networks/megaeth-testnet/ /es/supported-networks/megaeth-timothy/ +/es/supported-networks/megaeth/ /es/supported-networks/metis/ /es/supported-networks/mint-sepolia/ /es/supported-networks/mint/ @@ -1378,6 +1377,7 @@ /es/supported-networks/soneium/ /es/supported-networks/sonic-testnet/ /es/supported-networks/sonic/ +/es/supported-networks/stable/ /es/supported-networks/starknet-mainnet/ /es/supported-networks/starknet-testnet/ /es/supported-networks/status-sepolia/ @@ -1397,6 +1397,7 @@ /es/supported-networks/viction/ /es/supported-networks/wax-testnet/ /es/supported-networks/wax/ +/es/supported-networks/worldchain/ /es/supported-networks/xlayer-mainnet/ /es/supported-networks/xlayer-sepolia/ /es/supported-networks/zetachain/ @@ -1513,7 +1514,6 @@ /fr/subgraphs/developing/subgraphs/ /fr/subgraphs/explorer/ /fr/subgraphs/fair-use-policy/ -/fr/subgraphs/guides/arweave/ /fr/subgraphs/guides/contract-analyzer/ /fr/subgraphs/guides/enums/ /fr/subgraphs/guides/grafting/ @@ -1564,7 +1564,6 @@ /fr/supported-networks/blast-testnet/ /fr/supported-networks/bnb-op/ /fr/supported-networks/bnb-svm/ -/fr/supported-networks/boba-bnb/ /fr/supported-networks/boba-testnet/ /fr/supported-networks/boba/ /fr/supported-networks/botanix-testnet/ @@ -1583,7 +1582,6 @@ /fr/supported-networks/etherlink-mainnet/ /fr/supported-networks/etherlink-shadownet/ /fr/supported-networks/etherlink-testnet/ -/fr/supported-networks/expchain-testnet/ /fr/supported-networks/fantom-testnet/ /fr/supported-networks/fantom/ /fr/supported-networks/fraxtal/ @@ -1632,6 +1630,7 @@ /fr/supported-networks/mbase/ /fr/supported-networks/megaeth-testnet/ /fr/supported-networks/megaeth-timothy/ +/fr/supported-networks/megaeth/ /fr/supported-networks/metis/ /fr/supported-networks/mint-sepolia/ /fr/supported-networks/mint/ @@ -1667,6 +1666,7 @@ /fr/supported-networks/soneium/ /fr/supported-networks/sonic-testnet/ /fr/supported-networks/sonic/ +/fr/supported-networks/stable/ /fr/supported-networks/starknet-mainnet/ /fr/supported-networks/starknet-testnet/ /fr/supported-networks/status-sepolia/ @@ -1686,6 +1686,7 @@ /fr/supported-networks/viction/ /fr/supported-networks/wax-testnet/ /fr/supported-networks/wax/ +/fr/supported-networks/worldchain/ /fr/supported-networks/xlayer-mainnet/ /fr/supported-networks/xlayer-sepolia/ /fr/supported-networks/zetachain/ @@ -1802,7 +1803,6 @@ /hi/subgraphs/developing/subgraphs/ /hi/subgraphs/explorer/ /hi/subgraphs/fair-use-policy/ -/hi/subgraphs/guides/arweave/ /hi/subgraphs/guides/contract-analyzer/ /hi/subgraphs/guides/enums/ /hi/subgraphs/guides/grafting/ @@ -1853,7 +1853,6 @@ /hi/supported-networks/blast-testnet/ /hi/supported-networks/bnb-op/ /hi/supported-networks/bnb-svm/ -/hi/supported-networks/boba-bnb/ /hi/supported-networks/boba-testnet/ /hi/supported-networks/boba/ /hi/supported-networks/botanix-testnet/ @@ -1872,7 +1871,6 @@ /hi/supported-networks/etherlink-mainnet/ /hi/supported-networks/etherlink-shadownet/ /hi/supported-networks/etherlink-testnet/ -/hi/supported-networks/expchain-testnet/ /hi/supported-networks/fantom-testnet/ /hi/supported-networks/fantom/ /hi/supported-networks/fraxtal/ @@ -1921,6 +1919,7 @@ /hi/supported-networks/mbase/ /hi/supported-networks/megaeth-testnet/ /hi/supported-networks/megaeth-timothy/ +/hi/supported-networks/megaeth/ /hi/supported-networks/metis/ /hi/supported-networks/mint-sepolia/ /hi/supported-networks/mint/ @@ -1956,6 +1955,7 @@ /hi/supported-networks/soneium/ /hi/supported-networks/sonic-testnet/ /hi/supported-networks/sonic/ +/hi/supported-networks/stable/ /hi/supported-networks/starknet-mainnet/ /hi/supported-networks/starknet-testnet/ /hi/supported-networks/status-sepolia/ @@ -1975,6 +1975,7 @@ /hi/supported-networks/viction/ /hi/supported-networks/wax-testnet/ /hi/supported-networks/wax/ +/hi/supported-networks/worldchain/ /hi/supported-networks/xlayer-mainnet/ /hi/supported-networks/xlayer-sepolia/ /hi/supported-networks/zetachain/ @@ -2091,7 +2092,6 @@ /it/subgraphs/developing/subgraphs/ /it/subgraphs/explorer/ /it/subgraphs/fair-use-policy/ -/it/subgraphs/guides/arweave/ /it/subgraphs/guides/contract-analyzer/ /it/subgraphs/guides/enums/ /it/subgraphs/guides/grafting/ @@ -2142,7 +2142,6 @@ /it/supported-networks/blast-testnet/ /it/supported-networks/bnb-op/ /it/supported-networks/bnb-svm/ -/it/supported-networks/boba-bnb/ /it/supported-networks/boba-testnet/ /it/supported-networks/boba/ /it/supported-networks/botanix-testnet/ @@ -2161,7 +2160,6 @@ /it/supported-networks/etherlink-mainnet/ /it/supported-networks/etherlink-shadownet/ /it/supported-networks/etherlink-testnet/ -/it/supported-networks/expchain-testnet/ /it/supported-networks/fantom-testnet/ /it/supported-networks/fantom/ /it/supported-networks/fraxtal/ @@ -2210,6 +2208,7 @@ /it/supported-networks/mbase/ /it/supported-networks/megaeth-testnet/ /it/supported-networks/megaeth-timothy/ +/it/supported-networks/megaeth/ /it/supported-networks/metis/ /it/supported-networks/mint-sepolia/ /it/supported-networks/mint/ @@ -2245,6 +2244,7 @@ /it/supported-networks/soneium/ /it/supported-networks/sonic-testnet/ /it/supported-networks/sonic/ +/it/supported-networks/stable/ /it/supported-networks/starknet-mainnet/ /it/supported-networks/starknet-testnet/ /it/supported-networks/status-sepolia/ @@ -2264,6 +2264,7 @@ /it/supported-networks/viction/ /it/supported-networks/wax-testnet/ /it/supported-networks/wax/ +/it/supported-networks/worldchain/ /it/supported-networks/xlayer-mainnet/ /it/supported-networks/xlayer-sepolia/ /it/supported-networks/zetachain/ @@ -2380,7 +2381,6 @@ /ja/subgraphs/developing/subgraphs/ /ja/subgraphs/explorer/ /ja/subgraphs/fair-use-policy/ -/ja/subgraphs/guides/arweave/ /ja/subgraphs/guides/contract-analyzer/ /ja/subgraphs/guides/enums/ /ja/subgraphs/guides/grafting/ @@ -2431,7 +2431,6 @@ /ja/supported-networks/blast-testnet/ /ja/supported-networks/bnb-op/ /ja/supported-networks/bnb-svm/ -/ja/supported-networks/boba-bnb/ /ja/supported-networks/boba-testnet/ /ja/supported-networks/boba/ /ja/supported-networks/botanix-testnet/ @@ -2450,7 +2449,6 @@ /ja/supported-networks/etherlink-mainnet/ /ja/supported-networks/etherlink-shadownet/ /ja/supported-networks/etherlink-testnet/ -/ja/supported-networks/expchain-testnet/ /ja/supported-networks/fantom-testnet/ /ja/supported-networks/fantom/ /ja/supported-networks/fraxtal/ @@ -2499,6 +2497,7 @@ /ja/supported-networks/mbase/ /ja/supported-networks/megaeth-testnet/ /ja/supported-networks/megaeth-timothy/ +/ja/supported-networks/megaeth/ /ja/supported-networks/metis/ /ja/supported-networks/mint-sepolia/ /ja/supported-networks/mint/ @@ -2534,6 +2533,7 @@ /ja/supported-networks/soneium/ /ja/supported-networks/sonic-testnet/ /ja/supported-networks/sonic/ +/ja/supported-networks/stable/ /ja/supported-networks/starknet-mainnet/ /ja/supported-networks/starknet-testnet/ /ja/supported-networks/status-sepolia/ @@ -2553,6 +2553,7 @@ /ja/supported-networks/viction/ /ja/supported-networks/wax-testnet/ /ja/supported-networks/wax/ +/ja/supported-networks/worldchain/ /ja/supported-networks/xlayer-mainnet/ /ja/supported-networks/xlayer-sepolia/ /ja/supported-networks/zetachain/ @@ -2667,7 +2668,6 @@ /ko/subgraphs/developing/subgraphs/ /ko/subgraphs/explorer/ /ko/subgraphs/fair-use-policy/ -/ko/subgraphs/guides/arweave/ /ko/subgraphs/guides/contract-analyzer/ /ko/subgraphs/guides/enums/ /ko/subgraphs/guides/grafting/ @@ -2807,7 +2807,6 @@ /mr/subgraphs/developing/subgraphs/ /mr/subgraphs/explorer/ /mr/subgraphs/fair-use-policy/ -/mr/subgraphs/guides/arweave/ /mr/subgraphs/guides/contract-analyzer/ /mr/subgraphs/guides/enums/ /mr/subgraphs/guides/grafting/ @@ -2858,7 +2857,6 @@ /mr/supported-networks/blast-testnet/ /mr/supported-networks/bnb-op/ /mr/supported-networks/bnb-svm/ -/mr/supported-networks/boba-bnb/ /mr/supported-networks/boba-testnet/ /mr/supported-networks/boba/ /mr/supported-networks/botanix-testnet/ @@ -2877,7 +2875,6 @@ /mr/supported-networks/etherlink-mainnet/ /mr/supported-networks/etherlink-shadownet/ /mr/supported-networks/etherlink-testnet/ -/mr/supported-networks/expchain-testnet/ /mr/supported-networks/fantom-testnet/ /mr/supported-networks/fantom/ /mr/supported-networks/fraxtal/ @@ -2926,6 +2923,7 @@ /mr/supported-networks/mbase/ /mr/supported-networks/megaeth-testnet/ /mr/supported-networks/megaeth-timothy/ +/mr/supported-networks/megaeth/ /mr/supported-networks/metis/ /mr/supported-networks/mint-sepolia/ /mr/supported-networks/mint/ @@ -2961,6 +2959,7 @@ /mr/supported-networks/soneium/ /mr/supported-networks/sonic-testnet/ /mr/supported-networks/sonic/ +/mr/supported-networks/stable/ /mr/supported-networks/starknet-mainnet/ /mr/supported-networks/starknet-testnet/ /mr/supported-networks/status-sepolia/ @@ -2980,6 +2979,7 @@ /mr/supported-networks/viction/ /mr/supported-networks/wax-testnet/ /mr/supported-networks/wax/ +/mr/supported-networks/worldchain/ /mr/supported-networks/xlayer-mainnet/ /mr/supported-networks/xlayer-sepolia/ /mr/supported-networks/zetachain/ @@ -3094,7 +3094,6 @@ /nl/subgraphs/developing/subgraphs/ /nl/subgraphs/explorer/ /nl/subgraphs/fair-use-policy/ -/nl/subgraphs/guides/arweave/ /nl/subgraphs/guides/contract-analyzer/ /nl/subgraphs/guides/enums/ /nl/subgraphs/guides/grafting/ @@ -3232,7 +3231,6 @@ /pl/subgraphs/developing/subgraphs/ /pl/subgraphs/explorer/ /pl/subgraphs/fair-use-policy/ -/pl/subgraphs/guides/arweave/ /pl/subgraphs/guides/contract-analyzer/ /pl/subgraphs/guides/enums/ /pl/subgraphs/guides/grafting/ @@ -3372,7 +3370,6 @@ /pt/subgraphs/developing/subgraphs/ /pt/subgraphs/explorer/ /pt/subgraphs/fair-use-policy/ -/pt/subgraphs/guides/arweave/ /pt/subgraphs/guides/contract-analyzer/ /pt/subgraphs/guides/enums/ /pt/subgraphs/guides/grafting/ @@ -3423,7 +3420,6 @@ /pt/supported-networks/blast-testnet/ /pt/supported-networks/bnb-op/ /pt/supported-networks/bnb-svm/ -/pt/supported-networks/boba-bnb/ /pt/supported-networks/boba-testnet/ /pt/supported-networks/boba/ /pt/supported-networks/botanix-testnet/ @@ -3442,7 +3438,6 @@ /pt/supported-networks/etherlink-mainnet/ /pt/supported-networks/etherlink-shadownet/ /pt/supported-networks/etherlink-testnet/ -/pt/supported-networks/expchain-testnet/ /pt/supported-networks/fantom-testnet/ /pt/supported-networks/fantom/ /pt/supported-networks/fraxtal/ @@ -3491,6 +3486,7 @@ /pt/supported-networks/mbase/ /pt/supported-networks/megaeth-testnet/ /pt/supported-networks/megaeth-timothy/ +/pt/supported-networks/megaeth/ /pt/supported-networks/metis/ /pt/supported-networks/mint-sepolia/ /pt/supported-networks/mint/ @@ -3526,6 +3522,7 @@ /pt/supported-networks/soneium/ /pt/supported-networks/sonic-testnet/ /pt/supported-networks/sonic/ +/pt/supported-networks/stable/ /pt/supported-networks/starknet-mainnet/ /pt/supported-networks/starknet-testnet/ /pt/supported-networks/status-sepolia/ @@ -3545,6 +3542,7 @@ /pt/supported-networks/viction/ /pt/supported-networks/wax-testnet/ /pt/supported-networks/wax/ +/pt/supported-networks/worldchain/ /pt/supported-networks/xlayer-mainnet/ /pt/supported-networks/xlayer-sepolia/ /pt/supported-networks/zetachain/ @@ -3659,7 +3657,6 @@ /ro/subgraphs/developing/subgraphs/ /ro/subgraphs/explorer/ /ro/subgraphs/fair-use-policy/ -/ro/subgraphs/guides/arweave/ /ro/subgraphs/guides/contract-analyzer/ /ro/subgraphs/guides/enums/ /ro/subgraphs/guides/grafting/ @@ -3799,7 +3796,6 @@ /ru/subgraphs/developing/subgraphs/ /ru/subgraphs/explorer/ /ru/subgraphs/fair-use-policy/ -/ru/subgraphs/guides/arweave/ /ru/subgraphs/guides/contract-analyzer/ /ru/subgraphs/guides/enums/ /ru/subgraphs/guides/grafting/ @@ -3850,7 +3846,6 @@ /ru/supported-networks/blast-testnet/ /ru/supported-networks/bnb-op/ /ru/supported-networks/bnb-svm/ -/ru/supported-networks/boba-bnb/ /ru/supported-networks/boba-testnet/ /ru/supported-networks/boba/ /ru/supported-networks/botanix-testnet/ @@ -3869,7 +3864,6 @@ /ru/supported-networks/etherlink-mainnet/ /ru/supported-networks/etherlink-shadownet/ /ru/supported-networks/etherlink-testnet/ -/ru/supported-networks/expchain-testnet/ /ru/supported-networks/fantom-testnet/ /ru/supported-networks/fantom/ /ru/supported-networks/fraxtal/ @@ -3918,6 +3912,7 @@ /ru/supported-networks/mbase/ /ru/supported-networks/megaeth-testnet/ /ru/supported-networks/megaeth-timothy/ +/ru/supported-networks/megaeth/ /ru/supported-networks/metis/ /ru/supported-networks/mint-sepolia/ /ru/supported-networks/mint/ @@ -3953,6 +3948,7 @@ /ru/supported-networks/soneium/ /ru/supported-networks/sonic-testnet/ /ru/supported-networks/sonic/ +/ru/supported-networks/stable/ /ru/supported-networks/starknet-mainnet/ /ru/supported-networks/starknet-testnet/ /ru/supported-networks/status-sepolia/ @@ -3972,6 +3968,7 @@ /ru/supported-networks/viction/ /ru/supported-networks/wax-testnet/ /ru/supported-networks/wax/ +/ru/supported-networks/worldchain/ /ru/supported-networks/xlayer-mainnet/ /ru/supported-networks/xlayer-sepolia/ /ru/supported-networks/zetachain/ @@ -4088,7 +4085,6 @@ /sv/subgraphs/developing/subgraphs/ /sv/subgraphs/explorer/ /sv/subgraphs/fair-use-policy/ -/sv/subgraphs/guides/arweave/ /sv/subgraphs/guides/contract-analyzer/ /sv/subgraphs/guides/enums/ /sv/subgraphs/guides/grafting/ @@ -4139,7 +4135,6 @@ /sv/supported-networks/blast-testnet/ /sv/supported-networks/bnb-op/ /sv/supported-networks/bnb-svm/ -/sv/supported-networks/boba-bnb/ /sv/supported-networks/boba-testnet/ /sv/supported-networks/boba/ /sv/supported-networks/botanix-testnet/ @@ -4158,7 +4153,6 @@ /sv/supported-networks/etherlink-mainnet/ /sv/supported-networks/etherlink-shadownet/ /sv/supported-networks/etherlink-testnet/ -/sv/supported-networks/expchain-testnet/ /sv/supported-networks/fantom-testnet/ /sv/supported-networks/fantom/ /sv/supported-networks/fraxtal/ @@ -4207,6 +4201,7 @@ /sv/supported-networks/mbase/ /sv/supported-networks/megaeth-testnet/ /sv/supported-networks/megaeth-timothy/ +/sv/supported-networks/megaeth/ /sv/supported-networks/metis/ /sv/supported-networks/mint-sepolia/ /sv/supported-networks/mint/ @@ -4242,6 +4237,7 @@ /sv/supported-networks/soneium/ /sv/supported-networks/sonic-testnet/ /sv/supported-networks/sonic/ +/sv/supported-networks/stable/ /sv/supported-networks/starknet-mainnet/ /sv/supported-networks/starknet-testnet/ /sv/supported-networks/status-sepolia/ @@ -4261,9 +4257,15 @@ /sv/supported-networks/viction/ /sv/supported-networks/wax-testnet/ /sv/supported-networks/wax/ +/sv/supported-networks/worldchain/ /sv/supported-networks/xlayer-mainnet/ /sv/supported-networks/xlayer-sepolia/ /sv/supported-networks/zetachain/ +/sv/supported-networks/zilliqa-testnet/ +/sv/supported-networks/zilliqa/ +/sv/supported-networks/zksync-era-sepolia/ +/sv/supported-networks/zksync-era/ +/sv/supported-networks/zora/ /sv/token-api/endpoint-pricing/ /sv/token-api/evm-dexs/dexes/ /sv/token-api/evm-dexs/pools-ohlc/ @@ -4372,7 +4374,6 @@ /tr/subgraphs/developing/subgraphs/ /tr/subgraphs/explorer/ /tr/subgraphs/fair-use-policy/ -/tr/subgraphs/guides/arweave/ /tr/subgraphs/guides/contract-analyzer/ /tr/subgraphs/guides/enums/ /tr/subgraphs/guides/grafting/ @@ -4404,6 +4405,9 @@ /tr/substreams/publishing/ /tr/substreams/quick-start/ /tr/supported-networks/ +/tr/supported-networks/abstract-testnet/ +/tr/supported-networks/abstract/ +/tr/supported-networks/apechain-curtis/ /tr/token-api/endpoint-pricing/ /tr/token-api/evm-dexs/dexes/ /tr/token-api/evm-dexs/pools-ohlc/ @@ -4510,7 +4514,6 @@ /uk/subgraphs/developing/subgraphs/ /uk/subgraphs/explorer/ /uk/subgraphs/fair-use-policy/ -/uk/subgraphs/guides/arweave/ /uk/subgraphs/guides/contract-analyzer/ /uk/subgraphs/guides/enums/ /uk/subgraphs/guides/grafting/ @@ -4650,7 +4653,6 @@ /ur/subgraphs/developing/subgraphs/ /ur/subgraphs/explorer/ /ur/subgraphs/fair-use-policy/ -/ur/subgraphs/guides/arweave/ /ur/subgraphs/guides/contract-analyzer/ /ur/subgraphs/guides/enums/ /ur/subgraphs/guides/grafting/ @@ -4788,7 +4790,6 @@ /vi/subgraphs/developing/subgraphs/ /vi/subgraphs/explorer/ /vi/subgraphs/fair-use-policy/ -/vi/subgraphs/guides/arweave/ /vi/subgraphs/guides/contract-analyzer/ /vi/subgraphs/guides/enums/ /vi/subgraphs/guides/grafting/ @@ -4928,7 +4929,6 @@ /zh/subgraphs/developing/subgraphs/ /zh/subgraphs/explorer/ /zh/subgraphs/fair-use-policy/ -/zh/subgraphs/guides/arweave/ /zh/subgraphs/guides/contract-analyzer/ /zh/subgraphs/guides/enums/ /zh/subgraphs/guides/grafting/ diff --git a/website/src/HomePage.tsx b/website/src/HomePage.tsx index 300268104c90..1894df4dd0b0 100644 --- a/website/src/HomePage.tsx +++ b/website/src/HomePage.tsx @@ -181,7 +181,7 @@ export default function HomePage({ supportedNetworks }: { supportedNetworks: Sup

{t('index.supportedNetworks.description.base', [ - 90+ {t('index.supportedNetworks.description.networks')} + 80+ {t('index.supportedNetworks.description.networks')} , {t('index.supportedNetworks.description.completeThisForm')} diff --git a/website/src/components/Card.tsx b/website/src/components/Card.tsx index 5b2eb4efc0ab..fa0c4a22f445 100644 --- a/website/src/components/Card.tsx +++ b/website/src/components/Card.tsx @@ -18,14 +18,11 @@ export declare namespace CardProps { } interface ButtonProps extends BaseProps, Omit {} interface ExternalLinkProps - extends BaseProps, - Omit {} + extends BaseProps, Omit {} interface ClientLinkProps - extends BaseProps, - Omit {} + extends BaseProps, Omit {} interface OtherElementProps - extends BaseProps, - Omit {} + extends BaseProps, Omit {} } type CardProps = diff --git a/website/src/layout/Layout.tsx b/website/src/layout/Layout.tsx index b1e76d3d29c6..ea8018a90231 100644 --- a/website/src/layout/Layout.tsx +++ b/website/src/layout/Layout.tsx @@ -35,6 +35,7 @@ import { APIToken, BookOpenText, Files, + Horizon, House, Hypergraph, MagnifyingGlass, @@ -48,7 +49,6 @@ import { Stack, Subgraph, Substreams, - SubstreamsPoweredSubgraph, TheGraph, Translate, } from '@edgeandnode/gds/icons' @@ -194,9 +194,6 @@ export default function Layout({ pageOpts, children }: NextraThemeLayoutProps } - if (routeWithoutLocale === '/sps' || routeWithoutLocale.startsWith('/sps/')) { - return - } if (routeWithoutLocale === '/token-api' || routeWithoutLocale.startsWith('/token-api/')) { return } @@ -209,6 +206,9 @@ export default function Layout({ pageOpts, children }: NextraThemeLayoutProps } + if (routeWithoutLocale === '/graph-horizon' || routeWithoutLocale.startsWith('/graph-horizon/')) { + return + } if ( routeWithoutLocale === '/resources' || routeWithoutLocale.startsWith('/resources/') || diff --git a/website/src/openApi/tokenApi.json b/website/src/openApi/tokenApi.json index e5a19c0a692b..f27c13f5e7a4 100644 --- a/website/src/openApi/tokenApi.json +++ b/website/src/openApi/tokenApi.json @@ -3,7 +3,7 @@ "info": { "title": "Token API", "description": "Power your apps & AI agents with real-time token data.", - "version": "3.6.0+da03655 (2025-11-20)" + "version": "3.6.3+5808c37 (2025-12-11)" }, "servers": [ { @@ -597,7 +597,7 @@ "name": "start_time", "schema": { "type": "string", - "default": "2025-10-20" + "default": "2025-11-11" }, "description": "UNIX timestamp in seconds or date string (e.g. \"2025-01-01T00:00:00Z\", \"2025-01-01\", ...)." }, @@ -8163,7 +8163,7 @@ "name": "start_time", "schema": { "type": "string", - "default": "2025-10-20" + "default": "2025-11-11" }, "description": "UNIX timestamp in seconds or date string (e.g. \"2025-01-01T00:00:00Z\", \"2025-01-01\", ...)." }, @@ -13841,7 +13841,7 @@ "name": "start_time", "schema": { "type": "string", - "default": "2025-10-20" + "default": "2025-11-11" }, "description": "UNIX timestamp in seconds or date string (e.g. \"2025-01-01T00:00:00Z\", \"2025-01-01\", ...)." }, @@ -17726,7 +17726,7 @@ "name": "start_time", "schema": { "type": "string", - "default": "2025-10-20" + "default": "2025-11-11" }, "description": "UNIX timestamp in seconds or date string (e.g. \"2025-01-01T00:00:00Z\", \"2025-01-01\", ...)." }, @@ -21096,9 +21096,9 @@ "examples": { "example": { "value": { - "version": "3.6.0", - "commit": "da03655", - "date": "2025-11-20", + "version": "3.6.3", + "commit": "5808c37", + "date": "2025-12-11", "repo": "pinax-network/token-api" } } diff --git a/website/src/pages/ar/index.json b/website/src/pages/ar/index.json index d7b50df1c3ee..8de6ca3dd107 100644 --- a/website/src/pages/ar/index.json +++ b/website/src/pages/ar/index.json @@ -2,7 +2,7 @@ "title": "Home", "hero": { "title": "The Graph Docs", - "description": "The Graph is a blockchain data solution that powers applications, analytics, and AI on 90+ chains. The Graph's core products include the Token API for web3 apps, Subgraphs for indexing smart contracts, and Substreams for real-time and historical data streaming.", + "description": "The Graph is a blockchain data solution that powers applications, analytics, and AI on 80+ chains. The Graph's core products include the Token API for web3 apps, Subgraphs for indexing smart contracts, and Substreams for real-time and historical data streaming.", "cta1": "How The Graph works", "cta2": "Build your first subgraph" }, diff --git a/website/src/pages/ar/token-api/_meta.js b/website/src/pages/ar/token-api/_meta.js index a8624da52e7f..9588f70cec53 100644 --- a/website/src/pages/ar/token-api/_meta.js +++ b/website/src/pages/ar/token-api/_meta.js @@ -11,6 +11,6 @@ export default { 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', 'endpoint-pricing': '', + guides: titles['guides'] ?? '', faq: '', - 'upgrade-to-v1': '', } diff --git a/website/src/pages/ar/token-api/guides/_meta-titles.json b/website/src/pages/ar/token-api/guides/_meta-titles.json new file mode 100644 index 000000000000..cd93dcc0fc0b --- /dev/null +++ b/website/src/pages/ar/token-api/guides/_meta-titles.json @@ -0,0 +1,4 @@ +{ + "gpt": "Create Custom GPTS", + "upgrade-to-v1": "" +} diff --git a/website/src/pages/ar/token-api/guides/_meta.js b/website/src/pages/ar/token-api/guides/_meta.js new file mode 100644 index 000000000000..e5aaaadd78f2 --- /dev/null +++ b/website/src/pages/ar/token-api/guides/_meta.js @@ -0,0 +1,4 @@ +export default { + gpt: '', + 'upgrade-to-v1': '', +} diff --git a/website/src/pages/ar/token-api/guides/gpt.mdx b/website/src/pages/ar/token-api/guides/gpt.mdx new file mode 100644 index 000000000000..564d013dea20 --- /dev/null +++ b/website/src/pages/ar/token-api/guides/gpt.mdx @@ -0,0 +1,121 @@ +--- +title: How the Token API Powers Custom GPTs +sidebarTitle: Create Custom GPTs +--- + +## Overview + +The Token API is a pre-indexed blockchain data service that provides real-time access to token balances, metadata, prices, liquidity, and volume across multiple chains. Developers use its REST endpoints to build wallets, trading dashboards, DeFi analytics, and AI systems without maintaining their own indexing stack. Custom GPTs can connect directly to the Token API's OpenAPI schema. + +The Token API enables developers to build **Custom GPTs** to reason over live blockchain data inside ChatGPT that can reason over and respond with live blockchain data directly inside ChatGPT. + +## What the Token API Enables in Custom GPTs + +When a Custom GPT is wired to the Token API, it gains access to a machine-readable schema and authenticated endpoints. Developers can use this to: + +- **Query real-time onchain data**: Balances, token prices, liquidity, and transaction history. +- **Automate domain-specific tasks**: Portfolio tracking, accounting, reconciliation, and market analysis. +- **Power AI agents with verifiable blockchain context**: Use the same data sources dapps rely on. + +Because the Token API provides a machine-readable schema and authenticated requests, it serves as a structured data layer that enables GPT-5 agents to combine natural language reasoning with live onchain data from The Graph. + +## When to Use the Token API for Custom GPTs + +Use the Token API when your GPT needs repeatable, domain-specific behavior grounded in blockchain data. This is most effective when the GPT performs the same type of task frequently or enforces a workflow you define. For one-off or exploratory questions, standard ChatGPT prompts are sufficient. + +## Choosing a Use Case + +Start with a clear, narrow objective, then expand as needed. Common patterns include: + +- **Accounting GPT**: Onchain accounting, tax tagging, and portfolio reconciliation. +- **Trading GPT**: Liquidity, pricing, and volume analysis for trading strategies. +- **Protocol Tracking GPT**: Real-time monitoring of transaction activity and liquidity pools. + +A focused initial goal such as “Retrieve token balances and prices for a wallet” makes it easier to configure reliable behavior before adding complex workflows. + +## Requirements + +| Requirement | Description | +| ---------------------- | -------------------------------------------------------- | +| ChatGPT 5 | Custom GPT creation requires GPT-5 tier or Pro. | +| Token API Subscription | Sign up at [The Graph Market](https://thegraph.market./) | +| Token API Key | Available in your dashboard as the Authentication JWT. | + +## Setting Up a Custom GPT + +Below is an explanatory outline of what happens during setup. This section provides conceptual understanding. + +### Create Custom GPT + +1. Visit chat.openai.com/gpts in your browser. 2, Click Create (top right). +2. Under Configure (in the top left panel), set up your GPT's personality and scope. + +### Configure Your GPT + +You define the GPT's role, scope, and metadata so it knows what it is designed to do. This includes: + +- **Name and Description**: Helps users discover your GPT. + - For example: **Name**: Token Tracker GPT **Description**: An onchain analytics assistant that retrieves live token balances, prices, and liquidity data using The Graph's Token API. +- **Instructions**: Tells the GPT what tasks it should perform using the Token API. + - For example: You are a blockchain data assistant retrieving onchain token data from The Graph's Token API. Use endpoints to fetch balances, liquidity, and price history across EVM chains. Present results in tables with token symbols, prices, and USD values. +- **Knowledge**: Optional context files such as wallet references, accounting rules, or code snippets. +- **New Action**: At the bottom, click “Create new action” to connect your GPT to the Token API. + +### Connect the Token API + +To enable live blockchain queries inside ChatGPT, you connect the GPT to the Token API through: + +#### Authentication + +1. Set Authentication to API Key → Bearer. +2. Open [The Graph Market](https://thegraph.market./) and copy your Authentication JWT from your dashboard. +3. Paste the token into the ChatGPT prompt where the field shows [HIDDEN]. + +#### Schema + +1. Above the Schema box, click Import from URL. +2. Paste: https://token-api.thegraph.com/openapi +3. Click Import. You'll now see endpoints like: + - `getV1EvmTokens` + - `getV1EvmDexes` + - `getV1EvmBalances` +4. Click Test on one (for example `getV1EvmDexes`) to verify connection. + +##### Privacy + +1. At the bottom, under Privacy, paste: https://pinax.network/en/legal/privacy + +### Privacy + +You can attach a privacy policy URL such as: https://pinax.network/en/legal/privacy + +## Example Prompt Patterns + +These examples help illustrate how a GPT reasons over Token API data. + +### Wallet and Portfolio + +Get the total USD balance for a wallet across multiple chains, returning token name, symbol, balance, and price. + +### Trading Analysis + +Compare USDC and DAI liquidity across Uniswap and Curve. Return the top 5 pools by TVL. + +### Accounting + +List all ERC-20 transfers for this address in the last 30 days. Group by token and total incoming/outgoing volume. + +## Best Practices + +| Tip | Why It Matters | +| --------------------------------- | ---------------------------------------------------------------------- | +| Scope your GPT narrowly first | Simplifies debugging and validates schema integration. | +| Use clear role instructions | Helps the GPT choose the right endpoints and avoid assumptions. | +| Name endpoints explicitly | Improves routing accuracy when fetching balances, prices, or DEX data. | +| Combine with code | Enables custom parsing or logic for complex workflows. | +| Add Subgraph or Substream context | Provides richer analytics when combined with Token API data. | + +## FAQs & Resources + +- Builders Office Hours (October 23, 2025) +- Watch the full session: https://x.com/i/broadcasts/1mrGmBzBarNJy diff --git a/website/src/pages/ar/token-api/upgrade-to-v1.mdx b/website/src/pages/ar/token-api/guides/upgrade-to-v1.mdx similarity index 74% rename from website/src/pages/ar/token-api/upgrade-to-v1.mdx rename to website/src/pages/ar/token-api/guides/upgrade-to-v1.mdx index fbe09101eaa5..e2a7ccf973fa 100644 --- a/website/src/pages/ar/token-api/upgrade-to-v1.mdx +++ b/website/src/pages/ar/token-api/guides/upgrade-to-v1.mdx @@ -16,7 +16,7 @@ Used to describe endpoints supporting Solana (currently the only SVM chain suppo ## 🔑 Breaking Changes Summary -### 1. **API Versioning** +### 1. API Versioning All endpoints now use the `/v1` prefix. @@ -34,7 +34,7 @@ GET /v1/evm/balances GET /v1/evm/nft/items ``` -### 2. **Route Structure Reorganization** +### 2. Route Structure Reorganization #### 2.1 EVM Endpoints @@ -92,7 +92,7 @@ Consolidated under `/v1/svm/*` ## 📝 Parameter Changes -### 3. **Path Parameters → Query Parameters** +### 3. Path Parameters → Query Parameters All path parameters have been moved to query parameters. @@ -112,7 +112,7 @@ GET /v1/evm/holders?network=mainnet&contract=0x... GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 ``` -### 4. **Standardized Parameter Naming** +### 4. Standardized Parameter Naming All query parameters have been standardized to use snake_case naming convention. @@ -136,7 +136,7 @@ All query parameters have been standardized to use snake_case naming convention. **Important:** `matic` network has been renamed to `polygon`. -### 5. **Batched Parameters** +### 5. Batched Parameters Many parameters now support batching - accepting single values or comma-separated strings. @@ -151,17 +151,17 @@ Many parameters now support batching - accepting single values or comma-separate **Examples:** ```console -# Single value +## Single value ?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -# Comma-separated, single parameter +## Comma-separated, single parameter ?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -# Repeated parameter values +## Repeated parameter values ?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 ``` -### 6. **New Parameters** +### 6. New Parameters #### `include_null_balances` @@ -175,7 +175,7 @@ Added to balance endpoints to optionally include zero/null balances. ## 🔄 Response Changes -### 7. **Pagination Changes** +### 7. Pagination Changes Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. @@ -212,21 +212,51 @@ Pagination responses have been simplified. The API no longer computes total resu **Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. -### 8. **Removed Parameters** +### 8. Removed Parameters The following deprecated parameters have been removed: - `orderBy` - Results are now ordered by timestamp/block by default - `orderDirection` - Always descending (newest first) +### 9. Cached Queries + +Queries are now cached on the ClickHouse side for better performance. + +You can specifically request to not use the cache by setting the `Cache-Control` header to `no-cache`. + +#### Example + +**Cache** + +```console +$ curl -s 'https://token-api.thegraph.com/v1/...' | jq .statistics +{ + "bytes_read": 221, + "rows_read": 1, + "elapsed": 0.002212065 +} +``` + +**No cache** + +```console +$ curl -s 'http://localhost:8000/v1/...' --header 'Cache-Control: no-cache' | jq .statistics +{ + "bytes_read": 14621174348, + "rows_read": 223244390, + "elapsed": 0.971064066 +} +``` + ## 📚 Example Migrations -### Old vs New: Get Token Balances +### Example 1: Get Token Balances **Before:** ```bash -GET /balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +GET /token/balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 ``` **After:** @@ -235,7 +265,63 @@ GET /balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet& GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 ``` -### New Feature: Batched Queries +### Example 2: Get NFT Items + +**Before:** + +```bash +GET /nft/items/evm/contract/0xbd3531da5cf5857e7cfaa92426877b022e612cf8/token_id/5712?network_id=mainnet +``` + +**After:** + +```bash +GET /v1/evm/nft/items?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&token_id=5712 +``` + +### Example 3: Get Token Transfers with Time Filter + +**Before:** + +```bash +GET /token/transfers/evm?network_id=mainnet&from=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&startTime=1735689600&endTime=1767225600 +``` + +**After:** + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&start_time=1735689600&end_time=1767225600 +``` + +### Example 4: Get NFT Transfer Activities + +**Before:** + +```bash +GET /nft/activities/evm?network_id=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&anyAddress=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +**After:** + +```bash +GET /v1/evm/nft/transfers?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +### Example 5: Get Pool OHLC Data + +**Before:** + +```bash +GET /token/ohlc/pools/evm/0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640?network_id=mainnet&interval=1h&startTime=1735689600 +``` + +**After:** + +```bash +GET /v1/evm/pools/ohlc?network=mainnet&pool=0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640&interval=1h&start_time=1735689600 +``` + +### Example 6: Batched Query (New Feature) Query balances for multiple contracts in a single request: @@ -243,9 +329,15 @@ Query balances for multiple contracts in a single request: GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 ``` +Query transfers from multiple addresses: + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xabc...,0xdef...,0x123...&start_time=1735689600 +``` + ## ⚠️ Important Notes -1. **Backward Compatibility:** The old endpoints are deprecated and will be removed in the future. Migrate by **Oct 30, 2025**. +1. **Migration Notes:** The old endpoints were deprecated and removed on **October 30, 2025**. Please ensure all integrations have been migrated to the new Token API v1 endpoints. 2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. diff --git a/website/src/pages/cs/index.json b/website/src/pages/cs/index.json index 80e16a746c4e..ed010dc5dc94 100644 --- a/website/src/pages/cs/index.json +++ b/website/src/pages/cs/index.json @@ -2,7 +2,7 @@ "title": "Domov", "hero": { "title": "The Graph Docs", - "description": "The Graph is a blockchain data solution that powers applications, analytics, and AI on 90+ chains. The Graph's core products include the Token API for web3 apps, Subgraphs for indexing smart contracts, and Substreams for real-time and historical data streaming.", + "description": "The Graph is a blockchain data solution that powers applications, analytics, and AI on 80+ chains. The Graph's core products include the Token API for web3 apps, Subgraphs for indexing smart contracts, and Substreams for real-time and historical data streaming.", "cta1": "How The Graph works", "cta2": "Build your first subgraph" }, diff --git a/website/src/pages/cs/subgraphs/guides/_meta.js b/website/src/pages/cs/subgraphs/guides/_meta.js index fd5608dcceb2..1c081848ea08 100644 --- a/website/src/pages/cs/subgraphs/guides/_meta.js +++ b/website/src/pages/cs/subgraphs/guides/_meta.js @@ -2,7 +2,6 @@ export default { 'subgraph-composition': '', 'subgraph-debug-forking': '', near: '', - grafting: '', 'subgraph-uncrashable': '', 'transfer-to-the-graph': '', diff --git a/website/src/pages/cs/token-api/_meta.js b/website/src/pages/cs/token-api/_meta.js index a8624da52e7f..9588f70cec53 100644 --- a/website/src/pages/cs/token-api/_meta.js +++ b/website/src/pages/cs/token-api/_meta.js @@ -11,6 +11,6 @@ export default { 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', 'endpoint-pricing': '', + guides: titles['guides'] ?? '', faq: '', - 'upgrade-to-v1': '', } diff --git a/website/src/pages/cs/token-api/guides/_meta-titles.json b/website/src/pages/cs/token-api/guides/_meta-titles.json new file mode 100644 index 000000000000..cd93dcc0fc0b --- /dev/null +++ b/website/src/pages/cs/token-api/guides/_meta-titles.json @@ -0,0 +1,4 @@ +{ + "gpt": "Create Custom GPTS", + "upgrade-to-v1": "" +} diff --git a/website/src/pages/cs/token-api/guides/_meta.js b/website/src/pages/cs/token-api/guides/_meta.js new file mode 100644 index 000000000000..e5aaaadd78f2 --- /dev/null +++ b/website/src/pages/cs/token-api/guides/_meta.js @@ -0,0 +1,4 @@ +export default { + gpt: '', + 'upgrade-to-v1': '', +} diff --git a/website/src/pages/cs/token-api/guides/gpt.mdx b/website/src/pages/cs/token-api/guides/gpt.mdx new file mode 100644 index 000000000000..564d013dea20 --- /dev/null +++ b/website/src/pages/cs/token-api/guides/gpt.mdx @@ -0,0 +1,121 @@ +--- +title: How the Token API Powers Custom GPTs +sidebarTitle: Create Custom GPTs +--- + +## Overview + +The Token API is a pre-indexed blockchain data service that provides real-time access to token balances, metadata, prices, liquidity, and volume across multiple chains. Developers use its REST endpoints to build wallets, trading dashboards, DeFi analytics, and AI systems without maintaining their own indexing stack. Custom GPTs can connect directly to the Token API's OpenAPI schema. + +The Token API enables developers to build **Custom GPTs** to reason over live blockchain data inside ChatGPT that can reason over and respond with live blockchain data directly inside ChatGPT. + +## What the Token API Enables in Custom GPTs + +When a Custom GPT is wired to the Token API, it gains access to a machine-readable schema and authenticated endpoints. Developers can use this to: + +- **Query real-time onchain data**: Balances, token prices, liquidity, and transaction history. +- **Automate domain-specific tasks**: Portfolio tracking, accounting, reconciliation, and market analysis. +- **Power AI agents with verifiable blockchain context**: Use the same data sources dapps rely on. + +Because the Token API provides a machine-readable schema and authenticated requests, it serves as a structured data layer that enables GPT-5 agents to combine natural language reasoning with live onchain data from The Graph. + +## When to Use the Token API for Custom GPTs + +Use the Token API when your GPT needs repeatable, domain-specific behavior grounded in blockchain data. This is most effective when the GPT performs the same type of task frequently or enforces a workflow you define. For one-off or exploratory questions, standard ChatGPT prompts are sufficient. + +## Choosing a Use Case + +Start with a clear, narrow objective, then expand as needed. Common patterns include: + +- **Accounting GPT**: Onchain accounting, tax tagging, and portfolio reconciliation. +- **Trading GPT**: Liquidity, pricing, and volume analysis for trading strategies. +- **Protocol Tracking GPT**: Real-time monitoring of transaction activity and liquidity pools. + +A focused initial goal such as “Retrieve token balances and prices for a wallet” makes it easier to configure reliable behavior before adding complex workflows. + +## Requirements + +| Requirement | Description | +| ---------------------- | -------------------------------------------------------- | +| ChatGPT 5 | Custom GPT creation requires GPT-5 tier or Pro. | +| Token API Subscription | Sign up at [The Graph Market](https://thegraph.market./) | +| Token API Key | Available in your dashboard as the Authentication JWT. | + +## Setting Up a Custom GPT + +Below is an explanatory outline of what happens during setup. This section provides conceptual understanding. + +### Create Custom GPT + +1. Visit chat.openai.com/gpts in your browser. 2, Click Create (top right). +2. Under Configure (in the top left panel), set up your GPT's personality and scope. + +### Configure Your GPT + +You define the GPT's role, scope, and metadata so it knows what it is designed to do. This includes: + +- **Name and Description**: Helps users discover your GPT. + - For example: **Name**: Token Tracker GPT **Description**: An onchain analytics assistant that retrieves live token balances, prices, and liquidity data using The Graph's Token API. +- **Instructions**: Tells the GPT what tasks it should perform using the Token API. + - For example: You are a blockchain data assistant retrieving onchain token data from The Graph's Token API. Use endpoints to fetch balances, liquidity, and price history across EVM chains. Present results in tables with token symbols, prices, and USD values. +- **Knowledge**: Optional context files such as wallet references, accounting rules, or code snippets. +- **New Action**: At the bottom, click “Create new action” to connect your GPT to the Token API. + +### Connect the Token API + +To enable live blockchain queries inside ChatGPT, you connect the GPT to the Token API through: + +#### Authentication + +1. Set Authentication to API Key → Bearer. +2. Open [The Graph Market](https://thegraph.market./) and copy your Authentication JWT from your dashboard. +3. Paste the token into the ChatGPT prompt where the field shows [HIDDEN]. + +#### Schema + +1. Above the Schema box, click Import from URL. +2. Paste: https://token-api.thegraph.com/openapi +3. Click Import. You'll now see endpoints like: + - `getV1EvmTokens` + - `getV1EvmDexes` + - `getV1EvmBalances` +4. Click Test on one (for example `getV1EvmDexes`) to verify connection. + +##### Privacy + +1. At the bottom, under Privacy, paste: https://pinax.network/en/legal/privacy + +### Privacy + +You can attach a privacy policy URL such as: https://pinax.network/en/legal/privacy + +## Example Prompt Patterns + +These examples help illustrate how a GPT reasons over Token API data. + +### Wallet and Portfolio + +Get the total USD balance for a wallet across multiple chains, returning token name, symbol, balance, and price. + +### Trading Analysis + +Compare USDC and DAI liquidity across Uniswap and Curve. Return the top 5 pools by TVL. + +### Accounting + +List all ERC-20 transfers for this address in the last 30 days. Group by token and total incoming/outgoing volume. + +## Best Practices + +| Tip | Why It Matters | +| --------------------------------- | ---------------------------------------------------------------------- | +| Scope your GPT narrowly first | Simplifies debugging and validates schema integration. | +| Use clear role instructions | Helps the GPT choose the right endpoints and avoid assumptions. | +| Name endpoints explicitly | Improves routing accuracy when fetching balances, prices, or DEX data. | +| Combine with code | Enables custom parsing or logic for complex workflows. | +| Add Subgraph or Substream context | Provides richer analytics when combined with Token API data. | + +## FAQs & Resources + +- Builders Office Hours (October 23, 2025) +- Watch the full session: https://x.com/i/broadcasts/1mrGmBzBarNJy diff --git a/website/src/pages/cs/token-api/upgrade-to-v1.mdx b/website/src/pages/cs/token-api/guides/upgrade-to-v1.mdx similarity index 74% rename from website/src/pages/cs/token-api/upgrade-to-v1.mdx rename to website/src/pages/cs/token-api/guides/upgrade-to-v1.mdx index fbe09101eaa5..e2a7ccf973fa 100644 --- a/website/src/pages/cs/token-api/upgrade-to-v1.mdx +++ b/website/src/pages/cs/token-api/guides/upgrade-to-v1.mdx @@ -16,7 +16,7 @@ Used to describe endpoints supporting Solana (currently the only SVM chain suppo ## 🔑 Breaking Changes Summary -### 1. **API Versioning** +### 1. API Versioning All endpoints now use the `/v1` prefix. @@ -34,7 +34,7 @@ GET /v1/evm/balances GET /v1/evm/nft/items ``` -### 2. **Route Structure Reorganization** +### 2. Route Structure Reorganization #### 2.1 EVM Endpoints @@ -92,7 +92,7 @@ Consolidated under `/v1/svm/*` ## 📝 Parameter Changes -### 3. **Path Parameters → Query Parameters** +### 3. Path Parameters → Query Parameters All path parameters have been moved to query parameters. @@ -112,7 +112,7 @@ GET /v1/evm/holders?network=mainnet&contract=0x... GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 ``` -### 4. **Standardized Parameter Naming** +### 4. Standardized Parameter Naming All query parameters have been standardized to use snake_case naming convention. @@ -136,7 +136,7 @@ All query parameters have been standardized to use snake_case naming convention. **Important:** `matic` network has been renamed to `polygon`. -### 5. **Batched Parameters** +### 5. Batched Parameters Many parameters now support batching - accepting single values or comma-separated strings. @@ -151,17 +151,17 @@ Many parameters now support batching - accepting single values or comma-separate **Examples:** ```console -# Single value +## Single value ?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -# Comma-separated, single parameter +## Comma-separated, single parameter ?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -# Repeated parameter values +## Repeated parameter values ?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 ``` -### 6. **New Parameters** +### 6. New Parameters #### `include_null_balances` @@ -175,7 +175,7 @@ Added to balance endpoints to optionally include zero/null balances. ## 🔄 Response Changes -### 7. **Pagination Changes** +### 7. Pagination Changes Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. @@ -212,21 +212,51 @@ Pagination responses have been simplified. The API no longer computes total resu **Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. -### 8. **Removed Parameters** +### 8. Removed Parameters The following deprecated parameters have been removed: - `orderBy` - Results are now ordered by timestamp/block by default - `orderDirection` - Always descending (newest first) +### 9. Cached Queries + +Queries are now cached on the ClickHouse side for better performance. + +You can specifically request to not use the cache by setting the `Cache-Control` header to `no-cache`. + +#### Example + +**Cache** + +```console +$ curl -s 'https://token-api.thegraph.com/v1/...' | jq .statistics +{ + "bytes_read": 221, + "rows_read": 1, + "elapsed": 0.002212065 +} +``` + +**No cache** + +```console +$ curl -s 'http://localhost:8000/v1/...' --header 'Cache-Control: no-cache' | jq .statistics +{ + "bytes_read": 14621174348, + "rows_read": 223244390, + "elapsed": 0.971064066 +} +``` + ## 📚 Example Migrations -### Old vs New: Get Token Balances +### Example 1: Get Token Balances **Before:** ```bash -GET /balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +GET /token/balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 ``` **After:** @@ -235,7 +265,63 @@ GET /balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet& GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 ``` -### New Feature: Batched Queries +### Example 2: Get NFT Items + +**Before:** + +```bash +GET /nft/items/evm/contract/0xbd3531da5cf5857e7cfaa92426877b022e612cf8/token_id/5712?network_id=mainnet +``` + +**After:** + +```bash +GET /v1/evm/nft/items?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&token_id=5712 +``` + +### Example 3: Get Token Transfers with Time Filter + +**Before:** + +```bash +GET /token/transfers/evm?network_id=mainnet&from=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&startTime=1735689600&endTime=1767225600 +``` + +**After:** + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&start_time=1735689600&end_time=1767225600 +``` + +### Example 4: Get NFT Transfer Activities + +**Before:** + +```bash +GET /nft/activities/evm?network_id=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&anyAddress=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +**After:** + +```bash +GET /v1/evm/nft/transfers?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +### Example 5: Get Pool OHLC Data + +**Before:** + +```bash +GET /token/ohlc/pools/evm/0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640?network_id=mainnet&interval=1h&startTime=1735689600 +``` + +**After:** + +```bash +GET /v1/evm/pools/ohlc?network=mainnet&pool=0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640&interval=1h&start_time=1735689600 +``` + +### Example 6: Batched Query (New Feature) Query balances for multiple contracts in a single request: @@ -243,9 +329,15 @@ Query balances for multiple contracts in a single request: GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 ``` +Query transfers from multiple addresses: + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xabc...,0xdef...,0x123...&start_time=1735689600 +``` + ## ⚠️ Important Notes -1. **Backward Compatibility:** The old endpoints are deprecated and will be removed in the future. Migrate by **Oct 30, 2025**. +1. **Migration Notes:** The old endpoints were deprecated and removed on **October 30, 2025**. Please ensure all integrations have been migrated to the new Token API v1 endpoints. 2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. diff --git a/website/src/pages/de/index.json b/website/src/pages/de/index.json index a388badaa79e..13f1eb675b9f 100644 --- a/website/src/pages/de/index.json +++ b/website/src/pages/de/index.json @@ -2,7 +2,7 @@ "title": "Home", "hero": { "title": "The Graph Docs", - "description": "The Graph is a blockchain data solution that powers applications, analytics, and AI on 90+ chains. The Graph's core products include the Token API for web3 apps, Subgraphs for indexing smart contracts, and Substreams for real-time and historical data streaming.", + "description": "The Graph is a blockchain data solution that powers applications, analytics, and AI on 80+ chains. The Graph's core products include the Token API for web3 apps, Subgraphs for indexing smart contracts, and Substreams for real-time and historical data streaming.", "cta1": "Funktionsweise von The Graph", "cta2": "Erstellen Sie Ihren ersten Subgraphen" }, diff --git a/website/src/pages/de/subgraphs/guides/_meta.js b/website/src/pages/de/subgraphs/guides/_meta.js index fd5608dcceb2..1c081848ea08 100644 --- a/website/src/pages/de/subgraphs/guides/_meta.js +++ b/website/src/pages/de/subgraphs/guides/_meta.js @@ -2,7 +2,6 @@ export default { 'subgraph-composition': '', 'subgraph-debug-forking': '', near: '', - grafting: '', 'subgraph-uncrashable': '', 'transfer-to-the-graph': '', diff --git a/website/src/pages/de/token-api/_meta.js b/website/src/pages/de/token-api/_meta.js index a8624da52e7f..9588f70cec53 100644 --- a/website/src/pages/de/token-api/_meta.js +++ b/website/src/pages/de/token-api/_meta.js @@ -11,6 +11,6 @@ export default { 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', 'endpoint-pricing': '', + guides: titles['guides'] ?? '', faq: '', - 'upgrade-to-v1': '', } diff --git a/website/src/pages/de/token-api/guides/_meta-titles.json b/website/src/pages/de/token-api/guides/_meta-titles.json new file mode 100644 index 000000000000..cd93dcc0fc0b --- /dev/null +++ b/website/src/pages/de/token-api/guides/_meta-titles.json @@ -0,0 +1,4 @@ +{ + "gpt": "Create Custom GPTS", + "upgrade-to-v1": "" +} diff --git a/website/src/pages/de/token-api/guides/_meta.js b/website/src/pages/de/token-api/guides/_meta.js new file mode 100644 index 000000000000..e5aaaadd78f2 --- /dev/null +++ b/website/src/pages/de/token-api/guides/_meta.js @@ -0,0 +1,4 @@ +export default { + gpt: '', + 'upgrade-to-v1': '', +} diff --git a/website/src/pages/de/token-api/guides/gpt.mdx b/website/src/pages/de/token-api/guides/gpt.mdx new file mode 100644 index 000000000000..564d013dea20 --- /dev/null +++ b/website/src/pages/de/token-api/guides/gpt.mdx @@ -0,0 +1,121 @@ +--- +title: How the Token API Powers Custom GPTs +sidebarTitle: Create Custom GPTs +--- + +## Overview + +The Token API is a pre-indexed blockchain data service that provides real-time access to token balances, metadata, prices, liquidity, and volume across multiple chains. Developers use its REST endpoints to build wallets, trading dashboards, DeFi analytics, and AI systems without maintaining their own indexing stack. Custom GPTs can connect directly to the Token API's OpenAPI schema. + +The Token API enables developers to build **Custom GPTs** to reason over live blockchain data inside ChatGPT that can reason over and respond with live blockchain data directly inside ChatGPT. + +## What the Token API Enables in Custom GPTs + +When a Custom GPT is wired to the Token API, it gains access to a machine-readable schema and authenticated endpoints. Developers can use this to: + +- **Query real-time onchain data**: Balances, token prices, liquidity, and transaction history. +- **Automate domain-specific tasks**: Portfolio tracking, accounting, reconciliation, and market analysis. +- **Power AI agents with verifiable blockchain context**: Use the same data sources dapps rely on. + +Because the Token API provides a machine-readable schema and authenticated requests, it serves as a structured data layer that enables GPT-5 agents to combine natural language reasoning with live onchain data from The Graph. + +## When to Use the Token API for Custom GPTs + +Use the Token API when your GPT needs repeatable, domain-specific behavior grounded in blockchain data. This is most effective when the GPT performs the same type of task frequently or enforces a workflow you define. For one-off or exploratory questions, standard ChatGPT prompts are sufficient. + +## Choosing a Use Case + +Start with a clear, narrow objective, then expand as needed. Common patterns include: + +- **Accounting GPT**: Onchain accounting, tax tagging, and portfolio reconciliation. +- **Trading GPT**: Liquidity, pricing, and volume analysis for trading strategies. +- **Protocol Tracking GPT**: Real-time monitoring of transaction activity and liquidity pools. + +A focused initial goal such as “Retrieve token balances and prices for a wallet” makes it easier to configure reliable behavior before adding complex workflows. + +## Requirements + +| Requirement | Description | +| ---------------------- | -------------------------------------------------------- | +| ChatGPT 5 | Custom GPT creation requires GPT-5 tier or Pro. | +| Token API Subscription | Sign up at [The Graph Market](https://thegraph.market./) | +| Token API Key | Available in your dashboard as the Authentication JWT. | + +## Setting Up a Custom GPT + +Below is an explanatory outline of what happens during setup. This section provides conceptual understanding. + +### Create Custom GPT + +1. Visit chat.openai.com/gpts in your browser. 2, Click Create (top right). +2. Under Configure (in the top left panel), set up your GPT's personality and scope. + +### Configure Your GPT + +You define the GPT's role, scope, and metadata so it knows what it is designed to do. This includes: + +- **Name and Description**: Helps users discover your GPT. + - For example: **Name**: Token Tracker GPT **Description**: An onchain analytics assistant that retrieves live token balances, prices, and liquidity data using The Graph's Token API. +- **Instructions**: Tells the GPT what tasks it should perform using the Token API. + - For example: You are a blockchain data assistant retrieving onchain token data from The Graph's Token API. Use endpoints to fetch balances, liquidity, and price history across EVM chains. Present results in tables with token symbols, prices, and USD values. +- **Knowledge**: Optional context files such as wallet references, accounting rules, or code snippets. +- **New Action**: At the bottom, click “Create new action” to connect your GPT to the Token API. + +### Connect the Token API + +To enable live blockchain queries inside ChatGPT, you connect the GPT to the Token API through: + +#### Authentication + +1. Set Authentication to API Key → Bearer. +2. Open [The Graph Market](https://thegraph.market./) and copy your Authentication JWT from your dashboard. +3. Paste the token into the ChatGPT prompt where the field shows [HIDDEN]. + +#### Schema + +1. Above the Schema box, click Import from URL. +2. Paste: https://token-api.thegraph.com/openapi +3. Click Import. You'll now see endpoints like: + - `getV1EvmTokens` + - `getV1EvmDexes` + - `getV1EvmBalances` +4. Click Test on one (for example `getV1EvmDexes`) to verify connection. + +##### Privacy + +1. At the bottom, under Privacy, paste: https://pinax.network/en/legal/privacy + +### Privacy + +You can attach a privacy policy URL such as: https://pinax.network/en/legal/privacy + +## Example Prompt Patterns + +These examples help illustrate how a GPT reasons over Token API data. + +### Wallet and Portfolio + +Get the total USD balance for a wallet across multiple chains, returning token name, symbol, balance, and price. + +### Trading Analysis + +Compare USDC and DAI liquidity across Uniswap and Curve. Return the top 5 pools by TVL. + +### Accounting + +List all ERC-20 transfers for this address in the last 30 days. Group by token and total incoming/outgoing volume. + +## Best Practices + +| Tip | Why It Matters | +| --------------------------------- | ---------------------------------------------------------------------- | +| Scope your GPT narrowly first | Simplifies debugging and validates schema integration. | +| Use clear role instructions | Helps the GPT choose the right endpoints and avoid assumptions. | +| Name endpoints explicitly | Improves routing accuracy when fetching balances, prices, or DEX data. | +| Combine with code | Enables custom parsing or logic for complex workflows. | +| Add Subgraph or Substream context | Provides richer analytics when combined with Token API data. | + +## FAQs & Resources + +- Builders Office Hours (October 23, 2025) +- Watch the full session: https://x.com/i/broadcasts/1mrGmBzBarNJy diff --git a/website/src/pages/de/token-api/upgrade-to-v1.mdx b/website/src/pages/de/token-api/guides/upgrade-to-v1.mdx similarity index 74% rename from website/src/pages/de/token-api/upgrade-to-v1.mdx rename to website/src/pages/de/token-api/guides/upgrade-to-v1.mdx index fbe09101eaa5..e2a7ccf973fa 100644 --- a/website/src/pages/de/token-api/upgrade-to-v1.mdx +++ b/website/src/pages/de/token-api/guides/upgrade-to-v1.mdx @@ -16,7 +16,7 @@ Used to describe endpoints supporting Solana (currently the only SVM chain suppo ## 🔑 Breaking Changes Summary -### 1. **API Versioning** +### 1. API Versioning All endpoints now use the `/v1` prefix. @@ -34,7 +34,7 @@ GET /v1/evm/balances GET /v1/evm/nft/items ``` -### 2. **Route Structure Reorganization** +### 2. Route Structure Reorganization #### 2.1 EVM Endpoints @@ -92,7 +92,7 @@ Consolidated under `/v1/svm/*` ## 📝 Parameter Changes -### 3. **Path Parameters → Query Parameters** +### 3. Path Parameters → Query Parameters All path parameters have been moved to query parameters. @@ -112,7 +112,7 @@ GET /v1/evm/holders?network=mainnet&contract=0x... GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 ``` -### 4. **Standardized Parameter Naming** +### 4. Standardized Parameter Naming All query parameters have been standardized to use snake_case naming convention. @@ -136,7 +136,7 @@ All query parameters have been standardized to use snake_case naming convention. **Important:** `matic` network has been renamed to `polygon`. -### 5. **Batched Parameters** +### 5. Batched Parameters Many parameters now support batching - accepting single values or comma-separated strings. @@ -151,17 +151,17 @@ Many parameters now support batching - accepting single values or comma-separate **Examples:** ```console -# Single value +## Single value ?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -# Comma-separated, single parameter +## Comma-separated, single parameter ?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -# Repeated parameter values +## Repeated parameter values ?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 ``` -### 6. **New Parameters** +### 6. New Parameters #### `include_null_balances` @@ -175,7 +175,7 @@ Added to balance endpoints to optionally include zero/null balances. ## 🔄 Response Changes -### 7. **Pagination Changes** +### 7. Pagination Changes Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. @@ -212,21 +212,51 @@ Pagination responses have been simplified. The API no longer computes total resu **Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. -### 8. **Removed Parameters** +### 8. Removed Parameters The following deprecated parameters have been removed: - `orderBy` - Results are now ordered by timestamp/block by default - `orderDirection` - Always descending (newest first) +### 9. Cached Queries + +Queries are now cached on the ClickHouse side for better performance. + +You can specifically request to not use the cache by setting the `Cache-Control` header to `no-cache`. + +#### Example + +**Cache** + +```console +$ curl -s 'https://token-api.thegraph.com/v1/...' | jq .statistics +{ + "bytes_read": 221, + "rows_read": 1, + "elapsed": 0.002212065 +} +``` + +**No cache** + +```console +$ curl -s 'http://localhost:8000/v1/...' --header 'Cache-Control: no-cache' | jq .statistics +{ + "bytes_read": 14621174348, + "rows_read": 223244390, + "elapsed": 0.971064066 +} +``` + ## 📚 Example Migrations -### Old vs New: Get Token Balances +### Example 1: Get Token Balances **Before:** ```bash -GET /balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +GET /token/balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 ``` **After:** @@ -235,7 +265,63 @@ GET /balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet& GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 ``` -### New Feature: Batched Queries +### Example 2: Get NFT Items + +**Before:** + +```bash +GET /nft/items/evm/contract/0xbd3531da5cf5857e7cfaa92426877b022e612cf8/token_id/5712?network_id=mainnet +``` + +**After:** + +```bash +GET /v1/evm/nft/items?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&token_id=5712 +``` + +### Example 3: Get Token Transfers with Time Filter + +**Before:** + +```bash +GET /token/transfers/evm?network_id=mainnet&from=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&startTime=1735689600&endTime=1767225600 +``` + +**After:** + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&start_time=1735689600&end_time=1767225600 +``` + +### Example 4: Get NFT Transfer Activities + +**Before:** + +```bash +GET /nft/activities/evm?network_id=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&anyAddress=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +**After:** + +```bash +GET /v1/evm/nft/transfers?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +### Example 5: Get Pool OHLC Data + +**Before:** + +```bash +GET /token/ohlc/pools/evm/0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640?network_id=mainnet&interval=1h&startTime=1735689600 +``` + +**After:** + +```bash +GET /v1/evm/pools/ohlc?network=mainnet&pool=0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640&interval=1h&start_time=1735689600 +``` + +### Example 6: Batched Query (New Feature) Query balances for multiple contracts in a single request: @@ -243,9 +329,15 @@ Query balances for multiple contracts in a single request: GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 ``` +Query transfers from multiple addresses: + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xabc...,0xdef...,0x123...&start_time=1735689600 +``` + ## ⚠️ Important Notes -1. **Backward Compatibility:** The old endpoints are deprecated and will be removed in the future. Migrate by **Oct 30, 2025**. +1. **Migration Notes:** The old endpoints were deprecated and removed on **October 30, 2025**. Please ensure all integrations have been migrated to the new Token API v1 endpoints. 2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. diff --git a/website/src/pages/en/about.mdx b/website/src/pages/en/about.mdx index 990d80701228..d4d5f313096b 100644 --- a/website/src/pages/en/about.mdx +++ b/website/src/pages/en/about.mdx @@ -5,7 +5,7 @@ description: This page summarizes the core concepts and basics of The Graph Netw ## What is The Graph? -The Graph is a decentralized protocol for indexing and querying blockchain data across [90+ networks](/supported-networks/). +The Graph is a decentralized protocol for indexing and querying blockchain data across [80+ networks](/supported-networks/). Its data services include: diff --git a/website/src/pages/en/index.json b/website/src/pages/en/index.json index be1398f172c3..99b597dcf0ad 100644 --- a/website/src/pages/en/index.json +++ b/website/src/pages/en/index.json @@ -2,7 +2,7 @@ "title": "Home", "hero": { "title": "The Graph Docs", - "description": "The Graph is a blockchain data solution that powers applications, analytics, and AI on 90+ chains. The Graph's core products include the Token API for web3 apps, Subgraphs for indexing smart contracts, and Substreams for real-time and historical data streaming.", + "description": "The Graph is a blockchain data solution that powers applications, analytics, and AI on 80+ chains. The Graph's core products include the Token API for web3 apps, Subgraphs for indexing smart contracts, and Substreams for real-time and historical data streaming.", "cta1": "How The Graph works", "cta2": "Build your first subgraph" }, diff --git a/website/src/pages/en/subgraphs/guides/_meta.js b/website/src/pages/en/subgraphs/guides/_meta.js index fd5608dcceb2..1c081848ea08 100644 --- a/website/src/pages/en/subgraphs/guides/_meta.js +++ b/website/src/pages/en/subgraphs/guides/_meta.js @@ -2,7 +2,6 @@ export default { 'subgraph-composition': '', 'subgraph-debug-forking': '', near: '', - grafting: '', 'subgraph-uncrashable': '', 'transfer-to-the-graph': '', diff --git a/website/src/pages/en/token-api/_meta-titles.json b/website/src/pages/en/token-api/_meta-titles.json index 7971cf40716c..f7416a115cfb 100644 --- a/website/src/pages/en/token-api/_meta-titles.json +++ b/website/src/pages/en/token-api/_meta-titles.json @@ -6,5 +6,6 @@ "svm-dexs": "SVM DEX Endpoints", "tvm-tokens": "TVM Token Endpoints", "tvm-dexs": "TVM DEX Endpoints", - "monitoring": "Monitoring Endpoints" + "monitoring": "Monitoring Endpoints", + "guides": "Guides" } diff --git a/website/src/pages/en/token-api/_meta.js b/website/src/pages/en/token-api/_meta.js index 94368944d673..9588f70cec53 100644 --- a/website/src/pages/en/token-api/_meta.js +++ b/website/src/pages/en/token-api/_meta.js @@ -11,6 +11,6 @@ export default { 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', 'endpoint-pricing': '', - guides: 'Guides', + guides: titles['guides'] ?? '', faq: '', } diff --git a/website/src/pages/es/index.json b/website/src/pages/es/index.json index 55ad2d38b392..558edfcbc555 100644 --- a/website/src/pages/es/index.json +++ b/website/src/pages/es/index.json @@ -2,7 +2,7 @@ "title": "Inicio", "hero": { "title": "Documentación de The Graph", - "description": "The Graph is a blockchain data solution that powers applications, analytics, and AI on 90+ chains. The Graph's core products include the Token API for web3 apps, Subgraphs for indexing smart contracts, and Substreams for real-time and historical data streaming.", + "description": "The Graph is a blockchain data solution that powers applications, analytics, and AI on 80+ chains. The Graph's core products include the Token API for web3 apps, Subgraphs for indexing smart contracts, and Substreams for real-time and historical data streaming.", "cta1": "Cómo funciona The Graph", "cta2": "Crea tu primer subgrafo" }, diff --git a/website/src/pages/es/subgraphs/guides/_meta.js b/website/src/pages/es/subgraphs/guides/_meta.js index fd5608dcceb2..1c081848ea08 100644 --- a/website/src/pages/es/subgraphs/guides/_meta.js +++ b/website/src/pages/es/subgraphs/guides/_meta.js @@ -2,7 +2,6 @@ export default { 'subgraph-composition': '', 'subgraph-debug-forking': '', near: '', - grafting: '', 'subgraph-uncrashable': '', 'transfer-to-the-graph': '', diff --git a/website/src/pages/es/token-api/_meta.js b/website/src/pages/es/token-api/_meta.js index a8624da52e7f..9588f70cec53 100644 --- a/website/src/pages/es/token-api/_meta.js +++ b/website/src/pages/es/token-api/_meta.js @@ -11,6 +11,6 @@ export default { 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', 'endpoint-pricing': '', + guides: titles['guides'] ?? '', faq: '', - 'upgrade-to-v1': '', } diff --git a/website/src/pages/es/token-api/guides/_meta-titles.json b/website/src/pages/es/token-api/guides/_meta-titles.json new file mode 100644 index 000000000000..cd93dcc0fc0b --- /dev/null +++ b/website/src/pages/es/token-api/guides/_meta-titles.json @@ -0,0 +1,4 @@ +{ + "gpt": "Create Custom GPTS", + "upgrade-to-v1": "" +} diff --git a/website/src/pages/es/token-api/guides/_meta.js b/website/src/pages/es/token-api/guides/_meta.js new file mode 100644 index 000000000000..e5aaaadd78f2 --- /dev/null +++ b/website/src/pages/es/token-api/guides/_meta.js @@ -0,0 +1,4 @@ +export default { + gpt: '', + 'upgrade-to-v1': '', +} diff --git a/website/src/pages/es/token-api/guides/gpt.mdx b/website/src/pages/es/token-api/guides/gpt.mdx new file mode 100644 index 000000000000..564d013dea20 --- /dev/null +++ b/website/src/pages/es/token-api/guides/gpt.mdx @@ -0,0 +1,121 @@ +--- +title: How the Token API Powers Custom GPTs +sidebarTitle: Create Custom GPTs +--- + +## Overview + +The Token API is a pre-indexed blockchain data service that provides real-time access to token balances, metadata, prices, liquidity, and volume across multiple chains. Developers use its REST endpoints to build wallets, trading dashboards, DeFi analytics, and AI systems without maintaining their own indexing stack. Custom GPTs can connect directly to the Token API's OpenAPI schema. + +The Token API enables developers to build **Custom GPTs** to reason over live blockchain data inside ChatGPT that can reason over and respond with live blockchain data directly inside ChatGPT. + +## What the Token API Enables in Custom GPTs + +When a Custom GPT is wired to the Token API, it gains access to a machine-readable schema and authenticated endpoints. Developers can use this to: + +- **Query real-time onchain data**: Balances, token prices, liquidity, and transaction history. +- **Automate domain-specific tasks**: Portfolio tracking, accounting, reconciliation, and market analysis. +- **Power AI agents with verifiable blockchain context**: Use the same data sources dapps rely on. + +Because the Token API provides a machine-readable schema and authenticated requests, it serves as a structured data layer that enables GPT-5 agents to combine natural language reasoning with live onchain data from The Graph. + +## When to Use the Token API for Custom GPTs + +Use the Token API when your GPT needs repeatable, domain-specific behavior grounded in blockchain data. This is most effective when the GPT performs the same type of task frequently or enforces a workflow you define. For one-off or exploratory questions, standard ChatGPT prompts are sufficient. + +## Choosing a Use Case + +Start with a clear, narrow objective, then expand as needed. Common patterns include: + +- **Accounting GPT**: Onchain accounting, tax tagging, and portfolio reconciliation. +- **Trading GPT**: Liquidity, pricing, and volume analysis for trading strategies. +- **Protocol Tracking GPT**: Real-time monitoring of transaction activity and liquidity pools. + +A focused initial goal such as “Retrieve token balances and prices for a wallet” makes it easier to configure reliable behavior before adding complex workflows. + +## Requirements + +| Requirement | Description | +| ---------------------- | -------------------------------------------------------- | +| ChatGPT 5 | Custom GPT creation requires GPT-5 tier or Pro. | +| Token API Subscription | Sign up at [The Graph Market](https://thegraph.market./) | +| Token API Key | Available in your dashboard as the Authentication JWT. | + +## Setting Up a Custom GPT + +Below is an explanatory outline of what happens during setup. This section provides conceptual understanding. + +### Create Custom GPT + +1. Visit chat.openai.com/gpts in your browser. 2, Click Create (top right). +2. Under Configure (in the top left panel), set up your GPT's personality and scope. + +### Configure Your GPT + +You define the GPT's role, scope, and metadata so it knows what it is designed to do. This includes: + +- **Name and Description**: Helps users discover your GPT. + - For example: **Name**: Token Tracker GPT **Description**: An onchain analytics assistant that retrieves live token balances, prices, and liquidity data using The Graph's Token API. +- **Instructions**: Tells the GPT what tasks it should perform using the Token API. + - For example: You are a blockchain data assistant retrieving onchain token data from The Graph's Token API. Use endpoints to fetch balances, liquidity, and price history across EVM chains. Present results in tables with token symbols, prices, and USD values. +- **Knowledge**: Optional context files such as wallet references, accounting rules, or code snippets. +- **New Action**: At the bottom, click “Create new action” to connect your GPT to the Token API. + +### Connect the Token API + +To enable live blockchain queries inside ChatGPT, you connect the GPT to the Token API through: + +#### Authentication + +1. Set Authentication to API Key → Bearer. +2. Open [The Graph Market](https://thegraph.market./) and copy your Authentication JWT from your dashboard. +3. Paste the token into the ChatGPT prompt where the field shows [HIDDEN]. + +#### Schema + +1. Above the Schema box, click Import from URL. +2. Paste: https://token-api.thegraph.com/openapi +3. Click Import. You'll now see endpoints like: + - `getV1EvmTokens` + - `getV1EvmDexes` + - `getV1EvmBalances` +4. Click Test on one (for example `getV1EvmDexes`) to verify connection. + +##### Privacy + +1. At the bottom, under Privacy, paste: https://pinax.network/en/legal/privacy + +### Privacy + +You can attach a privacy policy URL such as: https://pinax.network/en/legal/privacy + +## Example Prompt Patterns + +These examples help illustrate how a GPT reasons over Token API data. + +### Wallet and Portfolio + +Get the total USD balance for a wallet across multiple chains, returning token name, symbol, balance, and price. + +### Trading Analysis + +Compare USDC and DAI liquidity across Uniswap and Curve. Return the top 5 pools by TVL. + +### Accounting + +List all ERC-20 transfers for this address in the last 30 days. Group by token and total incoming/outgoing volume. + +## Best Practices + +| Tip | Why It Matters | +| --------------------------------- | ---------------------------------------------------------------------- | +| Scope your GPT narrowly first | Simplifies debugging and validates schema integration. | +| Use clear role instructions | Helps the GPT choose the right endpoints and avoid assumptions. | +| Name endpoints explicitly | Improves routing accuracy when fetching balances, prices, or DEX data. | +| Combine with code | Enables custom parsing or logic for complex workflows. | +| Add Subgraph or Substream context | Provides richer analytics when combined with Token API data. | + +## FAQs & Resources + +- Builders Office Hours (October 23, 2025) +- Watch the full session: https://x.com/i/broadcasts/1mrGmBzBarNJy diff --git a/website/src/pages/es/token-api/upgrade-to-v1.mdx b/website/src/pages/es/token-api/guides/upgrade-to-v1.mdx similarity index 74% rename from website/src/pages/es/token-api/upgrade-to-v1.mdx rename to website/src/pages/es/token-api/guides/upgrade-to-v1.mdx index fbe09101eaa5..e2a7ccf973fa 100644 --- a/website/src/pages/es/token-api/upgrade-to-v1.mdx +++ b/website/src/pages/es/token-api/guides/upgrade-to-v1.mdx @@ -16,7 +16,7 @@ Used to describe endpoints supporting Solana (currently the only SVM chain suppo ## 🔑 Breaking Changes Summary -### 1. **API Versioning** +### 1. API Versioning All endpoints now use the `/v1` prefix. @@ -34,7 +34,7 @@ GET /v1/evm/balances GET /v1/evm/nft/items ``` -### 2. **Route Structure Reorganization** +### 2. Route Structure Reorganization #### 2.1 EVM Endpoints @@ -92,7 +92,7 @@ Consolidated under `/v1/svm/*` ## 📝 Parameter Changes -### 3. **Path Parameters → Query Parameters** +### 3. Path Parameters → Query Parameters All path parameters have been moved to query parameters. @@ -112,7 +112,7 @@ GET /v1/evm/holders?network=mainnet&contract=0x... GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 ``` -### 4. **Standardized Parameter Naming** +### 4. Standardized Parameter Naming All query parameters have been standardized to use snake_case naming convention. @@ -136,7 +136,7 @@ All query parameters have been standardized to use snake_case naming convention. **Important:** `matic` network has been renamed to `polygon`. -### 5. **Batched Parameters** +### 5. Batched Parameters Many parameters now support batching - accepting single values or comma-separated strings. @@ -151,17 +151,17 @@ Many parameters now support batching - accepting single values or comma-separate **Examples:** ```console -# Single value +## Single value ?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -# Comma-separated, single parameter +## Comma-separated, single parameter ?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -# Repeated parameter values +## Repeated parameter values ?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 ``` -### 6. **New Parameters** +### 6. New Parameters #### `include_null_balances` @@ -175,7 +175,7 @@ Added to balance endpoints to optionally include zero/null balances. ## 🔄 Response Changes -### 7. **Pagination Changes** +### 7. Pagination Changes Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. @@ -212,21 +212,51 @@ Pagination responses have been simplified. The API no longer computes total resu **Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. -### 8. **Removed Parameters** +### 8. Removed Parameters The following deprecated parameters have been removed: - `orderBy` - Results are now ordered by timestamp/block by default - `orderDirection` - Always descending (newest first) +### 9. Cached Queries + +Queries are now cached on the ClickHouse side for better performance. + +You can specifically request to not use the cache by setting the `Cache-Control` header to `no-cache`. + +#### Example + +**Cache** + +```console +$ curl -s 'https://token-api.thegraph.com/v1/...' | jq .statistics +{ + "bytes_read": 221, + "rows_read": 1, + "elapsed": 0.002212065 +} +``` + +**No cache** + +```console +$ curl -s 'http://localhost:8000/v1/...' --header 'Cache-Control: no-cache' | jq .statistics +{ + "bytes_read": 14621174348, + "rows_read": 223244390, + "elapsed": 0.971064066 +} +``` + ## 📚 Example Migrations -### Old vs New: Get Token Balances +### Example 1: Get Token Balances **Before:** ```bash -GET /balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +GET /token/balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 ``` **After:** @@ -235,7 +265,63 @@ GET /balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet& GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 ``` -### New Feature: Batched Queries +### Example 2: Get NFT Items + +**Before:** + +```bash +GET /nft/items/evm/contract/0xbd3531da5cf5857e7cfaa92426877b022e612cf8/token_id/5712?network_id=mainnet +``` + +**After:** + +```bash +GET /v1/evm/nft/items?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&token_id=5712 +``` + +### Example 3: Get Token Transfers with Time Filter + +**Before:** + +```bash +GET /token/transfers/evm?network_id=mainnet&from=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&startTime=1735689600&endTime=1767225600 +``` + +**After:** + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&start_time=1735689600&end_time=1767225600 +``` + +### Example 4: Get NFT Transfer Activities + +**Before:** + +```bash +GET /nft/activities/evm?network_id=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&anyAddress=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +**After:** + +```bash +GET /v1/evm/nft/transfers?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +### Example 5: Get Pool OHLC Data + +**Before:** + +```bash +GET /token/ohlc/pools/evm/0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640?network_id=mainnet&interval=1h&startTime=1735689600 +``` + +**After:** + +```bash +GET /v1/evm/pools/ohlc?network=mainnet&pool=0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640&interval=1h&start_time=1735689600 +``` + +### Example 6: Batched Query (New Feature) Query balances for multiple contracts in a single request: @@ -243,9 +329,15 @@ Query balances for multiple contracts in a single request: GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 ``` +Query transfers from multiple addresses: + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xabc...,0xdef...,0x123...&start_time=1735689600 +``` + ## ⚠️ Important Notes -1. **Backward Compatibility:** The old endpoints are deprecated and will be removed in the future. Migrate by **Oct 30, 2025**. +1. **Migration Notes:** The old endpoints were deprecated and removed on **October 30, 2025**. Please ensure all integrations have been migrated to the new Token API v1 endpoints. 2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. diff --git a/website/src/pages/fr/index.json b/website/src/pages/fr/index.json index a4cba5dad8de..436b0552f061 100644 --- a/website/src/pages/fr/index.json +++ b/website/src/pages/fr/index.json @@ -2,7 +2,7 @@ "title": "Accueil", "hero": { "title": "The Graph Docs", - "description": "The Graph is a blockchain data solution that powers applications, analytics, and AI on 90+ chains. The Graph's core products include the Token API for web3 apps, Subgraphs for indexing smart contracts, and Substreams for real-time and historical data streaming.", + "description": "The Graph is a blockchain data solution that powers applications, analytics, and AI on 80+ chains. The Graph's core products include the Token API for web3 apps, Subgraphs for indexing smart contracts, and Substreams for real-time and historical data streaming.", "cta1": "How The Graph works", "cta2": "Construisez votre premier subgraph" }, diff --git a/website/src/pages/fr/subgraphs/guides/_meta.js b/website/src/pages/fr/subgraphs/guides/_meta.js index fd5608dcceb2..1c081848ea08 100644 --- a/website/src/pages/fr/subgraphs/guides/_meta.js +++ b/website/src/pages/fr/subgraphs/guides/_meta.js @@ -2,7 +2,6 @@ export default { 'subgraph-composition': '', 'subgraph-debug-forking': '', near: '', - grafting: '', 'subgraph-uncrashable': '', 'transfer-to-the-graph': '', diff --git a/website/src/pages/fr/token-api/_meta.js b/website/src/pages/fr/token-api/_meta.js index a8624da52e7f..9588f70cec53 100644 --- a/website/src/pages/fr/token-api/_meta.js +++ b/website/src/pages/fr/token-api/_meta.js @@ -11,6 +11,6 @@ export default { 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', 'endpoint-pricing': '', + guides: titles['guides'] ?? '', faq: '', - 'upgrade-to-v1': '', } diff --git a/website/src/pages/fr/token-api/guides/_meta-titles.json b/website/src/pages/fr/token-api/guides/_meta-titles.json new file mode 100644 index 000000000000..cd93dcc0fc0b --- /dev/null +++ b/website/src/pages/fr/token-api/guides/_meta-titles.json @@ -0,0 +1,4 @@ +{ + "gpt": "Create Custom GPTS", + "upgrade-to-v1": "" +} diff --git a/website/src/pages/fr/token-api/guides/_meta.js b/website/src/pages/fr/token-api/guides/_meta.js new file mode 100644 index 000000000000..e5aaaadd78f2 --- /dev/null +++ b/website/src/pages/fr/token-api/guides/_meta.js @@ -0,0 +1,4 @@ +export default { + gpt: '', + 'upgrade-to-v1': '', +} diff --git a/website/src/pages/fr/token-api/guides/gpt.mdx b/website/src/pages/fr/token-api/guides/gpt.mdx new file mode 100644 index 000000000000..564d013dea20 --- /dev/null +++ b/website/src/pages/fr/token-api/guides/gpt.mdx @@ -0,0 +1,121 @@ +--- +title: How the Token API Powers Custom GPTs +sidebarTitle: Create Custom GPTs +--- + +## Overview + +The Token API is a pre-indexed blockchain data service that provides real-time access to token balances, metadata, prices, liquidity, and volume across multiple chains. Developers use its REST endpoints to build wallets, trading dashboards, DeFi analytics, and AI systems without maintaining their own indexing stack. Custom GPTs can connect directly to the Token API's OpenAPI schema. + +The Token API enables developers to build **Custom GPTs** to reason over live blockchain data inside ChatGPT that can reason over and respond with live blockchain data directly inside ChatGPT. + +## What the Token API Enables in Custom GPTs + +When a Custom GPT is wired to the Token API, it gains access to a machine-readable schema and authenticated endpoints. Developers can use this to: + +- **Query real-time onchain data**: Balances, token prices, liquidity, and transaction history. +- **Automate domain-specific tasks**: Portfolio tracking, accounting, reconciliation, and market analysis. +- **Power AI agents with verifiable blockchain context**: Use the same data sources dapps rely on. + +Because the Token API provides a machine-readable schema and authenticated requests, it serves as a structured data layer that enables GPT-5 agents to combine natural language reasoning with live onchain data from The Graph. + +## When to Use the Token API for Custom GPTs + +Use the Token API when your GPT needs repeatable, domain-specific behavior grounded in blockchain data. This is most effective when the GPT performs the same type of task frequently or enforces a workflow you define. For one-off or exploratory questions, standard ChatGPT prompts are sufficient. + +## Choosing a Use Case + +Start with a clear, narrow objective, then expand as needed. Common patterns include: + +- **Accounting GPT**: Onchain accounting, tax tagging, and portfolio reconciliation. +- **Trading GPT**: Liquidity, pricing, and volume analysis for trading strategies. +- **Protocol Tracking GPT**: Real-time monitoring of transaction activity and liquidity pools. + +A focused initial goal such as “Retrieve token balances and prices for a wallet” makes it easier to configure reliable behavior before adding complex workflows. + +## Requirements + +| Requirement | Description | +| ---------------------- | -------------------------------------------------------- | +| ChatGPT 5 | Custom GPT creation requires GPT-5 tier or Pro. | +| Token API Subscription | Sign up at [The Graph Market](https://thegraph.market./) | +| Token API Key | Available in your dashboard as the Authentication JWT. | + +## Setting Up a Custom GPT + +Below is an explanatory outline of what happens during setup. This section provides conceptual understanding. + +### Create Custom GPT + +1. Visit chat.openai.com/gpts in your browser. 2, Click Create (top right). +2. Under Configure (in the top left panel), set up your GPT's personality and scope. + +### Configure Your GPT + +You define the GPT's role, scope, and metadata so it knows what it is designed to do. This includes: + +- **Name and Description**: Helps users discover your GPT. + - For example: **Name**: Token Tracker GPT **Description**: An onchain analytics assistant that retrieves live token balances, prices, and liquidity data using The Graph's Token API. +- **Instructions**: Tells the GPT what tasks it should perform using the Token API. + - For example: You are a blockchain data assistant retrieving onchain token data from The Graph's Token API. Use endpoints to fetch balances, liquidity, and price history across EVM chains. Present results in tables with token symbols, prices, and USD values. +- **Knowledge**: Optional context files such as wallet references, accounting rules, or code snippets. +- **New Action**: At the bottom, click “Create new action” to connect your GPT to the Token API. + +### Connect the Token API + +To enable live blockchain queries inside ChatGPT, you connect the GPT to the Token API through: + +#### Authentication + +1. Set Authentication to API Key → Bearer. +2. Open [The Graph Market](https://thegraph.market./) and copy your Authentication JWT from your dashboard. +3. Paste the token into the ChatGPT prompt where the field shows [HIDDEN]. + +#### Schema + +1. Above the Schema box, click Import from URL. +2. Paste: https://token-api.thegraph.com/openapi +3. Click Import. You'll now see endpoints like: + - `getV1EvmTokens` + - `getV1EvmDexes` + - `getV1EvmBalances` +4. Click Test on one (for example `getV1EvmDexes`) to verify connection. + +##### Privacy + +1. At the bottom, under Privacy, paste: https://pinax.network/en/legal/privacy + +### Privacy + +You can attach a privacy policy URL such as: https://pinax.network/en/legal/privacy + +## Example Prompt Patterns + +These examples help illustrate how a GPT reasons over Token API data. + +### Wallet and Portfolio + +Get the total USD balance for a wallet across multiple chains, returning token name, symbol, balance, and price. + +### Trading Analysis + +Compare USDC and DAI liquidity across Uniswap and Curve. Return the top 5 pools by TVL. + +### Accounting + +List all ERC-20 transfers for this address in the last 30 days. Group by token and total incoming/outgoing volume. + +## Best Practices + +| Tip | Why It Matters | +| --------------------------------- | ---------------------------------------------------------------------- | +| Scope your GPT narrowly first | Simplifies debugging and validates schema integration. | +| Use clear role instructions | Helps the GPT choose the right endpoints and avoid assumptions. | +| Name endpoints explicitly | Improves routing accuracy when fetching balances, prices, or DEX data. | +| Combine with code | Enables custom parsing or logic for complex workflows. | +| Add Subgraph or Substream context | Provides richer analytics when combined with Token API data. | + +## FAQs & Resources + +- Builders Office Hours (October 23, 2025) +- Watch the full session: https://x.com/i/broadcasts/1mrGmBzBarNJy diff --git a/website/src/pages/fr/token-api/guides/upgrade-to-v1.mdx b/website/src/pages/fr/token-api/guides/upgrade-to-v1.mdx new file mode 100644 index 000000000000..e2a7ccf973fa --- /dev/null +++ b/website/src/pages/fr/token-api/guides/upgrade-to-v1.mdx @@ -0,0 +1,346 @@ +--- +title: Upgrade to v1 +--- + +This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. + +**Note** + +- `EVM` = Ethereum Virtual Machine + +Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). + +- `SVM` = Solana Virtual Machine + +Used to describe endpoints supporting Solana (currently the only SVM chain supported). + +## 🔑 Breaking Changes Summary + +### 1. API Versioning + +All endpoints now use the `/v1` prefix. + +**Before:** + +``` +GET /balances/evm +GET /nft/items/contract/:contract/token_id/:token_id +``` + +**After:** + +``` +GET /v1/evm/balances +GET /v1/evm/nft/items +``` + +### 2. Route Structure Reorganization + +#### 2.1 EVM Endpoints + +Consolidated under `/v1/evm/*` + +| Old Endpoint | New Endpoint | +| ------------------------------------------------------ | ----------------------------- | +| `/balances/evm` | `/v1/evm/balances` | +| `/historical/balances/evm` | `/v1/evm/balances/historical` | +| `/holders/evm/:contract` | `/v1/evm/holders` | +| `/tokens/evm/:contract` | `/v1/evm/tokens` | +| `/transfers/evm` | `/v1/evm/transfers` | +| `/pools/evm` | `/v1/evm/pools` | +| `/swaps/evm` | `/v1/evm/swaps` | +| `/dexes/evm` | `/v1/evm/dexes` | +| `/ohlc/prices/evm/:contract` | _(removed)_ | +| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | +| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | +| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | +| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | +| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | +| `/nft/activities/evm` | `/v1/evm/nft/transfers` | +| `/nft/sales/evm` | `/v1/evm/nft/sales` | + +**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. + +**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. + +--- + +#### 2.2 New EVM native balances endpoint + +Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. + +Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. + +--- + +#### 2.3 SVM Endpoints + +Consolidated under `/v1/svm/*` + +| Old Endpoint | New Endpoint | +| ------------------------ | ------------------------- | +| `/balances/svm` | `/v1/svm/balances` | +| `/balances/native/svm` | `/v1/svm/balances/native` | +| `/holders/svm/:contract` | `/v1/svm/holders` | +| `/tokens/svm/:mint` | `/v1/svm/tokens` | +| `/transfers/svm` | `/v1/svm/transfers` | +| `/pools/svm` | `/v1/svm/pools` | +| `/swaps/svm` | `/v1/svm/swaps` | +| `/dexes/svm` | `/v1/svm/dexes` | +| `/owner/svm/:account` | `/v1/svm/owner` | +| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | + +## 📝 Parameter Changes + +### 3. Path Parameters → Query Parameters + +All path parameters have been moved to query parameters. + +**Before:** + +```bash +GET /balances/evm/:address +GET /holders/evm/:contract +GET /nft/items/evm/contract/:contract/token_id/:token_id +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0x... +GET /v1/evm/holders?network=mainnet&contract=0x... +GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 +``` + +### 4. Standardized Parameter Naming + +All query parameters have been standardized to use snake_case naming convention. + +| Old Parameter | New Parameter | Notes | +| --- | --- | --- | +| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | +| `anyAddress` | `address` | Matches either `from` or `to` address | +| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | +| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | +| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | +| `endTime` | `end_time` | Default: `9999999999` | +| - | `start_block` | New parameter, default: `0` | +| - | `end_block` | New parameter, default: `9999999999` | +| - | `include_null_balances` | New parameter, default: `false` | +| `tx_hash` | `transaction_id` | - | +| `token` | `input_token`, `output_token` | More explicit for pool queries | +| `pool` | `amm_pool` | - | +| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | + +**Important:** The `network_id` parameter has been renamed to `network`. + +**Important:** `matic` network has been renamed to `polygon`. + +### 5. Batched Parameters + +Many parameters now support batching - accepting single values or comma-separated strings. + +**Supported Batched Parameters:** + +- `address`, `from_address`, `to_address` +- `contract`, `token_id` +- `factory`, `pool` +- `owner`, `token_account`, `mint` +- `transaction_id`, `signature` + +**Examples:** + +```console +## Single value +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 + +## Comma-separated, single parameter +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 + +## Repeated parameter values +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +### 6. New Parameters + +#### `include_null_balances` + +Added to balance endpoints to optionally include zero/null balances. + +```bash +?include_null_balances=true +``` + +**Default:** `false` + +## 🔄 Response Changes + +### 7. Pagination Changes + +Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. + +**Before:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2, + "next_page": 3, + "total_pages": 10 + }, + "total_results": 1234 +} +``` + +**After:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2 + } +} +``` + +**Removed fields:** + +- `next_page` +- `total_pages` +- `total_results` + +**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. + +### 8. Removed Parameters + +The following deprecated parameters have been removed: + +- `orderBy` - Results are now ordered by timestamp/block by default +- `orderDirection` - Always descending (newest first) + +### 9. Cached Queries + +Queries are now cached on the ClickHouse side for better performance. + +You can specifically request to not use the cache by setting the `Cache-Control` header to `no-cache`. + +#### Example + +**Cache** + +```console +$ curl -s 'https://token-api.thegraph.com/v1/...' | jq .statistics +{ + "bytes_read": 221, + "rows_read": 1, + "elapsed": 0.002212065 +} +``` + +**No cache** + +```console +$ curl -s 'http://localhost:8000/v1/...' --header 'Cache-Control: no-cache' | jq .statistics +{ + "bytes_read": 14621174348, + "rows_read": 223244390, + "elapsed": 0.971064066 +} +``` + +## 📚 Example Migrations + +### Example 1: Get Token Balances + +**Before:** + +```bash +GET /token/balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +### Example 2: Get NFT Items + +**Before:** + +```bash +GET /nft/items/evm/contract/0xbd3531da5cf5857e7cfaa92426877b022e612cf8/token_id/5712?network_id=mainnet +``` + +**After:** + +```bash +GET /v1/evm/nft/items?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&token_id=5712 +``` + +### Example 3: Get Token Transfers with Time Filter + +**Before:** + +```bash +GET /token/transfers/evm?network_id=mainnet&from=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&startTime=1735689600&endTime=1767225600 +``` + +**After:** + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&start_time=1735689600&end_time=1767225600 +``` + +### Example 4: Get NFT Transfer Activities + +**Before:** + +```bash +GET /nft/activities/evm?network_id=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&anyAddress=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +**After:** + +```bash +GET /v1/evm/nft/transfers?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +### Example 5: Get Pool OHLC Data + +**Before:** + +```bash +GET /token/ohlc/pools/evm/0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640?network_id=mainnet&interval=1h&startTime=1735689600 +``` + +**After:** + +```bash +GET /v1/evm/pools/ohlc?network=mainnet&pool=0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640&interval=1h&start_time=1735689600 +``` + +### Example 6: Batched Query (New Feature) + +Query balances for multiple contracts in a single request: + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +Query transfers from multiple addresses: + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xabc...,0xdef...,0x123...&start_time=1735689600 +``` + +## ⚠️ Important Notes + +1. **Migration Notes:** The old endpoints were deprecated and removed on **October 30, 2025**. Please ensure all integrations have been migrated to the new Token API v1 endpoints. + +2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. + +3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. + +4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/fr/token-api/upgrade-to-v1.mdx b/website/src/pages/fr/token-api/upgrade-to-v1.mdx deleted file mode 100644 index fbe09101eaa5..000000000000 --- a/website/src/pages/fr/token-api/upgrade-to-v1.mdx +++ /dev/null @@ -1,254 +0,0 @@ ---- -title: Upgrade to v1 ---- - -This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. - -**Note** - -- `EVM` = Ethereum Virtual Machine - -Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). - -- `SVM` = Solana Virtual Machine - -Used to describe endpoints supporting Solana (currently the only SVM chain supported). - -## 🔑 Breaking Changes Summary - -### 1. **API Versioning** - -All endpoints now use the `/v1` prefix. - -**Before:** - -``` -GET /balances/evm -GET /nft/items/contract/:contract/token_id/:token_id -``` - -**After:** - -``` -GET /v1/evm/balances -GET /v1/evm/nft/items -``` - -### 2. **Route Structure Reorganization** - -#### 2.1 EVM Endpoints - -Consolidated under `/v1/evm/*` - -| Old Endpoint | New Endpoint | -| ------------------------------------------------------ | ----------------------------- | -| `/balances/evm` | `/v1/evm/balances` | -| `/historical/balances/evm` | `/v1/evm/balances/historical` | -| `/holders/evm/:contract` | `/v1/evm/holders` | -| `/tokens/evm/:contract` | `/v1/evm/tokens` | -| `/transfers/evm` | `/v1/evm/transfers` | -| `/pools/evm` | `/v1/evm/pools` | -| `/swaps/evm` | `/v1/evm/swaps` | -| `/dexes/evm` | `/v1/evm/dexes` | -| `/ohlc/prices/evm/:contract` | _(removed)_ | -| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | -| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | -| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | -| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | -| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | -| `/nft/activities/evm` | `/v1/evm/nft/transfers` | -| `/nft/sales/evm` | `/v1/evm/nft/sales` | - -**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. - -**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. - ---- - -#### 2.2 New EVM native balances endpoint - -Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. - -Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. - ---- - -#### 2.3 SVM Endpoints - -Consolidated under `/v1/svm/*` - -| Old Endpoint | New Endpoint | -| ------------------------ | ------------------------- | -| `/balances/svm` | `/v1/svm/balances` | -| `/balances/native/svm` | `/v1/svm/balances/native` | -| `/holders/svm/:contract` | `/v1/svm/holders` | -| `/tokens/svm/:mint` | `/v1/svm/tokens` | -| `/transfers/svm` | `/v1/svm/transfers` | -| `/pools/svm` | `/v1/svm/pools` | -| `/swaps/svm` | `/v1/svm/swaps` | -| `/dexes/svm` | `/v1/svm/dexes` | -| `/owner/svm/:account` | `/v1/svm/owner` | -| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | - -## 📝 Parameter Changes - -### 3. **Path Parameters → Query Parameters** - -All path parameters have been moved to query parameters. - -**Before:** - -```bash -GET /balances/evm/:address -GET /holders/evm/:contract -GET /nft/items/evm/contract/:contract/token_id/:token_id -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0x... -GET /v1/evm/holders?network=mainnet&contract=0x... -GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 -``` - -### 4. **Standardized Parameter Naming** - -All query parameters have been standardized to use snake_case naming convention. - -| Old Parameter | New Parameter | Notes | -| --- | --- | --- | -| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | -| `anyAddress` | `address` | Matches either `from` or `to` address | -| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | -| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | -| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | -| `endTime` | `end_time` | Default: `9999999999` | -| - | `start_block` | New parameter, default: `0` | -| - | `end_block` | New parameter, default: `9999999999` | -| - | `include_null_balances` | New parameter, default: `false` | -| `tx_hash` | `transaction_id` | - | -| `token` | `input_token`, `output_token` | More explicit for pool queries | -| `pool` | `amm_pool` | - | -| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | - -**Important:** The `network_id` parameter has been renamed to `network`. - -**Important:** `matic` network has been renamed to `polygon`. - -### 5. **Batched Parameters** - -Many parameters now support batching - accepting single values or comma-separated strings. - -**Supported Batched Parameters:** - -- `address`, `from_address`, `to_address` -- `contract`, `token_id` -- `factory`, `pool` -- `owner`, `token_account`, `mint` -- `transaction_id`, `signature` - -**Examples:** - -```console -# Single value -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 - -# Comma-separated, single parameter -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 - -# Repeated parameter values -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -### 6. **New Parameters** - -#### `include_null_balances` - -Added to balance endpoints to optionally include zero/null balances. - -```bash -?include_null_balances=true -``` - -**Default:** `false` - -## 🔄 Response Changes - -### 7. **Pagination Changes** - -Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. - -**Before:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2, - "next_page": 3, - "total_pages": 10 - }, - "total_results": 1234 -} -``` - -**After:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2 - } -} -``` - -**Removed fields:** - -- `next_page` -- `total_pages` -- `total_results` - -**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. - -### 8. **Removed Parameters** - -The following deprecated parameters have been removed: - -- `orderBy` - Results are now ordered by timestamp/block by default -- `orderDirection` - Always descending (newest first) - -## 📚 Example Migrations - -### Old vs New: Get Token Balances - -**Before:** - -```bash -GET /balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -### New Feature: Batched Queries - -Query balances for multiple contracts in a single request: - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -## ⚠️ Important Notes - -1. **Backward Compatibility:** The old endpoints are deprecated and will be removed in the future. Migrate by **Oct 30, 2025**. - -2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. - -3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. - -4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/hi/index.json b/website/src/pages/hi/index.json index 192262297c87..977876223319 100644 --- a/website/src/pages/hi/index.json +++ b/website/src/pages/hi/index.json @@ -2,7 +2,7 @@ "title": "Home", "hero": { "title": "The Graph डॉक्स", - "description": "The Graph is a blockchain data solution that powers applications, analytics, and AI on 90+ chains. The Graph's core products include the Token API for web3 apps, Subgraphs for indexing smart contracts, and Substreams for real-time and historical data streaming.", + "description": "The Graph is a blockchain data solution that powers applications, analytics, and AI on 80+ chains. The Graph's core products include the Token API for web3 apps, Subgraphs for indexing smart contracts, and Substreams for real-time and historical data streaming.", "cta1": "The Graph कैसे काम करता है", "cta2": "अपना पहला Subgraph बनाएं" }, diff --git a/website/src/pages/hi/subgraphs/guides/_meta.js b/website/src/pages/hi/subgraphs/guides/_meta.js index fd5608dcceb2..1c081848ea08 100644 --- a/website/src/pages/hi/subgraphs/guides/_meta.js +++ b/website/src/pages/hi/subgraphs/guides/_meta.js @@ -2,7 +2,6 @@ export default { 'subgraph-composition': '', 'subgraph-debug-forking': '', near: '', - grafting: '', 'subgraph-uncrashable': '', 'transfer-to-the-graph': '', diff --git a/website/src/pages/hi/token-api/_meta.js b/website/src/pages/hi/token-api/_meta.js index a8624da52e7f..9588f70cec53 100644 --- a/website/src/pages/hi/token-api/_meta.js +++ b/website/src/pages/hi/token-api/_meta.js @@ -11,6 +11,6 @@ export default { 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', 'endpoint-pricing': '', + guides: titles['guides'] ?? '', faq: '', - 'upgrade-to-v1': '', } diff --git a/website/src/pages/hi/token-api/guides/_meta-titles.json b/website/src/pages/hi/token-api/guides/_meta-titles.json new file mode 100644 index 000000000000..cd93dcc0fc0b --- /dev/null +++ b/website/src/pages/hi/token-api/guides/_meta-titles.json @@ -0,0 +1,4 @@ +{ + "gpt": "Create Custom GPTS", + "upgrade-to-v1": "" +} diff --git a/website/src/pages/hi/token-api/guides/_meta.js b/website/src/pages/hi/token-api/guides/_meta.js new file mode 100644 index 000000000000..e5aaaadd78f2 --- /dev/null +++ b/website/src/pages/hi/token-api/guides/_meta.js @@ -0,0 +1,4 @@ +export default { + gpt: '', + 'upgrade-to-v1': '', +} diff --git a/website/src/pages/hi/token-api/guides/gpt.mdx b/website/src/pages/hi/token-api/guides/gpt.mdx new file mode 100644 index 000000000000..564d013dea20 --- /dev/null +++ b/website/src/pages/hi/token-api/guides/gpt.mdx @@ -0,0 +1,121 @@ +--- +title: How the Token API Powers Custom GPTs +sidebarTitle: Create Custom GPTs +--- + +## Overview + +The Token API is a pre-indexed blockchain data service that provides real-time access to token balances, metadata, prices, liquidity, and volume across multiple chains. Developers use its REST endpoints to build wallets, trading dashboards, DeFi analytics, and AI systems without maintaining their own indexing stack. Custom GPTs can connect directly to the Token API's OpenAPI schema. + +The Token API enables developers to build **Custom GPTs** to reason over live blockchain data inside ChatGPT that can reason over and respond with live blockchain data directly inside ChatGPT. + +## What the Token API Enables in Custom GPTs + +When a Custom GPT is wired to the Token API, it gains access to a machine-readable schema and authenticated endpoints. Developers can use this to: + +- **Query real-time onchain data**: Balances, token prices, liquidity, and transaction history. +- **Automate domain-specific tasks**: Portfolio tracking, accounting, reconciliation, and market analysis. +- **Power AI agents with verifiable blockchain context**: Use the same data sources dapps rely on. + +Because the Token API provides a machine-readable schema and authenticated requests, it serves as a structured data layer that enables GPT-5 agents to combine natural language reasoning with live onchain data from The Graph. + +## When to Use the Token API for Custom GPTs + +Use the Token API when your GPT needs repeatable, domain-specific behavior grounded in blockchain data. This is most effective when the GPT performs the same type of task frequently or enforces a workflow you define. For one-off or exploratory questions, standard ChatGPT prompts are sufficient. + +## Choosing a Use Case + +Start with a clear, narrow objective, then expand as needed. Common patterns include: + +- **Accounting GPT**: Onchain accounting, tax tagging, and portfolio reconciliation. +- **Trading GPT**: Liquidity, pricing, and volume analysis for trading strategies. +- **Protocol Tracking GPT**: Real-time monitoring of transaction activity and liquidity pools. + +A focused initial goal such as “Retrieve token balances and prices for a wallet” makes it easier to configure reliable behavior before adding complex workflows. + +## Requirements + +| Requirement | Description | +| ---------------------- | -------------------------------------------------------- | +| ChatGPT 5 | Custom GPT creation requires GPT-5 tier or Pro. | +| Token API Subscription | Sign up at [The Graph Market](https://thegraph.market./) | +| Token API Key | Available in your dashboard as the Authentication JWT. | + +## Setting Up a Custom GPT + +Below is an explanatory outline of what happens during setup. This section provides conceptual understanding. + +### Create Custom GPT + +1. Visit chat.openai.com/gpts in your browser. 2, Click Create (top right). +2. Under Configure (in the top left panel), set up your GPT's personality and scope. + +### Configure Your GPT + +You define the GPT's role, scope, and metadata so it knows what it is designed to do. This includes: + +- **Name and Description**: Helps users discover your GPT. + - For example: **Name**: Token Tracker GPT **Description**: An onchain analytics assistant that retrieves live token balances, prices, and liquidity data using The Graph's Token API. +- **Instructions**: Tells the GPT what tasks it should perform using the Token API. + - For example: You are a blockchain data assistant retrieving onchain token data from The Graph's Token API. Use endpoints to fetch balances, liquidity, and price history across EVM chains. Present results in tables with token symbols, prices, and USD values. +- **Knowledge**: Optional context files such as wallet references, accounting rules, or code snippets. +- **New Action**: At the bottom, click “Create new action” to connect your GPT to the Token API. + +### Connect the Token API + +To enable live blockchain queries inside ChatGPT, you connect the GPT to the Token API through: + +#### Authentication + +1. Set Authentication to API Key → Bearer. +2. Open [The Graph Market](https://thegraph.market./) and copy your Authentication JWT from your dashboard. +3. Paste the token into the ChatGPT prompt where the field shows [HIDDEN]. + +#### Schema + +1. Above the Schema box, click Import from URL. +2. Paste: https://token-api.thegraph.com/openapi +3. Click Import. You'll now see endpoints like: + - `getV1EvmTokens` + - `getV1EvmDexes` + - `getV1EvmBalances` +4. Click Test on one (for example `getV1EvmDexes`) to verify connection. + +##### Privacy + +1. At the bottom, under Privacy, paste: https://pinax.network/en/legal/privacy + +### Privacy + +You can attach a privacy policy URL such as: https://pinax.network/en/legal/privacy + +## Example Prompt Patterns + +These examples help illustrate how a GPT reasons over Token API data. + +### Wallet and Portfolio + +Get the total USD balance for a wallet across multiple chains, returning token name, symbol, balance, and price. + +### Trading Analysis + +Compare USDC and DAI liquidity across Uniswap and Curve. Return the top 5 pools by TVL. + +### Accounting + +List all ERC-20 transfers for this address in the last 30 days. Group by token and total incoming/outgoing volume. + +## Best Practices + +| Tip | Why It Matters | +| --------------------------------- | ---------------------------------------------------------------------- | +| Scope your GPT narrowly first | Simplifies debugging and validates schema integration. | +| Use clear role instructions | Helps the GPT choose the right endpoints and avoid assumptions. | +| Name endpoints explicitly | Improves routing accuracy when fetching balances, prices, or DEX data. | +| Combine with code | Enables custom parsing or logic for complex workflows. | +| Add Subgraph or Substream context | Provides richer analytics when combined with Token API data. | + +## FAQs & Resources + +- Builders Office Hours (October 23, 2025) +- Watch the full session: https://x.com/i/broadcasts/1mrGmBzBarNJy diff --git a/website/src/pages/hi/token-api/guides/upgrade-to-v1.mdx b/website/src/pages/hi/token-api/guides/upgrade-to-v1.mdx new file mode 100644 index 000000000000..e2a7ccf973fa --- /dev/null +++ b/website/src/pages/hi/token-api/guides/upgrade-to-v1.mdx @@ -0,0 +1,346 @@ +--- +title: Upgrade to v1 +--- + +This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. + +**Note** + +- `EVM` = Ethereum Virtual Machine + +Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). + +- `SVM` = Solana Virtual Machine + +Used to describe endpoints supporting Solana (currently the only SVM chain supported). + +## 🔑 Breaking Changes Summary + +### 1. API Versioning + +All endpoints now use the `/v1` prefix. + +**Before:** + +``` +GET /balances/evm +GET /nft/items/contract/:contract/token_id/:token_id +``` + +**After:** + +``` +GET /v1/evm/balances +GET /v1/evm/nft/items +``` + +### 2. Route Structure Reorganization + +#### 2.1 EVM Endpoints + +Consolidated under `/v1/evm/*` + +| Old Endpoint | New Endpoint | +| ------------------------------------------------------ | ----------------------------- | +| `/balances/evm` | `/v1/evm/balances` | +| `/historical/balances/evm` | `/v1/evm/balances/historical` | +| `/holders/evm/:contract` | `/v1/evm/holders` | +| `/tokens/evm/:contract` | `/v1/evm/tokens` | +| `/transfers/evm` | `/v1/evm/transfers` | +| `/pools/evm` | `/v1/evm/pools` | +| `/swaps/evm` | `/v1/evm/swaps` | +| `/dexes/evm` | `/v1/evm/dexes` | +| `/ohlc/prices/evm/:contract` | _(removed)_ | +| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | +| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | +| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | +| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | +| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | +| `/nft/activities/evm` | `/v1/evm/nft/transfers` | +| `/nft/sales/evm` | `/v1/evm/nft/sales` | + +**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. + +**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. + +--- + +#### 2.2 New EVM native balances endpoint + +Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. + +Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. + +--- + +#### 2.3 SVM Endpoints + +Consolidated under `/v1/svm/*` + +| Old Endpoint | New Endpoint | +| ------------------------ | ------------------------- | +| `/balances/svm` | `/v1/svm/balances` | +| `/balances/native/svm` | `/v1/svm/balances/native` | +| `/holders/svm/:contract` | `/v1/svm/holders` | +| `/tokens/svm/:mint` | `/v1/svm/tokens` | +| `/transfers/svm` | `/v1/svm/transfers` | +| `/pools/svm` | `/v1/svm/pools` | +| `/swaps/svm` | `/v1/svm/swaps` | +| `/dexes/svm` | `/v1/svm/dexes` | +| `/owner/svm/:account` | `/v1/svm/owner` | +| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | + +## 📝 Parameter Changes + +### 3. Path Parameters → Query Parameters + +All path parameters have been moved to query parameters. + +**Before:** + +```bash +GET /balances/evm/:address +GET /holders/evm/:contract +GET /nft/items/evm/contract/:contract/token_id/:token_id +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0x... +GET /v1/evm/holders?network=mainnet&contract=0x... +GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 +``` + +### 4. Standardized Parameter Naming + +All query parameters have been standardized to use snake_case naming convention. + +| Old Parameter | New Parameter | Notes | +| --- | --- | --- | +| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | +| `anyAddress` | `address` | Matches either `from` or `to` address | +| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | +| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | +| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | +| `endTime` | `end_time` | Default: `9999999999` | +| - | `start_block` | New parameter, default: `0` | +| - | `end_block` | New parameter, default: `9999999999` | +| - | `include_null_balances` | New parameter, default: `false` | +| `tx_hash` | `transaction_id` | - | +| `token` | `input_token`, `output_token` | More explicit for pool queries | +| `pool` | `amm_pool` | - | +| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | + +**Important:** The `network_id` parameter has been renamed to `network`. + +**Important:** `matic` network has been renamed to `polygon`. + +### 5. Batched Parameters + +Many parameters now support batching - accepting single values or comma-separated strings. + +**Supported Batched Parameters:** + +- `address`, `from_address`, `to_address` +- `contract`, `token_id` +- `factory`, `pool` +- `owner`, `token_account`, `mint` +- `transaction_id`, `signature` + +**Examples:** + +```console +## Single value +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 + +## Comma-separated, single parameter +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 + +## Repeated parameter values +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +### 6. New Parameters + +#### `include_null_balances` + +Added to balance endpoints to optionally include zero/null balances. + +```bash +?include_null_balances=true +``` + +**Default:** `false` + +## 🔄 Response Changes + +### 7. Pagination Changes + +Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. + +**Before:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2, + "next_page": 3, + "total_pages": 10 + }, + "total_results": 1234 +} +``` + +**After:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2 + } +} +``` + +**Removed fields:** + +- `next_page` +- `total_pages` +- `total_results` + +**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. + +### 8. Removed Parameters + +The following deprecated parameters have been removed: + +- `orderBy` - Results are now ordered by timestamp/block by default +- `orderDirection` - Always descending (newest first) + +### 9. Cached Queries + +Queries are now cached on the ClickHouse side for better performance. + +You can specifically request to not use the cache by setting the `Cache-Control` header to `no-cache`. + +#### Example + +**Cache** + +```console +$ curl -s 'https://token-api.thegraph.com/v1/...' | jq .statistics +{ + "bytes_read": 221, + "rows_read": 1, + "elapsed": 0.002212065 +} +``` + +**No cache** + +```console +$ curl -s 'http://localhost:8000/v1/...' --header 'Cache-Control: no-cache' | jq .statistics +{ + "bytes_read": 14621174348, + "rows_read": 223244390, + "elapsed": 0.971064066 +} +``` + +## 📚 Example Migrations + +### Example 1: Get Token Balances + +**Before:** + +```bash +GET /token/balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +### Example 2: Get NFT Items + +**Before:** + +```bash +GET /nft/items/evm/contract/0xbd3531da5cf5857e7cfaa92426877b022e612cf8/token_id/5712?network_id=mainnet +``` + +**After:** + +```bash +GET /v1/evm/nft/items?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&token_id=5712 +``` + +### Example 3: Get Token Transfers with Time Filter + +**Before:** + +```bash +GET /token/transfers/evm?network_id=mainnet&from=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&startTime=1735689600&endTime=1767225600 +``` + +**After:** + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&start_time=1735689600&end_time=1767225600 +``` + +### Example 4: Get NFT Transfer Activities + +**Before:** + +```bash +GET /nft/activities/evm?network_id=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&anyAddress=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +**After:** + +```bash +GET /v1/evm/nft/transfers?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +### Example 5: Get Pool OHLC Data + +**Before:** + +```bash +GET /token/ohlc/pools/evm/0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640?network_id=mainnet&interval=1h&startTime=1735689600 +``` + +**After:** + +```bash +GET /v1/evm/pools/ohlc?network=mainnet&pool=0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640&interval=1h&start_time=1735689600 +``` + +### Example 6: Batched Query (New Feature) + +Query balances for multiple contracts in a single request: + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +Query transfers from multiple addresses: + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xabc...,0xdef...,0x123...&start_time=1735689600 +``` + +## ⚠️ Important Notes + +1. **Migration Notes:** The old endpoints were deprecated and removed on **October 30, 2025**. Please ensure all integrations have been migrated to the new Token API v1 endpoints. + +2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. + +3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. + +4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/hi/token-api/upgrade-to-v1.mdx b/website/src/pages/hi/token-api/upgrade-to-v1.mdx deleted file mode 100644 index fbe09101eaa5..000000000000 --- a/website/src/pages/hi/token-api/upgrade-to-v1.mdx +++ /dev/null @@ -1,254 +0,0 @@ ---- -title: Upgrade to v1 ---- - -This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. - -**Note** - -- `EVM` = Ethereum Virtual Machine - -Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). - -- `SVM` = Solana Virtual Machine - -Used to describe endpoints supporting Solana (currently the only SVM chain supported). - -## 🔑 Breaking Changes Summary - -### 1. **API Versioning** - -All endpoints now use the `/v1` prefix. - -**Before:** - -``` -GET /balances/evm -GET /nft/items/contract/:contract/token_id/:token_id -``` - -**After:** - -``` -GET /v1/evm/balances -GET /v1/evm/nft/items -``` - -### 2. **Route Structure Reorganization** - -#### 2.1 EVM Endpoints - -Consolidated under `/v1/evm/*` - -| Old Endpoint | New Endpoint | -| ------------------------------------------------------ | ----------------------------- | -| `/balances/evm` | `/v1/evm/balances` | -| `/historical/balances/evm` | `/v1/evm/balances/historical` | -| `/holders/evm/:contract` | `/v1/evm/holders` | -| `/tokens/evm/:contract` | `/v1/evm/tokens` | -| `/transfers/evm` | `/v1/evm/transfers` | -| `/pools/evm` | `/v1/evm/pools` | -| `/swaps/evm` | `/v1/evm/swaps` | -| `/dexes/evm` | `/v1/evm/dexes` | -| `/ohlc/prices/evm/:contract` | _(removed)_ | -| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | -| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | -| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | -| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | -| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | -| `/nft/activities/evm` | `/v1/evm/nft/transfers` | -| `/nft/sales/evm` | `/v1/evm/nft/sales` | - -**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. - -**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. - ---- - -#### 2.2 New EVM native balances endpoint - -Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. - -Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. - ---- - -#### 2.3 SVM Endpoints - -Consolidated under `/v1/svm/*` - -| Old Endpoint | New Endpoint | -| ------------------------ | ------------------------- | -| `/balances/svm` | `/v1/svm/balances` | -| `/balances/native/svm` | `/v1/svm/balances/native` | -| `/holders/svm/:contract` | `/v1/svm/holders` | -| `/tokens/svm/:mint` | `/v1/svm/tokens` | -| `/transfers/svm` | `/v1/svm/transfers` | -| `/pools/svm` | `/v1/svm/pools` | -| `/swaps/svm` | `/v1/svm/swaps` | -| `/dexes/svm` | `/v1/svm/dexes` | -| `/owner/svm/:account` | `/v1/svm/owner` | -| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | - -## 📝 Parameter Changes - -### 3. **Path Parameters → Query Parameters** - -All path parameters have been moved to query parameters. - -**Before:** - -```bash -GET /balances/evm/:address -GET /holders/evm/:contract -GET /nft/items/evm/contract/:contract/token_id/:token_id -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0x... -GET /v1/evm/holders?network=mainnet&contract=0x... -GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 -``` - -### 4. **Standardized Parameter Naming** - -All query parameters have been standardized to use snake_case naming convention. - -| Old Parameter | New Parameter | Notes | -| --- | --- | --- | -| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | -| `anyAddress` | `address` | Matches either `from` or `to` address | -| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | -| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | -| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | -| `endTime` | `end_time` | Default: `9999999999` | -| - | `start_block` | New parameter, default: `0` | -| - | `end_block` | New parameter, default: `9999999999` | -| - | `include_null_balances` | New parameter, default: `false` | -| `tx_hash` | `transaction_id` | - | -| `token` | `input_token`, `output_token` | More explicit for pool queries | -| `pool` | `amm_pool` | - | -| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | - -**Important:** The `network_id` parameter has been renamed to `network`. - -**Important:** `matic` network has been renamed to `polygon`. - -### 5. **Batched Parameters** - -Many parameters now support batching - accepting single values or comma-separated strings. - -**Supported Batched Parameters:** - -- `address`, `from_address`, `to_address` -- `contract`, `token_id` -- `factory`, `pool` -- `owner`, `token_account`, `mint` -- `transaction_id`, `signature` - -**Examples:** - -```console -# Single value -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 - -# Comma-separated, single parameter -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 - -# Repeated parameter values -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -### 6. **New Parameters** - -#### `include_null_balances` - -Added to balance endpoints to optionally include zero/null balances. - -```bash -?include_null_balances=true -``` - -**Default:** `false` - -## 🔄 Response Changes - -### 7. **Pagination Changes** - -Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. - -**Before:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2, - "next_page": 3, - "total_pages": 10 - }, - "total_results": 1234 -} -``` - -**After:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2 - } -} -``` - -**Removed fields:** - -- `next_page` -- `total_pages` -- `total_results` - -**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. - -### 8. **Removed Parameters** - -The following deprecated parameters have been removed: - -- `orderBy` - Results are now ordered by timestamp/block by default -- `orderDirection` - Always descending (newest first) - -## 📚 Example Migrations - -### Old vs New: Get Token Balances - -**Before:** - -```bash -GET /balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -### New Feature: Batched Queries - -Query balances for multiple contracts in a single request: - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -## ⚠️ Important Notes - -1. **Backward Compatibility:** The old endpoints are deprecated and will be removed in the future. Migrate by **Oct 30, 2025**. - -2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. - -3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. - -4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/it/index.json b/website/src/pages/it/index.json index c86981bd867e..a30047cd5cc5 100644 --- a/website/src/pages/it/index.json +++ b/website/src/pages/it/index.json @@ -2,7 +2,7 @@ "title": "Home", "hero": { "title": "The Graph Docs", - "description": "The Graph is a blockchain data solution that powers applications, analytics, and AI on 90+ chains. The Graph's core products include the Token API for web3 apps, Subgraphs for indexing smart contracts, and Substreams for real-time and historical data streaming.", + "description": "The Graph is a blockchain data solution that powers applications, analytics, and AI on 80+ chains. The Graph's core products include the Token API for web3 apps, Subgraphs for indexing smart contracts, and Substreams for real-time and historical data streaming.", "cta1": "How The Graph works", "cta2": "Build your first subgraph" }, diff --git a/website/src/pages/it/subgraphs/guides/_meta.js b/website/src/pages/it/subgraphs/guides/_meta.js index fd5608dcceb2..1c081848ea08 100644 --- a/website/src/pages/it/subgraphs/guides/_meta.js +++ b/website/src/pages/it/subgraphs/guides/_meta.js @@ -2,7 +2,6 @@ export default { 'subgraph-composition': '', 'subgraph-debug-forking': '', near: '', - grafting: '', 'subgraph-uncrashable': '', 'transfer-to-the-graph': '', diff --git a/website/src/pages/it/token-api/_meta.js b/website/src/pages/it/token-api/_meta.js index a8624da52e7f..9588f70cec53 100644 --- a/website/src/pages/it/token-api/_meta.js +++ b/website/src/pages/it/token-api/_meta.js @@ -11,6 +11,6 @@ export default { 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', 'endpoint-pricing': '', + guides: titles['guides'] ?? '', faq: '', - 'upgrade-to-v1': '', } diff --git a/website/src/pages/it/token-api/guides/_meta-titles.json b/website/src/pages/it/token-api/guides/_meta-titles.json new file mode 100644 index 000000000000..cd93dcc0fc0b --- /dev/null +++ b/website/src/pages/it/token-api/guides/_meta-titles.json @@ -0,0 +1,4 @@ +{ + "gpt": "Create Custom GPTS", + "upgrade-to-v1": "" +} diff --git a/website/src/pages/it/token-api/guides/_meta.js b/website/src/pages/it/token-api/guides/_meta.js new file mode 100644 index 000000000000..e5aaaadd78f2 --- /dev/null +++ b/website/src/pages/it/token-api/guides/_meta.js @@ -0,0 +1,4 @@ +export default { + gpt: '', + 'upgrade-to-v1': '', +} diff --git a/website/src/pages/it/token-api/guides/gpt.mdx b/website/src/pages/it/token-api/guides/gpt.mdx new file mode 100644 index 000000000000..564d013dea20 --- /dev/null +++ b/website/src/pages/it/token-api/guides/gpt.mdx @@ -0,0 +1,121 @@ +--- +title: How the Token API Powers Custom GPTs +sidebarTitle: Create Custom GPTs +--- + +## Overview + +The Token API is a pre-indexed blockchain data service that provides real-time access to token balances, metadata, prices, liquidity, and volume across multiple chains. Developers use its REST endpoints to build wallets, trading dashboards, DeFi analytics, and AI systems without maintaining their own indexing stack. Custom GPTs can connect directly to the Token API's OpenAPI schema. + +The Token API enables developers to build **Custom GPTs** to reason over live blockchain data inside ChatGPT that can reason over and respond with live blockchain data directly inside ChatGPT. + +## What the Token API Enables in Custom GPTs + +When a Custom GPT is wired to the Token API, it gains access to a machine-readable schema and authenticated endpoints. Developers can use this to: + +- **Query real-time onchain data**: Balances, token prices, liquidity, and transaction history. +- **Automate domain-specific tasks**: Portfolio tracking, accounting, reconciliation, and market analysis. +- **Power AI agents with verifiable blockchain context**: Use the same data sources dapps rely on. + +Because the Token API provides a machine-readable schema and authenticated requests, it serves as a structured data layer that enables GPT-5 agents to combine natural language reasoning with live onchain data from The Graph. + +## When to Use the Token API for Custom GPTs + +Use the Token API when your GPT needs repeatable, domain-specific behavior grounded in blockchain data. This is most effective when the GPT performs the same type of task frequently or enforces a workflow you define. For one-off or exploratory questions, standard ChatGPT prompts are sufficient. + +## Choosing a Use Case + +Start with a clear, narrow objective, then expand as needed. Common patterns include: + +- **Accounting GPT**: Onchain accounting, tax tagging, and portfolio reconciliation. +- **Trading GPT**: Liquidity, pricing, and volume analysis for trading strategies. +- **Protocol Tracking GPT**: Real-time monitoring of transaction activity and liquidity pools. + +A focused initial goal such as “Retrieve token balances and prices for a wallet” makes it easier to configure reliable behavior before adding complex workflows. + +## Requirements + +| Requirement | Description | +| ---------------------- | -------------------------------------------------------- | +| ChatGPT 5 | Custom GPT creation requires GPT-5 tier or Pro. | +| Token API Subscription | Sign up at [The Graph Market](https://thegraph.market./) | +| Token API Key | Available in your dashboard as the Authentication JWT. | + +## Setting Up a Custom GPT + +Below is an explanatory outline of what happens during setup. This section provides conceptual understanding. + +### Create Custom GPT + +1. Visit chat.openai.com/gpts in your browser. 2, Click Create (top right). +2. Under Configure (in the top left panel), set up your GPT's personality and scope. + +### Configure Your GPT + +You define the GPT's role, scope, and metadata so it knows what it is designed to do. This includes: + +- **Name and Description**: Helps users discover your GPT. + - For example: **Name**: Token Tracker GPT **Description**: An onchain analytics assistant that retrieves live token balances, prices, and liquidity data using The Graph's Token API. +- **Instructions**: Tells the GPT what tasks it should perform using the Token API. + - For example: You are a blockchain data assistant retrieving onchain token data from The Graph's Token API. Use endpoints to fetch balances, liquidity, and price history across EVM chains. Present results in tables with token symbols, prices, and USD values. +- **Knowledge**: Optional context files such as wallet references, accounting rules, or code snippets. +- **New Action**: At the bottom, click “Create new action” to connect your GPT to the Token API. + +### Connect the Token API + +To enable live blockchain queries inside ChatGPT, you connect the GPT to the Token API through: + +#### Authentication + +1. Set Authentication to API Key → Bearer. +2. Open [The Graph Market](https://thegraph.market./) and copy your Authentication JWT from your dashboard. +3. Paste the token into the ChatGPT prompt where the field shows [HIDDEN]. + +#### Schema + +1. Above the Schema box, click Import from URL. +2. Paste: https://token-api.thegraph.com/openapi +3. Click Import. You'll now see endpoints like: + - `getV1EvmTokens` + - `getV1EvmDexes` + - `getV1EvmBalances` +4. Click Test on one (for example `getV1EvmDexes`) to verify connection. + +##### Privacy + +1. At the bottom, under Privacy, paste: https://pinax.network/en/legal/privacy + +### Privacy + +You can attach a privacy policy URL such as: https://pinax.network/en/legal/privacy + +## Example Prompt Patterns + +These examples help illustrate how a GPT reasons over Token API data. + +### Wallet and Portfolio + +Get the total USD balance for a wallet across multiple chains, returning token name, symbol, balance, and price. + +### Trading Analysis + +Compare USDC and DAI liquidity across Uniswap and Curve. Return the top 5 pools by TVL. + +### Accounting + +List all ERC-20 transfers for this address in the last 30 days. Group by token and total incoming/outgoing volume. + +## Best Practices + +| Tip | Why It Matters | +| --------------------------------- | ---------------------------------------------------------------------- | +| Scope your GPT narrowly first | Simplifies debugging and validates schema integration. | +| Use clear role instructions | Helps the GPT choose the right endpoints and avoid assumptions. | +| Name endpoints explicitly | Improves routing accuracy when fetching balances, prices, or DEX data. | +| Combine with code | Enables custom parsing or logic for complex workflows. | +| Add Subgraph or Substream context | Provides richer analytics when combined with Token API data. | + +## FAQs & Resources + +- Builders Office Hours (October 23, 2025) +- Watch the full session: https://x.com/i/broadcasts/1mrGmBzBarNJy diff --git a/website/src/pages/it/token-api/guides/upgrade-to-v1.mdx b/website/src/pages/it/token-api/guides/upgrade-to-v1.mdx new file mode 100644 index 000000000000..e2a7ccf973fa --- /dev/null +++ b/website/src/pages/it/token-api/guides/upgrade-to-v1.mdx @@ -0,0 +1,346 @@ +--- +title: Upgrade to v1 +--- + +This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. + +**Note** + +- `EVM` = Ethereum Virtual Machine + +Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). + +- `SVM` = Solana Virtual Machine + +Used to describe endpoints supporting Solana (currently the only SVM chain supported). + +## 🔑 Breaking Changes Summary + +### 1. API Versioning + +All endpoints now use the `/v1` prefix. + +**Before:** + +``` +GET /balances/evm +GET /nft/items/contract/:contract/token_id/:token_id +``` + +**After:** + +``` +GET /v1/evm/balances +GET /v1/evm/nft/items +``` + +### 2. Route Structure Reorganization + +#### 2.1 EVM Endpoints + +Consolidated under `/v1/evm/*` + +| Old Endpoint | New Endpoint | +| ------------------------------------------------------ | ----------------------------- | +| `/balances/evm` | `/v1/evm/balances` | +| `/historical/balances/evm` | `/v1/evm/balances/historical` | +| `/holders/evm/:contract` | `/v1/evm/holders` | +| `/tokens/evm/:contract` | `/v1/evm/tokens` | +| `/transfers/evm` | `/v1/evm/transfers` | +| `/pools/evm` | `/v1/evm/pools` | +| `/swaps/evm` | `/v1/evm/swaps` | +| `/dexes/evm` | `/v1/evm/dexes` | +| `/ohlc/prices/evm/:contract` | _(removed)_ | +| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | +| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | +| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | +| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | +| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | +| `/nft/activities/evm` | `/v1/evm/nft/transfers` | +| `/nft/sales/evm` | `/v1/evm/nft/sales` | + +**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. + +**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. + +--- + +#### 2.2 New EVM native balances endpoint + +Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. + +Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. + +--- + +#### 2.3 SVM Endpoints + +Consolidated under `/v1/svm/*` + +| Old Endpoint | New Endpoint | +| ------------------------ | ------------------------- | +| `/balances/svm` | `/v1/svm/balances` | +| `/balances/native/svm` | `/v1/svm/balances/native` | +| `/holders/svm/:contract` | `/v1/svm/holders` | +| `/tokens/svm/:mint` | `/v1/svm/tokens` | +| `/transfers/svm` | `/v1/svm/transfers` | +| `/pools/svm` | `/v1/svm/pools` | +| `/swaps/svm` | `/v1/svm/swaps` | +| `/dexes/svm` | `/v1/svm/dexes` | +| `/owner/svm/:account` | `/v1/svm/owner` | +| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | + +## 📝 Parameter Changes + +### 3. Path Parameters → Query Parameters + +All path parameters have been moved to query parameters. + +**Before:** + +```bash +GET /balances/evm/:address +GET /holders/evm/:contract +GET /nft/items/evm/contract/:contract/token_id/:token_id +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0x... +GET /v1/evm/holders?network=mainnet&contract=0x... +GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 +``` + +### 4. Standardized Parameter Naming + +All query parameters have been standardized to use snake_case naming convention. + +| Old Parameter | New Parameter | Notes | +| --- | --- | --- | +| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | +| `anyAddress` | `address` | Matches either `from` or `to` address | +| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | +| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | +| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | +| `endTime` | `end_time` | Default: `9999999999` | +| - | `start_block` | New parameter, default: `0` | +| - | `end_block` | New parameter, default: `9999999999` | +| - | `include_null_balances` | New parameter, default: `false` | +| `tx_hash` | `transaction_id` | - | +| `token` | `input_token`, `output_token` | More explicit for pool queries | +| `pool` | `amm_pool` | - | +| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | + +**Important:** The `network_id` parameter has been renamed to `network`. + +**Important:** `matic` network has been renamed to `polygon`. + +### 5. Batched Parameters + +Many parameters now support batching - accepting single values or comma-separated strings. + +**Supported Batched Parameters:** + +- `address`, `from_address`, `to_address` +- `contract`, `token_id` +- `factory`, `pool` +- `owner`, `token_account`, `mint` +- `transaction_id`, `signature` + +**Examples:** + +```console +## Single value +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 + +## Comma-separated, single parameter +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 + +## Repeated parameter values +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +### 6. New Parameters + +#### `include_null_balances` + +Added to balance endpoints to optionally include zero/null balances. + +```bash +?include_null_balances=true +``` + +**Default:** `false` + +## 🔄 Response Changes + +### 7. Pagination Changes + +Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. + +**Before:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2, + "next_page": 3, + "total_pages": 10 + }, + "total_results": 1234 +} +``` + +**After:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2 + } +} +``` + +**Removed fields:** + +- `next_page` +- `total_pages` +- `total_results` + +**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. + +### 8. Removed Parameters + +The following deprecated parameters have been removed: + +- `orderBy` - Results are now ordered by timestamp/block by default +- `orderDirection` - Always descending (newest first) + +### 9. Cached Queries + +Queries are now cached on the ClickHouse side for better performance. + +You can specifically request to not use the cache by setting the `Cache-Control` header to `no-cache`. + +#### Example + +**Cache** + +```console +$ curl -s 'https://token-api.thegraph.com/v1/...' | jq .statistics +{ + "bytes_read": 221, + "rows_read": 1, + "elapsed": 0.002212065 +} +``` + +**No cache** + +```console +$ curl -s 'http://localhost:8000/v1/...' --header 'Cache-Control: no-cache' | jq .statistics +{ + "bytes_read": 14621174348, + "rows_read": 223244390, + "elapsed": 0.971064066 +} +``` + +## 📚 Example Migrations + +### Example 1: Get Token Balances + +**Before:** + +```bash +GET /token/balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +### Example 2: Get NFT Items + +**Before:** + +```bash +GET /nft/items/evm/contract/0xbd3531da5cf5857e7cfaa92426877b022e612cf8/token_id/5712?network_id=mainnet +``` + +**After:** + +```bash +GET /v1/evm/nft/items?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&token_id=5712 +``` + +### Example 3: Get Token Transfers with Time Filter + +**Before:** + +```bash +GET /token/transfers/evm?network_id=mainnet&from=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&startTime=1735689600&endTime=1767225600 +``` + +**After:** + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&start_time=1735689600&end_time=1767225600 +``` + +### Example 4: Get NFT Transfer Activities + +**Before:** + +```bash +GET /nft/activities/evm?network_id=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&anyAddress=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +**After:** + +```bash +GET /v1/evm/nft/transfers?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +### Example 5: Get Pool OHLC Data + +**Before:** + +```bash +GET /token/ohlc/pools/evm/0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640?network_id=mainnet&interval=1h&startTime=1735689600 +``` + +**After:** + +```bash +GET /v1/evm/pools/ohlc?network=mainnet&pool=0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640&interval=1h&start_time=1735689600 +``` + +### Example 6: Batched Query (New Feature) + +Query balances for multiple contracts in a single request: + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +Query transfers from multiple addresses: + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xabc...,0xdef...,0x123...&start_time=1735689600 +``` + +## ⚠️ Important Notes + +1. **Migration Notes:** The old endpoints were deprecated and removed on **October 30, 2025**. Please ensure all integrations have been migrated to the new Token API v1 endpoints. + +2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. + +3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. + +4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/it/token-api/upgrade-to-v1.mdx b/website/src/pages/it/token-api/upgrade-to-v1.mdx deleted file mode 100644 index fbe09101eaa5..000000000000 --- a/website/src/pages/it/token-api/upgrade-to-v1.mdx +++ /dev/null @@ -1,254 +0,0 @@ ---- -title: Upgrade to v1 ---- - -This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. - -**Note** - -- `EVM` = Ethereum Virtual Machine - -Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). - -- `SVM` = Solana Virtual Machine - -Used to describe endpoints supporting Solana (currently the only SVM chain supported). - -## 🔑 Breaking Changes Summary - -### 1. **API Versioning** - -All endpoints now use the `/v1` prefix. - -**Before:** - -``` -GET /balances/evm -GET /nft/items/contract/:contract/token_id/:token_id -``` - -**After:** - -``` -GET /v1/evm/balances -GET /v1/evm/nft/items -``` - -### 2. **Route Structure Reorganization** - -#### 2.1 EVM Endpoints - -Consolidated under `/v1/evm/*` - -| Old Endpoint | New Endpoint | -| ------------------------------------------------------ | ----------------------------- | -| `/balances/evm` | `/v1/evm/balances` | -| `/historical/balances/evm` | `/v1/evm/balances/historical` | -| `/holders/evm/:contract` | `/v1/evm/holders` | -| `/tokens/evm/:contract` | `/v1/evm/tokens` | -| `/transfers/evm` | `/v1/evm/transfers` | -| `/pools/evm` | `/v1/evm/pools` | -| `/swaps/evm` | `/v1/evm/swaps` | -| `/dexes/evm` | `/v1/evm/dexes` | -| `/ohlc/prices/evm/:contract` | _(removed)_ | -| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | -| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | -| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | -| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | -| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | -| `/nft/activities/evm` | `/v1/evm/nft/transfers` | -| `/nft/sales/evm` | `/v1/evm/nft/sales` | - -**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. - -**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. - ---- - -#### 2.2 New EVM native balances endpoint - -Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. - -Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. - ---- - -#### 2.3 SVM Endpoints - -Consolidated under `/v1/svm/*` - -| Old Endpoint | New Endpoint | -| ------------------------ | ------------------------- | -| `/balances/svm` | `/v1/svm/balances` | -| `/balances/native/svm` | `/v1/svm/balances/native` | -| `/holders/svm/:contract` | `/v1/svm/holders` | -| `/tokens/svm/:mint` | `/v1/svm/tokens` | -| `/transfers/svm` | `/v1/svm/transfers` | -| `/pools/svm` | `/v1/svm/pools` | -| `/swaps/svm` | `/v1/svm/swaps` | -| `/dexes/svm` | `/v1/svm/dexes` | -| `/owner/svm/:account` | `/v1/svm/owner` | -| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | - -## 📝 Parameter Changes - -### 3. **Path Parameters → Query Parameters** - -All path parameters have been moved to query parameters. - -**Before:** - -```bash -GET /balances/evm/:address -GET /holders/evm/:contract -GET /nft/items/evm/contract/:contract/token_id/:token_id -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0x... -GET /v1/evm/holders?network=mainnet&contract=0x... -GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 -``` - -### 4. **Standardized Parameter Naming** - -All query parameters have been standardized to use snake_case naming convention. - -| Old Parameter | New Parameter | Notes | -| --- | --- | --- | -| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | -| `anyAddress` | `address` | Matches either `from` or `to` address | -| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | -| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | -| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | -| `endTime` | `end_time` | Default: `9999999999` | -| - | `start_block` | New parameter, default: `0` | -| - | `end_block` | New parameter, default: `9999999999` | -| - | `include_null_balances` | New parameter, default: `false` | -| `tx_hash` | `transaction_id` | - | -| `token` | `input_token`, `output_token` | More explicit for pool queries | -| `pool` | `amm_pool` | - | -| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | - -**Important:** The `network_id` parameter has been renamed to `network`. - -**Important:** `matic` network has been renamed to `polygon`. - -### 5. **Batched Parameters** - -Many parameters now support batching - accepting single values or comma-separated strings. - -**Supported Batched Parameters:** - -- `address`, `from_address`, `to_address` -- `contract`, `token_id` -- `factory`, `pool` -- `owner`, `token_account`, `mint` -- `transaction_id`, `signature` - -**Examples:** - -```console -# Single value -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 - -# Comma-separated, single parameter -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 - -# Repeated parameter values -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -### 6. **New Parameters** - -#### `include_null_balances` - -Added to balance endpoints to optionally include zero/null balances. - -```bash -?include_null_balances=true -``` - -**Default:** `false` - -## 🔄 Response Changes - -### 7. **Pagination Changes** - -Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. - -**Before:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2, - "next_page": 3, - "total_pages": 10 - }, - "total_results": 1234 -} -``` - -**After:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2 - } -} -``` - -**Removed fields:** - -- `next_page` -- `total_pages` -- `total_results` - -**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. - -### 8. **Removed Parameters** - -The following deprecated parameters have been removed: - -- `orderBy` - Results are now ordered by timestamp/block by default -- `orderDirection` - Always descending (newest first) - -## 📚 Example Migrations - -### Old vs New: Get Token Balances - -**Before:** - -```bash -GET /balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -### New Feature: Batched Queries - -Query balances for multiple contracts in a single request: - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -## ⚠️ Important Notes - -1. **Backward Compatibility:** The old endpoints are deprecated and will be removed in the future. Migrate by **Oct 30, 2025**. - -2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. - -3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. - -4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/ja/index.json b/website/src/pages/ja/index.json index ed6ccaf2c73d..adf69a4059b4 100644 --- a/website/src/pages/ja/index.json +++ b/website/src/pages/ja/index.json @@ -2,7 +2,7 @@ "title": "Home", "hero": { "title": "The Graphのドキュメント", - "description": "The Graph is a blockchain data solution that powers applications, analytics, and AI on 90+ chains. The Graph's core products include the Token API for web3 apps, Subgraphs for indexing smart contracts, and Substreams for real-time and historical data streaming.", + "description": "The Graph is a blockchain data solution that powers applications, analytics, and AI on 80+ chains. The Graph's core products include the Token API for web3 apps, Subgraphs for indexing smart contracts, and Substreams for real-time and historical data streaming.", "cta1": "The Graphの仕組み", "cta2": "最初のサブグラフを作る" }, diff --git a/website/src/pages/ja/subgraphs/guides/_meta.js b/website/src/pages/ja/subgraphs/guides/_meta.js index fd5608dcceb2..1c081848ea08 100644 --- a/website/src/pages/ja/subgraphs/guides/_meta.js +++ b/website/src/pages/ja/subgraphs/guides/_meta.js @@ -2,7 +2,6 @@ export default { 'subgraph-composition': '', 'subgraph-debug-forking': '', near: '', - grafting: '', 'subgraph-uncrashable': '', 'transfer-to-the-graph': '', diff --git a/website/src/pages/ja/token-api/_meta.js b/website/src/pages/ja/token-api/_meta.js index a8624da52e7f..9588f70cec53 100644 --- a/website/src/pages/ja/token-api/_meta.js +++ b/website/src/pages/ja/token-api/_meta.js @@ -11,6 +11,6 @@ export default { 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', 'endpoint-pricing': '', + guides: titles['guides'] ?? '', faq: '', - 'upgrade-to-v1': '', } diff --git a/website/src/pages/ja/token-api/guides/_meta-titles.json b/website/src/pages/ja/token-api/guides/_meta-titles.json new file mode 100644 index 000000000000..cd93dcc0fc0b --- /dev/null +++ b/website/src/pages/ja/token-api/guides/_meta-titles.json @@ -0,0 +1,4 @@ +{ + "gpt": "Create Custom GPTS", + "upgrade-to-v1": "" +} diff --git a/website/src/pages/ja/token-api/guides/_meta.js b/website/src/pages/ja/token-api/guides/_meta.js new file mode 100644 index 000000000000..e5aaaadd78f2 --- /dev/null +++ b/website/src/pages/ja/token-api/guides/_meta.js @@ -0,0 +1,4 @@ +export default { + gpt: '', + 'upgrade-to-v1': '', +} diff --git a/website/src/pages/ja/token-api/guides/gpt.mdx b/website/src/pages/ja/token-api/guides/gpt.mdx new file mode 100644 index 000000000000..564d013dea20 --- /dev/null +++ b/website/src/pages/ja/token-api/guides/gpt.mdx @@ -0,0 +1,121 @@ +--- +title: How the Token API Powers Custom GPTs +sidebarTitle: Create Custom GPTs +--- + +## Overview + +The Token API is a pre-indexed blockchain data service that provides real-time access to token balances, metadata, prices, liquidity, and volume across multiple chains. Developers use its REST endpoints to build wallets, trading dashboards, DeFi analytics, and AI systems without maintaining their own indexing stack. Custom GPTs can connect directly to the Token API's OpenAPI schema. + +The Token API enables developers to build **Custom GPTs** to reason over live blockchain data inside ChatGPT that can reason over and respond with live blockchain data directly inside ChatGPT. + +## What the Token API Enables in Custom GPTs + +When a Custom GPT is wired to the Token API, it gains access to a machine-readable schema and authenticated endpoints. Developers can use this to: + +- **Query real-time onchain data**: Balances, token prices, liquidity, and transaction history. +- **Automate domain-specific tasks**: Portfolio tracking, accounting, reconciliation, and market analysis. +- **Power AI agents with verifiable blockchain context**: Use the same data sources dapps rely on. + +Because the Token API provides a machine-readable schema and authenticated requests, it serves as a structured data layer that enables GPT-5 agents to combine natural language reasoning with live onchain data from The Graph. + +## When to Use the Token API for Custom GPTs + +Use the Token API when your GPT needs repeatable, domain-specific behavior grounded in blockchain data. This is most effective when the GPT performs the same type of task frequently or enforces a workflow you define. For one-off or exploratory questions, standard ChatGPT prompts are sufficient. + +## Choosing a Use Case + +Start with a clear, narrow objective, then expand as needed. Common patterns include: + +- **Accounting GPT**: Onchain accounting, tax tagging, and portfolio reconciliation. +- **Trading GPT**: Liquidity, pricing, and volume analysis for trading strategies. +- **Protocol Tracking GPT**: Real-time monitoring of transaction activity and liquidity pools. + +A focused initial goal such as “Retrieve token balances and prices for a wallet” makes it easier to configure reliable behavior before adding complex workflows. + +## Requirements + +| Requirement | Description | +| ---------------------- | -------------------------------------------------------- | +| ChatGPT 5 | Custom GPT creation requires GPT-5 tier or Pro. | +| Token API Subscription | Sign up at [The Graph Market](https://thegraph.market./) | +| Token API Key | Available in your dashboard as the Authentication JWT. | + +## Setting Up a Custom GPT + +Below is an explanatory outline of what happens during setup. This section provides conceptual understanding. + +### Create Custom GPT + +1. Visit chat.openai.com/gpts in your browser. 2, Click Create (top right). +2. Under Configure (in the top left panel), set up your GPT's personality and scope. + +### Configure Your GPT + +You define the GPT's role, scope, and metadata so it knows what it is designed to do. This includes: + +- **Name and Description**: Helps users discover your GPT. + - For example: **Name**: Token Tracker GPT **Description**: An onchain analytics assistant that retrieves live token balances, prices, and liquidity data using The Graph's Token API. +- **Instructions**: Tells the GPT what tasks it should perform using the Token API. + - For example: You are a blockchain data assistant retrieving onchain token data from The Graph's Token API. Use endpoints to fetch balances, liquidity, and price history across EVM chains. Present results in tables with token symbols, prices, and USD values. +- **Knowledge**: Optional context files such as wallet references, accounting rules, or code snippets. +- **New Action**: At the bottom, click “Create new action” to connect your GPT to the Token API. + +### Connect the Token API + +To enable live blockchain queries inside ChatGPT, you connect the GPT to the Token API through: + +#### Authentication + +1. Set Authentication to API Key → Bearer. +2. Open [The Graph Market](https://thegraph.market./) and copy your Authentication JWT from your dashboard. +3. Paste the token into the ChatGPT prompt where the field shows [HIDDEN]. + +#### Schema + +1. Above the Schema box, click Import from URL. +2. Paste: https://token-api.thegraph.com/openapi +3. Click Import. You'll now see endpoints like: + - `getV1EvmTokens` + - `getV1EvmDexes` + - `getV1EvmBalances` +4. Click Test on one (for example `getV1EvmDexes`) to verify connection. + +##### Privacy + +1. At the bottom, under Privacy, paste: https://pinax.network/en/legal/privacy + +### Privacy + +You can attach a privacy policy URL such as: https://pinax.network/en/legal/privacy + +## Example Prompt Patterns + +These examples help illustrate how a GPT reasons over Token API data. + +### Wallet and Portfolio + +Get the total USD balance for a wallet across multiple chains, returning token name, symbol, balance, and price. + +### Trading Analysis + +Compare USDC and DAI liquidity across Uniswap and Curve. Return the top 5 pools by TVL. + +### Accounting + +List all ERC-20 transfers for this address in the last 30 days. Group by token and total incoming/outgoing volume. + +## Best Practices + +| Tip | Why It Matters | +| --------------------------------- | ---------------------------------------------------------------------- | +| Scope your GPT narrowly first | Simplifies debugging and validates schema integration. | +| Use clear role instructions | Helps the GPT choose the right endpoints and avoid assumptions. | +| Name endpoints explicitly | Improves routing accuracy when fetching balances, prices, or DEX data. | +| Combine with code | Enables custom parsing or logic for complex workflows. | +| Add Subgraph or Substream context | Provides richer analytics when combined with Token API data. | + +## FAQs & Resources + +- Builders Office Hours (October 23, 2025) +- Watch the full session: https://x.com/i/broadcasts/1mrGmBzBarNJy diff --git a/website/src/pages/ja/token-api/guides/upgrade-to-v1.mdx b/website/src/pages/ja/token-api/guides/upgrade-to-v1.mdx new file mode 100644 index 000000000000..e2a7ccf973fa --- /dev/null +++ b/website/src/pages/ja/token-api/guides/upgrade-to-v1.mdx @@ -0,0 +1,346 @@ +--- +title: Upgrade to v1 +--- + +This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. + +**Note** + +- `EVM` = Ethereum Virtual Machine + +Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). + +- `SVM` = Solana Virtual Machine + +Used to describe endpoints supporting Solana (currently the only SVM chain supported). + +## 🔑 Breaking Changes Summary + +### 1. API Versioning + +All endpoints now use the `/v1` prefix. + +**Before:** + +``` +GET /balances/evm +GET /nft/items/contract/:contract/token_id/:token_id +``` + +**After:** + +``` +GET /v1/evm/balances +GET /v1/evm/nft/items +``` + +### 2. Route Structure Reorganization + +#### 2.1 EVM Endpoints + +Consolidated under `/v1/evm/*` + +| Old Endpoint | New Endpoint | +| ------------------------------------------------------ | ----------------------------- | +| `/balances/evm` | `/v1/evm/balances` | +| `/historical/balances/evm` | `/v1/evm/balances/historical` | +| `/holders/evm/:contract` | `/v1/evm/holders` | +| `/tokens/evm/:contract` | `/v1/evm/tokens` | +| `/transfers/evm` | `/v1/evm/transfers` | +| `/pools/evm` | `/v1/evm/pools` | +| `/swaps/evm` | `/v1/evm/swaps` | +| `/dexes/evm` | `/v1/evm/dexes` | +| `/ohlc/prices/evm/:contract` | _(removed)_ | +| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | +| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | +| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | +| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | +| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | +| `/nft/activities/evm` | `/v1/evm/nft/transfers` | +| `/nft/sales/evm` | `/v1/evm/nft/sales` | + +**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. + +**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. + +--- + +#### 2.2 New EVM native balances endpoint + +Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. + +Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. + +--- + +#### 2.3 SVM Endpoints + +Consolidated under `/v1/svm/*` + +| Old Endpoint | New Endpoint | +| ------------------------ | ------------------------- | +| `/balances/svm` | `/v1/svm/balances` | +| `/balances/native/svm` | `/v1/svm/balances/native` | +| `/holders/svm/:contract` | `/v1/svm/holders` | +| `/tokens/svm/:mint` | `/v1/svm/tokens` | +| `/transfers/svm` | `/v1/svm/transfers` | +| `/pools/svm` | `/v1/svm/pools` | +| `/swaps/svm` | `/v1/svm/swaps` | +| `/dexes/svm` | `/v1/svm/dexes` | +| `/owner/svm/:account` | `/v1/svm/owner` | +| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | + +## 📝 Parameter Changes + +### 3. Path Parameters → Query Parameters + +All path parameters have been moved to query parameters. + +**Before:** + +```bash +GET /balances/evm/:address +GET /holders/evm/:contract +GET /nft/items/evm/contract/:contract/token_id/:token_id +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0x... +GET /v1/evm/holders?network=mainnet&contract=0x... +GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 +``` + +### 4. Standardized Parameter Naming + +All query parameters have been standardized to use snake_case naming convention. + +| Old Parameter | New Parameter | Notes | +| --- | --- | --- | +| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | +| `anyAddress` | `address` | Matches either `from` or `to` address | +| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | +| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | +| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | +| `endTime` | `end_time` | Default: `9999999999` | +| - | `start_block` | New parameter, default: `0` | +| - | `end_block` | New parameter, default: `9999999999` | +| - | `include_null_balances` | New parameter, default: `false` | +| `tx_hash` | `transaction_id` | - | +| `token` | `input_token`, `output_token` | More explicit for pool queries | +| `pool` | `amm_pool` | - | +| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | + +**Important:** The `network_id` parameter has been renamed to `network`. + +**Important:** `matic` network has been renamed to `polygon`. + +### 5. Batched Parameters + +Many parameters now support batching - accepting single values or comma-separated strings. + +**Supported Batched Parameters:** + +- `address`, `from_address`, `to_address` +- `contract`, `token_id` +- `factory`, `pool` +- `owner`, `token_account`, `mint` +- `transaction_id`, `signature` + +**Examples:** + +```console +## Single value +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 + +## Comma-separated, single parameter +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 + +## Repeated parameter values +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +### 6. New Parameters + +#### `include_null_balances` + +Added to balance endpoints to optionally include zero/null balances. + +```bash +?include_null_balances=true +``` + +**Default:** `false` + +## 🔄 Response Changes + +### 7. Pagination Changes + +Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. + +**Before:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2, + "next_page": 3, + "total_pages": 10 + }, + "total_results": 1234 +} +``` + +**After:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2 + } +} +``` + +**Removed fields:** + +- `next_page` +- `total_pages` +- `total_results` + +**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. + +### 8. Removed Parameters + +The following deprecated parameters have been removed: + +- `orderBy` - Results are now ordered by timestamp/block by default +- `orderDirection` - Always descending (newest first) + +### 9. Cached Queries + +Queries are now cached on the ClickHouse side for better performance. + +You can specifically request to not use the cache by setting the `Cache-Control` header to `no-cache`. + +#### Example + +**Cache** + +```console +$ curl -s 'https://token-api.thegraph.com/v1/...' | jq .statistics +{ + "bytes_read": 221, + "rows_read": 1, + "elapsed": 0.002212065 +} +``` + +**No cache** + +```console +$ curl -s 'http://localhost:8000/v1/...' --header 'Cache-Control: no-cache' | jq .statistics +{ + "bytes_read": 14621174348, + "rows_read": 223244390, + "elapsed": 0.971064066 +} +``` + +## 📚 Example Migrations + +### Example 1: Get Token Balances + +**Before:** + +```bash +GET /token/balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +### Example 2: Get NFT Items + +**Before:** + +```bash +GET /nft/items/evm/contract/0xbd3531da5cf5857e7cfaa92426877b022e612cf8/token_id/5712?network_id=mainnet +``` + +**After:** + +```bash +GET /v1/evm/nft/items?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&token_id=5712 +``` + +### Example 3: Get Token Transfers with Time Filter + +**Before:** + +```bash +GET /token/transfers/evm?network_id=mainnet&from=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&startTime=1735689600&endTime=1767225600 +``` + +**After:** + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&start_time=1735689600&end_time=1767225600 +``` + +### Example 4: Get NFT Transfer Activities + +**Before:** + +```bash +GET /nft/activities/evm?network_id=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&anyAddress=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +**After:** + +```bash +GET /v1/evm/nft/transfers?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +### Example 5: Get Pool OHLC Data + +**Before:** + +```bash +GET /token/ohlc/pools/evm/0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640?network_id=mainnet&interval=1h&startTime=1735689600 +``` + +**After:** + +```bash +GET /v1/evm/pools/ohlc?network=mainnet&pool=0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640&interval=1h&start_time=1735689600 +``` + +### Example 6: Batched Query (New Feature) + +Query balances for multiple contracts in a single request: + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +Query transfers from multiple addresses: + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xabc...,0xdef...,0x123...&start_time=1735689600 +``` + +## ⚠️ Important Notes + +1. **Migration Notes:** The old endpoints were deprecated and removed on **October 30, 2025**. Please ensure all integrations have been migrated to the new Token API v1 endpoints. + +2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. + +3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. + +4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/ja/token-api/upgrade-to-v1.mdx b/website/src/pages/ja/token-api/upgrade-to-v1.mdx deleted file mode 100644 index fbe09101eaa5..000000000000 --- a/website/src/pages/ja/token-api/upgrade-to-v1.mdx +++ /dev/null @@ -1,254 +0,0 @@ ---- -title: Upgrade to v1 ---- - -This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. - -**Note** - -- `EVM` = Ethereum Virtual Machine - -Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). - -- `SVM` = Solana Virtual Machine - -Used to describe endpoints supporting Solana (currently the only SVM chain supported). - -## 🔑 Breaking Changes Summary - -### 1. **API Versioning** - -All endpoints now use the `/v1` prefix. - -**Before:** - -``` -GET /balances/evm -GET /nft/items/contract/:contract/token_id/:token_id -``` - -**After:** - -``` -GET /v1/evm/balances -GET /v1/evm/nft/items -``` - -### 2. **Route Structure Reorganization** - -#### 2.1 EVM Endpoints - -Consolidated under `/v1/evm/*` - -| Old Endpoint | New Endpoint | -| ------------------------------------------------------ | ----------------------------- | -| `/balances/evm` | `/v1/evm/balances` | -| `/historical/balances/evm` | `/v1/evm/balances/historical` | -| `/holders/evm/:contract` | `/v1/evm/holders` | -| `/tokens/evm/:contract` | `/v1/evm/tokens` | -| `/transfers/evm` | `/v1/evm/transfers` | -| `/pools/evm` | `/v1/evm/pools` | -| `/swaps/evm` | `/v1/evm/swaps` | -| `/dexes/evm` | `/v1/evm/dexes` | -| `/ohlc/prices/evm/:contract` | _(removed)_ | -| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | -| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | -| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | -| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | -| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | -| `/nft/activities/evm` | `/v1/evm/nft/transfers` | -| `/nft/sales/evm` | `/v1/evm/nft/sales` | - -**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. - -**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. - ---- - -#### 2.2 New EVM native balances endpoint - -Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. - -Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. - ---- - -#### 2.3 SVM Endpoints - -Consolidated under `/v1/svm/*` - -| Old Endpoint | New Endpoint | -| ------------------------ | ------------------------- | -| `/balances/svm` | `/v1/svm/balances` | -| `/balances/native/svm` | `/v1/svm/balances/native` | -| `/holders/svm/:contract` | `/v1/svm/holders` | -| `/tokens/svm/:mint` | `/v1/svm/tokens` | -| `/transfers/svm` | `/v1/svm/transfers` | -| `/pools/svm` | `/v1/svm/pools` | -| `/swaps/svm` | `/v1/svm/swaps` | -| `/dexes/svm` | `/v1/svm/dexes` | -| `/owner/svm/:account` | `/v1/svm/owner` | -| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | - -## 📝 Parameter Changes - -### 3. **Path Parameters → Query Parameters** - -All path parameters have been moved to query parameters. - -**Before:** - -```bash -GET /balances/evm/:address -GET /holders/evm/:contract -GET /nft/items/evm/contract/:contract/token_id/:token_id -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0x... -GET /v1/evm/holders?network=mainnet&contract=0x... -GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 -``` - -### 4. **Standardized Parameter Naming** - -All query parameters have been standardized to use snake_case naming convention. - -| Old Parameter | New Parameter | Notes | -| --- | --- | --- | -| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | -| `anyAddress` | `address` | Matches either `from` or `to` address | -| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | -| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | -| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | -| `endTime` | `end_time` | Default: `9999999999` | -| - | `start_block` | New parameter, default: `0` | -| - | `end_block` | New parameter, default: `9999999999` | -| - | `include_null_balances` | New parameter, default: `false` | -| `tx_hash` | `transaction_id` | - | -| `token` | `input_token`, `output_token` | More explicit for pool queries | -| `pool` | `amm_pool` | - | -| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | - -**Important:** The `network_id` parameter has been renamed to `network`. - -**Important:** `matic` network has been renamed to `polygon`. - -### 5. **Batched Parameters** - -Many parameters now support batching - accepting single values or comma-separated strings. - -**Supported Batched Parameters:** - -- `address`, `from_address`, `to_address` -- `contract`, `token_id` -- `factory`, `pool` -- `owner`, `token_account`, `mint` -- `transaction_id`, `signature` - -**Examples:** - -```console -# Single value -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 - -# Comma-separated, single parameter -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 - -# Repeated parameter values -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -### 6. **New Parameters** - -#### `include_null_balances` - -Added to balance endpoints to optionally include zero/null balances. - -```bash -?include_null_balances=true -``` - -**Default:** `false` - -## 🔄 Response Changes - -### 7. **Pagination Changes** - -Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. - -**Before:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2, - "next_page": 3, - "total_pages": 10 - }, - "total_results": 1234 -} -``` - -**After:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2 - } -} -``` - -**Removed fields:** - -- `next_page` -- `total_pages` -- `total_results` - -**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. - -### 8. **Removed Parameters** - -The following deprecated parameters have been removed: - -- `orderBy` - Results are now ordered by timestamp/block by default -- `orderDirection` - Always descending (newest first) - -## 📚 Example Migrations - -### Old vs New: Get Token Balances - -**Before:** - -```bash -GET /balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -### New Feature: Batched Queries - -Query balances for multiple contracts in a single request: - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -## ⚠️ Important Notes - -1. **Backward Compatibility:** The old endpoints are deprecated and will be removed in the future. Migrate by **Oct 30, 2025**. - -2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. - -3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. - -4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/ko/index.json b/website/src/pages/ko/index.json index a28226c30dd8..848621e5f458 100644 --- a/website/src/pages/ko/index.json +++ b/website/src/pages/ko/index.json @@ -2,7 +2,7 @@ "title": "Home", "hero": { "title": "The Graph Docs", - "description": "The Graph is a blockchain data solution that powers applications, analytics, and AI on 90+ chains. The Graph's core products include the Token API for web3 apps, Subgraphs for indexing smart contracts, and Substreams for real-time and historical data streaming.", + "description": "The Graph is a blockchain data solution that powers applications, analytics, and AI on 80+ chains. The Graph's core products include the Token API for web3 apps, Subgraphs for indexing smart contracts, and Substreams for real-time and historical data streaming.", "cta1": "How The Graph works", "cta2": "Build your first subgraph" }, diff --git a/website/src/pages/ko/subgraphs/guides/_meta.js b/website/src/pages/ko/subgraphs/guides/_meta.js index fd5608dcceb2..1c081848ea08 100644 --- a/website/src/pages/ko/subgraphs/guides/_meta.js +++ b/website/src/pages/ko/subgraphs/guides/_meta.js @@ -2,7 +2,6 @@ export default { 'subgraph-composition': '', 'subgraph-debug-forking': '', near: '', - grafting: '', 'subgraph-uncrashable': '', 'transfer-to-the-graph': '', diff --git a/website/src/pages/ko/token-api/_meta.js b/website/src/pages/ko/token-api/_meta.js index a8624da52e7f..9588f70cec53 100644 --- a/website/src/pages/ko/token-api/_meta.js +++ b/website/src/pages/ko/token-api/_meta.js @@ -11,6 +11,6 @@ export default { 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', 'endpoint-pricing': '', + guides: titles['guides'] ?? '', faq: '', - 'upgrade-to-v1': '', } diff --git a/website/src/pages/ko/token-api/guides/_meta-titles.json b/website/src/pages/ko/token-api/guides/_meta-titles.json new file mode 100644 index 000000000000..cd93dcc0fc0b --- /dev/null +++ b/website/src/pages/ko/token-api/guides/_meta-titles.json @@ -0,0 +1,4 @@ +{ + "gpt": "Create Custom GPTS", + "upgrade-to-v1": "" +} diff --git a/website/src/pages/ko/token-api/guides/_meta.js b/website/src/pages/ko/token-api/guides/_meta.js new file mode 100644 index 000000000000..e5aaaadd78f2 --- /dev/null +++ b/website/src/pages/ko/token-api/guides/_meta.js @@ -0,0 +1,4 @@ +export default { + gpt: '', + 'upgrade-to-v1': '', +} diff --git a/website/src/pages/ko/token-api/guides/gpt.mdx b/website/src/pages/ko/token-api/guides/gpt.mdx new file mode 100644 index 000000000000..564d013dea20 --- /dev/null +++ b/website/src/pages/ko/token-api/guides/gpt.mdx @@ -0,0 +1,121 @@ +--- +title: How the Token API Powers Custom GPTs +sidebarTitle: Create Custom GPTs +--- + +## Overview + +The Token API is a pre-indexed blockchain data service that provides real-time access to token balances, metadata, prices, liquidity, and volume across multiple chains. Developers use its REST endpoints to build wallets, trading dashboards, DeFi analytics, and AI systems without maintaining their own indexing stack. Custom GPTs can connect directly to the Token API's OpenAPI schema. + +The Token API enables developers to build **Custom GPTs** to reason over live blockchain data inside ChatGPT that can reason over and respond with live blockchain data directly inside ChatGPT. + +## What the Token API Enables in Custom GPTs + +When a Custom GPT is wired to the Token API, it gains access to a machine-readable schema and authenticated endpoints. Developers can use this to: + +- **Query real-time onchain data**: Balances, token prices, liquidity, and transaction history. +- **Automate domain-specific tasks**: Portfolio tracking, accounting, reconciliation, and market analysis. +- **Power AI agents with verifiable blockchain context**: Use the same data sources dapps rely on. + +Because the Token API provides a machine-readable schema and authenticated requests, it serves as a structured data layer that enables GPT-5 agents to combine natural language reasoning with live onchain data from The Graph. + +## When to Use the Token API for Custom GPTs + +Use the Token API when your GPT needs repeatable, domain-specific behavior grounded in blockchain data. This is most effective when the GPT performs the same type of task frequently or enforces a workflow you define. For one-off or exploratory questions, standard ChatGPT prompts are sufficient. + +## Choosing a Use Case + +Start with a clear, narrow objective, then expand as needed. Common patterns include: + +- **Accounting GPT**: Onchain accounting, tax tagging, and portfolio reconciliation. +- **Trading GPT**: Liquidity, pricing, and volume analysis for trading strategies. +- **Protocol Tracking GPT**: Real-time monitoring of transaction activity and liquidity pools. + +A focused initial goal such as “Retrieve token balances and prices for a wallet” makes it easier to configure reliable behavior before adding complex workflows. + +## Requirements + +| Requirement | Description | +| ---------------------- | -------------------------------------------------------- | +| ChatGPT 5 | Custom GPT creation requires GPT-5 tier or Pro. | +| Token API Subscription | Sign up at [The Graph Market](https://thegraph.market./) | +| Token API Key | Available in your dashboard as the Authentication JWT. | + +## Setting Up a Custom GPT + +Below is an explanatory outline of what happens during setup. This section provides conceptual understanding. + +### Create Custom GPT + +1. Visit chat.openai.com/gpts in your browser. 2, Click Create (top right). +2. Under Configure (in the top left panel), set up your GPT's personality and scope. + +### Configure Your GPT + +You define the GPT's role, scope, and metadata so it knows what it is designed to do. This includes: + +- **Name and Description**: Helps users discover your GPT. + - For example: **Name**: Token Tracker GPT **Description**: An onchain analytics assistant that retrieves live token balances, prices, and liquidity data using The Graph's Token API. +- **Instructions**: Tells the GPT what tasks it should perform using the Token API. + - For example: You are a blockchain data assistant retrieving onchain token data from The Graph's Token API. Use endpoints to fetch balances, liquidity, and price history across EVM chains. Present results in tables with token symbols, prices, and USD values. +- **Knowledge**: Optional context files such as wallet references, accounting rules, or code snippets. +- **New Action**: At the bottom, click “Create new action” to connect your GPT to the Token API. + +### Connect the Token API + +To enable live blockchain queries inside ChatGPT, you connect the GPT to the Token API through: + +#### Authentication + +1. Set Authentication to API Key → Bearer. +2. Open [The Graph Market](https://thegraph.market./) and copy your Authentication JWT from your dashboard. +3. Paste the token into the ChatGPT prompt where the field shows [HIDDEN]. + +#### Schema + +1. Above the Schema box, click Import from URL. +2. Paste: https://token-api.thegraph.com/openapi +3. Click Import. You'll now see endpoints like: + - `getV1EvmTokens` + - `getV1EvmDexes` + - `getV1EvmBalances` +4. Click Test on one (for example `getV1EvmDexes`) to verify connection. + +##### Privacy + +1. At the bottom, under Privacy, paste: https://pinax.network/en/legal/privacy + +### Privacy + +You can attach a privacy policy URL such as: https://pinax.network/en/legal/privacy + +## Example Prompt Patterns + +These examples help illustrate how a GPT reasons over Token API data. + +### Wallet and Portfolio + +Get the total USD balance for a wallet across multiple chains, returning token name, symbol, balance, and price. + +### Trading Analysis + +Compare USDC and DAI liquidity across Uniswap and Curve. Return the top 5 pools by TVL. + +### Accounting + +List all ERC-20 transfers for this address in the last 30 days. Group by token and total incoming/outgoing volume. + +## Best Practices + +| Tip | Why It Matters | +| --------------------------------- | ---------------------------------------------------------------------- | +| Scope your GPT narrowly first | Simplifies debugging and validates schema integration. | +| Use clear role instructions | Helps the GPT choose the right endpoints and avoid assumptions. | +| Name endpoints explicitly | Improves routing accuracy when fetching balances, prices, or DEX data. | +| Combine with code | Enables custom parsing or logic for complex workflows. | +| Add Subgraph or Substream context | Provides richer analytics when combined with Token API data. | + +## FAQs & Resources + +- Builders Office Hours (October 23, 2025) +- Watch the full session: https://x.com/i/broadcasts/1mrGmBzBarNJy diff --git a/website/src/pages/ko/token-api/guides/upgrade-to-v1.mdx b/website/src/pages/ko/token-api/guides/upgrade-to-v1.mdx new file mode 100644 index 000000000000..e2a7ccf973fa --- /dev/null +++ b/website/src/pages/ko/token-api/guides/upgrade-to-v1.mdx @@ -0,0 +1,346 @@ +--- +title: Upgrade to v1 +--- + +This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. + +**Note** + +- `EVM` = Ethereum Virtual Machine + +Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). + +- `SVM` = Solana Virtual Machine + +Used to describe endpoints supporting Solana (currently the only SVM chain supported). + +## 🔑 Breaking Changes Summary + +### 1. API Versioning + +All endpoints now use the `/v1` prefix. + +**Before:** + +``` +GET /balances/evm +GET /nft/items/contract/:contract/token_id/:token_id +``` + +**After:** + +``` +GET /v1/evm/balances +GET /v1/evm/nft/items +``` + +### 2. Route Structure Reorganization + +#### 2.1 EVM Endpoints + +Consolidated under `/v1/evm/*` + +| Old Endpoint | New Endpoint | +| ------------------------------------------------------ | ----------------------------- | +| `/balances/evm` | `/v1/evm/balances` | +| `/historical/balances/evm` | `/v1/evm/balances/historical` | +| `/holders/evm/:contract` | `/v1/evm/holders` | +| `/tokens/evm/:contract` | `/v1/evm/tokens` | +| `/transfers/evm` | `/v1/evm/transfers` | +| `/pools/evm` | `/v1/evm/pools` | +| `/swaps/evm` | `/v1/evm/swaps` | +| `/dexes/evm` | `/v1/evm/dexes` | +| `/ohlc/prices/evm/:contract` | _(removed)_ | +| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | +| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | +| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | +| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | +| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | +| `/nft/activities/evm` | `/v1/evm/nft/transfers` | +| `/nft/sales/evm` | `/v1/evm/nft/sales` | + +**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. + +**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. + +--- + +#### 2.2 New EVM native balances endpoint + +Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. + +Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. + +--- + +#### 2.3 SVM Endpoints + +Consolidated under `/v1/svm/*` + +| Old Endpoint | New Endpoint | +| ------------------------ | ------------------------- | +| `/balances/svm` | `/v1/svm/balances` | +| `/balances/native/svm` | `/v1/svm/balances/native` | +| `/holders/svm/:contract` | `/v1/svm/holders` | +| `/tokens/svm/:mint` | `/v1/svm/tokens` | +| `/transfers/svm` | `/v1/svm/transfers` | +| `/pools/svm` | `/v1/svm/pools` | +| `/swaps/svm` | `/v1/svm/swaps` | +| `/dexes/svm` | `/v1/svm/dexes` | +| `/owner/svm/:account` | `/v1/svm/owner` | +| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | + +## 📝 Parameter Changes + +### 3. Path Parameters → Query Parameters + +All path parameters have been moved to query parameters. + +**Before:** + +```bash +GET /balances/evm/:address +GET /holders/evm/:contract +GET /nft/items/evm/contract/:contract/token_id/:token_id +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0x... +GET /v1/evm/holders?network=mainnet&contract=0x... +GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 +``` + +### 4. Standardized Parameter Naming + +All query parameters have been standardized to use snake_case naming convention. + +| Old Parameter | New Parameter | Notes | +| --- | --- | --- | +| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | +| `anyAddress` | `address` | Matches either `from` or `to` address | +| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | +| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | +| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | +| `endTime` | `end_time` | Default: `9999999999` | +| - | `start_block` | New parameter, default: `0` | +| - | `end_block` | New parameter, default: `9999999999` | +| - | `include_null_balances` | New parameter, default: `false` | +| `tx_hash` | `transaction_id` | - | +| `token` | `input_token`, `output_token` | More explicit for pool queries | +| `pool` | `amm_pool` | - | +| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | + +**Important:** The `network_id` parameter has been renamed to `network`. + +**Important:** `matic` network has been renamed to `polygon`. + +### 5. Batched Parameters + +Many parameters now support batching - accepting single values or comma-separated strings. + +**Supported Batched Parameters:** + +- `address`, `from_address`, `to_address` +- `contract`, `token_id` +- `factory`, `pool` +- `owner`, `token_account`, `mint` +- `transaction_id`, `signature` + +**Examples:** + +```console +## Single value +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 + +## Comma-separated, single parameter +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 + +## Repeated parameter values +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +### 6. New Parameters + +#### `include_null_balances` + +Added to balance endpoints to optionally include zero/null balances. + +```bash +?include_null_balances=true +``` + +**Default:** `false` + +## 🔄 Response Changes + +### 7. Pagination Changes + +Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. + +**Before:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2, + "next_page": 3, + "total_pages": 10 + }, + "total_results": 1234 +} +``` + +**After:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2 + } +} +``` + +**Removed fields:** + +- `next_page` +- `total_pages` +- `total_results` + +**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. + +### 8. Removed Parameters + +The following deprecated parameters have been removed: + +- `orderBy` - Results are now ordered by timestamp/block by default +- `orderDirection` - Always descending (newest first) + +### 9. Cached Queries + +Queries are now cached on the ClickHouse side for better performance. + +You can specifically request to not use the cache by setting the `Cache-Control` header to `no-cache`. + +#### Example + +**Cache** + +```console +$ curl -s 'https://token-api.thegraph.com/v1/...' | jq .statistics +{ + "bytes_read": 221, + "rows_read": 1, + "elapsed": 0.002212065 +} +``` + +**No cache** + +```console +$ curl -s 'http://localhost:8000/v1/...' --header 'Cache-Control: no-cache' | jq .statistics +{ + "bytes_read": 14621174348, + "rows_read": 223244390, + "elapsed": 0.971064066 +} +``` + +## 📚 Example Migrations + +### Example 1: Get Token Balances + +**Before:** + +```bash +GET /token/balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +### Example 2: Get NFT Items + +**Before:** + +```bash +GET /nft/items/evm/contract/0xbd3531da5cf5857e7cfaa92426877b022e612cf8/token_id/5712?network_id=mainnet +``` + +**After:** + +```bash +GET /v1/evm/nft/items?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&token_id=5712 +``` + +### Example 3: Get Token Transfers with Time Filter + +**Before:** + +```bash +GET /token/transfers/evm?network_id=mainnet&from=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&startTime=1735689600&endTime=1767225600 +``` + +**After:** + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&start_time=1735689600&end_time=1767225600 +``` + +### Example 4: Get NFT Transfer Activities + +**Before:** + +```bash +GET /nft/activities/evm?network_id=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&anyAddress=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +**After:** + +```bash +GET /v1/evm/nft/transfers?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +### Example 5: Get Pool OHLC Data + +**Before:** + +```bash +GET /token/ohlc/pools/evm/0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640?network_id=mainnet&interval=1h&startTime=1735689600 +``` + +**After:** + +```bash +GET /v1/evm/pools/ohlc?network=mainnet&pool=0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640&interval=1h&start_time=1735689600 +``` + +### Example 6: Batched Query (New Feature) + +Query balances for multiple contracts in a single request: + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +Query transfers from multiple addresses: + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xabc...,0xdef...,0x123...&start_time=1735689600 +``` + +## ⚠️ Important Notes + +1. **Migration Notes:** The old endpoints were deprecated and removed on **October 30, 2025**. Please ensure all integrations have been migrated to the new Token API v1 endpoints. + +2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. + +3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. + +4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/ko/token-api/upgrade-to-v1.mdx b/website/src/pages/ko/token-api/upgrade-to-v1.mdx deleted file mode 100644 index fbe09101eaa5..000000000000 --- a/website/src/pages/ko/token-api/upgrade-to-v1.mdx +++ /dev/null @@ -1,254 +0,0 @@ ---- -title: Upgrade to v1 ---- - -This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. - -**Note** - -- `EVM` = Ethereum Virtual Machine - -Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). - -- `SVM` = Solana Virtual Machine - -Used to describe endpoints supporting Solana (currently the only SVM chain supported). - -## 🔑 Breaking Changes Summary - -### 1. **API Versioning** - -All endpoints now use the `/v1` prefix. - -**Before:** - -``` -GET /balances/evm -GET /nft/items/contract/:contract/token_id/:token_id -``` - -**After:** - -``` -GET /v1/evm/balances -GET /v1/evm/nft/items -``` - -### 2. **Route Structure Reorganization** - -#### 2.1 EVM Endpoints - -Consolidated under `/v1/evm/*` - -| Old Endpoint | New Endpoint | -| ------------------------------------------------------ | ----------------------------- | -| `/balances/evm` | `/v1/evm/balances` | -| `/historical/balances/evm` | `/v1/evm/balances/historical` | -| `/holders/evm/:contract` | `/v1/evm/holders` | -| `/tokens/evm/:contract` | `/v1/evm/tokens` | -| `/transfers/evm` | `/v1/evm/transfers` | -| `/pools/evm` | `/v1/evm/pools` | -| `/swaps/evm` | `/v1/evm/swaps` | -| `/dexes/evm` | `/v1/evm/dexes` | -| `/ohlc/prices/evm/:contract` | _(removed)_ | -| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | -| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | -| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | -| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | -| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | -| `/nft/activities/evm` | `/v1/evm/nft/transfers` | -| `/nft/sales/evm` | `/v1/evm/nft/sales` | - -**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. - -**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. - ---- - -#### 2.2 New EVM native balances endpoint - -Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. - -Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. - ---- - -#### 2.3 SVM Endpoints - -Consolidated under `/v1/svm/*` - -| Old Endpoint | New Endpoint | -| ------------------------ | ------------------------- | -| `/balances/svm` | `/v1/svm/balances` | -| `/balances/native/svm` | `/v1/svm/balances/native` | -| `/holders/svm/:contract` | `/v1/svm/holders` | -| `/tokens/svm/:mint` | `/v1/svm/tokens` | -| `/transfers/svm` | `/v1/svm/transfers` | -| `/pools/svm` | `/v1/svm/pools` | -| `/swaps/svm` | `/v1/svm/swaps` | -| `/dexes/svm` | `/v1/svm/dexes` | -| `/owner/svm/:account` | `/v1/svm/owner` | -| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | - -## 📝 Parameter Changes - -### 3. **Path Parameters → Query Parameters** - -All path parameters have been moved to query parameters. - -**Before:** - -```bash -GET /balances/evm/:address -GET /holders/evm/:contract -GET /nft/items/evm/contract/:contract/token_id/:token_id -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0x... -GET /v1/evm/holders?network=mainnet&contract=0x... -GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 -``` - -### 4. **Standardized Parameter Naming** - -All query parameters have been standardized to use snake_case naming convention. - -| Old Parameter | New Parameter | Notes | -| --- | --- | --- | -| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | -| `anyAddress` | `address` | Matches either `from` or `to` address | -| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | -| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | -| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | -| `endTime` | `end_time` | Default: `9999999999` | -| - | `start_block` | New parameter, default: `0` | -| - | `end_block` | New parameter, default: `9999999999` | -| - | `include_null_balances` | New parameter, default: `false` | -| `tx_hash` | `transaction_id` | - | -| `token` | `input_token`, `output_token` | More explicit for pool queries | -| `pool` | `amm_pool` | - | -| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | - -**Important:** The `network_id` parameter has been renamed to `network`. - -**Important:** `matic` network has been renamed to `polygon`. - -### 5. **Batched Parameters** - -Many parameters now support batching - accepting single values or comma-separated strings. - -**Supported Batched Parameters:** - -- `address`, `from_address`, `to_address` -- `contract`, `token_id` -- `factory`, `pool` -- `owner`, `token_account`, `mint` -- `transaction_id`, `signature` - -**Examples:** - -```console -# Single value -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 - -# Comma-separated, single parameter -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 - -# Repeated parameter values -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -### 6. **New Parameters** - -#### `include_null_balances` - -Added to balance endpoints to optionally include zero/null balances. - -```bash -?include_null_balances=true -``` - -**Default:** `false` - -## 🔄 Response Changes - -### 7. **Pagination Changes** - -Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. - -**Before:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2, - "next_page": 3, - "total_pages": 10 - }, - "total_results": 1234 -} -``` - -**After:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2 - } -} -``` - -**Removed fields:** - -- `next_page` -- `total_pages` -- `total_results` - -**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. - -### 8. **Removed Parameters** - -The following deprecated parameters have been removed: - -- `orderBy` - Results are now ordered by timestamp/block by default -- `orderDirection` - Always descending (newest first) - -## 📚 Example Migrations - -### Old vs New: Get Token Balances - -**Before:** - -```bash -GET /balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -### New Feature: Batched Queries - -Query balances for multiple contracts in a single request: - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -## ⚠️ Important Notes - -1. **Backward Compatibility:** The old endpoints are deprecated and will be removed in the future. Migrate by **Oct 30, 2025**. - -2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. - -3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. - -4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/mr/index.json b/website/src/pages/mr/index.json index cd04d0600104..8a65bbfd9055 100644 --- a/website/src/pages/mr/index.json +++ b/website/src/pages/mr/index.json @@ -2,7 +2,7 @@ "title": "Home", "hero": { "title": "The Graph Docs", - "description": "The Graph is a blockchain data solution that powers applications, analytics, and AI on 90+ chains. The Graph's core products include the Token API for web3 apps, Subgraphs for indexing smart contracts, and Substreams for real-time and historical data streaming.", + "description": "The Graph is a blockchain data solution that powers applications, analytics, and AI on 80+ chains. The Graph's core products include the Token API for web3 apps, Subgraphs for indexing smart contracts, and Substreams for real-time and historical data streaming.", "cta1": "How The Graph works", "cta2": "Build your first subgraph" }, diff --git a/website/src/pages/mr/subgraphs/guides/_meta.js b/website/src/pages/mr/subgraphs/guides/_meta.js index fd5608dcceb2..1c081848ea08 100644 --- a/website/src/pages/mr/subgraphs/guides/_meta.js +++ b/website/src/pages/mr/subgraphs/guides/_meta.js @@ -2,7 +2,6 @@ export default { 'subgraph-composition': '', 'subgraph-debug-forking': '', near: '', - grafting: '', 'subgraph-uncrashable': '', 'transfer-to-the-graph': '', diff --git a/website/src/pages/mr/token-api/_meta.js b/website/src/pages/mr/token-api/_meta.js index a8624da52e7f..9588f70cec53 100644 --- a/website/src/pages/mr/token-api/_meta.js +++ b/website/src/pages/mr/token-api/_meta.js @@ -11,6 +11,6 @@ export default { 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', 'endpoint-pricing': '', + guides: titles['guides'] ?? '', faq: '', - 'upgrade-to-v1': '', } diff --git a/website/src/pages/mr/token-api/guides/_meta-titles.json b/website/src/pages/mr/token-api/guides/_meta-titles.json new file mode 100644 index 000000000000..cd93dcc0fc0b --- /dev/null +++ b/website/src/pages/mr/token-api/guides/_meta-titles.json @@ -0,0 +1,4 @@ +{ + "gpt": "Create Custom GPTS", + "upgrade-to-v1": "" +} diff --git a/website/src/pages/mr/token-api/guides/_meta.js b/website/src/pages/mr/token-api/guides/_meta.js new file mode 100644 index 000000000000..e5aaaadd78f2 --- /dev/null +++ b/website/src/pages/mr/token-api/guides/_meta.js @@ -0,0 +1,4 @@ +export default { + gpt: '', + 'upgrade-to-v1': '', +} diff --git a/website/src/pages/mr/token-api/guides/gpt.mdx b/website/src/pages/mr/token-api/guides/gpt.mdx new file mode 100644 index 000000000000..564d013dea20 --- /dev/null +++ b/website/src/pages/mr/token-api/guides/gpt.mdx @@ -0,0 +1,121 @@ +--- +title: How the Token API Powers Custom GPTs +sidebarTitle: Create Custom GPTs +--- + +## Overview + +The Token API is a pre-indexed blockchain data service that provides real-time access to token balances, metadata, prices, liquidity, and volume across multiple chains. Developers use its REST endpoints to build wallets, trading dashboards, DeFi analytics, and AI systems without maintaining their own indexing stack. Custom GPTs can connect directly to the Token API's OpenAPI schema. + +The Token API enables developers to build **Custom GPTs** to reason over live blockchain data inside ChatGPT that can reason over and respond with live blockchain data directly inside ChatGPT. + +## What the Token API Enables in Custom GPTs + +When a Custom GPT is wired to the Token API, it gains access to a machine-readable schema and authenticated endpoints. Developers can use this to: + +- **Query real-time onchain data**: Balances, token prices, liquidity, and transaction history. +- **Automate domain-specific tasks**: Portfolio tracking, accounting, reconciliation, and market analysis. +- **Power AI agents with verifiable blockchain context**: Use the same data sources dapps rely on. + +Because the Token API provides a machine-readable schema and authenticated requests, it serves as a structured data layer that enables GPT-5 agents to combine natural language reasoning with live onchain data from The Graph. + +## When to Use the Token API for Custom GPTs + +Use the Token API when your GPT needs repeatable, domain-specific behavior grounded in blockchain data. This is most effective when the GPT performs the same type of task frequently or enforces a workflow you define. For one-off or exploratory questions, standard ChatGPT prompts are sufficient. + +## Choosing a Use Case + +Start with a clear, narrow objective, then expand as needed. Common patterns include: + +- **Accounting GPT**: Onchain accounting, tax tagging, and portfolio reconciliation. +- **Trading GPT**: Liquidity, pricing, and volume analysis for trading strategies. +- **Protocol Tracking GPT**: Real-time monitoring of transaction activity and liquidity pools. + +A focused initial goal such as “Retrieve token balances and prices for a wallet” makes it easier to configure reliable behavior before adding complex workflows. + +## Requirements + +| Requirement | Description | +| ---------------------- | -------------------------------------------------------- | +| ChatGPT 5 | Custom GPT creation requires GPT-5 tier or Pro. | +| Token API Subscription | Sign up at [The Graph Market](https://thegraph.market./) | +| Token API Key | Available in your dashboard as the Authentication JWT. | + +## Setting Up a Custom GPT + +Below is an explanatory outline of what happens during setup. This section provides conceptual understanding. + +### Create Custom GPT + +1. Visit chat.openai.com/gpts in your browser. 2, Click Create (top right). +2. Under Configure (in the top left panel), set up your GPT's personality and scope. + +### Configure Your GPT + +You define the GPT's role, scope, and metadata so it knows what it is designed to do. This includes: + +- **Name and Description**: Helps users discover your GPT. + - For example: **Name**: Token Tracker GPT **Description**: An onchain analytics assistant that retrieves live token balances, prices, and liquidity data using The Graph's Token API. +- **Instructions**: Tells the GPT what tasks it should perform using the Token API. + - For example: You are a blockchain data assistant retrieving onchain token data from The Graph's Token API. Use endpoints to fetch balances, liquidity, and price history across EVM chains. Present results in tables with token symbols, prices, and USD values. +- **Knowledge**: Optional context files such as wallet references, accounting rules, or code snippets. +- **New Action**: At the bottom, click “Create new action” to connect your GPT to the Token API. + +### Connect the Token API + +To enable live blockchain queries inside ChatGPT, you connect the GPT to the Token API through: + +#### Authentication + +1. Set Authentication to API Key → Bearer. +2. Open [The Graph Market](https://thegraph.market./) and copy your Authentication JWT from your dashboard. +3. Paste the token into the ChatGPT prompt where the field shows [HIDDEN]. + +#### Schema + +1. Above the Schema box, click Import from URL. +2. Paste: https://token-api.thegraph.com/openapi +3. Click Import. You'll now see endpoints like: + - `getV1EvmTokens` + - `getV1EvmDexes` + - `getV1EvmBalances` +4. Click Test on one (for example `getV1EvmDexes`) to verify connection. + +##### Privacy + +1. At the bottom, under Privacy, paste: https://pinax.network/en/legal/privacy + +### Privacy + +You can attach a privacy policy URL such as: https://pinax.network/en/legal/privacy + +## Example Prompt Patterns + +These examples help illustrate how a GPT reasons over Token API data. + +### Wallet and Portfolio + +Get the total USD balance for a wallet across multiple chains, returning token name, symbol, balance, and price. + +### Trading Analysis + +Compare USDC and DAI liquidity across Uniswap and Curve. Return the top 5 pools by TVL. + +### Accounting + +List all ERC-20 transfers for this address in the last 30 days. Group by token and total incoming/outgoing volume. + +## Best Practices + +| Tip | Why It Matters | +| --------------------------------- | ---------------------------------------------------------------------- | +| Scope your GPT narrowly first | Simplifies debugging and validates schema integration. | +| Use clear role instructions | Helps the GPT choose the right endpoints and avoid assumptions. | +| Name endpoints explicitly | Improves routing accuracy when fetching balances, prices, or DEX data. | +| Combine with code | Enables custom parsing or logic for complex workflows. | +| Add Subgraph or Substream context | Provides richer analytics when combined with Token API data. | + +## FAQs & Resources + +- Builders Office Hours (October 23, 2025) +- Watch the full session: https://x.com/i/broadcasts/1mrGmBzBarNJy diff --git a/website/src/pages/mr/token-api/guides/upgrade-to-v1.mdx b/website/src/pages/mr/token-api/guides/upgrade-to-v1.mdx new file mode 100644 index 000000000000..e2a7ccf973fa --- /dev/null +++ b/website/src/pages/mr/token-api/guides/upgrade-to-v1.mdx @@ -0,0 +1,346 @@ +--- +title: Upgrade to v1 +--- + +This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. + +**Note** + +- `EVM` = Ethereum Virtual Machine + +Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). + +- `SVM` = Solana Virtual Machine + +Used to describe endpoints supporting Solana (currently the only SVM chain supported). + +## 🔑 Breaking Changes Summary + +### 1. API Versioning + +All endpoints now use the `/v1` prefix. + +**Before:** + +``` +GET /balances/evm +GET /nft/items/contract/:contract/token_id/:token_id +``` + +**After:** + +``` +GET /v1/evm/balances +GET /v1/evm/nft/items +``` + +### 2. Route Structure Reorganization + +#### 2.1 EVM Endpoints + +Consolidated under `/v1/evm/*` + +| Old Endpoint | New Endpoint | +| ------------------------------------------------------ | ----------------------------- | +| `/balances/evm` | `/v1/evm/balances` | +| `/historical/balances/evm` | `/v1/evm/balances/historical` | +| `/holders/evm/:contract` | `/v1/evm/holders` | +| `/tokens/evm/:contract` | `/v1/evm/tokens` | +| `/transfers/evm` | `/v1/evm/transfers` | +| `/pools/evm` | `/v1/evm/pools` | +| `/swaps/evm` | `/v1/evm/swaps` | +| `/dexes/evm` | `/v1/evm/dexes` | +| `/ohlc/prices/evm/:contract` | _(removed)_ | +| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | +| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | +| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | +| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | +| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | +| `/nft/activities/evm` | `/v1/evm/nft/transfers` | +| `/nft/sales/evm` | `/v1/evm/nft/sales` | + +**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. + +**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. + +--- + +#### 2.2 New EVM native balances endpoint + +Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. + +Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. + +--- + +#### 2.3 SVM Endpoints + +Consolidated under `/v1/svm/*` + +| Old Endpoint | New Endpoint | +| ------------------------ | ------------------------- | +| `/balances/svm` | `/v1/svm/balances` | +| `/balances/native/svm` | `/v1/svm/balances/native` | +| `/holders/svm/:contract` | `/v1/svm/holders` | +| `/tokens/svm/:mint` | `/v1/svm/tokens` | +| `/transfers/svm` | `/v1/svm/transfers` | +| `/pools/svm` | `/v1/svm/pools` | +| `/swaps/svm` | `/v1/svm/swaps` | +| `/dexes/svm` | `/v1/svm/dexes` | +| `/owner/svm/:account` | `/v1/svm/owner` | +| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | + +## 📝 Parameter Changes + +### 3. Path Parameters → Query Parameters + +All path parameters have been moved to query parameters. + +**Before:** + +```bash +GET /balances/evm/:address +GET /holders/evm/:contract +GET /nft/items/evm/contract/:contract/token_id/:token_id +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0x... +GET /v1/evm/holders?network=mainnet&contract=0x... +GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 +``` + +### 4. Standardized Parameter Naming + +All query parameters have been standardized to use snake_case naming convention. + +| Old Parameter | New Parameter | Notes | +| --- | --- | --- | +| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | +| `anyAddress` | `address` | Matches either `from` or `to` address | +| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | +| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | +| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | +| `endTime` | `end_time` | Default: `9999999999` | +| - | `start_block` | New parameter, default: `0` | +| - | `end_block` | New parameter, default: `9999999999` | +| - | `include_null_balances` | New parameter, default: `false` | +| `tx_hash` | `transaction_id` | - | +| `token` | `input_token`, `output_token` | More explicit for pool queries | +| `pool` | `amm_pool` | - | +| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | + +**Important:** The `network_id` parameter has been renamed to `network`. + +**Important:** `matic` network has been renamed to `polygon`. + +### 5. Batched Parameters + +Many parameters now support batching - accepting single values or comma-separated strings. + +**Supported Batched Parameters:** + +- `address`, `from_address`, `to_address` +- `contract`, `token_id` +- `factory`, `pool` +- `owner`, `token_account`, `mint` +- `transaction_id`, `signature` + +**Examples:** + +```console +## Single value +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 + +## Comma-separated, single parameter +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 + +## Repeated parameter values +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +### 6. New Parameters + +#### `include_null_balances` + +Added to balance endpoints to optionally include zero/null balances. + +```bash +?include_null_balances=true +``` + +**Default:** `false` + +## 🔄 Response Changes + +### 7. Pagination Changes + +Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. + +**Before:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2, + "next_page": 3, + "total_pages": 10 + }, + "total_results": 1234 +} +``` + +**After:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2 + } +} +``` + +**Removed fields:** + +- `next_page` +- `total_pages` +- `total_results` + +**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. + +### 8. Removed Parameters + +The following deprecated parameters have been removed: + +- `orderBy` - Results are now ordered by timestamp/block by default +- `orderDirection` - Always descending (newest first) + +### 9. Cached Queries + +Queries are now cached on the ClickHouse side for better performance. + +You can specifically request to not use the cache by setting the `Cache-Control` header to `no-cache`. + +#### Example + +**Cache** + +```console +$ curl -s 'https://token-api.thegraph.com/v1/...' | jq .statistics +{ + "bytes_read": 221, + "rows_read": 1, + "elapsed": 0.002212065 +} +``` + +**No cache** + +```console +$ curl -s 'http://localhost:8000/v1/...' --header 'Cache-Control: no-cache' | jq .statistics +{ + "bytes_read": 14621174348, + "rows_read": 223244390, + "elapsed": 0.971064066 +} +``` + +## 📚 Example Migrations + +### Example 1: Get Token Balances + +**Before:** + +```bash +GET /token/balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +### Example 2: Get NFT Items + +**Before:** + +```bash +GET /nft/items/evm/contract/0xbd3531da5cf5857e7cfaa92426877b022e612cf8/token_id/5712?network_id=mainnet +``` + +**After:** + +```bash +GET /v1/evm/nft/items?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&token_id=5712 +``` + +### Example 3: Get Token Transfers with Time Filter + +**Before:** + +```bash +GET /token/transfers/evm?network_id=mainnet&from=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&startTime=1735689600&endTime=1767225600 +``` + +**After:** + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&start_time=1735689600&end_time=1767225600 +``` + +### Example 4: Get NFT Transfer Activities + +**Before:** + +```bash +GET /nft/activities/evm?network_id=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&anyAddress=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +**After:** + +```bash +GET /v1/evm/nft/transfers?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +### Example 5: Get Pool OHLC Data + +**Before:** + +```bash +GET /token/ohlc/pools/evm/0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640?network_id=mainnet&interval=1h&startTime=1735689600 +``` + +**After:** + +```bash +GET /v1/evm/pools/ohlc?network=mainnet&pool=0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640&interval=1h&start_time=1735689600 +``` + +### Example 6: Batched Query (New Feature) + +Query balances for multiple contracts in a single request: + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +Query transfers from multiple addresses: + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xabc...,0xdef...,0x123...&start_time=1735689600 +``` + +## ⚠️ Important Notes + +1. **Migration Notes:** The old endpoints were deprecated and removed on **October 30, 2025**. Please ensure all integrations have been migrated to the new Token API v1 endpoints. + +2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. + +3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. + +4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/mr/token-api/upgrade-to-v1.mdx b/website/src/pages/mr/token-api/upgrade-to-v1.mdx deleted file mode 100644 index fbe09101eaa5..000000000000 --- a/website/src/pages/mr/token-api/upgrade-to-v1.mdx +++ /dev/null @@ -1,254 +0,0 @@ ---- -title: Upgrade to v1 ---- - -This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. - -**Note** - -- `EVM` = Ethereum Virtual Machine - -Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). - -- `SVM` = Solana Virtual Machine - -Used to describe endpoints supporting Solana (currently the only SVM chain supported). - -## 🔑 Breaking Changes Summary - -### 1. **API Versioning** - -All endpoints now use the `/v1` prefix. - -**Before:** - -``` -GET /balances/evm -GET /nft/items/contract/:contract/token_id/:token_id -``` - -**After:** - -``` -GET /v1/evm/balances -GET /v1/evm/nft/items -``` - -### 2. **Route Structure Reorganization** - -#### 2.1 EVM Endpoints - -Consolidated under `/v1/evm/*` - -| Old Endpoint | New Endpoint | -| ------------------------------------------------------ | ----------------------------- | -| `/balances/evm` | `/v1/evm/balances` | -| `/historical/balances/evm` | `/v1/evm/balances/historical` | -| `/holders/evm/:contract` | `/v1/evm/holders` | -| `/tokens/evm/:contract` | `/v1/evm/tokens` | -| `/transfers/evm` | `/v1/evm/transfers` | -| `/pools/evm` | `/v1/evm/pools` | -| `/swaps/evm` | `/v1/evm/swaps` | -| `/dexes/evm` | `/v1/evm/dexes` | -| `/ohlc/prices/evm/:contract` | _(removed)_ | -| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | -| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | -| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | -| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | -| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | -| `/nft/activities/evm` | `/v1/evm/nft/transfers` | -| `/nft/sales/evm` | `/v1/evm/nft/sales` | - -**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. - -**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. - ---- - -#### 2.2 New EVM native balances endpoint - -Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. - -Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. - ---- - -#### 2.3 SVM Endpoints - -Consolidated under `/v1/svm/*` - -| Old Endpoint | New Endpoint | -| ------------------------ | ------------------------- | -| `/balances/svm` | `/v1/svm/balances` | -| `/balances/native/svm` | `/v1/svm/balances/native` | -| `/holders/svm/:contract` | `/v1/svm/holders` | -| `/tokens/svm/:mint` | `/v1/svm/tokens` | -| `/transfers/svm` | `/v1/svm/transfers` | -| `/pools/svm` | `/v1/svm/pools` | -| `/swaps/svm` | `/v1/svm/swaps` | -| `/dexes/svm` | `/v1/svm/dexes` | -| `/owner/svm/:account` | `/v1/svm/owner` | -| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | - -## 📝 Parameter Changes - -### 3. **Path Parameters → Query Parameters** - -All path parameters have been moved to query parameters. - -**Before:** - -```bash -GET /balances/evm/:address -GET /holders/evm/:contract -GET /nft/items/evm/contract/:contract/token_id/:token_id -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0x... -GET /v1/evm/holders?network=mainnet&contract=0x... -GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 -``` - -### 4. **Standardized Parameter Naming** - -All query parameters have been standardized to use snake_case naming convention. - -| Old Parameter | New Parameter | Notes | -| --- | --- | --- | -| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | -| `anyAddress` | `address` | Matches either `from` or `to` address | -| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | -| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | -| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | -| `endTime` | `end_time` | Default: `9999999999` | -| - | `start_block` | New parameter, default: `0` | -| - | `end_block` | New parameter, default: `9999999999` | -| - | `include_null_balances` | New parameter, default: `false` | -| `tx_hash` | `transaction_id` | - | -| `token` | `input_token`, `output_token` | More explicit for pool queries | -| `pool` | `amm_pool` | - | -| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | - -**Important:** The `network_id` parameter has been renamed to `network`. - -**Important:** `matic` network has been renamed to `polygon`. - -### 5. **Batched Parameters** - -Many parameters now support batching - accepting single values or comma-separated strings. - -**Supported Batched Parameters:** - -- `address`, `from_address`, `to_address` -- `contract`, `token_id` -- `factory`, `pool` -- `owner`, `token_account`, `mint` -- `transaction_id`, `signature` - -**Examples:** - -```console -# Single value -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 - -# Comma-separated, single parameter -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 - -# Repeated parameter values -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -### 6. **New Parameters** - -#### `include_null_balances` - -Added to balance endpoints to optionally include zero/null balances. - -```bash -?include_null_balances=true -``` - -**Default:** `false` - -## 🔄 Response Changes - -### 7. **Pagination Changes** - -Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. - -**Before:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2, - "next_page": 3, - "total_pages": 10 - }, - "total_results": 1234 -} -``` - -**After:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2 - } -} -``` - -**Removed fields:** - -- `next_page` -- `total_pages` -- `total_results` - -**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. - -### 8. **Removed Parameters** - -The following deprecated parameters have been removed: - -- `orderBy` - Results are now ordered by timestamp/block by default -- `orderDirection` - Always descending (newest first) - -## 📚 Example Migrations - -### Old vs New: Get Token Balances - -**Before:** - -```bash -GET /balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -### New Feature: Batched Queries - -Query balances for multiple contracts in a single request: - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -## ⚠️ Important Notes - -1. **Backward Compatibility:** The old endpoints are deprecated and will be removed in the future. Migrate by **Oct 30, 2025**. - -2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. - -3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. - -4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/nl/index.json b/website/src/pages/nl/index.json index d71381808fc7..eb19ff0514db 100644 --- a/website/src/pages/nl/index.json +++ b/website/src/pages/nl/index.json @@ -2,7 +2,7 @@ "title": "Start", "hero": { "title": "The Graph Docs", - "description": "The Graph is a blockchain data solution that powers applications, analytics, and AI on 90+ chains. The Graph's core products include the Token API for web3 apps, Subgraphs for indexing smart contracts, and Substreams for real-time and historical data streaming.", + "description": "The Graph is a blockchain data solution that powers applications, analytics, and AI on 80+ chains. The Graph's core products include the Token API for web3 apps, Subgraphs for indexing smart contracts, and Substreams for real-time and historical data streaming.", "cta1": "How The Graph works", "cta2": "Build your first subgraph" }, diff --git a/website/src/pages/nl/subgraphs/guides/_meta.js b/website/src/pages/nl/subgraphs/guides/_meta.js index fd5608dcceb2..1c081848ea08 100644 --- a/website/src/pages/nl/subgraphs/guides/_meta.js +++ b/website/src/pages/nl/subgraphs/guides/_meta.js @@ -2,7 +2,6 @@ export default { 'subgraph-composition': '', 'subgraph-debug-forking': '', near: '', - grafting: '', 'subgraph-uncrashable': '', 'transfer-to-the-graph': '', diff --git a/website/src/pages/nl/token-api/_meta.js b/website/src/pages/nl/token-api/_meta.js index a8624da52e7f..9588f70cec53 100644 --- a/website/src/pages/nl/token-api/_meta.js +++ b/website/src/pages/nl/token-api/_meta.js @@ -11,6 +11,6 @@ export default { 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', 'endpoint-pricing': '', + guides: titles['guides'] ?? '', faq: '', - 'upgrade-to-v1': '', } diff --git a/website/src/pages/nl/token-api/guides/_meta-titles.json b/website/src/pages/nl/token-api/guides/_meta-titles.json new file mode 100644 index 000000000000..cd93dcc0fc0b --- /dev/null +++ b/website/src/pages/nl/token-api/guides/_meta-titles.json @@ -0,0 +1,4 @@ +{ + "gpt": "Create Custom GPTS", + "upgrade-to-v1": "" +} diff --git a/website/src/pages/nl/token-api/guides/_meta.js b/website/src/pages/nl/token-api/guides/_meta.js new file mode 100644 index 000000000000..e5aaaadd78f2 --- /dev/null +++ b/website/src/pages/nl/token-api/guides/_meta.js @@ -0,0 +1,4 @@ +export default { + gpt: '', + 'upgrade-to-v1': '', +} diff --git a/website/src/pages/nl/token-api/guides/gpt.mdx b/website/src/pages/nl/token-api/guides/gpt.mdx new file mode 100644 index 000000000000..564d013dea20 --- /dev/null +++ b/website/src/pages/nl/token-api/guides/gpt.mdx @@ -0,0 +1,121 @@ +--- +title: How the Token API Powers Custom GPTs +sidebarTitle: Create Custom GPTs +--- + +## Overview + +The Token API is a pre-indexed blockchain data service that provides real-time access to token balances, metadata, prices, liquidity, and volume across multiple chains. Developers use its REST endpoints to build wallets, trading dashboards, DeFi analytics, and AI systems without maintaining their own indexing stack. Custom GPTs can connect directly to the Token API's OpenAPI schema. + +The Token API enables developers to build **Custom GPTs** to reason over live blockchain data inside ChatGPT that can reason over and respond with live blockchain data directly inside ChatGPT. + +## What the Token API Enables in Custom GPTs + +When a Custom GPT is wired to the Token API, it gains access to a machine-readable schema and authenticated endpoints. Developers can use this to: + +- **Query real-time onchain data**: Balances, token prices, liquidity, and transaction history. +- **Automate domain-specific tasks**: Portfolio tracking, accounting, reconciliation, and market analysis. +- **Power AI agents with verifiable blockchain context**: Use the same data sources dapps rely on. + +Because the Token API provides a machine-readable schema and authenticated requests, it serves as a structured data layer that enables GPT-5 agents to combine natural language reasoning with live onchain data from The Graph. + +## When to Use the Token API for Custom GPTs + +Use the Token API when your GPT needs repeatable, domain-specific behavior grounded in blockchain data. This is most effective when the GPT performs the same type of task frequently or enforces a workflow you define. For one-off or exploratory questions, standard ChatGPT prompts are sufficient. + +## Choosing a Use Case + +Start with a clear, narrow objective, then expand as needed. Common patterns include: + +- **Accounting GPT**: Onchain accounting, tax tagging, and portfolio reconciliation. +- **Trading GPT**: Liquidity, pricing, and volume analysis for trading strategies. +- **Protocol Tracking GPT**: Real-time monitoring of transaction activity and liquidity pools. + +A focused initial goal such as “Retrieve token balances and prices for a wallet” makes it easier to configure reliable behavior before adding complex workflows. + +## Requirements + +| Requirement | Description | +| ---------------------- | -------------------------------------------------------- | +| ChatGPT 5 | Custom GPT creation requires GPT-5 tier or Pro. | +| Token API Subscription | Sign up at [The Graph Market](https://thegraph.market./) | +| Token API Key | Available in your dashboard as the Authentication JWT. | + +## Setting Up a Custom GPT + +Below is an explanatory outline of what happens during setup. This section provides conceptual understanding. + +### Create Custom GPT + +1. Visit chat.openai.com/gpts in your browser. 2, Click Create (top right). +2. Under Configure (in the top left panel), set up your GPT's personality and scope. + +### Configure Your GPT + +You define the GPT's role, scope, and metadata so it knows what it is designed to do. This includes: + +- **Name and Description**: Helps users discover your GPT. + - For example: **Name**: Token Tracker GPT **Description**: An onchain analytics assistant that retrieves live token balances, prices, and liquidity data using The Graph's Token API. +- **Instructions**: Tells the GPT what tasks it should perform using the Token API. + - For example: You are a blockchain data assistant retrieving onchain token data from The Graph's Token API. Use endpoints to fetch balances, liquidity, and price history across EVM chains. Present results in tables with token symbols, prices, and USD values. +- **Knowledge**: Optional context files such as wallet references, accounting rules, or code snippets. +- **New Action**: At the bottom, click “Create new action” to connect your GPT to the Token API. + +### Connect the Token API + +To enable live blockchain queries inside ChatGPT, you connect the GPT to the Token API through: + +#### Authentication + +1. Set Authentication to API Key → Bearer. +2. Open [The Graph Market](https://thegraph.market./) and copy your Authentication JWT from your dashboard. +3. Paste the token into the ChatGPT prompt where the field shows [HIDDEN]. + +#### Schema + +1. Above the Schema box, click Import from URL. +2. Paste: https://token-api.thegraph.com/openapi +3. Click Import. You'll now see endpoints like: + - `getV1EvmTokens` + - `getV1EvmDexes` + - `getV1EvmBalances` +4. Click Test on one (for example `getV1EvmDexes`) to verify connection. + +##### Privacy + +1. At the bottom, under Privacy, paste: https://pinax.network/en/legal/privacy + +### Privacy + +You can attach a privacy policy URL such as: https://pinax.network/en/legal/privacy + +## Example Prompt Patterns + +These examples help illustrate how a GPT reasons over Token API data. + +### Wallet and Portfolio + +Get the total USD balance for a wallet across multiple chains, returning token name, symbol, balance, and price. + +### Trading Analysis + +Compare USDC and DAI liquidity across Uniswap and Curve. Return the top 5 pools by TVL. + +### Accounting + +List all ERC-20 transfers for this address in the last 30 days. Group by token and total incoming/outgoing volume. + +## Best Practices + +| Tip | Why It Matters | +| --------------------------------- | ---------------------------------------------------------------------- | +| Scope your GPT narrowly first | Simplifies debugging and validates schema integration. | +| Use clear role instructions | Helps the GPT choose the right endpoints and avoid assumptions. | +| Name endpoints explicitly | Improves routing accuracy when fetching balances, prices, or DEX data. | +| Combine with code | Enables custom parsing or logic for complex workflows. | +| Add Subgraph or Substream context | Provides richer analytics when combined with Token API data. | + +## FAQs & Resources + +- Builders Office Hours (October 23, 2025) +- Watch the full session: https://x.com/i/broadcasts/1mrGmBzBarNJy diff --git a/website/src/pages/nl/token-api/guides/upgrade-to-v1.mdx b/website/src/pages/nl/token-api/guides/upgrade-to-v1.mdx new file mode 100644 index 000000000000..e2a7ccf973fa --- /dev/null +++ b/website/src/pages/nl/token-api/guides/upgrade-to-v1.mdx @@ -0,0 +1,346 @@ +--- +title: Upgrade to v1 +--- + +This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. + +**Note** + +- `EVM` = Ethereum Virtual Machine + +Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). + +- `SVM` = Solana Virtual Machine + +Used to describe endpoints supporting Solana (currently the only SVM chain supported). + +## 🔑 Breaking Changes Summary + +### 1. API Versioning + +All endpoints now use the `/v1` prefix. + +**Before:** + +``` +GET /balances/evm +GET /nft/items/contract/:contract/token_id/:token_id +``` + +**After:** + +``` +GET /v1/evm/balances +GET /v1/evm/nft/items +``` + +### 2. Route Structure Reorganization + +#### 2.1 EVM Endpoints + +Consolidated under `/v1/evm/*` + +| Old Endpoint | New Endpoint | +| ------------------------------------------------------ | ----------------------------- | +| `/balances/evm` | `/v1/evm/balances` | +| `/historical/balances/evm` | `/v1/evm/balances/historical` | +| `/holders/evm/:contract` | `/v1/evm/holders` | +| `/tokens/evm/:contract` | `/v1/evm/tokens` | +| `/transfers/evm` | `/v1/evm/transfers` | +| `/pools/evm` | `/v1/evm/pools` | +| `/swaps/evm` | `/v1/evm/swaps` | +| `/dexes/evm` | `/v1/evm/dexes` | +| `/ohlc/prices/evm/:contract` | _(removed)_ | +| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | +| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | +| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | +| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | +| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | +| `/nft/activities/evm` | `/v1/evm/nft/transfers` | +| `/nft/sales/evm` | `/v1/evm/nft/sales` | + +**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. + +**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. + +--- + +#### 2.2 New EVM native balances endpoint + +Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. + +Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. + +--- + +#### 2.3 SVM Endpoints + +Consolidated under `/v1/svm/*` + +| Old Endpoint | New Endpoint | +| ------------------------ | ------------------------- | +| `/balances/svm` | `/v1/svm/balances` | +| `/balances/native/svm` | `/v1/svm/balances/native` | +| `/holders/svm/:contract` | `/v1/svm/holders` | +| `/tokens/svm/:mint` | `/v1/svm/tokens` | +| `/transfers/svm` | `/v1/svm/transfers` | +| `/pools/svm` | `/v1/svm/pools` | +| `/swaps/svm` | `/v1/svm/swaps` | +| `/dexes/svm` | `/v1/svm/dexes` | +| `/owner/svm/:account` | `/v1/svm/owner` | +| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | + +## 📝 Parameter Changes + +### 3. Path Parameters → Query Parameters + +All path parameters have been moved to query parameters. + +**Before:** + +```bash +GET /balances/evm/:address +GET /holders/evm/:contract +GET /nft/items/evm/contract/:contract/token_id/:token_id +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0x... +GET /v1/evm/holders?network=mainnet&contract=0x... +GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 +``` + +### 4. Standardized Parameter Naming + +All query parameters have been standardized to use snake_case naming convention. + +| Old Parameter | New Parameter | Notes | +| --- | --- | --- | +| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | +| `anyAddress` | `address` | Matches either `from` or `to` address | +| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | +| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | +| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | +| `endTime` | `end_time` | Default: `9999999999` | +| - | `start_block` | New parameter, default: `0` | +| - | `end_block` | New parameter, default: `9999999999` | +| - | `include_null_balances` | New parameter, default: `false` | +| `tx_hash` | `transaction_id` | - | +| `token` | `input_token`, `output_token` | More explicit for pool queries | +| `pool` | `amm_pool` | - | +| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | + +**Important:** The `network_id` parameter has been renamed to `network`. + +**Important:** `matic` network has been renamed to `polygon`. + +### 5. Batched Parameters + +Many parameters now support batching - accepting single values or comma-separated strings. + +**Supported Batched Parameters:** + +- `address`, `from_address`, `to_address` +- `contract`, `token_id` +- `factory`, `pool` +- `owner`, `token_account`, `mint` +- `transaction_id`, `signature` + +**Examples:** + +```console +## Single value +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 + +## Comma-separated, single parameter +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 + +## Repeated parameter values +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +### 6. New Parameters + +#### `include_null_balances` + +Added to balance endpoints to optionally include zero/null balances. + +```bash +?include_null_balances=true +``` + +**Default:** `false` + +## 🔄 Response Changes + +### 7. Pagination Changes + +Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. + +**Before:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2, + "next_page": 3, + "total_pages": 10 + }, + "total_results": 1234 +} +``` + +**After:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2 + } +} +``` + +**Removed fields:** + +- `next_page` +- `total_pages` +- `total_results` + +**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. + +### 8. Removed Parameters + +The following deprecated parameters have been removed: + +- `orderBy` - Results are now ordered by timestamp/block by default +- `orderDirection` - Always descending (newest first) + +### 9. Cached Queries + +Queries are now cached on the ClickHouse side for better performance. + +You can specifically request to not use the cache by setting the `Cache-Control` header to `no-cache`. + +#### Example + +**Cache** + +```console +$ curl -s 'https://token-api.thegraph.com/v1/...' | jq .statistics +{ + "bytes_read": 221, + "rows_read": 1, + "elapsed": 0.002212065 +} +``` + +**No cache** + +```console +$ curl -s 'http://localhost:8000/v1/...' --header 'Cache-Control: no-cache' | jq .statistics +{ + "bytes_read": 14621174348, + "rows_read": 223244390, + "elapsed": 0.971064066 +} +``` + +## 📚 Example Migrations + +### Example 1: Get Token Balances + +**Before:** + +```bash +GET /token/balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +### Example 2: Get NFT Items + +**Before:** + +```bash +GET /nft/items/evm/contract/0xbd3531da5cf5857e7cfaa92426877b022e612cf8/token_id/5712?network_id=mainnet +``` + +**After:** + +```bash +GET /v1/evm/nft/items?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&token_id=5712 +``` + +### Example 3: Get Token Transfers with Time Filter + +**Before:** + +```bash +GET /token/transfers/evm?network_id=mainnet&from=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&startTime=1735689600&endTime=1767225600 +``` + +**After:** + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&start_time=1735689600&end_time=1767225600 +``` + +### Example 4: Get NFT Transfer Activities + +**Before:** + +```bash +GET /nft/activities/evm?network_id=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&anyAddress=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +**After:** + +```bash +GET /v1/evm/nft/transfers?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +### Example 5: Get Pool OHLC Data + +**Before:** + +```bash +GET /token/ohlc/pools/evm/0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640?network_id=mainnet&interval=1h&startTime=1735689600 +``` + +**After:** + +```bash +GET /v1/evm/pools/ohlc?network=mainnet&pool=0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640&interval=1h&start_time=1735689600 +``` + +### Example 6: Batched Query (New Feature) + +Query balances for multiple contracts in a single request: + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +Query transfers from multiple addresses: + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xabc...,0xdef...,0x123...&start_time=1735689600 +``` + +## ⚠️ Important Notes + +1. **Migration Notes:** The old endpoints were deprecated and removed on **October 30, 2025**. Please ensure all integrations have been migrated to the new Token API v1 endpoints. + +2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. + +3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. + +4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/nl/token-api/upgrade-to-v1.mdx b/website/src/pages/nl/token-api/upgrade-to-v1.mdx deleted file mode 100644 index fbe09101eaa5..000000000000 --- a/website/src/pages/nl/token-api/upgrade-to-v1.mdx +++ /dev/null @@ -1,254 +0,0 @@ ---- -title: Upgrade to v1 ---- - -This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. - -**Note** - -- `EVM` = Ethereum Virtual Machine - -Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). - -- `SVM` = Solana Virtual Machine - -Used to describe endpoints supporting Solana (currently the only SVM chain supported). - -## 🔑 Breaking Changes Summary - -### 1. **API Versioning** - -All endpoints now use the `/v1` prefix. - -**Before:** - -``` -GET /balances/evm -GET /nft/items/contract/:contract/token_id/:token_id -``` - -**After:** - -``` -GET /v1/evm/balances -GET /v1/evm/nft/items -``` - -### 2. **Route Structure Reorganization** - -#### 2.1 EVM Endpoints - -Consolidated under `/v1/evm/*` - -| Old Endpoint | New Endpoint | -| ------------------------------------------------------ | ----------------------------- | -| `/balances/evm` | `/v1/evm/balances` | -| `/historical/balances/evm` | `/v1/evm/balances/historical` | -| `/holders/evm/:contract` | `/v1/evm/holders` | -| `/tokens/evm/:contract` | `/v1/evm/tokens` | -| `/transfers/evm` | `/v1/evm/transfers` | -| `/pools/evm` | `/v1/evm/pools` | -| `/swaps/evm` | `/v1/evm/swaps` | -| `/dexes/evm` | `/v1/evm/dexes` | -| `/ohlc/prices/evm/:contract` | _(removed)_ | -| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | -| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | -| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | -| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | -| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | -| `/nft/activities/evm` | `/v1/evm/nft/transfers` | -| `/nft/sales/evm` | `/v1/evm/nft/sales` | - -**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. - -**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. - ---- - -#### 2.2 New EVM native balances endpoint - -Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. - -Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. - ---- - -#### 2.3 SVM Endpoints - -Consolidated under `/v1/svm/*` - -| Old Endpoint | New Endpoint | -| ------------------------ | ------------------------- | -| `/balances/svm` | `/v1/svm/balances` | -| `/balances/native/svm` | `/v1/svm/balances/native` | -| `/holders/svm/:contract` | `/v1/svm/holders` | -| `/tokens/svm/:mint` | `/v1/svm/tokens` | -| `/transfers/svm` | `/v1/svm/transfers` | -| `/pools/svm` | `/v1/svm/pools` | -| `/swaps/svm` | `/v1/svm/swaps` | -| `/dexes/svm` | `/v1/svm/dexes` | -| `/owner/svm/:account` | `/v1/svm/owner` | -| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | - -## 📝 Parameter Changes - -### 3. **Path Parameters → Query Parameters** - -All path parameters have been moved to query parameters. - -**Before:** - -```bash -GET /balances/evm/:address -GET /holders/evm/:contract -GET /nft/items/evm/contract/:contract/token_id/:token_id -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0x... -GET /v1/evm/holders?network=mainnet&contract=0x... -GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 -``` - -### 4. **Standardized Parameter Naming** - -All query parameters have been standardized to use snake_case naming convention. - -| Old Parameter | New Parameter | Notes | -| --- | --- | --- | -| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | -| `anyAddress` | `address` | Matches either `from` or `to` address | -| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | -| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | -| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | -| `endTime` | `end_time` | Default: `9999999999` | -| - | `start_block` | New parameter, default: `0` | -| - | `end_block` | New parameter, default: `9999999999` | -| - | `include_null_balances` | New parameter, default: `false` | -| `tx_hash` | `transaction_id` | - | -| `token` | `input_token`, `output_token` | More explicit for pool queries | -| `pool` | `amm_pool` | - | -| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | - -**Important:** The `network_id` parameter has been renamed to `network`. - -**Important:** `matic` network has been renamed to `polygon`. - -### 5. **Batched Parameters** - -Many parameters now support batching - accepting single values or comma-separated strings. - -**Supported Batched Parameters:** - -- `address`, `from_address`, `to_address` -- `contract`, `token_id` -- `factory`, `pool` -- `owner`, `token_account`, `mint` -- `transaction_id`, `signature` - -**Examples:** - -```console -# Single value -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 - -# Comma-separated, single parameter -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 - -# Repeated parameter values -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -### 6. **New Parameters** - -#### `include_null_balances` - -Added to balance endpoints to optionally include zero/null balances. - -```bash -?include_null_balances=true -``` - -**Default:** `false` - -## 🔄 Response Changes - -### 7. **Pagination Changes** - -Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. - -**Before:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2, - "next_page": 3, - "total_pages": 10 - }, - "total_results": 1234 -} -``` - -**After:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2 - } -} -``` - -**Removed fields:** - -- `next_page` -- `total_pages` -- `total_results` - -**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. - -### 8. **Removed Parameters** - -The following deprecated parameters have been removed: - -- `orderBy` - Results are now ordered by timestamp/block by default -- `orderDirection` - Always descending (newest first) - -## 📚 Example Migrations - -### Old vs New: Get Token Balances - -**Before:** - -```bash -GET /balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -### New Feature: Batched Queries - -Query balances for multiple contracts in a single request: - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -## ⚠️ Important Notes - -1. **Backward Compatibility:** The old endpoints are deprecated and will be removed in the future. Migrate by **Oct 30, 2025**. - -2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. - -3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. - -4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/pl/index.json b/website/src/pages/pl/index.json index dcbd562d0a1a..679bb1dacfd5 100644 --- a/website/src/pages/pl/index.json +++ b/website/src/pages/pl/index.json @@ -2,7 +2,7 @@ "title": "Home", "hero": { "title": "The Graph Docs", - "description": "The Graph is a blockchain data solution that powers applications, analytics, and AI on 90+ chains. The Graph's core products include the Token API for web3 apps, Subgraphs for indexing smart contracts, and Substreams for real-time and historical data streaming.", + "description": "The Graph is a blockchain data solution that powers applications, analytics, and AI on 80+ chains. The Graph's core products include the Token API for web3 apps, Subgraphs for indexing smart contracts, and Substreams for real-time and historical data streaming.", "cta1": "How The Graph works", "cta2": "Build your first subgraph" }, diff --git a/website/src/pages/pl/subgraphs/guides/_meta.js b/website/src/pages/pl/subgraphs/guides/_meta.js index fd5608dcceb2..1c081848ea08 100644 --- a/website/src/pages/pl/subgraphs/guides/_meta.js +++ b/website/src/pages/pl/subgraphs/guides/_meta.js @@ -2,7 +2,6 @@ export default { 'subgraph-composition': '', 'subgraph-debug-forking': '', near: '', - grafting: '', 'subgraph-uncrashable': '', 'transfer-to-the-graph': '', diff --git a/website/src/pages/pl/token-api/_meta.js b/website/src/pages/pl/token-api/_meta.js index a8624da52e7f..9588f70cec53 100644 --- a/website/src/pages/pl/token-api/_meta.js +++ b/website/src/pages/pl/token-api/_meta.js @@ -11,6 +11,6 @@ export default { 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', 'endpoint-pricing': '', + guides: titles['guides'] ?? '', faq: '', - 'upgrade-to-v1': '', } diff --git a/website/src/pages/pl/token-api/guides/_meta-titles.json b/website/src/pages/pl/token-api/guides/_meta-titles.json new file mode 100644 index 000000000000..cd93dcc0fc0b --- /dev/null +++ b/website/src/pages/pl/token-api/guides/_meta-titles.json @@ -0,0 +1,4 @@ +{ + "gpt": "Create Custom GPTS", + "upgrade-to-v1": "" +} diff --git a/website/src/pages/pl/token-api/guides/_meta.js b/website/src/pages/pl/token-api/guides/_meta.js new file mode 100644 index 000000000000..e5aaaadd78f2 --- /dev/null +++ b/website/src/pages/pl/token-api/guides/_meta.js @@ -0,0 +1,4 @@ +export default { + gpt: '', + 'upgrade-to-v1': '', +} diff --git a/website/src/pages/pl/token-api/guides/gpt.mdx b/website/src/pages/pl/token-api/guides/gpt.mdx new file mode 100644 index 000000000000..564d013dea20 --- /dev/null +++ b/website/src/pages/pl/token-api/guides/gpt.mdx @@ -0,0 +1,121 @@ +--- +title: How the Token API Powers Custom GPTs +sidebarTitle: Create Custom GPTs +--- + +## Overview + +The Token API is a pre-indexed blockchain data service that provides real-time access to token balances, metadata, prices, liquidity, and volume across multiple chains. Developers use its REST endpoints to build wallets, trading dashboards, DeFi analytics, and AI systems without maintaining their own indexing stack. Custom GPTs can connect directly to the Token API's OpenAPI schema. + +The Token API enables developers to build **Custom GPTs** to reason over live blockchain data inside ChatGPT that can reason over and respond with live blockchain data directly inside ChatGPT. + +## What the Token API Enables in Custom GPTs + +When a Custom GPT is wired to the Token API, it gains access to a machine-readable schema and authenticated endpoints. Developers can use this to: + +- **Query real-time onchain data**: Balances, token prices, liquidity, and transaction history. +- **Automate domain-specific tasks**: Portfolio tracking, accounting, reconciliation, and market analysis. +- **Power AI agents with verifiable blockchain context**: Use the same data sources dapps rely on. + +Because the Token API provides a machine-readable schema and authenticated requests, it serves as a structured data layer that enables GPT-5 agents to combine natural language reasoning with live onchain data from The Graph. + +## When to Use the Token API for Custom GPTs + +Use the Token API when your GPT needs repeatable, domain-specific behavior grounded in blockchain data. This is most effective when the GPT performs the same type of task frequently or enforces a workflow you define. For one-off or exploratory questions, standard ChatGPT prompts are sufficient. + +## Choosing a Use Case + +Start with a clear, narrow objective, then expand as needed. Common patterns include: + +- **Accounting GPT**: Onchain accounting, tax tagging, and portfolio reconciliation. +- **Trading GPT**: Liquidity, pricing, and volume analysis for trading strategies. +- **Protocol Tracking GPT**: Real-time monitoring of transaction activity and liquidity pools. + +A focused initial goal such as “Retrieve token balances and prices for a wallet” makes it easier to configure reliable behavior before adding complex workflows. + +## Requirements + +| Requirement | Description | +| ---------------------- | -------------------------------------------------------- | +| ChatGPT 5 | Custom GPT creation requires GPT-5 tier or Pro. | +| Token API Subscription | Sign up at [The Graph Market](https://thegraph.market./) | +| Token API Key | Available in your dashboard as the Authentication JWT. | + +## Setting Up a Custom GPT + +Below is an explanatory outline of what happens during setup. This section provides conceptual understanding. + +### Create Custom GPT + +1. Visit chat.openai.com/gpts in your browser. 2, Click Create (top right). +2. Under Configure (in the top left panel), set up your GPT's personality and scope. + +### Configure Your GPT + +You define the GPT's role, scope, and metadata so it knows what it is designed to do. This includes: + +- **Name and Description**: Helps users discover your GPT. + - For example: **Name**: Token Tracker GPT **Description**: An onchain analytics assistant that retrieves live token balances, prices, and liquidity data using The Graph's Token API. +- **Instructions**: Tells the GPT what tasks it should perform using the Token API. + - For example: You are a blockchain data assistant retrieving onchain token data from The Graph's Token API. Use endpoints to fetch balances, liquidity, and price history across EVM chains. Present results in tables with token symbols, prices, and USD values. +- **Knowledge**: Optional context files such as wallet references, accounting rules, or code snippets. +- **New Action**: At the bottom, click “Create new action” to connect your GPT to the Token API. + +### Connect the Token API + +To enable live blockchain queries inside ChatGPT, you connect the GPT to the Token API through: + +#### Authentication + +1. Set Authentication to API Key → Bearer. +2. Open [The Graph Market](https://thegraph.market./) and copy your Authentication JWT from your dashboard. +3. Paste the token into the ChatGPT prompt where the field shows [HIDDEN]. + +#### Schema + +1. Above the Schema box, click Import from URL. +2. Paste: https://token-api.thegraph.com/openapi +3. Click Import. You'll now see endpoints like: + - `getV1EvmTokens` + - `getV1EvmDexes` + - `getV1EvmBalances` +4. Click Test on one (for example `getV1EvmDexes`) to verify connection. + +##### Privacy + +1. At the bottom, under Privacy, paste: https://pinax.network/en/legal/privacy + +### Privacy + +You can attach a privacy policy URL such as: https://pinax.network/en/legal/privacy + +## Example Prompt Patterns + +These examples help illustrate how a GPT reasons over Token API data. + +### Wallet and Portfolio + +Get the total USD balance for a wallet across multiple chains, returning token name, symbol, balance, and price. + +### Trading Analysis + +Compare USDC and DAI liquidity across Uniswap and Curve. Return the top 5 pools by TVL. + +### Accounting + +List all ERC-20 transfers for this address in the last 30 days. Group by token and total incoming/outgoing volume. + +## Best Practices + +| Tip | Why It Matters | +| --------------------------------- | ---------------------------------------------------------------------- | +| Scope your GPT narrowly first | Simplifies debugging and validates schema integration. | +| Use clear role instructions | Helps the GPT choose the right endpoints and avoid assumptions. | +| Name endpoints explicitly | Improves routing accuracy when fetching balances, prices, or DEX data. | +| Combine with code | Enables custom parsing or logic for complex workflows. | +| Add Subgraph or Substream context | Provides richer analytics when combined with Token API data. | + +## FAQs & Resources + +- Builders Office Hours (October 23, 2025) +- Watch the full session: https://x.com/i/broadcasts/1mrGmBzBarNJy diff --git a/website/src/pages/pl/token-api/guides/upgrade-to-v1.mdx b/website/src/pages/pl/token-api/guides/upgrade-to-v1.mdx new file mode 100644 index 000000000000..e2a7ccf973fa --- /dev/null +++ b/website/src/pages/pl/token-api/guides/upgrade-to-v1.mdx @@ -0,0 +1,346 @@ +--- +title: Upgrade to v1 +--- + +This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. + +**Note** + +- `EVM` = Ethereum Virtual Machine + +Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). + +- `SVM` = Solana Virtual Machine + +Used to describe endpoints supporting Solana (currently the only SVM chain supported). + +## 🔑 Breaking Changes Summary + +### 1. API Versioning + +All endpoints now use the `/v1` prefix. + +**Before:** + +``` +GET /balances/evm +GET /nft/items/contract/:contract/token_id/:token_id +``` + +**After:** + +``` +GET /v1/evm/balances +GET /v1/evm/nft/items +``` + +### 2. Route Structure Reorganization + +#### 2.1 EVM Endpoints + +Consolidated under `/v1/evm/*` + +| Old Endpoint | New Endpoint | +| ------------------------------------------------------ | ----------------------------- | +| `/balances/evm` | `/v1/evm/balances` | +| `/historical/balances/evm` | `/v1/evm/balances/historical` | +| `/holders/evm/:contract` | `/v1/evm/holders` | +| `/tokens/evm/:contract` | `/v1/evm/tokens` | +| `/transfers/evm` | `/v1/evm/transfers` | +| `/pools/evm` | `/v1/evm/pools` | +| `/swaps/evm` | `/v1/evm/swaps` | +| `/dexes/evm` | `/v1/evm/dexes` | +| `/ohlc/prices/evm/:contract` | _(removed)_ | +| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | +| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | +| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | +| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | +| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | +| `/nft/activities/evm` | `/v1/evm/nft/transfers` | +| `/nft/sales/evm` | `/v1/evm/nft/sales` | + +**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. + +**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. + +--- + +#### 2.2 New EVM native balances endpoint + +Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. + +Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. + +--- + +#### 2.3 SVM Endpoints + +Consolidated under `/v1/svm/*` + +| Old Endpoint | New Endpoint | +| ------------------------ | ------------------------- | +| `/balances/svm` | `/v1/svm/balances` | +| `/balances/native/svm` | `/v1/svm/balances/native` | +| `/holders/svm/:contract` | `/v1/svm/holders` | +| `/tokens/svm/:mint` | `/v1/svm/tokens` | +| `/transfers/svm` | `/v1/svm/transfers` | +| `/pools/svm` | `/v1/svm/pools` | +| `/swaps/svm` | `/v1/svm/swaps` | +| `/dexes/svm` | `/v1/svm/dexes` | +| `/owner/svm/:account` | `/v1/svm/owner` | +| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | + +## 📝 Parameter Changes + +### 3. Path Parameters → Query Parameters + +All path parameters have been moved to query parameters. + +**Before:** + +```bash +GET /balances/evm/:address +GET /holders/evm/:contract +GET /nft/items/evm/contract/:contract/token_id/:token_id +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0x... +GET /v1/evm/holders?network=mainnet&contract=0x... +GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 +``` + +### 4. Standardized Parameter Naming + +All query parameters have been standardized to use snake_case naming convention. + +| Old Parameter | New Parameter | Notes | +| --- | --- | --- | +| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | +| `anyAddress` | `address` | Matches either `from` or `to` address | +| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | +| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | +| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | +| `endTime` | `end_time` | Default: `9999999999` | +| - | `start_block` | New parameter, default: `0` | +| - | `end_block` | New parameter, default: `9999999999` | +| - | `include_null_balances` | New parameter, default: `false` | +| `tx_hash` | `transaction_id` | - | +| `token` | `input_token`, `output_token` | More explicit for pool queries | +| `pool` | `amm_pool` | - | +| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | + +**Important:** The `network_id` parameter has been renamed to `network`. + +**Important:** `matic` network has been renamed to `polygon`. + +### 5. Batched Parameters + +Many parameters now support batching - accepting single values or comma-separated strings. + +**Supported Batched Parameters:** + +- `address`, `from_address`, `to_address` +- `contract`, `token_id` +- `factory`, `pool` +- `owner`, `token_account`, `mint` +- `transaction_id`, `signature` + +**Examples:** + +```console +## Single value +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 + +## Comma-separated, single parameter +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 + +## Repeated parameter values +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +### 6. New Parameters + +#### `include_null_balances` + +Added to balance endpoints to optionally include zero/null balances. + +```bash +?include_null_balances=true +``` + +**Default:** `false` + +## 🔄 Response Changes + +### 7. Pagination Changes + +Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. + +**Before:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2, + "next_page": 3, + "total_pages": 10 + }, + "total_results": 1234 +} +``` + +**After:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2 + } +} +``` + +**Removed fields:** + +- `next_page` +- `total_pages` +- `total_results` + +**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. + +### 8. Removed Parameters + +The following deprecated parameters have been removed: + +- `orderBy` - Results are now ordered by timestamp/block by default +- `orderDirection` - Always descending (newest first) + +### 9. Cached Queries + +Queries are now cached on the ClickHouse side for better performance. + +You can specifically request to not use the cache by setting the `Cache-Control` header to `no-cache`. + +#### Example + +**Cache** + +```console +$ curl -s 'https://token-api.thegraph.com/v1/...' | jq .statistics +{ + "bytes_read": 221, + "rows_read": 1, + "elapsed": 0.002212065 +} +``` + +**No cache** + +```console +$ curl -s 'http://localhost:8000/v1/...' --header 'Cache-Control: no-cache' | jq .statistics +{ + "bytes_read": 14621174348, + "rows_read": 223244390, + "elapsed": 0.971064066 +} +``` + +## 📚 Example Migrations + +### Example 1: Get Token Balances + +**Before:** + +```bash +GET /token/balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +### Example 2: Get NFT Items + +**Before:** + +```bash +GET /nft/items/evm/contract/0xbd3531da5cf5857e7cfaa92426877b022e612cf8/token_id/5712?network_id=mainnet +``` + +**After:** + +```bash +GET /v1/evm/nft/items?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&token_id=5712 +``` + +### Example 3: Get Token Transfers with Time Filter + +**Before:** + +```bash +GET /token/transfers/evm?network_id=mainnet&from=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&startTime=1735689600&endTime=1767225600 +``` + +**After:** + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&start_time=1735689600&end_time=1767225600 +``` + +### Example 4: Get NFT Transfer Activities + +**Before:** + +```bash +GET /nft/activities/evm?network_id=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&anyAddress=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +**After:** + +```bash +GET /v1/evm/nft/transfers?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +### Example 5: Get Pool OHLC Data + +**Before:** + +```bash +GET /token/ohlc/pools/evm/0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640?network_id=mainnet&interval=1h&startTime=1735689600 +``` + +**After:** + +```bash +GET /v1/evm/pools/ohlc?network=mainnet&pool=0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640&interval=1h&start_time=1735689600 +``` + +### Example 6: Batched Query (New Feature) + +Query balances for multiple contracts in a single request: + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +Query transfers from multiple addresses: + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xabc...,0xdef...,0x123...&start_time=1735689600 +``` + +## ⚠️ Important Notes + +1. **Migration Notes:** The old endpoints were deprecated and removed on **October 30, 2025**. Please ensure all integrations have been migrated to the new Token API v1 endpoints. + +2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. + +3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. + +4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/pl/token-api/upgrade-to-v1.mdx b/website/src/pages/pl/token-api/upgrade-to-v1.mdx deleted file mode 100644 index fbe09101eaa5..000000000000 --- a/website/src/pages/pl/token-api/upgrade-to-v1.mdx +++ /dev/null @@ -1,254 +0,0 @@ ---- -title: Upgrade to v1 ---- - -This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. - -**Note** - -- `EVM` = Ethereum Virtual Machine - -Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). - -- `SVM` = Solana Virtual Machine - -Used to describe endpoints supporting Solana (currently the only SVM chain supported). - -## 🔑 Breaking Changes Summary - -### 1. **API Versioning** - -All endpoints now use the `/v1` prefix. - -**Before:** - -``` -GET /balances/evm -GET /nft/items/contract/:contract/token_id/:token_id -``` - -**After:** - -``` -GET /v1/evm/balances -GET /v1/evm/nft/items -``` - -### 2. **Route Structure Reorganization** - -#### 2.1 EVM Endpoints - -Consolidated under `/v1/evm/*` - -| Old Endpoint | New Endpoint | -| ------------------------------------------------------ | ----------------------------- | -| `/balances/evm` | `/v1/evm/balances` | -| `/historical/balances/evm` | `/v1/evm/balances/historical` | -| `/holders/evm/:contract` | `/v1/evm/holders` | -| `/tokens/evm/:contract` | `/v1/evm/tokens` | -| `/transfers/evm` | `/v1/evm/transfers` | -| `/pools/evm` | `/v1/evm/pools` | -| `/swaps/evm` | `/v1/evm/swaps` | -| `/dexes/evm` | `/v1/evm/dexes` | -| `/ohlc/prices/evm/:contract` | _(removed)_ | -| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | -| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | -| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | -| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | -| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | -| `/nft/activities/evm` | `/v1/evm/nft/transfers` | -| `/nft/sales/evm` | `/v1/evm/nft/sales` | - -**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. - -**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. - ---- - -#### 2.2 New EVM native balances endpoint - -Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. - -Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. - ---- - -#### 2.3 SVM Endpoints - -Consolidated under `/v1/svm/*` - -| Old Endpoint | New Endpoint | -| ------------------------ | ------------------------- | -| `/balances/svm` | `/v1/svm/balances` | -| `/balances/native/svm` | `/v1/svm/balances/native` | -| `/holders/svm/:contract` | `/v1/svm/holders` | -| `/tokens/svm/:mint` | `/v1/svm/tokens` | -| `/transfers/svm` | `/v1/svm/transfers` | -| `/pools/svm` | `/v1/svm/pools` | -| `/swaps/svm` | `/v1/svm/swaps` | -| `/dexes/svm` | `/v1/svm/dexes` | -| `/owner/svm/:account` | `/v1/svm/owner` | -| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | - -## 📝 Parameter Changes - -### 3. **Path Parameters → Query Parameters** - -All path parameters have been moved to query parameters. - -**Before:** - -```bash -GET /balances/evm/:address -GET /holders/evm/:contract -GET /nft/items/evm/contract/:contract/token_id/:token_id -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0x... -GET /v1/evm/holders?network=mainnet&contract=0x... -GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 -``` - -### 4. **Standardized Parameter Naming** - -All query parameters have been standardized to use snake_case naming convention. - -| Old Parameter | New Parameter | Notes | -| --- | --- | --- | -| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | -| `anyAddress` | `address` | Matches either `from` or `to` address | -| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | -| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | -| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | -| `endTime` | `end_time` | Default: `9999999999` | -| - | `start_block` | New parameter, default: `0` | -| - | `end_block` | New parameter, default: `9999999999` | -| - | `include_null_balances` | New parameter, default: `false` | -| `tx_hash` | `transaction_id` | - | -| `token` | `input_token`, `output_token` | More explicit for pool queries | -| `pool` | `amm_pool` | - | -| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | - -**Important:** The `network_id` parameter has been renamed to `network`. - -**Important:** `matic` network has been renamed to `polygon`. - -### 5. **Batched Parameters** - -Many parameters now support batching - accepting single values or comma-separated strings. - -**Supported Batched Parameters:** - -- `address`, `from_address`, `to_address` -- `contract`, `token_id` -- `factory`, `pool` -- `owner`, `token_account`, `mint` -- `transaction_id`, `signature` - -**Examples:** - -```console -# Single value -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 - -# Comma-separated, single parameter -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 - -# Repeated parameter values -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -### 6. **New Parameters** - -#### `include_null_balances` - -Added to balance endpoints to optionally include zero/null balances. - -```bash -?include_null_balances=true -``` - -**Default:** `false` - -## 🔄 Response Changes - -### 7. **Pagination Changes** - -Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. - -**Before:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2, - "next_page": 3, - "total_pages": 10 - }, - "total_results": 1234 -} -``` - -**After:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2 - } -} -``` - -**Removed fields:** - -- `next_page` -- `total_pages` -- `total_results` - -**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. - -### 8. **Removed Parameters** - -The following deprecated parameters have been removed: - -- `orderBy` - Results are now ordered by timestamp/block by default -- `orderDirection` - Always descending (newest first) - -## 📚 Example Migrations - -### Old vs New: Get Token Balances - -**Before:** - -```bash -GET /balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -### New Feature: Batched Queries - -Query balances for multiple contracts in a single request: - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -## ⚠️ Important Notes - -1. **Backward Compatibility:** The old endpoints are deprecated and will be removed in the future. Migrate by **Oct 30, 2025**. - -2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. - -3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. - -4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/pt/index.json b/website/src/pages/pt/index.json index c4b5c926f747..eb2c9ce7b524 100644 --- a/website/src/pages/pt/index.json +++ b/website/src/pages/pt/index.json @@ -2,7 +2,7 @@ "title": "Início", "hero": { "title": "Documentação do The Graph", - "description": "The Graph is a blockchain data solution that powers applications, analytics, and AI on 90+ chains. The Graph's core products include the Token API for web3 apps, Subgraphs for indexing smart contracts, and Substreams for real-time and historical data streaming.", + "description": "The Graph is a blockchain data solution that powers applications, analytics, and AI on 80+ chains. The Graph's core products include the Token API for web3 apps, Subgraphs for indexing smart contracts, and Substreams for real-time and historical data streaming.", "cta1": "Como o The Graph funciona", "cta2": "Construa o seu primeiro subgraph" }, diff --git a/website/src/pages/pt/subgraphs/guides/_meta.js b/website/src/pages/pt/subgraphs/guides/_meta.js index fd5608dcceb2..1c081848ea08 100644 --- a/website/src/pages/pt/subgraphs/guides/_meta.js +++ b/website/src/pages/pt/subgraphs/guides/_meta.js @@ -2,7 +2,6 @@ export default { 'subgraph-composition': '', 'subgraph-debug-forking': '', near: '', - grafting: '', 'subgraph-uncrashable': '', 'transfer-to-the-graph': '', diff --git a/website/src/pages/pt/token-api/_meta.js b/website/src/pages/pt/token-api/_meta.js index a8624da52e7f..9588f70cec53 100644 --- a/website/src/pages/pt/token-api/_meta.js +++ b/website/src/pages/pt/token-api/_meta.js @@ -11,6 +11,6 @@ export default { 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', 'endpoint-pricing': '', + guides: titles['guides'] ?? '', faq: '', - 'upgrade-to-v1': '', } diff --git a/website/src/pages/pt/token-api/guides/_meta-titles.json b/website/src/pages/pt/token-api/guides/_meta-titles.json new file mode 100644 index 000000000000..cd93dcc0fc0b --- /dev/null +++ b/website/src/pages/pt/token-api/guides/_meta-titles.json @@ -0,0 +1,4 @@ +{ + "gpt": "Create Custom GPTS", + "upgrade-to-v1": "" +} diff --git a/website/src/pages/pt/token-api/guides/_meta.js b/website/src/pages/pt/token-api/guides/_meta.js new file mode 100644 index 000000000000..e5aaaadd78f2 --- /dev/null +++ b/website/src/pages/pt/token-api/guides/_meta.js @@ -0,0 +1,4 @@ +export default { + gpt: '', + 'upgrade-to-v1': '', +} diff --git a/website/src/pages/pt/token-api/guides/gpt.mdx b/website/src/pages/pt/token-api/guides/gpt.mdx new file mode 100644 index 000000000000..564d013dea20 --- /dev/null +++ b/website/src/pages/pt/token-api/guides/gpt.mdx @@ -0,0 +1,121 @@ +--- +title: How the Token API Powers Custom GPTs +sidebarTitle: Create Custom GPTs +--- + +## Overview + +The Token API is a pre-indexed blockchain data service that provides real-time access to token balances, metadata, prices, liquidity, and volume across multiple chains. Developers use its REST endpoints to build wallets, trading dashboards, DeFi analytics, and AI systems without maintaining their own indexing stack. Custom GPTs can connect directly to the Token API's OpenAPI schema. + +The Token API enables developers to build **Custom GPTs** to reason over live blockchain data inside ChatGPT that can reason over and respond with live blockchain data directly inside ChatGPT. + +## What the Token API Enables in Custom GPTs + +When a Custom GPT is wired to the Token API, it gains access to a machine-readable schema and authenticated endpoints. Developers can use this to: + +- **Query real-time onchain data**: Balances, token prices, liquidity, and transaction history. +- **Automate domain-specific tasks**: Portfolio tracking, accounting, reconciliation, and market analysis. +- **Power AI agents with verifiable blockchain context**: Use the same data sources dapps rely on. + +Because the Token API provides a machine-readable schema and authenticated requests, it serves as a structured data layer that enables GPT-5 agents to combine natural language reasoning with live onchain data from The Graph. + +## When to Use the Token API for Custom GPTs + +Use the Token API when your GPT needs repeatable, domain-specific behavior grounded in blockchain data. This is most effective when the GPT performs the same type of task frequently or enforces a workflow you define. For one-off or exploratory questions, standard ChatGPT prompts are sufficient. + +## Choosing a Use Case + +Start with a clear, narrow objective, then expand as needed. Common patterns include: + +- **Accounting GPT**: Onchain accounting, tax tagging, and portfolio reconciliation. +- **Trading GPT**: Liquidity, pricing, and volume analysis for trading strategies. +- **Protocol Tracking GPT**: Real-time monitoring of transaction activity and liquidity pools. + +A focused initial goal such as “Retrieve token balances and prices for a wallet” makes it easier to configure reliable behavior before adding complex workflows. + +## Requirements + +| Requirement | Description | +| ---------------------- | -------------------------------------------------------- | +| ChatGPT 5 | Custom GPT creation requires GPT-5 tier or Pro. | +| Token API Subscription | Sign up at [The Graph Market](https://thegraph.market./) | +| Token API Key | Available in your dashboard as the Authentication JWT. | + +## Setting Up a Custom GPT + +Below is an explanatory outline of what happens during setup. This section provides conceptual understanding. + +### Create Custom GPT + +1. Visit chat.openai.com/gpts in your browser. 2, Click Create (top right). +2. Under Configure (in the top left panel), set up your GPT's personality and scope. + +### Configure Your GPT + +You define the GPT's role, scope, and metadata so it knows what it is designed to do. This includes: + +- **Name and Description**: Helps users discover your GPT. + - For example: **Name**: Token Tracker GPT **Description**: An onchain analytics assistant that retrieves live token balances, prices, and liquidity data using The Graph's Token API. +- **Instructions**: Tells the GPT what tasks it should perform using the Token API. + - For example: You are a blockchain data assistant retrieving onchain token data from The Graph's Token API. Use endpoints to fetch balances, liquidity, and price history across EVM chains. Present results in tables with token symbols, prices, and USD values. +- **Knowledge**: Optional context files such as wallet references, accounting rules, or code snippets. +- **New Action**: At the bottom, click “Create new action” to connect your GPT to the Token API. + +### Connect the Token API + +To enable live blockchain queries inside ChatGPT, you connect the GPT to the Token API through: + +#### Authentication + +1. Set Authentication to API Key → Bearer. +2. Open [The Graph Market](https://thegraph.market./) and copy your Authentication JWT from your dashboard. +3. Paste the token into the ChatGPT prompt where the field shows [HIDDEN]. + +#### Schema + +1. Above the Schema box, click Import from URL. +2. Paste: https://token-api.thegraph.com/openapi +3. Click Import. You'll now see endpoints like: + - `getV1EvmTokens` + - `getV1EvmDexes` + - `getV1EvmBalances` +4. Click Test on one (for example `getV1EvmDexes`) to verify connection. + +##### Privacy + +1. At the bottom, under Privacy, paste: https://pinax.network/en/legal/privacy + +### Privacy + +You can attach a privacy policy URL such as: https://pinax.network/en/legal/privacy + +## Example Prompt Patterns + +These examples help illustrate how a GPT reasons over Token API data. + +### Wallet and Portfolio + +Get the total USD balance for a wallet across multiple chains, returning token name, symbol, balance, and price. + +### Trading Analysis + +Compare USDC and DAI liquidity across Uniswap and Curve. Return the top 5 pools by TVL. + +### Accounting + +List all ERC-20 transfers for this address in the last 30 days. Group by token and total incoming/outgoing volume. + +## Best Practices + +| Tip | Why It Matters | +| --------------------------------- | ---------------------------------------------------------------------- | +| Scope your GPT narrowly first | Simplifies debugging and validates schema integration. | +| Use clear role instructions | Helps the GPT choose the right endpoints and avoid assumptions. | +| Name endpoints explicitly | Improves routing accuracy when fetching balances, prices, or DEX data. | +| Combine with code | Enables custom parsing or logic for complex workflows. | +| Add Subgraph or Substream context | Provides richer analytics when combined with Token API data. | + +## FAQs & Resources + +- Builders Office Hours (October 23, 2025) +- Watch the full session: https://x.com/i/broadcasts/1mrGmBzBarNJy diff --git a/website/src/pages/pt/token-api/guides/upgrade-to-v1.mdx b/website/src/pages/pt/token-api/guides/upgrade-to-v1.mdx new file mode 100644 index 000000000000..e2a7ccf973fa --- /dev/null +++ b/website/src/pages/pt/token-api/guides/upgrade-to-v1.mdx @@ -0,0 +1,346 @@ +--- +title: Upgrade to v1 +--- + +This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. + +**Note** + +- `EVM` = Ethereum Virtual Machine + +Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). + +- `SVM` = Solana Virtual Machine + +Used to describe endpoints supporting Solana (currently the only SVM chain supported). + +## 🔑 Breaking Changes Summary + +### 1. API Versioning + +All endpoints now use the `/v1` prefix. + +**Before:** + +``` +GET /balances/evm +GET /nft/items/contract/:contract/token_id/:token_id +``` + +**After:** + +``` +GET /v1/evm/balances +GET /v1/evm/nft/items +``` + +### 2. Route Structure Reorganization + +#### 2.1 EVM Endpoints + +Consolidated under `/v1/evm/*` + +| Old Endpoint | New Endpoint | +| ------------------------------------------------------ | ----------------------------- | +| `/balances/evm` | `/v1/evm/balances` | +| `/historical/balances/evm` | `/v1/evm/balances/historical` | +| `/holders/evm/:contract` | `/v1/evm/holders` | +| `/tokens/evm/:contract` | `/v1/evm/tokens` | +| `/transfers/evm` | `/v1/evm/transfers` | +| `/pools/evm` | `/v1/evm/pools` | +| `/swaps/evm` | `/v1/evm/swaps` | +| `/dexes/evm` | `/v1/evm/dexes` | +| `/ohlc/prices/evm/:contract` | _(removed)_ | +| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | +| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | +| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | +| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | +| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | +| `/nft/activities/evm` | `/v1/evm/nft/transfers` | +| `/nft/sales/evm` | `/v1/evm/nft/sales` | + +**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. + +**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. + +--- + +#### 2.2 New EVM native balances endpoint + +Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. + +Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. + +--- + +#### 2.3 SVM Endpoints + +Consolidated under `/v1/svm/*` + +| Old Endpoint | New Endpoint | +| ------------------------ | ------------------------- | +| `/balances/svm` | `/v1/svm/balances` | +| `/balances/native/svm` | `/v1/svm/balances/native` | +| `/holders/svm/:contract` | `/v1/svm/holders` | +| `/tokens/svm/:mint` | `/v1/svm/tokens` | +| `/transfers/svm` | `/v1/svm/transfers` | +| `/pools/svm` | `/v1/svm/pools` | +| `/swaps/svm` | `/v1/svm/swaps` | +| `/dexes/svm` | `/v1/svm/dexes` | +| `/owner/svm/:account` | `/v1/svm/owner` | +| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | + +## 📝 Parameter Changes + +### 3. Path Parameters → Query Parameters + +All path parameters have been moved to query parameters. + +**Before:** + +```bash +GET /balances/evm/:address +GET /holders/evm/:contract +GET /nft/items/evm/contract/:contract/token_id/:token_id +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0x... +GET /v1/evm/holders?network=mainnet&contract=0x... +GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 +``` + +### 4. Standardized Parameter Naming + +All query parameters have been standardized to use snake_case naming convention. + +| Old Parameter | New Parameter | Notes | +| --- | --- | --- | +| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | +| `anyAddress` | `address` | Matches either `from` or `to` address | +| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | +| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | +| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | +| `endTime` | `end_time` | Default: `9999999999` | +| - | `start_block` | New parameter, default: `0` | +| - | `end_block` | New parameter, default: `9999999999` | +| - | `include_null_balances` | New parameter, default: `false` | +| `tx_hash` | `transaction_id` | - | +| `token` | `input_token`, `output_token` | More explicit for pool queries | +| `pool` | `amm_pool` | - | +| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | + +**Important:** The `network_id` parameter has been renamed to `network`. + +**Important:** `matic` network has been renamed to `polygon`. + +### 5. Batched Parameters + +Many parameters now support batching - accepting single values or comma-separated strings. + +**Supported Batched Parameters:** + +- `address`, `from_address`, `to_address` +- `contract`, `token_id` +- `factory`, `pool` +- `owner`, `token_account`, `mint` +- `transaction_id`, `signature` + +**Examples:** + +```console +## Single value +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 + +## Comma-separated, single parameter +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 + +## Repeated parameter values +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +### 6. New Parameters + +#### `include_null_balances` + +Added to balance endpoints to optionally include zero/null balances. + +```bash +?include_null_balances=true +``` + +**Default:** `false` + +## 🔄 Response Changes + +### 7. Pagination Changes + +Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. + +**Before:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2, + "next_page": 3, + "total_pages": 10 + }, + "total_results": 1234 +} +``` + +**After:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2 + } +} +``` + +**Removed fields:** + +- `next_page` +- `total_pages` +- `total_results` + +**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. + +### 8. Removed Parameters + +The following deprecated parameters have been removed: + +- `orderBy` - Results are now ordered by timestamp/block by default +- `orderDirection` - Always descending (newest first) + +### 9. Cached Queries + +Queries are now cached on the ClickHouse side for better performance. + +You can specifically request to not use the cache by setting the `Cache-Control` header to `no-cache`. + +#### Example + +**Cache** + +```console +$ curl -s 'https://token-api.thegraph.com/v1/...' | jq .statistics +{ + "bytes_read": 221, + "rows_read": 1, + "elapsed": 0.002212065 +} +``` + +**No cache** + +```console +$ curl -s 'http://localhost:8000/v1/...' --header 'Cache-Control: no-cache' | jq .statistics +{ + "bytes_read": 14621174348, + "rows_read": 223244390, + "elapsed": 0.971064066 +} +``` + +## 📚 Example Migrations + +### Example 1: Get Token Balances + +**Before:** + +```bash +GET /token/balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +### Example 2: Get NFT Items + +**Before:** + +```bash +GET /nft/items/evm/contract/0xbd3531da5cf5857e7cfaa92426877b022e612cf8/token_id/5712?network_id=mainnet +``` + +**After:** + +```bash +GET /v1/evm/nft/items?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&token_id=5712 +``` + +### Example 3: Get Token Transfers with Time Filter + +**Before:** + +```bash +GET /token/transfers/evm?network_id=mainnet&from=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&startTime=1735689600&endTime=1767225600 +``` + +**After:** + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&start_time=1735689600&end_time=1767225600 +``` + +### Example 4: Get NFT Transfer Activities + +**Before:** + +```bash +GET /nft/activities/evm?network_id=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&anyAddress=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +**After:** + +```bash +GET /v1/evm/nft/transfers?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +### Example 5: Get Pool OHLC Data + +**Before:** + +```bash +GET /token/ohlc/pools/evm/0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640?network_id=mainnet&interval=1h&startTime=1735689600 +``` + +**After:** + +```bash +GET /v1/evm/pools/ohlc?network=mainnet&pool=0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640&interval=1h&start_time=1735689600 +``` + +### Example 6: Batched Query (New Feature) + +Query balances for multiple contracts in a single request: + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +Query transfers from multiple addresses: + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xabc...,0xdef...,0x123...&start_time=1735689600 +``` + +## ⚠️ Important Notes + +1. **Migration Notes:** The old endpoints were deprecated and removed on **October 30, 2025**. Please ensure all integrations have been migrated to the new Token API v1 endpoints. + +2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. + +3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. + +4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/pt/token-api/upgrade-to-v1.mdx b/website/src/pages/pt/token-api/upgrade-to-v1.mdx deleted file mode 100644 index fbe09101eaa5..000000000000 --- a/website/src/pages/pt/token-api/upgrade-to-v1.mdx +++ /dev/null @@ -1,254 +0,0 @@ ---- -title: Upgrade to v1 ---- - -This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. - -**Note** - -- `EVM` = Ethereum Virtual Machine - -Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). - -- `SVM` = Solana Virtual Machine - -Used to describe endpoints supporting Solana (currently the only SVM chain supported). - -## 🔑 Breaking Changes Summary - -### 1. **API Versioning** - -All endpoints now use the `/v1` prefix. - -**Before:** - -``` -GET /balances/evm -GET /nft/items/contract/:contract/token_id/:token_id -``` - -**After:** - -``` -GET /v1/evm/balances -GET /v1/evm/nft/items -``` - -### 2. **Route Structure Reorganization** - -#### 2.1 EVM Endpoints - -Consolidated under `/v1/evm/*` - -| Old Endpoint | New Endpoint | -| ------------------------------------------------------ | ----------------------------- | -| `/balances/evm` | `/v1/evm/balances` | -| `/historical/balances/evm` | `/v1/evm/balances/historical` | -| `/holders/evm/:contract` | `/v1/evm/holders` | -| `/tokens/evm/:contract` | `/v1/evm/tokens` | -| `/transfers/evm` | `/v1/evm/transfers` | -| `/pools/evm` | `/v1/evm/pools` | -| `/swaps/evm` | `/v1/evm/swaps` | -| `/dexes/evm` | `/v1/evm/dexes` | -| `/ohlc/prices/evm/:contract` | _(removed)_ | -| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | -| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | -| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | -| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | -| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | -| `/nft/activities/evm` | `/v1/evm/nft/transfers` | -| `/nft/sales/evm` | `/v1/evm/nft/sales` | - -**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. - -**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. - ---- - -#### 2.2 New EVM native balances endpoint - -Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. - -Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. - ---- - -#### 2.3 SVM Endpoints - -Consolidated under `/v1/svm/*` - -| Old Endpoint | New Endpoint | -| ------------------------ | ------------------------- | -| `/balances/svm` | `/v1/svm/balances` | -| `/balances/native/svm` | `/v1/svm/balances/native` | -| `/holders/svm/:contract` | `/v1/svm/holders` | -| `/tokens/svm/:mint` | `/v1/svm/tokens` | -| `/transfers/svm` | `/v1/svm/transfers` | -| `/pools/svm` | `/v1/svm/pools` | -| `/swaps/svm` | `/v1/svm/swaps` | -| `/dexes/svm` | `/v1/svm/dexes` | -| `/owner/svm/:account` | `/v1/svm/owner` | -| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | - -## 📝 Parameter Changes - -### 3. **Path Parameters → Query Parameters** - -All path parameters have been moved to query parameters. - -**Before:** - -```bash -GET /balances/evm/:address -GET /holders/evm/:contract -GET /nft/items/evm/contract/:contract/token_id/:token_id -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0x... -GET /v1/evm/holders?network=mainnet&contract=0x... -GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 -``` - -### 4. **Standardized Parameter Naming** - -All query parameters have been standardized to use snake_case naming convention. - -| Old Parameter | New Parameter | Notes | -| --- | --- | --- | -| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | -| `anyAddress` | `address` | Matches either `from` or `to` address | -| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | -| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | -| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | -| `endTime` | `end_time` | Default: `9999999999` | -| - | `start_block` | New parameter, default: `0` | -| - | `end_block` | New parameter, default: `9999999999` | -| - | `include_null_balances` | New parameter, default: `false` | -| `tx_hash` | `transaction_id` | - | -| `token` | `input_token`, `output_token` | More explicit for pool queries | -| `pool` | `amm_pool` | - | -| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | - -**Important:** The `network_id` parameter has been renamed to `network`. - -**Important:** `matic` network has been renamed to `polygon`. - -### 5. **Batched Parameters** - -Many parameters now support batching - accepting single values or comma-separated strings. - -**Supported Batched Parameters:** - -- `address`, `from_address`, `to_address` -- `contract`, `token_id` -- `factory`, `pool` -- `owner`, `token_account`, `mint` -- `transaction_id`, `signature` - -**Examples:** - -```console -# Single value -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 - -# Comma-separated, single parameter -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 - -# Repeated parameter values -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -### 6. **New Parameters** - -#### `include_null_balances` - -Added to balance endpoints to optionally include zero/null balances. - -```bash -?include_null_balances=true -``` - -**Default:** `false` - -## 🔄 Response Changes - -### 7. **Pagination Changes** - -Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. - -**Before:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2, - "next_page": 3, - "total_pages": 10 - }, - "total_results": 1234 -} -``` - -**After:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2 - } -} -``` - -**Removed fields:** - -- `next_page` -- `total_pages` -- `total_results` - -**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. - -### 8. **Removed Parameters** - -The following deprecated parameters have been removed: - -- `orderBy` - Results are now ordered by timestamp/block by default -- `orderDirection` - Always descending (newest first) - -## 📚 Example Migrations - -### Old vs New: Get Token Balances - -**Before:** - -```bash -GET /balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -### New Feature: Batched Queries - -Query balances for multiple contracts in a single request: - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -## ⚠️ Important Notes - -1. **Backward Compatibility:** The old endpoints are deprecated and will be removed in the future. Migrate by **Oct 30, 2025**. - -2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. - -3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. - -4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/ro/index.json b/website/src/pages/ro/index.json index d833513cf931..c1ad74b06fa7 100644 --- a/website/src/pages/ro/index.json +++ b/website/src/pages/ro/index.json @@ -2,7 +2,7 @@ "title": "Home", "hero": { "title": "The Graph Docs", - "description": "The Graph is a blockchain data solution that powers applications, analytics, and AI on 90+ chains. The Graph's core products include the Token API for web3 apps, Subgraphs for indexing smart contracts, and Substreams for real-time and historical data streaming.", + "description": "The Graph is a blockchain data solution that powers applications, analytics, and AI on 80+ chains. The Graph's core products include the Token API for web3 apps, Subgraphs for indexing smart contracts, and Substreams for real-time and historical data streaming.", "cta1": "How The Graph works", "cta2": "Build your first subgraph" }, diff --git a/website/src/pages/ro/subgraphs/guides/_meta.js b/website/src/pages/ro/subgraphs/guides/_meta.js index fd5608dcceb2..1c081848ea08 100644 --- a/website/src/pages/ro/subgraphs/guides/_meta.js +++ b/website/src/pages/ro/subgraphs/guides/_meta.js @@ -2,7 +2,6 @@ export default { 'subgraph-composition': '', 'subgraph-debug-forking': '', near: '', - grafting: '', 'subgraph-uncrashable': '', 'transfer-to-the-graph': '', diff --git a/website/src/pages/ro/token-api/_meta.js b/website/src/pages/ro/token-api/_meta.js index a8624da52e7f..9588f70cec53 100644 --- a/website/src/pages/ro/token-api/_meta.js +++ b/website/src/pages/ro/token-api/_meta.js @@ -11,6 +11,6 @@ export default { 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', 'endpoint-pricing': '', + guides: titles['guides'] ?? '', faq: '', - 'upgrade-to-v1': '', } diff --git a/website/src/pages/ro/token-api/guides/_meta-titles.json b/website/src/pages/ro/token-api/guides/_meta-titles.json new file mode 100644 index 000000000000..cd93dcc0fc0b --- /dev/null +++ b/website/src/pages/ro/token-api/guides/_meta-titles.json @@ -0,0 +1,4 @@ +{ + "gpt": "Create Custom GPTS", + "upgrade-to-v1": "" +} diff --git a/website/src/pages/ro/token-api/guides/_meta.js b/website/src/pages/ro/token-api/guides/_meta.js new file mode 100644 index 000000000000..e5aaaadd78f2 --- /dev/null +++ b/website/src/pages/ro/token-api/guides/_meta.js @@ -0,0 +1,4 @@ +export default { + gpt: '', + 'upgrade-to-v1': '', +} diff --git a/website/src/pages/ro/token-api/guides/gpt.mdx b/website/src/pages/ro/token-api/guides/gpt.mdx new file mode 100644 index 000000000000..564d013dea20 --- /dev/null +++ b/website/src/pages/ro/token-api/guides/gpt.mdx @@ -0,0 +1,121 @@ +--- +title: How the Token API Powers Custom GPTs +sidebarTitle: Create Custom GPTs +--- + +## Overview + +The Token API is a pre-indexed blockchain data service that provides real-time access to token balances, metadata, prices, liquidity, and volume across multiple chains. Developers use its REST endpoints to build wallets, trading dashboards, DeFi analytics, and AI systems without maintaining their own indexing stack. Custom GPTs can connect directly to the Token API's OpenAPI schema. + +The Token API enables developers to build **Custom GPTs** to reason over live blockchain data inside ChatGPT that can reason over and respond with live blockchain data directly inside ChatGPT. + +## What the Token API Enables in Custom GPTs + +When a Custom GPT is wired to the Token API, it gains access to a machine-readable schema and authenticated endpoints. Developers can use this to: + +- **Query real-time onchain data**: Balances, token prices, liquidity, and transaction history. +- **Automate domain-specific tasks**: Portfolio tracking, accounting, reconciliation, and market analysis. +- **Power AI agents with verifiable blockchain context**: Use the same data sources dapps rely on. + +Because the Token API provides a machine-readable schema and authenticated requests, it serves as a structured data layer that enables GPT-5 agents to combine natural language reasoning with live onchain data from The Graph. + +## When to Use the Token API for Custom GPTs + +Use the Token API when your GPT needs repeatable, domain-specific behavior grounded in blockchain data. This is most effective when the GPT performs the same type of task frequently or enforces a workflow you define. For one-off or exploratory questions, standard ChatGPT prompts are sufficient. + +## Choosing a Use Case + +Start with a clear, narrow objective, then expand as needed. Common patterns include: + +- **Accounting GPT**: Onchain accounting, tax tagging, and portfolio reconciliation. +- **Trading GPT**: Liquidity, pricing, and volume analysis for trading strategies. +- **Protocol Tracking GPT**: Real-time monitoring of transaction activity and liquidity pools. + +A focused initial goal such as “Retrieve token balances and prices for a wallet” makes it easier to configure reliable behavior before adding complex workflows. + +## Requirements + +| Requirement | Description | +| ---------------------- | -------------------------------------------------------- | +| ChatGPT 5 | Custom GPT creation requires GPT-5 tier or Pro. | +| Token API Subscription | Sign up at [The Graph Market](https://thegraph.market./) | +| Token API Key | Available in your dashboard as the Authentication JWT. | + +## Setting Up a Custom GPT + +Below is an explanatory outline of what happens during setup. This section provides conceptual understanding. + +### Create Custom GPT + +1. Visit chat.openai.com/gpts in your browser. 2, Click Create (top right). +2. Under Configure (in the top left panel), set up your GPT's personality and scope. + +### Configure Your GPT + +You define the GPT's role, scope, and metadata so it knows what it is designed to do. This includes: + +- **Name and Description**: Helps users discover your GPT. + - For example: **Name**: Token Tracker GPT **Description**: An onchain analytics assistant that retrieves live token balances, prices, and liquidity data using The Graph's Token API. +- **Instructions**: Tells the GPT what tasks it should perform using the Token API. + - For example: You are a blockchain data assistant retrieving onchain token data from The Graph's Token API. Use endpoints to fetch balances, liquidity, and price history across EVM chains. Present results in tables with token symbols, prices, and USD values. +- **Knowledge**: Optional context files such as wallet references, accounting rules, or code snippets. +- **New Action**: At the bottom, click “Create new action” to connect your GPT to the Token API. + +### Connect the Token API + +To enable live blockchain queries inside ChatGPT, you connect the GPT to the Token API through: + +#### Authentication + +1. Set Authentication to API Key → Bearer. +2. Open [The Graph Market](https://thegraph.market./) and copy your Authentication JWT from your dashboard. +3. Paste the token into the ChatGPT prompt where the field shows [HIDDEN]. + +#### Schema + +1. Above the Schema box, click Import from URL. +2. Paste: https://token-api.thegraph.com/openapi +3. Click Import. You'll now see endpoints like: + - `getV1EvmTokens` + - `getV1EvmDexes` + - `getV1EvmBalances` +4. Click Test on one (for example `getV1EvmDexes`) to verify connection. + +##### Privacy + +1. At the bottom, under Privacy, paste: https://pinax.network/en/legal/privacy + +### Privacy + +You can attach a privacy policy URL such as: https://pinax.network/en/legal/privacy + +## Example Prompt Patterns + +These examples help illustrate how a GPT reasons over Token API data. + +### Wallet and Portfolio + +Get the total USD balance for a wallet across multiple chains, returning token name, symbol, balance, and price. + +### Trading Analysis + +Compare USDC and DAI liquidity across Uniswap and Curve. Return the top 5 pools by TVL. + +### Accounting + +List all ERC-20 transfers for this address in the last 30 days. Group by token and total incoming/outgoing volume. + +## Best Practices + +| Tip | Why It Matters | +| --------------------------------- | ---------------------------------------------------------------------- | +| Scope your GPT narrowly first | Simplifies debugging and validates schema integration. | +| Use clear role instructions | Helps the GPT choose the right endpoints and avoid assumptions. | +| Name endpoints explicitly | Improves routing accuracy when fetching balances, prices, or DEX data. | +| Combine with code | Enables custom parsing or logic for complex workflows. | +| Add Subgraph or Substream context | Provides richer analytics when combined with Token API data. | + +## FAQs & Resources + +- Builders Office Hours (October 23, 2025) +- Watch the full session: https://x.com/i/broadcasts/1mrGmBzBarNJy diff --git a/website/src/pages/ro/token-api/guides/upgrade-to-v1.mdx b/website/src/pages/ro/token-api/guides/upgrade-to-v1.mdx new file mode 100644 index 000000000000..e2a7ccf973fa --- /dev/null +++ b/website/src/pages/ro/token-api/guides/upgrade-to-v1.mdx @@ -0,0 +1,346 @@ +--- +title: Upgrade to v1 +--- + +This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. + +**Note** + +- `EVM` = Ethereum Virtual Machine + +Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). + +- `SVM` = Solana Virtual Machine + +Used to describe endpoints supporting Solana (currently the only SVM chain supported). + +## 🔑 Breaking Changes Summary + +### 1. API Versioning + +All endpoints now use the `/v1` prefix. + +**Before:** + +``` +GET /balances/evm +GET /nft/items/contract/:contract/token_id/:token_id +``` + +**After:** + +``` +GET /v1/evm/balances +GET /v1/evm/nft/items +``` + +### 2. Route Structure Reorganization + +#### 2.1 EVM Endpoints + +Consolidated under `/v1/evm/*` + +| Old Endpoint | New Endpoint | +| ------------------------------------------------------ | ----------------------------- | +| `/balances/evm` | `/v1/evm/balances` | +| `/historical/balances/evm` | `/v1/evm/balances/historical` | +| `/holders/evm/:contract` | `/v1/evm/holders` | +| `/tokens/evm/:contract` | `/v1/evm/tokens` | +| `/transfers/evm` | `/v1/evm/transfers` | +| `/pools/evm` | `/v1/evm/pools` | +| `/swaps/evm` | `/v1/evm/swaps` | +| `/dexes/evm` | `/v1/evm/dexes` | +| `/ohlc/prices/evm/:contract` | _(removed)_ | +| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | +| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | +| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | +| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | +| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | +| `/nft/activities/evm` | `/v1/evm/nft/transfers` | +| `/nft/sales/evm` | `/v1/evm/nft/sales` | + +**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. + +**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. + +--- + +#### 2.2 New EVM native balances endpoint + +Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. + +Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. + +--- + +#### 2.3 SVM Endpoints + +Consolidated under `/v1/svm/*` + +| Old Endpoint | New Endpoint | +| ------------------------ | ------------------------- | +| `/balances/svm` | `/v1/svm/balances` | +| `/balances/native/svm` | `/v1/svm/balances/native` | +| `/holders/svm/:contract` | `/v1/svm/holders` | +| `/tokens/svm/:mint` | `/v1/svm/tokens` | +| `/transfers/svm` | `/v1/svm/transfers` | +| `/pools/svm` | `/v1/svm/pools` | +| `/swaps/svm` | `/v1/svm/swaps` | +| `/dexes/svm` | `/v1/svm/dexes` | +| `/owner/svm/:account` | `/v1/svm/owner` | +| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | + +## 📝 Parameter Changes + +### 3. Path Parameters → Query Parameters + +All path parameters have been moved to query parameters. + +**Before:** + +```bash +GET /balances/evm/:address +GET /holders/evm/:contract +GET /nft/items/evm/contract/:contract/token_id/:token_id +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0x... +GET /v1/evm/holders?network=mainnet&contract=0x... +GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 +``` + +### 4. Standardized Parameter Naming + +All query parameters have been standardized to use snake_case naming convention. + +| Old Parameter | New Parameter | Notes | +| --- | --- | --- | +| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | +| `anyAddress` | `address` | Matches either `from` or `to` address | +| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | +| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | +| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | +| `endTime` | `end_time` | Default: `9999999999` | +| - | `start_block` | New parameter, default: `0` | +| - | `end_block` | New parameter, default: `9999999999` | +| - | `include_null_balances` | New parameter, default: `false` | +| `tx_hash` | `transaction_id` | - | +| `token` | `input_token`, `output_token` | More explicit for pool queries | +| `pool` | `amm_pool` | - | +| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | + +**Important:** The `network_id` parameter has been renamed to `network`. + +**Important:** `matic` network has been renamed to `polygon`. + +### 5. Batched Parameters + +Many parameters now support batching - accepting single values or comma-separated strings. + +**Supported Batched Parameters:** + +- `address`, `from_address`, `to_address` +- `contract`, `token_id` +- `factory`, `pool` +- `owner`, `token_account`, `mint` +- `transaction_id`, `signature` + +**Examples:** + +```console +## Single value +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 + +## Comma-separated, single parameter +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 + +## Repeated parameter values +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +### 6. New Parameters + +#### `include_null_balances` + +Added to balance endpoints to optionally include zero/null balances. + +```bash +?include_null_balances=true +``` + +**Default:** `false` + +## 🔄 Response Changes + +### 7. Pagination Changes + +Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. + +**Before:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2, + "next_page": 3, + "total_pages": 10 + }, + "total_results": 1234 +} +``` + +**After:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2 + } +} +``` + +**Removed fields:** + +- `next_page` +- `total_pages` +- `total_results` + +**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. + +### 8. Removed Parameters + +The following deprecated parameters have been removed: + +- `orderBy` - Results are now ordered by timestamp/block by default +- `orderDirection` - Always descending (newest first) + +### 9. Cached Queries + +Queries are now cached on the ClickHouse side for better performance. + +You can specifically request to not use the cache by setting the `Cache-Control` header to `no-cache`. + +#### Example + +**Cache** + +```console +$ curl -s 'https://token-api.thegraph.com/v1/...' | jq .statistics +{ + "bytes_read": 221, + "rows_read": 1, + "elapsed": 0.002212065 +} +``` + +**No cache** + +```console +$ curl -s 'http://localhost:8000/v1/...' --header 'Cache-Control: no-cache' | jq .statistics +{ + "bytes_read": 14621174348, + "rows_read": 223244390, + "elapsed": 0.971064066 +} +``` + +## 📚 Example Migrations + +### Example 1: Get Token Balances + +**Before:** + +```bash +GET /token/balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +### Example 2: Get NFT Items + +**Before:** + +```bash +GET /nft/items/evm/contract/0xbd3531da5cf5857e7cfaa92426877b022e612cf8/token_id/5712?network_id=mainnet +``` + +**After:** + +```bash +GET /v1/evm/nft/items?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&token_id=5712 +``` + +### Example 3: Get Token Transfers with Time Filter + +**Before:** + +```bash +GET /token/transfers/evm?network_id=mainnet&from=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&startTime=1735689600&endTime=1767225600 +``` + +**After:** + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&start_time=1735689600&end_time=1767225600 +``` + +### Example 4: Get NFT Transfer Activities + +**Before:** + +```bash +GET /nft/activities/evm?network_id=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&anyAddress=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +**After:** + +```bash +GET /v1/evm/nft/transfers?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +### Example 5: Get Pool OHLC Data + +**Before:** + +```bash +GET /token/ohlc/pools/evm/0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640?network_id=mainnet&interval=1h&startTime=1735689600 +``` + +**After:** + +```bash +GET /v1/evm/pools/ohlc?network=mainnet&pool=0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640&interval=1h&start_time=1735689600 +``` + +### Example 6: Batched Query (New Feature) + +Query balances for multiple contracts in a single request: + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +Query transfers from multiple addresses: + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xabc...,0xdef...,0x123...&start_time=1735689600 +``` + +## ⚠️ Important Notes + +1. **Migration Notes:** The old endpoints were deprecated and removed on **October 30, 2025**. Please ensure all integrations have been migrated to the new Token API v1 endpoints. + +2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. + +3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. + +4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/ro/token-api/upgrade-to-v1.mdx b/website/src/pages/ro/token-api/upgrade-to-v1.mdx deleted file mode 100644 index fbe09101eaa5..000000000000 --- a/website/src/pages/ro/token-api/upgrade-to-v1.mdx +++ /dev/null @@ -1,254 +0,0 @@ ---- -title: Upgrade to v1 ---- - -This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. - -**Note** - -- `EVM` = Ethereum Virtual Machine - -Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). - -- `SVM` = Solana Virtual Machine - -Used to describe endpoints supporting Solana (currently the only SVM chain supported). - -## 🔑 Breaking Changes Summary - -### 1. **API Versioning** - -All endpoints now use the `/v1` prefix. - -**Before:** - -``` -GET /balances/evm -GET /nft/items/contract/:contract/token_id/:token_id -``` - -**After:** - -``` -GET /v1/evm/balances -GET /v1/evm/nft/items -``` - -### 2. **Route Structure Reorganization** - -#### 2.1 EVM Endpoints - -Consolidated under `/v1/evm/*` - -| Old Endpoint | New Endpoint | -| ------------------------------------------------------ | ----------------------------- | -| `/balances/evm` | `/v1/evm/balances` | -| `/historical/balances/evm` | `/v1/evm/balances/historical` | -| `/holders/evm/:contract` | `/v1/evm/holders` | -| `/tokens/evm/:contract` | `/v1/evm/tokens` | -| `/transfers/evm` | `/v1/evm/transfers` | -| `/pools/evm` | `/v1/evm/pools` | -| `/swaps/evm` | `/v1/evm/swaps` | -| `/dexes/evm` | `/v1/evm/dexes` | -| `/ohlc/prices/evm/:contract` | _(removed)_ | -| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | -| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | -| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | -| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | -| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | -| `/nft/activities/evm` | `/v1/evm/nft/transfers` | -| `/nft/sales/evm` | `/v1/evm/nft/sales` | - -**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. - -**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. - ---- - -#### 2.2 New EVM native balances endpoint - -Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. - -Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. - ---- - -#### 2.3 SVM Endpoints - -Consolidated under `/v1/svm/*` - -| Old Endpoint | New Endpoint | -| ------------------------ | ------------------------- | -| `/balances/svm` | `/v1/svm/balances` | -| `/balances/native/svm` | `/v1/svm/balances/native` | -| `/holders/svm/:contract` | `/v1/svm/holders` | -| `/tokens/svm/:mint` | `/v1/svm/tokens` | -| `/transfers/svm` | `/v1/svm/transfers` | -| `/pools/svm` | `/v1/svm/pools` | -| `/swaps/svm` | `/v1/svm/swaps` | -| `/dexes/svm` | `/v1/svm/dexes` | -| `/owner/svm/:account` | `/v1/svm/owner` | -| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | - -## 📝 Parameter Changes - -### 3. **Path Parameters → Query Parameters** - -All path parameters have been moved to query parameters. - -**Before:** - -```bash -GET /balances/evm/:address -GET /holders/evm/:contract -GET /nft/items/evm/contract/:contract/token_id/:token_id -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0x... -GET /v1/evm/holders?network=mainnet&contract=0x... -GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 -``` - -### 4. **Standardized Parameter Naming** - -All query parameters have been standardized to use snake_case naming convention. - -| Old Parameter | New Parameter | Notes | -| --- | --- | --- | -| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | -| `anyAddress` | `address` | Matches either `from` or `to` address | -| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | -| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | -| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | -| `endTime` | `end_time` | Default: `9999999999` | -| - | `start_block` | New parameter, default: `0` | -| - | `end_block` | New parameter, default: `9999999999` | -| - | `include_null_balances` | New parameter, default: `false` | -| `tx_hash` | `transaction_id` | - | -| `token` | `input_token`, `output_token` | More explicit for pool queries | -| `pool` | `amm_pool` | - | -| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | - -**Important:** The `network_id` parameter has been renamed to `network`. - -**Important:** `matic` network has been renamed to `polygon`. - -### 5. **Batched Parameters** - -Many parameters now support batching - accepting single values or comma-separated strings. - -**Supported Batched Parameters:** - -- `address`, `from_address`, `to_address` -- `contract`, `token_id` -- `factory`, `pool` -- `owner`, `token_account`, `mint` -- `transaction_id`, `signature` - -**Examples:** - -```console -# Single value -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 - -# Comma-separated, single parameter -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 - -# Repeated parameter values -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -### 6. **New Parameters** - -#### `include_null_balances` - -Added to balance endpoints to optionally include zero/null balances. - -```bash -?include_null_balances=true -``` - -**Default:** `false` - -## 🔄 Response Changes - -### 7. **Pagination Changes** - -Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. - -**Before:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2, - "next_page": 3, - "total_pages": 10 - }, - "total_results": 1234 -} -``` - -**After:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2 - } -} -``` - -**Removed fields:** - -- `next_page` -- `total_pages` -- `total_results` - -**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. - -### 8. **Removed Parameters** - -The following deprecated parameters have been removed: - -- `orderBy` - Results are now ordered by timestamp/block by default -- `orderDirection` - Always descending (newest first) - -## 📚 Example Migrations - -### Old vs New: Get Token Balances - -**Before:** - -```bash -GET /balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -### New Feature: Batched Queries - -Query balances for multiple contracts in a single request: - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -## ⚠️ Important Notes - -1. **Backward Compatibility:** The old endpoints are deprecated and will be removed in the future. Migrate by **Oct 30, 2025**. - -2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. - -3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. - -4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/ru/index.json b/website/src/pages/ru/index.json index cf30e93cbcc6..11fa284eea87 100644 --- a/website/src/pages/ru/index.json +++ b/website/src/pages/ru/index.json @@ -2,7 +2,7 @@ "title": "Главная страница", "hero": { "title": "Документация The Graph", - "description": "The Graph is a blockchain data solution that powers applications, analytics, and AI on 90+ chains. The Graph's core products include the Token API for web3 apps, Subgraphs for indexing smart contracts, and Substreams for real-time and historical data streaming.", + "description": "The Graph is a blockchain data solution that powers applications, analytics, and AI on 80+ chains. The Graph's core products include the Token API for web3 apps, Subgraphs for indexing smart contracts, and Substreams for real-time and historical data streaming.", "cta1": "Как работает The Graph", "cta2": "Создайте свой первый субграф" }, diff --git a/website/src/pages/ru/subgraphs/guides/_meta.js b/website/src/pages/ru/subgraphs/guides/_meta.js index fd5608dcceb2..1c081848ea08 100644 --- a/website/src/pages/ru/subgraphs/guides/_meta.js +++ b/website/src/pages/ru/subgraphs/guides/_meta.js @@ -2,7 +2,6 @@ export default { 'subgraph-composition': '', 'subgraph-debug-forking': '', near: '', - grafting: '', 'subgraph-uncrashable': '', 'transfer-to-the-graph': '', diff --git a/website/src/pages/ru/token-api/_meta.js b/website/src/pages/ru/token-api/_meta.js index a8624da52e7f..9588f70cec53 100644 --- a/website/src/pages/ru/token-api/_meta.js +++ b/website/src/pages/ru/token-api/_meta.js @@ -11,6 +11,6 @@ export default { 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', 'endpoint-pricing': '', + guides: titles['guides'] ?? '', faq: '', - 'upgrade-to-v1': '', } diff --git a/website/src/pages/ru/token-api/guides/_meta-titles.json b/website/src/pages/ru/token-api/guides/_meta-titles.json new file mode 100644 index 000000000000..cd93dcc0fc0b --- /dev/null +++ b/website/src/pages/ru/token-api/guides/_meta-titles.json @@ -0,0 +1,4 @@ +{ + "gpt": "Create Custom GPTS", + "upgrade-to-v1": "" +} diff --git a/website/src/pages/ru/token-api/guides/_meta.js b/website/src/pages/ru/token-api/guides/_meta.js new file mode 100644 index 000000000000..e5aaaadd78f2 --- /dev/null +++ b/website/src/pages/ru/token-api/guides/_meta.js @@ -0,0 +1,4 @@ +export default { + gpt: '', + 'upgrade-to-v1': '', +} diff --git a/website/src/pages/ru/token-api/guides/gpt.mdx b/website/src/pages/ru/token-api/guides/gpt.mdx new file mode 100644 index 000000000000..564d013dea20 --- /dev/null +++ b/website/src/pages/ru/token-api/guides/gpt.mdx @@ -0,0 +1,121 @@ +--- +title: How the Token API Powers Custom GPTs +sidebarTitle: Create Custom GPTs +--- + +## Overview + +The Token API is a pre-indexed blockchain data service that provides real-time access to token balances, metadata, prices, liquidity, and volume across multiple chains. Developers use its REST endpoints to build wallets, trading dashboards, DeFi analytics, and AI systems without maintaining their own indexing stack. Custom GPTs can connect directly to the Token API's OpenAPI schema. + +The Token API enables developers to build **Custom GPTs** to reason over live blockchain data inside ChatGPT that can reason over and respond with live blockchain data directly inside ChatGPT. + +## What the Token API Enables in Custom GPTs + +When a Custom GPT is wired to the Token API, it gains access to a machine-readable schema and authenticated endpoints. Developers can use this to: + +- **Query real-time onchain data**: Balances, token prices, liquidity, and transaction history. +- **Automate domain-specific tasks**: Portfolio tracking, accounting, reconciliation, and market analysis. +- **Power AI agents with verifiable blockchain context**: Use the same data sources dapps rely on. + +Because the Token API provides a machine-readable schema and authenticated requests, it serves as a structured data layer that enables GPT-5 agents to combine natural language reasoning with live onchain data from The Graph. + +## When to Use the Token API for Custom GPTs + +Use the Token API when your GPT needs repeatable, domain-specific behavior grounded in blockchain data. This is most effective when the GPT performs the same type of task frequently or enforces a workflow you define. For one-off or exploratory questions, standard ChatGPT prompts are sufficient. + +## Choosing a Use Case + +Start with a clear, narrow objective, then expand as needed. Common patterns include: + +- **Accounting GPT**: Onchain accounting, tax tagging, and portfolio reconciliation. +- **Trading GPT**: Liquidity, pricing, and volume analysis for trading strategies. +- **Protocol Tracking GPT**: Real-time monitoring of transaction activity and liquidity pools. + +A focused initial goal such as “Retrieve token balances and prices for a wallet” makes it easier to configure reliable behavior before adding complex workflows. + +## Requirements + +| Requirement | Description | +| ---------------------- | -------------------------------------------------------- | +| ChatGPT 5 | Custom GPT creation requires GPT-5 tier or Pro. | +| Token API Subscription | Sign up at [The Graph Market](https://thegraph.market./) | +| Token API Key | Available in your dashboard as the Authentication JWT. | + +## Setting Up a Custom GPT + +Below is an explanatory outline of what happens during setup. This section provides conceptual understanding. + +### Create Custom GPT + +1. Visit chat.openai.com/gpts in your browser. 2, Click Create (top right). +2. Under Configure (in the top left panel), set up your GPT's personality and scope. + +### Configure Your GPT + +You define the GPT's role, scope, and metadata so it knows what it is designed to do. This includes: + +- **Name and Description**: Helps users discover your GPT. + - For example: **Name**: Token Tracker GPT **Description**: An onchain analytics assistant that retrieves live token balances, prices, and liquidity data using The Graph's Token API. +- **Instructions**: Tells the GPT what tasks it should perform using the Token API. + - For example: You are a blockchain data assistant retrieving onchain token data from The Graph's Token API. Use endpoints to fetch balances, liquidity, and price history across EVM chains. Present results in tables with token symbols, prices, and USD values. +- **Knowledge**: Optional context files such as wallet references, accounting rules, or code snippets. +- **New Action**: At the bottom, click “Create new action” to connect your GPT to the Token API. + +### Connect the Token API + +To enable live blockchain queries inside ChatGPT, you connect the GPT to the Token API through: + +#### Authentication + +1. Set Authentication to API Key → Bearer. +2. Open [The Graph Market](https://thegraph.market./) and copy your Authentication JWT from your dashboard. +3. Paste the token into the ChatGPT prompt where the field shows [HIDDEN]. + +#### Schema + +1. Above the Schema box, click Import from URL. +2. Paste: https://token-api.thegraph.com/openapi +3. Click Import. You'll now see endpoints like: + - `getV1EvmTokens` + - `getV1EvmDexes` + - `getV1EvmBalances` +4. Click Test on one (for example `getV1EvmDexes`) to verify connection. + +##### Privacy + +1. At the bottom, under Privacy, paste: https://pinax.network/en/legal/privacy + +### Privacy + +You can attach a privacy policy URL such as: https://pinax.network/en/legal/privacy + +## Example Prompt Patterns + +These examples help illustrate how a GPT reasons over Token API data. + +### Wallet and Portfolio + +Get the total USD balance for a wallet across multiple chains, returning token name, symbol, balance, and price. + +### Trading Analysis + +Compare USDC and DAI liquidity across Uniswap and Curve. Return the top 5 pools by TVL. + +### Accounting + +List all ERC-20 transfers for this address in the last 30 days. Group by token and total incoming/outgoing volume. + +## Best Practices + +| Tip | Why It Matters | +| --------------------------------- | ---------------------------------------------------------------------- | +| Scope your GPT narrowly first | Simplifies debugging and validates schema integration. | +| Use clear role instructions | Helps the GPT choose the right endpoints and avoid assumptions. | +| Name endpoints explicitly | Improves routing accuracy when fetching balances, prices, or DEX data. | +| Combine with code | Enables custom parsing or logic for complex workflows. | +| Add Subgraph or Substream context | Provides richer analytics when combined with Token API data. | + +## FAQs & Resources + +- Builders Office Hours (October 23, 2025) +- Watch the full session: https://x.com/i/broadcasts/1mrGmBzBarNJy diff --git a/website/src/pages/ru/token-api/guides/upgrade-to-v1.mdx b/website/src/pages/ru/token-api/guides/upgrade-to-v1.mdx new file mode 100644 index 000000000000..e2a7ccf973fa --- /dev/null +++ b/website/src/pages/ru/token-api/guides/upgrade-to-v1.mdx @@ -0,0 +1,346 @@ +--- +title: Upgrade to v1 +--- + +This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. + +**Note** + +- `EVM` = Ethereum Virtual Machine + +Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). + +- `SVM` = Solana Virtual Machine + +Used to describe endpoints supporting Solana (currently the only SVM chain supported). + +## 🔑 Breaking Changes Summary + +### 1. API Versioning + +All endpoints now use the `/v1` prefix. + +**Before:** + +``` +GET /balances/evm +GET /nft/items/contract/:contract/token_id/:token_id +``` + +**After:** + +``` +GET /v1/evm/balances +GET /v1/evm/nft/items +``` + +### 2. Route Structure Reorganization + +#### 2.1 EVM Endpoints + +Consolidated under `/v1/evm/*` + +| Old Endpoint | New Endpoint | +| ------------------------------------------------------ | ----------------------------- | +| `/balances/evm` | `/v1/evm/balances` | +| `/historical/balances/evm` | `/v1/evm/balances/historical` | +| `/holders/evm/:contract` | `/v1/evm/holders` | +| `/tokens/evm/:contract` | `/v1/evm/tokens` | +| `/transfers/evm` | `/v1/evm/transfers` | +| `/pools/evm` | `/v1/evm/pools` | +| `/swaps/evm` | `/v1/evm/swaps` | +| `/dexes/evm` | `/v1/evm/dexes` | +| `/ohlc/prices/evm/:contract` | _(removed)_ | +| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | +| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | +| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | +| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | +| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | +| `/nft/activities/evm` | `/v1/evm/nft/transfers` | +| `/nft/sales/evm` | `/v1/evm/nft/sales` | + +**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. + +**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. + +--- + +#### 2.2 New EVM native balances endpoint + +Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. + +Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. + +--- + +#### 2.3 SVM Endpoints + +Consolidated under `/v1/svm/*` + +| Old Endpoint | New Endpoint | +| ------------------------ | ------------------------- | +| `/balances/svm` | `/v1/svm/balances` | +| `/balances/native/svm` | `/v1/svm/balances/native` | +| `/holders/svm/:contract` | `/v1/svm/holders` | +| `/tokens/svm/:mint` | `/v1/svm/tokens` | +| `/transfers/svm` | `/v1/svm/transfers` | +| `/pools/svm` | `/v1/svm/pools` | +| `/swaps/svm` | `/v1/svm/swaps` | +| `/dexes/svm` | `/v1/svm/dexes` | +| `/owner/svm/:account` | `/v1/svm/owner` | +| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | + +## 📝 Parameter Changes + +### 3. Path Parameters → Query Parameters + +All path parameters have been moved to query parameters. + +**Before:** + +```bash +GET /balances/evm/:address +GET /holders/evm/:contract +GET /nft/items/evm/contract/:contract/token_id/:token_id +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0x... +GET /v1/evm/holders?network=mainnet&contract=0x... +GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 +``` + +### 4. Standardized Parameter Naming + +All query parameters have been standardized to use snake_case naming convention. + +| Old Parameter | New Parameter | Notes | +| --- | --- | --- | +| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | +| `anyAddress` | `address` | Matches either `from` or `to` address | +| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | +| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | +| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | +| `endTime` | `end_time` | Default: `9999999999` | +| - | `start_block` | New parameter, default: `0` | +| - | `end_block` | New parameter, default: `9999999999` | +| - | `include_null_balances` | New parameter, default: `false` | +| `tx_hash` | `transaction_id` | - | +| `token` | `input_token`, `output_token` | More explicit for pool queries | +| `pool` | `amm_pool` | - | +| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | + +**Important:** The `network_id` parameter has been renamed to `network`. + +**Important:** `matic` network has been renamed to `polygon`. + +### 5. Batched Parameters + +Many parameters now support batching - accepting single values or comma-separated strings. + +**Supported Batched Parameters:** + +- `address`, `from_address`, `to_address` +- `contract`, `token_id` +- `factory`, `pool` +- `owner`, `token_account`, `mint` +- `transaction_id`, `signature` + +**Examples:** + +```console +## Single value +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 + +## Comma-separated, single parameter +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 + +## Repeated parameter values +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +### 6. New Parameters + +#### `include_null_balances` + +Added to balance endpoints to optionally include zero/null balances. + +```bash +?include_null_balances=true +``` + +**Default:** `false` + +## 🔄 Response Changes + +### 7. Pagination Changes + +Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. + +**Before:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2, + "next_page": 3, + "total_pages": 10 + }, + "total_results": 1234 +} +``` + +**After:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2 + } +} +``` + +**Removed fields:** + +- `next_page` +- `total_pages` +- `total_results` + +**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. + +### 8. Removed Parameters + +The following deprecated parameters have been removed: + +- `orderBy` - Results are now ordered by timestamp/block by default +- `orderDirection` - Always descending (newest first) + +### 9. Cached Queries + +Queries are now cached on the ClickHouse side for better performance. + +You can specifically request to not use the cache by setting the `Cache-Control` header to `no-cache`. + +#### Example + +**Cache** + +```console +$ curl -s 'https://token-api.thegraph.com/v1/...' | jq .statistics +{ + "bytes_read": 221, + "rows_read": 1, + "elapsed": 0.002212065 +} +``` + +**No cache** + +```console +$ curl -s 'http://localhost:8000/v1/...' --header 'Cache-Control: no-cache' | jq .statistics +{ + "bytes_read": 14621174348, + "rows_read": 223244390, + "elapsed": 0.971064066 +} +``` + +## 📚 Example Migrations + +### Example 1: Get Token Balances + +**Before:** + +```bash +GET /token/balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +### Example 2: Get NFT Items + +**Before:** + +```bash +GET /nft/items/evm/contract/0xbd3531da5cf5857e7cfaa92426877b022e612cf8/token_id/5712?network_id=mainnet +``` + +**After:** + +```bash +GET /v1/evm/nft/items?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&token_id=5712 +``` + +### Example 3: Get Token Transfers with Time Filter + +**Before:** + +```bash +GET /token/transfers/evm?network_id=mainnet&from=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&startTime=1735689600&endTime=1767225600 +``` + +**After:** + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&start_time=1735689600&end_time=1767225600 +``` + +### Example 4: Get NFT Transfer Activities + +**Before:** + +```bash +GET /nft/activities/evm?network_id=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&anyAddress=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +**After:** + +```bash +GET /v1/evm/nft/transfers?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +### Example 5: Get Pool OHLC Data + +**Before:** + +```bash +GET /token/ohlc/pools/evm/0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640?network_id=mainnet&interval=1h&startTime=1735689600 +``` + +**After:** + +```bash +GET /v1/evm/pools/ohlc?network=mainnet&pool=0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640&interval=1h&start_time=1735689600 +``` + +### Example 6: Batched Query (New Feature) + +Query balances for multiple contracts in a single request: + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +Query transfers from multiple addresses: + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xabc...,0xdef...,0x123...&start_time=1735689600 +``` + +## ⚠️ Important Notes + +1. **Migration Notes:** The old endpoints were deprecated and removed on **October 30, 2025**. Please ensure all integrations have been migrated to the new Token API v1 endpoints. + +2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. + +3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. + +4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/ru/token-api/upgrade-to-v1.mdx b/website/src/pages/ru/token-api/upgrade-to-v1.mdx deleted file mode 100644 index fbe09101eaa5..000000000000 --- a/website/src/pages/ru/token-api/upgrade-to-v1.mdx +++ /dev/null @@ -1,254 +0,0 @@ ---- -title: Upgrade to v1 ---- - -This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. - -**Note** - -- `EVM` = Ethereum Virtual Machine - -Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). - -- `SVM` = Solana Virtual Machine - -Used to describe endpoints supporting Solana (currently the only SVM chain supported). - -## 🔑 Breaking Changes Summary - -### 1. **API Versioning** - -All endpoints now use the `/v1` prefix. - -**Before:** - -``` -GET /balances/evm -GET /nft/items/contract/:contract/token_id/:token_id -``` - -**After:** - -``` -GET /v1/evm/balances -GET /v1/evm/nft/items -``` - -### 2. **Route Structure Reorganization** - -#### 2.1 EVM Endpoints - -Consolidated under `/v1/evm/*` - -| Old Endpoint | New Endpoint | -| ------------------------------------------------------ | ----------------------------- | -| `/balances/evm` | `/v1/evm/balances` | -| `/historical/balances/evm` | `/v1/evm/balances/historical` | -| `/holders/evm/:contract` | `/v1/evm/holders` | -| `/tokens/evm/:contract` | `/v1/evm/tokens` | -| `/transfers/evm` | `/v1/evm/transfers` | -| `/pools/evm` | `/v1/evm/pools` | -| `/swaps/evm` | `/v1/evm/swaps` | -| `/dexes/evm` | `/v1/evm/dexes` | -| `/ohlc/prices/evm/:contract` | _(removed)_ | -| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | -| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | -| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | -| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | -| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | -| `/nft/activities/evm` | `/v1/evm/nft/transfers` | -| `/nft/sales/evm` | `/v1/evm/nft/sales` | - -**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. - -**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. - ---- - -#### 2.2 New EVM native balances endpoint - -Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. - -Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. - ---- - -#### 2.3 SVM Endpoints - -Consolidated under `/v1/svm/*` - -| Old Endpoint | New Endpoint | -| ------------------------ | ------------------------- | -| `/balances/svm` | `/v1/svm/balances` | -| `/balances/native/svm` | `/v1/svm/balances/native` | -| `/holders/svm/:contract` | `/v1/svm/holders` | -| `/tokens/svm/:mint` | `/v1/svm/tokens` | -| `/transfers/svm` | `/v1/svm/transfers` | -| `/pools/svm` | `/v1/svm/pools` | -| `/swaps/svm` | `/v1/svm/swaps` | -| `/dexes/svm` | `/v1/svm/dexes` | -| `/owner/svm/:account` | `/v1/svm/owner` | -| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | - -## 📝 Parameter Changes - -### 3. **Path Parameters → Query Parameters** - -All path parameters have been moved to query parameters. - -**Before:** - -```bash -GET /balances/evm/:address -GET /holders/evm/:contract -GET /nft/items/evm/contract/:contract/token_id/:token_id -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0x... -GET /v1/evm/holders?network=mainnet&contract=0x... -GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 -``` - -### 4. **Standardized Parameter Naming** - -All query parameters have been standardized to use snake_case naming convention. - -| Old Parameter | New Parameter | Notes | -| --- | --- | --- | -| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | -| `anyAddress` | `address` | Matches either `from` or `to` address | -| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | -| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | -| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | -| `endTime` | `end_time` | Default: `9999999999` | -| - | `start_block` | New parameter, default: `0` | -| - | `end_block` | New parameter, default: `9999999999` | -| - | `include_null_balances` | New parameter, default: `false` | -| `tx_hash` | `transaction_id` | - | -| `token` | `input_token`, `output_token` | More explicit for pool queries | -| `pool` | `amm_pool` | - | -| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | - -**Important:** The `network_id` parameter has been renamed to `network`. - -**Important:** `matic` network has been renamed to `polygon`. - -### 5. **Batched Parameters** - -Many parameters now support batching - accepting single values or comma-separated strings. - -**Supported Batched Parameters:** - -- `address`, `from_address`, `to_address` -- `contract`, `token_id` -- `factory`, `pool` -- `owner`, `token_account`, `mint` -- `transaction_id`, `signature` - -**Examples:** - -```console -# Single value -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 - -# Comma-separated, single parameter -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 - -# Repeated parameter values -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -### 6. **New Parameters** - -#### `include_null_balances` - -Added to balance endpoints to optionally include zero/null balances. - -```bash -?include_null_balances=true -``` - -**Default:** `false` - -## 🔄 Response Changes - -### 7. **Pagination Changes** - -Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. - -**Before:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2, - "next_page": 3, - "total_pages": 10 - }, - "total_results": 1234 -} -``` - -**After:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2 - } -} -``` - -**Removed fields:** - -- `next_page` -- `total_pages` -- `total_results` - -**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. - -### 8. **Removed Parameters** - -The following deprecated parameters have been removed: - -- `orderBy` - Results are now ordered by timestamp/block by default -- `orderDirection` - Always descending (newest first) - -## 📚 Example Migrations - -### Old vs New: Get Token Balances - -**Before:** - -```bash -GET /balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -### New Feature: Batched Queries - -Query balances for multiple contracts in a single request: - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -## ⚠️ Important Notes - -1. **Backward Compatibility:** The old endpoints are deprecated and will be removed in the future. Migrate by **Oct 30, 2025**. - -2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. - -3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. - -4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/sv/index.json b/website/src/pages/sv/index.json index c587ea1d2cdd..d0cb7f764805 100644 --- a/website/src/pages/sv/index.json +++ b/website/src/pages/sv/index.json @@ -2,7 +2,7 @@ "title": "Home", "hero": { "title": "The Graph Docs", - "description": "The Graph is a blockchain data solution that powers applications, analytics, and AI on 90+ chains. The Graph's core products include the Token API for web3 apps, Subgraphs for indexing smart contracts, and Substreams for real-time and historical data streaming.", + "description": "The Graph is a blockchain data solution that powers applications, analytics, and AI on 80+ chains. The Graph's core products include the Token API for web3 apps, Subgraphs for indexing smart contracts, and Substreams for real-time and historical data streaming.", "cta1": "How The Graph works", "cta2": "Build your first subgraph" }, diff --git a/website/src/pages/sv/subgraphs/guides/_meta.js b/website/src/pages/sv/subgraphs/guides/_meta.js index fd5608dcceb2..1c081848ea08 100644 --- a/website/src/pages/sv/subgraphs/guides/_meta.js +++ b/website/src/pages/sv/subgraphs/guides/_meta.js @@ -2,7 +2,6 @@ export default { 'subgraph-composition': '', 'subgraph-debug-forking': '', near: '', - grafting: '', 'subgraph-uncrashable': '', 'transfer-to-the-graph': '', diff --git a/website/src/pages/sv/token-api/_meta.js b/website/src/pages/sv/token-api/_meta.js index a8624da52e7f..9588f70cec53 100644 --- a/website/src/pages/sv/token-api/_meta.js +++ b/website/src/pages/sv/token-api/_meta.js @@ -11,6 +11,6 @@ export default { 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', 'endpoint-pricing': '', + guides: titles['guides'] ?? '', faq: '', - 'upgrade-to-v1': '', } diff --git a/website/src/pages/sv/token-api/guides/_meta-titles.json b/website/src/pages/sv/token-api/guides/_meta-titles.json new file mode 100644 index 000000000000..cd93dcc0fc0b --- /dev/null +++ b/website/src/pages/sv/token-api/guides/_meta-titles.json @@ -0,0 +1,4 @@ +{ + "gpt": "Create Custom GPTS", + "upgrade-to-v1": "" +} diff --git a/website/src/pages/sv/token-api/guides/_meta.js b/website/src/pages/sv/token-api/guides/_meta.js new file mode 100644 index 000000000000..e5aaaadd78f2 --- /dev/null +++ b/website/src/pages/sv/token-api/guides/_meta.js @@ -0,0 +1,4 @@ +export default { + gpt: '', + 'upgrade-to-v1': '', +} diff --git a/website/src/pages/sv/token-api/guides/gpt.mdx b/website/src/pages/sv/token-api/guides/gpt.mdx new file mode 100644 index 000000000000..564d013dea20 --- /dev/null +++ b/website/src/pages/sv/token-api/guides/gpt.mdx @@ -0,0 +1,121 @@ +--- +title: How the Token API Powers Custom GPTs +sidebarTitle: Create Custom GPTs +--- + +## Overview + +The Token API is a pre-indexed blockchain data service that provides real-time access to token balances, metadata, prices, liquidity, and volume across multiple chains. Developers use its REST endpoints to build wallets, trading dashboards, DeFi analytics, and AI systems without maintaining their own indexing stack. Custom GPTs can connect directly to the Token API's OpenAPI schema. + +The Token API enables developers to build **Custom GPTs** to reason over live blockchain data inside ChatGPT that can reason over and respond with live blockchain data directly inside ChatGPT. + +## What the Token API Enables in Custom GPTs + +When a Custom GPT is wired to the Token API, it gains access to a machine-readable schema and authenticated endpoints. Developers can use this to: + +- **Query real-time onchain data**: Balances, token prices, liquidity, and transaction history. +- **Automate domain-specific tasks**: Portfolio tracking, accounting, reconciliation, and market analysis. +- **Power AI agents with verifiable blockchain context**: Use the same data sources dapps rely on. + +Because the Token API provides a machine-readable schema and authenticated requests, it serves as a structured data layer that enables GPT-5 agents to combine natural language reasoning with live onchain data from The Graph. + +## When to Use the Token API for Custom GPTs + +Use the Token API when your GPT needs repeatable, domain-specific behavior grounded in blockchain data. This is most effective when the GPT performs the same type of task frequently or enforces a workflow you define. For one-off or exploratory questions, standard ChatGPT prompts are sufficient. + +## Choosing a Use Case + +Start with a clear, narrow objective, then expand as needed. Common patterns include: + +- **Accounting GPT**: Onchain accounting, tax tagging, and portfolio reconciliation. +- **Trading GPT**: Liquidity, pricing, and volume analysis for trading strategies. +- **Protocol Tracking GPT**: Real-time monitoring of transaction activity and liquidity pools. + +A focused initial goal such as “Retrieve token balances and prices for a wallet” makes it easier to configure reliable behavior before adding complex workflows. + +## Requirements + +| Requirement | Description | +| ---------------------- | -------------------------------------------------------- | +| ChatGPT 5 | Custom GPT creation requires GPT-5 tier or Pro. | +| Token API Subscription | Sign up at [The Graph Market](https://thegraph.market./) | +| Token API Key | Available in your dashboard as the Authentication JWT. | + +## Setting Up a Custom GPT + +Below is an explanatory outline of what happens during setup. This section provides conceptual understanding. + +### Create Custom GPT + +1. Visit chat.openai.com/gpts in your browser. 2, Click Create (top right). +2. Under Configure (in the top left panel), set up your GPT's personality and scope. + +### Configure Your GPT + +You define the GPT's role, scope, and metadata so it knows what it is designed to do. This includes: + +- **Name and Description**: Helps users discover your GPT. + - For example: **Name**: Token Tracker GPT **Description**: An onchain analytics assistant that retrieves live token balances, prices, and liquidity data using The Graph's Token API. +- **Instructions**: Tells the GPT what tasks it should perform using the Token API. + - For example: You are a blockchain data assistant retrieving onchain token data from The Graph's Token API. Use endpoints to fetch balances, liquidity, and price history across EVM chains. Present results in tables with token symbols, prices, and USD values. +- **Knowledge**: Optional context files such as wallet references, accounting rules, or code snippets. +- **New Action**: At the bottom, click “Create new action” to connect your GPT to the Token API. + +### Connect the Token API + +To enable live blockchain queries inside ChatGPT, you connect the GPT to the Token API through: + +#### Authentication + +1. Set Authentication to API Key → Bearer. +2. Open [The Graph Market](https://thegraph.market./) and copy your Authentication JWT from your dashboard. +3. Paste the token into the ChatGPT prompt where the field shows [HIDDEN]. + +#### Schema + +1. Above the Schema box, click Import from URL. +2. Paste: https://token-api.thegraph.com/openapi +3. Click Import. You'll now see endpoints like: + - `getV1EvmTokens` + - `getV1EvmDexes` + - `getV1EvmBalances` +4. Click Test on one (for example `getV1EvmDexes`) to verify connection. + +##### Privacy + +1. At the bottom, under Privacy, paste: https://pinax.network/en/legal/privacy + +### Privacy + +You can attach a privacy policy URL such as: https://pinax.network/en/legal/privacy + +## Example Prompt Patterns + +These examples help illustrate how a GPT reasons over Token API data. + +### Wallet and Portfolio + +Get the total USD balance for a wallet across multiple chains, returning token name, symbol, balance, and price. + +### Trading Analysis + +Compare USDC and DAI liquidity across Uniswap and Curve. Return the top 5 pools by TVL. + +### Accounting + +List all ERC-20 transfers for this address in the last 30 days. Group by token and total incoming/outgoing volume. + +## Best Practices + +| Tip | Why It Matters | +| --------------------------------- | ---------------------------------------------------------------------- | +| Scope your GPT narrowly first | Simplifies debugging and validates schema integration. | +| Use clear role instructions | Helps the GPT choose the right endpoints and avoid assumptions. | +| Name endpoints explicitly | Improves routing accuracy when fetching balances, prices, or DEX data. | +| Combine with code | Enables custom parsing or logic for complex workflows. | +| Add Subgraph or Substream context | Provides richer analytics when combined with Token API data. | + +## FAQs & Resources + +- Builders Office Hours (October 23, 2025) +- Watch the full session: https://x.com/i/broadcasts/1mrGmBzBarNJy diff --git a/website/src/pages/sv/token-api/guides/upgrade-to-v1.mdx b/website/src/pages/sv/token-api/guides/upgrade-to-v1.mdx new file mode 100644 index 000000000000..e2a7ccf973fa --- /dev/null +++ b/website/src/pages/sv/token-api/guides/upgrade-to-v1.mdx @@ -0,0 +1,346 @@ +--- +title: Upgrade to v1 +--- + +This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. + +**Note** + +- `EVM` = Ethereum Virtual Machine + +Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). + +- `SVM` = Solana Virtual Machine + +Used to describe endpoints supporting Solana (currently the only SVM chain supported). + +## 🔑 Breaking Changes Summary + +### 1. API Versioning + +All endpoints now use the `/v1` prefix. + +**Before:** + +``` +GET /balances/evm +GET /nft/items/contract/:contract/token_id/:token_id +``` + +**After:** + +``` +GET /v1/evm/balances +GET /v1/evm/nft/items +``` + +### 2. Route Structure Reorganization + +#### 2.1 EVM Endpoints + +Consolidated under `/v1/evm/*` + +| Old Endpoint | New Endpoint | +| ------------------------------------------------------ | ----------------------------- | +| `/balances/evm` | `/v1/evm/balances` | +| `/historical/balances/evm` | `/v1/evm/balances/historical` | +| `/holders/evm/:contract` | `/v1/evm/holders` | +| `/tokens/evm/:contract` | `/v1/evm/tokens` | +| `/transfers/evm` | `/v1/evm/transfers` | +| `/pools/evm` | `/v1/evm/pools` | +| `/swaps/evm` | `/v1/evm/swaps` | +| `/dexes/evm` | `/v1/evm/dexes` | +| `/ohlc/prices/evm/:contract` | _(removed)_ | +| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | +| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | +| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | +| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | +| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | +| `/nft/activities/evm` | `/v1/evm/nft/transfers` | +| `/nft/sales/evm` | `/v1/evm/nft/sales` | + +**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. + +**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. + +--- + +#### 2.2 New EVM native balances endpoint + +Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. + +Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. + +--- + +#### 2.3 SVM Endpoints + +Consolidated under `/v1/svm/*` + +| Old Endpoint | New Endpoint | +| ------------------------ | ------------------------- | +| `/balances/svm` | `/v1/svm/balances` | +| `/balances/native/svm` | `/v1/svm/balances/native` | +| `/holders/svm/:contract` | `/v1/svm/holders` | +| `/tokens/svm/:mint` | `/v1/svm/tokens` | +| `/transfers/svm` | `/v1/svm/transfers` | +| `/pools/svm` | `/v1/svm/pools` | +| `/swaps/svm` | `/v1/svm/swaps` | +| `/dexes/svm` | `/v1/svm/dexes` | +| `/owner/svm/:account` | `/v1/svm/owner` | +| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | + +## 📝 Parameter Changes + +### 3. Path Parameters → Query Parameters + +All path parameters have been moved to query parameters. + +**Before:** + +```bash +GET /balances/evm/:address +GET /holders/evm/:contract +GET /nft/items/evm/contract/:contract/token_id/:token_id +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0x... +GET /v1/evm/holders?network=mainnet&contract=0x... +GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 +``` + +### 4. Standardized Parameter Naming + +All query parameters have been standardized to use snake_case naming convention. + +| Old Parameter | New Parameter | Notes | +| --- | --- | --- | +| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | +| `anyAddress` | `address` | Matches either `from` or `to` address | +| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | +| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | +| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | +| `endTime` | `end_time` | Default: `9999999999` | +| - | `start_block` | New parameter, default: `0` | +| - | `end_block` | New parameter, default: `9999999999` | +| - | `include_null_balances` | New parameter, default: `false` | +| `tx_hash` | `transaction_id` | - | +| `token` | `input_token`, `output_token` | More explicit for pool queries | +| `pool` | `amm_pool` | - | +| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | + +**Important:** The `network_id` parameter has been renamed to `network`. + +**Important:** `matic` network has been renamed to `polygon`. + +### 5. Batched Parameters + +Many parameters now support batching - accepting single values or comma-separated strings. + +**Supported Batched Parameters:** + +- `address`, `from_address`, `to_address` +- `contract`, `token_id` +- `factory`, `pool` +- `owner`, `token_account`, `mint` +- `transaction_id`, `signature` + +**Examples:** + +```console +## Single value +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 + +## Comma-separated, single parameter +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 + +## Repeated parameter values +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +### 6. New Parameters + +#### `include_null_balances` + +Added to balance endpoints to optionally include zero/null balances. + +```bash +?include_null_balances=true +``` + +**Default:** `false` + +## 🔄 Response Changes + +### 7. Pagination Changes + +Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. + +**Before:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2, + "next_page": 3, + "total_pages": 10 + }, + "total_results": 1234 +} +``` + +**After:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2 + } +} +``` + +**Removed fields:** + +- `next_page` +- `total_pages` +- `total_results` + +**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. + +### 8. Removed Parameters + +The following deprecated parameters have been removed: + +- `orderBy` - Results are now ordered by timestamp/block by default +- `orderDirection` - Always descending (newest first) + +### 9. Cached Queries + +Queries are now cached on the ClickHouse side for better performance. + +You can specifically request to not use the cache by setting the `Cache-Control` header to `no-cache`. + +#### Example + +**Cache** + +```console +$ curl -s 'https://token-api.thegraph.com/v1/...' | jq .statistics +{ + "bytes_read": 221, + "rows_read": 1, + "elapsed": 0.002212065 +} +``` + +**No cache** + +```console +$ curl -s 'http://localhost:8000/v1/...' --header 'Cache-Control: no-cache' | jq .statistics +{ + "bytes_read": 14621174348, + "rows_read": 223244390, + "elapsed": 0.971064066 +} +``` + +## 📚 Example Migrations + +### Example 1: Get Token Balances + +**Before:** + +```bash +GET /token/balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +### Example 2: Get NFT Items + +**Before:** + +```bash +GET /nft/items/evm/contract/0xbd3531da5cf5857e7cfaa92426877b022e612cf8/token_id/5712?network_id=mainnet +``` + +**After:** + +```bash +GET /v1/evm/nft/items?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&token_id=5712 +``` + +### Example 3: Get Token Transfers with Time Filter + +**Before:** + +```bash +GET /token/transfers/evm?network_id=mainnet&from=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&startTime=1735689600&endTime=1767225600 +``` + +**After:** + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&start_time=1735689600&end_time=1767225600 +``` + +### Example 4: Get NFT Transfer Activities + +**Before:** + +```bash +GET /nft/activities/evm?network_id=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&anyAddress=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +**After:** + +```bash +GET /v1/evm/nft/transfers?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +### Example 5: Get Pool OHLC Data + +**Before:** + +```bash +GET /token/ohlc/pools/evm/0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640?network_id=mainnet&interval=1h&startTime=1735689600 +``` + +**After:** + +```bash +GET /v1/evm/pools/ohlc?network=mainnet&pool=0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640&interval=1h&start_time=1735689600 +``` + +### Example 6: Batched Query (New Feature) + +Query balances for multiple contracts in a single request: + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +Query transfers from multiple addresses: + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xabc...,0xdef...,0x123...&start_time=1735689600 +``` + +## ⚠️ Important Notes + +1. **Migration Notes:** The old endpoints were deprecated and removed on **October 30, 2025**. Please ensure all integrations have been migrated to the new Token API v1 endpoints. + +2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. + +3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. + +4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/sv/token-api/upgrade-to-v1.mdx b/website/src/pages/sv/token-api/upgrade-to-v1.mdx deleted file mode 100644 index fbe09101eaa5..000000000000 --- a/website/src/pages/sv/token-api/upgrade-to-v1.mdx +++ /dev/null @@ -1,254 +0,0 @@ ---- -title: Upgrade to v1 ---- - -This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. - -**Note** - -- `EVM` = Ethereum Virtual Machine - -Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). - -- `SVM` = Solana Virtual Machine - -Used to describe endpoints supporting Solana (currently the only SVM chain supported). - -## 🔑 Breaking Changes Summary - -### 1. **API Versioning** - -All endpoints now use the `/v1` prefix. - -**Before:** - -``` -GET /balances/evm -GET /nft/items/contract/:contract/token_id/:token_id -``` - -**After:** - -``` -GET /v1/evm/balances -GET /v1/evm/nft/items -``` - -### 2. **Route Structure Reorganization** - -#### 2.1 EVM Endpoints - -Consolidated under `/v1/evm/*` - -| Old Endpoint | New Endpoint | -| ------------------------------------------------------ | ----------------------------- | -| `/balances/evm` | `/v1/evm/balances` | -| `/historical/balances/evm` | `/v1/evm/balances/historical` | -| `/holders/evm/:contract` | `/v1/evm/holders` | -| `/tokens/evm/:contract` | `/v1/evm/tokens` | -| `/transfers/evm` | `/v1/evm/transfers` | -| `/pools/evm` | `/v1/evm/pools` | -| `/swaps/evm` | `/v1/evm/swaps` | -| `/dexes/evm` | `/v1/evm/dexes` | -| `/ohlc/prices/evm/:contract` | _(removed)_ | -| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | -| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | -| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | -| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | -| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | -| `/nft/activities/evm` | `/v1/evm/nft/transfers` | -| `/nft/sales/evm` | `/v1/evm/nft/sales` | - -**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. - -**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. - ---- - -#### 2.2 New EVM native balances endpoint - -Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. - -Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. - ---- - -#### 2.3 SVM Endpoints - -Consolidated under `/v1/svm/*` - -| Old Endpoint | New Endpoint | -| ------------------------ | ------------------------- | -| `/balances/svm` | `/v1/svm/balances` | -| `/balances/native/svm` | `/v1/svm/balances/native` | -| `/holders/svm/:contract` | `/v1/svm/holders` | -| `/tokens/svm/:mint` | `/v1/svm/tokens` | -| `/transfers/svm` | `/v1/svm/transfers` | -| `/pools/svm` | `/v1/svm/pools` | -| `/swaps/svm` | `/v1/svm/swaps` | -| `/dexes/svm` | `/v1/svm/dexes` | -| `/owner/svm/:account` | `/v1/svm/owner` | -| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | - -## 📝 Parameter Changes - -### 3. **Path Parameters → Query Parameters** - -All path parameters have been moved to query parameters. - -**Before:** - -```bash -GET /balances/evm/:address -GET /holders/evm/:contract -GET /nft/items/evm/contract/:contract/token_id/:token_id -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0x... -GET /v1/evm/holders?network=mainnet&contract=0x... -GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 -``` - -### 4. **Standardized Parameter Naming** - -All query parameters have been standardized to use snake_case naming convention. - -| Old Parameter | New Parameter | Notes | -| --- | --- | --- | -| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | -| `anyAddress` | `address` | Matches either `from` or `to` address | -| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | -| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | -| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | -| `endTime` | `end_time` | Default: `9999999999` | -| - | `start_block` | New parameter, default: `0` | -| - | `end_block` | New parameter, default: `9999999999` | -| - | `include_null_balances` | New parameter, default: `false` | -| `tx_hash` | `transaction_id` | - | -| `token` | `input_token`, `output_token` | More explicit for pool queries | -| `pool` | `amm_pool` | - | -| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | - -**Important:** The `network_id` parameter has been renamed to `network`. - -**Important:** `matic` network has been renamed to `polygon`. - -### 5. **Batched Parameters** - -Many parameters now support batching - accepting single values or comma-separated strings. - -**Supported Batched Parameters:** - -- `address`, `from_address`, `to_address` -- `contract`, `token_id` -- `factory`, `pool` -- `owner`, `token_account`, `mint` -- `transaction_id`, `signature` - -**Examples:** - -```console -# Single value -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 - -# Comma-separated, single parameter -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 - -# Repeated parameter values -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -### 6. **New Parameters** - -#### `include_null_balances` - -Added to balance endpoints to optionally include zero/null balances. - -```bash -?include_null_balances=true -``` - -**Default:** `false` - -## 🔄 Response Changes - -### 7. **Pagination Changes** - -Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. - -**Before:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2, - "next_page": 3, - "total_pages": 10 - }, - "total_results": 1234 -} -``` - -**After:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2 - } -} -``` - -**Removed fields:** - -- `next_page` -- `total_pages` -- `total_results` - -**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. - -### 8. **Removed Parameters** - -The following deprecated parameters have been removed: - -- `orderBy` - Results are now ordered by timestamp/block by default -- `orderDirection` - Always descending (newest first) - -## 📚 Example Migrations - -### Old vs New: Get Token Balances - -**Before:** - -```bash -GET /balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -### New Feature: Batched Queries - -Query balances for multiple contracts in a single request: - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -## ⚠️ Important Notes - -1. **Backward Compatibility:** The old endpoints are deprecated and will be removed in the future. Migrate by **Oct 30, 2025**. - -2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. - -3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. - -4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/tr/index.json b/website/src/pages/tr/index.json index d80ecab9206f..454d6b364941 100644 --- a/website/src/pages/tr/index.json +++ b/website/src/pages/tr/index.json @@ -2,7 +2,7 @@ "title": "Ana sayfa", "hero": { "title": "The Graph Dokümantasyonu", - "description": "The Graph is a blockchain data solution that powers applications, analytics, and AI on 90+ chains. The Graph's core products include the Token API for web3 apps, Subgraphs for indexing smart contracts, and Substreams for real-time and historical data streaming.", + "description": "The Graph is a blockchain data solution that powers applications, analytics, and AI on 80+ chains. The Graph's core products include the Token API for web3 apps, Subgraphs for indexing smart contracts, and Substreams for real-time and historical data streaming.", "cta1": "The Graph nasıl çalışır?", "cta2": "İlk subgraph'inizi oluşturun" }, diff --git a/website/src/pages/tr/subgraphs/guides/_meta.js b/website/src/pages/tr/subgraphs/guides/_meta.js index fd5608dcceb2..1c081848ea08 100644 --- a/website/src/pages/tr/subgraphs/guides/_meta.js +++ b/website/src/pages/tr/subgraphs/guides/_meta.js @@ -2,7 +2,6 @@ export default { 'subgraph-composition': '', 'subgraph-debug-forking': '', near: '', - grafting: '', 'subgraph-uncrashable': '', 'transfer-to-the-graph': '', diff --git a/website/src/pages/tr/token-api/_meta.js b/website/src/pages/tr/token-api/_meta.js index a8624da52e7f..9588f70cec53 100644 --- a/website/src/pages/tr/token-api/_meta.js +++ b/website/src/pages/tr/token-api/_meta.js @@ -11,6 +11,6 @@ export default { 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', 'endpoint-pricing': '', + guides: titles['guides'] ?? '', faq: '', - 'upgrade-to-v1': '', } diff --git a/website/src/pages/tr/token-api/guides/_meta-titles.json b/website/src/pages/tr/token-api/guides/_meta-titles.json new file mode 100644 index 000000000000..cd93dcc0fc0b --- /dev/null +++ b/website/src/pages/tr/token-api/guides/_meta-titles.json @@ -0,0 +1,4 @@ +{ + "gpt": "Create Custom GPTS", + "upgrade-to-v1": "" +} diff --git a/website/src/pages/tr/token-api/guides/_meta.js b/website/src/pages/tr/token-api/guides/_meta.js new file mode 100644 index 000000000000..e5aaaadd78f2 --- /dev/null +++ b/website/src/pages/tr/token-api/guides/_meta.js @@ -0,0 +1,4 @@ +export default { + gpt: '', + 'upgrade-to-v1': '', +} diff --git a/website/src/pages/tr/token-api/guides/gpt.mdx b/website/src/pages/tr/token-api/guides/gpt.mdx new file mode 100644 index 000000000000..564d013dea20 --- /dev/null +++ b/website/src/pages/tr/token-api/guides/gpt.mdx @@ -0,0 +1,121 @@ +--- +title: How the Token API Powers Custom GPTs +sidebarTitle: Create Custom GPTs +--- + +## Overview + +The Token API is a pre-indexed blockchain data service that provides real-time access to token balances, metadata, prices, liquidity, and volume across multiple chains. Developers use its REST endpoints to build wallets, trading dashboards, DeFi analytics, and AI systems without maintaining their own indexing stack. Custom GPTs can connect directly to the Token API's OpenAPI schema. + +The Token API enables developers to build **Custom GPTs** to reason over live blockchain data inside ChatGPT that can reason over and respond with live blockchain data directly inside ChatGPT. + +## What the Token API Enables in Custom GPTs + +When a Custom GPT is wired to the Token API, it gains access to a machine-readable schema and authenticated endpoints. Developers can use this to: + +- **Query real-time onchain data**: Balances, token prices, liquidity, and transaction history. +- **Automate domain-specific tasks**: Portfolio tracking, accounting, reconciliation, and market analysis. +- **Power AI agents with verifiable blockchain context**: Use the same data sources dapps rely on. + +Because the Token API provides a machine-readable schema and authenticated requests, it serves as a structured data layer that enables GPT-5 agents to combine natural language reasoning with live onchain data from The Graph. + +## When to Use the Token API for Custom GPTs + +Use the Token API when your GPT needs repeatable, domain-specific behavior grounded in blockchain data. This is most effective when the GPT performs the same type of task frequently or enforces a workflow you define. For one-off or exploratory questions, standard ChatGPT prompts are sufficient. + +## Choosing a Use Case + +Start with a clear, narrow objective, then expand as needed. Common patterns include: + +- **Accounting GPT**: Onchain accounting, tax tagging, and portfolio reconciliation. +- **Trading GPT**: Liquidity, pricing, and volume analysis for trading strategies. +- **Protocol Tracking GPT**: Real-time monitoring of transaction activity and liquidity pools. + +A focused initial goal such as “Retrieve token balances and prices for a wallet” makes it easier to configure reliable behavior before adding complex workflows. + +## Requirements + +| Requirement | Description | +| ---------------------- | -------------------------------------------------------- | +| ChatGPT 5 | Custom GPT creation requires GPT-5 tier or Pro. | +| Token API Subscription | Sign up at [The Graph Market](https://thegraph.market./) | +| Token API Key | Available in your dashboard as the Authentication JWT. | + +## Setting Up a Custom GPT + +Below is an explanatory outline of what happens during setup. This section provides conceptual understanding. + +### Create Custom GPT + +1. Visit chat.openai.com/gpts in your browser. 2, Click Create (top right). +2. Under Configure (in the top left panel), set up your GPT's personality and scope. + +### Configure Your GPT + +You define the GPT's role, scope, and metadata so it knows what it is designed to do. This includes: + +- **Name and Description**: Helps users discover your GPT. + - For example: **Name**: Token Tracker GPT **Description**: An onchain analytics assistant that retrieves live token balances, prices, and liquidity data using The Graph's Token API. +- **Instructions**: Tells the GPT what tasks it should perform using the Token API. + - For example: You are a blockchain data assistant retrieving onchain token data from The Graph's Token API. Use endpoints to fetch balances, liquidity, and price history across EVM chains. Present results in tables with token symbols, prices, and USD values. +- **Knowledge**: Optional context files such as wallet references, accounting rules, or code snippets. +- **New Action**: At the bottom, click “Create new action” to connect your GPT to the Token API. + +### Connect the Token API + +To enable live blockchain queries inside ChatGPT, you connect the GPT to the Token API through: + +#### Authentication + +1. Set Authentication to API Key → Bearer. +2. Open [The Graph Market](https://thegraph.market./) and copy your Authentication JWT from your dashboard. +3. Paste the token into the ChatGPT prompt where the field shows [HIDDEN]. + +#### Schema + +1. Above the Schema box, click Import from URL. +2. Paste: https://token-api.thegraph.com/openapi +3. Click Import. You'll now see endpoints like: + - `getV1EvmTokens` + - `getV1EvmDexes` + - `getV1EvmBalances` +4. Click Test on one (for example `getV1EvmDexes`) to verify connection. + +##### Privacy + +1. At the bottom, under Privacy, paste: https://pinax.network/en/legal/privacy + +### Privacy + +You can attach a privacy policy URL such as: https://pinax.network/en/legal/privacy + +## Example Prompt Patterns + +These examples help illustrate how a GPT reasons over Token API data. + +### Wallet and Portfolio + +Get the total USD balance for a wallet across multiple chains, returning token name, symbol, balance, and price. + +### Trading Analysis + +Compare USDC and DAI liquidity across Uniswap and Curve. Return the top 5 pools by TVL. + +### Accounting + +List all ERC-20 transfers for this address in the last 30 days. Group by token and total incoming/outgoing volume. + +## Best Practices + +| Tip | Why It Matters | +| --------------------------------- | ---------------------------------------------------------------------- | +| Scope your GPT narrowly first | Simplifies debugging and validates schema integration. | +| Use clear role instructions | Helps the GPT choose the right endpoints and avoid assumptions. | +| Name endpoints explicitly | Improves routing accuracy when fetching balances, prices, or DEX data. | +| Combine with code | Enables custom parsing or logic for complex workflows. | +| Add Subgraph or Substream context | Provides richer analytics when combined with Token API data. | + +## FAQs & Resources + +- Builders Office Hours (October 23, 2025) +- Watch the full session: https://x.com/i/broadcasts/1mrGmBzBarNJy diff --git a/website/src/pages/tr/token-api/guides/upgrade-to-v1.mdx b/website/src/pages/tr/token-api/guides/upgrade-to-v1.mdx new file mode 100644 index 000000000000..e2a7ccf973fa --- /dev/null +++ b/website/src/pages/tr/token-api/guides/upgrade-to-v1.mdx @@ -0,0 +1,346 @@ +--- +title: Upgrade to v1 +--- + +This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. + +**Note** + +- `EVM` = Ethereum Virtual Machine + +Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). + +- `SVM` = Solana Virtual Machine + +Used to describe endpoints supporting Solana (currently the only SVM chain supported). + +## 🔑 Breaking Changes Summary + +### 1. API Versioning + +All endpoints now use the `/v1` prefix. + +**Before:** + +``` +GET /balances/evm +GET /nft/items/contract/:contract/token_id/:token_id +``` + +**After:** + +``` +GET /v1/evm/balances +GET /v1/evm/nft/items +``` + +### 2. Route Structure Reorganization + +#### 2.1 EVM Endpoints + +Consolidated under `/v1/evm/*` + +| Old Endpoint | New Endpoint | +| ------------------------------------------------------ | ----------------------------- | +| `/balances/evm` | `/v1/evm/balances` | +| `/historical/balances/evm` | `/v1/evm/balances/historical` | +| `/holders/evm/:contract` | `/v1/evm/holders` | +| `/tokens/evm/:contract` | `/v1/evm/tokens` | +| `/transfers/evm` | `/v1/evm/transfers` | +| `/pools/evm` | `/v1/evm/pools` | +| `/swaps/evm` | `/v1/evm/swaps` | +| `/dexes/evm` | `/v1/evm/dexes` | +| `/ohlc/prices/evm/:contract` | _(removed)_ | +| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | +| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | +| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | +| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | +| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | +| `/nft/activities/evm` | `/v1/evm/nft/transfers` | +| `/nft/sales/evm` | `/v1/evm/nft/sales` | + +**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. + +**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. + +--- + +#### 2.2 New EVM native balances endpoint + +Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. + +Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. + +--- + +#### 2.3 SVM Endpoints + +Consolidated under `/v1/svm/*` + +| Old Endpoint | New Endpoint | +| ------------------------ | ------------------------- | +| `/balances/svm` | `/v1/svm/balances` | +| `/balances/native/svm` | `/v1/svm/balances/native` | +| `/holders/svm/:contract` | `/v1/svm/holders` | +| `/tokens/svm/:mint` | `/v1/svm/tokens` | +| `/transfers/svm` | `/v1/svm/transfers` | +| `/pools/svm` | `/v1/svm/pools` | +| `/swaps/svm` | `/v1/svm/swaps` | +| `/dexes/svm` | `/v1/svm/dexes` | +| `/owner/svm/:account` | `/v1/svm/owner` | +| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | + +## 📝 Parameter Changes + +### 3. Path Parameters → Query Parameters + +All path parameters have been moved to query parameters. + +**Before:** + +```bash +GET /balances/evm/:address +GET /holders/evm/:contract +GET /nft/items/evm/contract/:contract/token_id/:token_id +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0x... +GET /v1/evm/holders?network=mainnet&contract=0x... +GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 +``` + +### 4. Standardized Parameter Naming + +All query parameters have been standardized to use snake_case naming convention. + +| Old Parameter | New Parameter | Notes | +| --- | --- | --- | +| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | +| `anyAddress` | `address` | Matches either `from` or `to` address | +| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | +| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | +| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | +| `endTime` | `end_time` | Default: `9999999999` | +| - | `start_block` | New parameter, default: `0` | +| - | `end_block` | New parameter, default: `9999999999` | +| - | `include_null_balances` | New parameter, default: `false` | +| `tx_hash` | `transaction_id` | - | +| `token` | `input_token`, `output_token` | More explicit for pool queries | +| `pool` | `amm_pool` | - | +| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | + +**Important:** The `network_id` parameter has been renamed to `network`. + +**Important:** `matic` network has been renamed to `polygon`. + +### 5. Batched Parameters + +Many parameters now support batching - accepting single values or comma-separated strings. + +**Supported Batched Parameters:** + +- `address`, `from_address`, `to_address` +- `contract`, `token_id` +- `factory`, `pool` +- `owner`, `token_account`, `mint` +- `transaction_id`, `signature` + +**Examples:** + +```console +## Single value +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 + +## Comma-separated, single parameter +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 + +## Repeated parameter values +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +### 6. New Parameters + +#### `include_null_balances` + +Added to balance endpoints to optionally include zero/null balances. + +```bash +?include_null_balances=true +``` + +**Default:** `false` + +## 🔄 Response Changes + +### 7. Pagination Changes + +Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. + +**Before:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2, + "next_page": 3, + "total_pages": 10 + }, + "total_results": 1234 +} +``` + +**After:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2 + } +} +``` + +**Removed fields:** + +- `next_page` +- `total_pages` +- `total_results` + +**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. + +### 8. Removed Parameters + +The following deprecated parameters have been removed: + +- `orderBy` - Results are now ordered by timestamp/block by default +- `orderDirection` - Always descending (newest first) + +### 9. Cached Queries + +Queries are now cached on the ClickHouse side for better performance. + +You can specifically request to not use the cache by setting the `Cache-Control` header to `no-cache`. + +#### Example + +**Cache** + +```console +$ curl -s 'https://token-api.thegraph.com/v1/...' | jq .statistics +{ + "bytes_read": 221, + "rows_read": 1, + "elapsed": 0.002212065 +} +``` + +**No cache** + +```console +$ curl -s 'http://localhost:8000/v1/...' --header 'Cache-Control: no-cache' | jq .statistics +{ + "bytes_read": 14621174348, + "rows_read": 223244390, + "elapsed": 0.971064066 +} +``` + +## 📚 Example Migrations + +### Example 1: Get Token Balances + +**Before:** + +```bash +GET /token/balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +### Example 2: Get NFT Items + +**Before:** + +```bash +GET /nft/items/evm/contract/0xbd3531da5cf5857e7cfaa92426877b022e612cf8/token_id/5712?network_id=mainnet +``` + +**After:** + +```bash +GET /v1/evm/nft/items?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&token_id=5712 +``` + +### Example 3: Get Token Transfers with Time Filter + +**Before:** + +```bash +GET /token/transfers/evm?network_id=mainnet&from=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&startTime=1735689600&endTime=1767225600 +``` + +**After:** + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&start_time=1735689600&end_time=1767225600 +``` + +### Example 4: Get NFT Transfer Activities + +**Before:** + +```bash +GET /nft/activities/evm?network_id=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&anyAddress=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +**After:** + +```bash +GET /v1/evm/nft/transfers?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +### Example 5: Get Pool OHLC Data + +**Before:** + +```bash +GET /token/ohlc/pools/evm/0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640?network_id=mainnet&interval=1h&startTime=1735689600 +``` + +**After:** + +```bash +GET /v1/evm/pools/ohlc?network=mainnet&pool=0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640&interval=1h&start_time=1735689600 +``` + +### Example 6: Batched Query (New Feature) + +Query balances for multiple contracts in a single request: + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +Query transfers from multiple addresses: + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xabc...,0xdef...,0x123...&start_time=1735689600 +``` + +## ⚠️ Important Notes + +1. **Migration Notes:** The old endpoints were deprecated and removed on **October 30, 2025**. Please ensure all integrations have been migrated to the new Token API v1 endpoints. + +2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. + +3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. + +4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/tr/token-api/upgrade-to-v1.mdx b/website/src/pages/tr/token-api/upgrade-to-v1.mdx deleted file mode 100644 index fbe09101eaa5..000000000000 --- a/website/src/pages/tr/token-api/upgrade-to-v1.mdx +++ /dev/null @@ -1,254 +0,0 @@ ---- -title: Upgrade to v1 ---- - -This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. - -**Note** - -- `EVM` = Ethereum Virtual Machine - -Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). - -- `SVM` = Solana Virtual Machine - -Used to describe endpoints supporting Solana (currently the only SVM chain supported). - -## 🔑 Breaking Changes Summary - -### 1. **API Versioning** - -All endpoints now use the `/v1` prefix. - -**Before:** - -``` -GET /balances/evm -GET /nft/items/contract/:contract/token_id/:token_id -``` - -**After:** - -``` -GET /v1/evm/balances -GET /v1/evm/nft/items -``` - -### 2. **Route Structure Reorganization** - -#### 2.1 EVM Endpoints - -Consolidated under `/v1/evm/*` - -| Old Endpoint | New Endpoint | -| ------------------------------------------------------ | ----------------------------- | -| `/balances/evm` | `/v1/evm/balances` | -| `/historical/balances/evm` | `/v1/evm/balances/historical` | -| `/holders/evm/:contract` | `/v1/evm/holders` | -| `/tokens/evm/:contract` | `/v1/evm/tokens` | -| `/transfers/evm` | `/v1/evm/transfers` | -| `/pools/evm` | `/v1/evm/pools` | -| `/swaps/evm` | `/v1/evm/swaps` | -| `/dexes/evm` | `/v1/evm/dexes` | -| `/ohlc/prices/evm/:contract` | _(removed)_ | -| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | -| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | -| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | -| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | -| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | -| `/nft/activities/evm` | `/v1/evm/nft/transfers` | -| `/nft/sales/evm` | `/v1/evm/nft/sales` | - -**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. - -**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. - ---- - -#### 2.2 New EVM native balances endpoint - -Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. - -Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. - ---- - -#### 2.3 SVM Endpoints - -Consolidated under `/v1/svm/*` - -| Old Endpoint | New Endpoint | -| ------------------------ | ------------------------- | -| `/balances/svm` | `/v1/svm/balances` | -| `/balances/native/svm` | `/v1/svm/balances/native` | -| `/holders/svm/:contract` | `/v1/svm/holders` | -| `/tokens/svm/:mint` | `/v1/svm/tokens` | -| `/transfers/svm` | `/v1/svm/transfers` | -| `/pools/svm` | `/v1/svm/pools` | -| `/swaps/svm` | `/v1/svm/swaps` | -| `/dexes/svm` | `/v1/svm/dexes` | -| `/owner/svm/:account` | `/v1/svm/owner` | -| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | - -## 📝 Parameter Changes - -### 3. **Path Parameters → Query Parameters** - -All path parameters have been moved to query parameters. - -**Before:** - -```bash -GET /balances/evm/:address -GET /holders/evm/:contract -GET /nft/items/evm/contract/:contract/token_id/:token_id -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0x... -GET /v1/evm/holders?network=mainnet&contract=0x... -GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 -``` - -### 4. **Standardized Parameter Naming** - -All query parameters have been standardized to use snake_case naming convention. - -| Old Parameter | New Parameter | Notes | -| --- | --- | --- | -| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | -| `anyAddress` | `address` | Matches either `from` or `to` address | -| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | -| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | -| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | -| `endTime` | `end_time` | Default: `9999999999` | -| - | `start_block` | New parameter, default: `0` | -| - | `end_block` | New parameter, default: `9999999999` | -| - | `include_null_balances` | New parameter, default: `false` | -| `tx_hash` | `transaction_id` | - | -| `token` | `input_token`, `output_token` | More explicit for pool queries | -| `pool` | `amm_pool` | - | -| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | - -**Important:** The `network_id` parameter has been renamed to `network`. - -**Important:** `matic` network has been renamed to `polygon`. - -### 5. **Batched Parameters** - -Many parameters now support batching - accepting single values or comma-separated strings. - -**Supported Batched Parameters:** - -- `address`, `from_address`, `to_address` -- `contract`, `token_id` -- `factory`, `pool` -- `owner`, `token_account`, `mint` -- `transaction_id`, `signature` - -**Examples:** - -```console -# Single value -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 - -# Comma-separated, single parameter -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 - -# Repeated parameter values -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -### 6. **New Parameters** - -#### `include_null_balances` - -Added to balance endpoints to optionally include zero/null balances. - -```bash -?include_null_balances=true -``` - -**Default:** `false` - -## 🔄 Response Changes - -### 7. **Pagination Changes** - -Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. - -**Before:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2, - "next_page": 3, - "total_pages": 10 - }, - "total_results": 1234 -} -``` - -**After:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2 - } -} -``` - -**Removed fields:** - -- `next_page` -- `total_pages` -- `total_results` - -**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. - -### 8. **Removed Parameters** - -The following deprecated parameters have been removed: - -- `orderBy` - Results are now ordered by timestamp/block by default -- `orderDirection` - Always descending (newest first) - -## 📚 Example Migrations - -### Old vs New: Get Token Balances - -**Before:** - -```bash -GET /balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -### New Feature: Batched Queries - -Query balances for multiple contracts in a single request: - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -## ⚠️ Important Notes - -1. **Backward Compatibility:** The old endpoints are deprecated and will be removed in the future. Migrate by **Oct 30, 2025**. - -2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. - -3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. - -4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/uk/index.json b/website/src/pages/uk/index.json index c5adce6b66b2..cfcd6e75ac1d 100644 --- a/website/src/pages/uk/index.json +++ b/website/src/pages/uk/index.json @@ -2,7 +2,7 @@ "title": "Home", "hero": { "title": "The Graph Docs", - "description": "The Graph is a blockchain data solution that powers applications, analytics, and AI on 90+ chains. The Graph's core products include the Token API for web3 apps, Subgraphs for indexing smart contracts, and Substreams for real-time and historical data streaming.", + "description": "The Graph is a blockchain data solution that powers applications, analytics, and AI on 80+ chains. The Graph's core products include the Token API for web3 apps, Subgraphs for indexing smart contracts, and Substreams for real-time and historical data streaming.", "cta1": "How The Graph works", "cta2": "Build your first subgraph" }, diff --git a/website/src/pages/uk/subgraphs/guides/_meta.js b/website/src/pages/uk/subgraphs/guides/_meta.js index fd5608dcceb2..1c081848ea08 100644 --- a/website/src/pages/uk/subgraphs/guides/_meta.js +++ b/website/src/pages/uk/subgraphs/guides/_meta.js @@ -2,7 +2,6 @@ export default { 'subgraph-composition': '', 'subgraph-debug-forking': '', near: '', - grafting: '', 'subgraph-uncrashable': '', 'transfer-to-the-graph': '', diff --git a/website/src/pages/uk/token-api/_meta.js b/website/src/pages/uk/token-api/_meta.js index a8624da52e7f..9588f70cec53 100644 --- a/website/src/pages/uk/token-api/_meta.js +++ b/website/src/pages/uk/token-api/_meta.js @@ -11,6 +11,6 @@ export default { 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', 'endpoint-pricing': '', + guides: titles['guides'] ?? '', faq: '', - 'upgrade-to-v1': '', } diff --git a/website/src/pages/uk/token-api/guides/_meta-titles.json b/website/src/pages/uk/token-api/guides/_meta-titles.json new file mode 100644 index 000000000000..cd93dcc0fc0b --- /dev/null +++ b/website/src/pages/uk/token-api/guides/_meta-titles.json @@ -0,0 +1,4 @@ +{ + "gpt": "Create Custom GPTS", + "upgrade-to-v1": "" +} diff --git a/website/src/pages/uk/token-api/guides/_meta.js b/website/src/pages/uk/token-api/guides/_meta.js new file mode 100644 index 000000000000..e5aaaadd78f2 --- /dev/null +++ b/website/src/pages/uk/token-api/guides/_meta.js @@ -0,0 +1,4 @@ +export default { + gpt: '', + 'upgrade-to-v1': '', +} diff --git a/website/src/pages/uk/token-api/guides/gpt.mdx b/website/src/pages/uk/token-api/guides/gpt.mdx new file mode 100644 index 000000000000..564d013dea20 --- /dev/null +++ b/website/src/pages/uk/token-api/guides/gpt.mdx @@ -0,0 +1,121 @@ +--- +title: How the Token API Powers Custom GPTs +sidebarTitle: Create Custom GPTs +--- + +## Overview + +The Token API is a pre-indexed blockchain data service that provides real-time access to token balances, metadata, prices, liquidity, and volume across multiple chains. Developers use its REST endpoints to build wallets, trading dashboards, DeFi analytics, and AI systems without maintaining their own indexing stack. Custom GPTs can connect directly to the Token API's OpenAPI schema. + +The Token API enables developers to build **Custom GPTs** to reason over live blockchain data inside ChatGPT that can reason over and respond with live blockchain data directly inside ChatGPT. + +## What the Token API Enables in Custom GPTs + +When a Custom GPT is wired to the Token API, it gains access to a machine-readable schema and authenticated endpoints. Developers can use this to: + +- **Query real-time onchain data**: Balances, token prices, liquidity, and transaction history. +- **Automate domain-specific tasks**: Portfolio tracking, accounting, reconciliation, and market analysis. +- **Power AI agents with verifiable blockchain context**: Use the same data sources dapps rely on. + +Because the Token API provides a machine-readable schema and authenticated requests, it serves as a structured data layer that enables GPT-5 agents to combine natural language reasoning with live onchain data from The Graph. + +## When to Use the Token API for Custom GPTs + +Use the Token API when your GPT needs repeatable, domain-specific behavior grounded in blockchain data. This is most effective when the GPT performs the same type of task frequently or enforces a workflow you define. For one-off or exploratory questions, standard ChatGPT prompts are sufficient. + +## Choosing a Use Case + +Start with a clear, narrow objective, then expand as needed. Common patterns include: + +- **Accounting GPT**: Onchain accounting, tax tagging, and portfolio reconciliation. +- **Trading GPT**: Liquidity, pricing, and volume analysis for trading strategies. +- **Protocol Tracking GPT**: Real-time monitoring of transaction activity and liquidity pools. + +A focused initial goal such as “Retrieve token balances and prices for a wallet” makes it easier to configure reliable behavior before adding complex workflows. + +## Requirements + +| Requirement | Description | +| ---------------------- | -------------------------------------------------------- | +| ChatGPT 5 | Custom GPT creation requires GPT-5 tier or Pro. | +| Token API Subscription | Sign up at [The Graph Market](https://thegraph.market./) | +| Token API Key | Available in your dashboard as the Authentication JWT. | + +## Setting Up a Custom GPT + +Below is an explanatory outline of what happens during setup. This section provides conceptual understanding. + +### Create Custom GPT + +1. Visit chat.openai.com/gpts in your browser. 2, Click Create (top right). +2. Under Configure (in the top left panel), set up your GPT's personality and scope. + +### Configure Your GPT + +You define the GPT's role, scope, and metadata so it knows what it is designed to do. This includes: + +- **Name and Description**: Helps users discover your GPT. + - For example: **Name**: Token Tracker GPT **Description**: An onchain analytics assistant that retrieves live token balances, prices, and liquidity data using The Graph's Token API. +- **Instructions**: Tells the GPT what tasks it should perform using the Token API. + - For example: You are a blockchain data assistant retrieving onchain token data from The Graph's Token API. Use endpoints to fetch balances, liquidity, and price history across EVM chains. Present results in tables with token symbols, prices, and USD values. +- **Knowledge**: Optional context files such as wallet references, accounting rules, or code snippets. +- **New Action**: At the bottom, click “Create new action” to connect your GPT to the Token API. + +### Connect the Token API + +To enable live blockchain queries inside ChatGPT, you connect the GPT to the Token API through: + +#### Authentication + +1. Set Authentication to API Key → Bearer. +2. Open [The Graph Market](https://thegraph.market./) and copy your Authentication JWT from your dashboard. +3. Paste the token into the ChatGPT prompt where the field shows [HIDDEN]. + +#### Schema + +1. Above the Schema box, click Import from URL. +2. Paste: https://token-api.thegraph.com/openapi +3. Click Import. You'll now see endpoints like: + - `getV1EvmTokens` + - `getV1EvmDexes` + - `getV1EvmBalances` +4. Click Test on one (for example `getV1EvmDexes`) to verify connection. + +##### Privacy + +1. At the bottom, under Privacy, paste: https://pinax.network/en/legal/privacy + +### Privacy + +You can attach a privacy policy URL such as: https://pinax.network/en/legal/privacy + +## Example Prompt Patterns + +These examples help illustrate how a GPT reasons over Token API data. + +### Wallet and Portfolio + +Get the total USD balance for a wallet across multiple chains, returning token name, symbol, balance, and price. + +### Trading Analysis + +Compare USDC and DAI liquidity across Uniswap and Curve. Return the top 5 pools by TVL. + +### Accounting + +List all ERC-20 transfers for this address in the last 30 days. Group by token and total incoming/outgoing volume. + +## Best Practices + +| Tip | Why It Matters | +| --------------------------------- | ---------------------------------------------------------------------- | +| Scope your GPT narrowly first | Simplifies debugging and validates schema integration. | +| Use clear role instructions | Helps the GPT choose the right endpoints and avoid assumptions. | +| Name endpoints explicitly | Improves routing accuracy when fetching balances, prices, or DEX data. | +| Combine with code | Enables custom parsing or logic for complex workflows. | +| Add Subgraph or Substream context | Provides richer analytics when combined with Token API data. | + +## FAQs & Resources + +- Builders Office Hours (October 23, 2025) +- Watch the full session: https://x.com/i/broadcasts/1mrGmBzBarNJy diff --git a/website/src/pages/uk/token-api/guides/upgrade-to-v1.mdx b/website/src/pages/uk/token-api/guides/upgrade-to-v1.mdx new file mode 100644 index 000000000000..e2a7ccf973fa --- /dev/null +++ b/website/src/pages/uk/token-api/guides/upgrade-to-v1.mdx @@ -0,0 +1,346 @@ +--- +title: Upgrade to v1 +--- + +This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. + +**Note** + +- `EVM` = Ethereum Virtual Machine + +Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). + +- `SVM` = Solana Virtual Machine + +Used to describe endpoints supporting Solana (currently the only SVM chain supported). + +## 🔑 Breaking Changes Summary + +### 1. API Versioning + +All endpoints now use the `/v1` prefix. + +**Before:** + +``` +GET /balances/evm +GET /nft/items/contract/:contract/token_id/:token_id +``` + +**After:** + +``` +GET /v1/evm/balances +GET /v1/evm/nft/items +``` + +### 2. Route Structure Reorganization + +#### 2.1 EVM Endpoints + +Consolidated under `/v1/evm/*` + +| Old Endpoint | New Endpoint | +| ------------------------------------------------------ | ----------------------------- | +| `/balances/evm` | `/v1/evm/balances` | +| `/historical/balances/evm` | `/v1/evm/balances/historical` | +| `/holders/evm/:contract` | `/v1/evm/holders` | +| `/tokens/evm/:contract` | `/v1/evm/tokens` | +| `/transfers/evm` | `/v1/evm/transfers` | +| `/pools/evm` | `/v1/evm/pools` | +| `/swaps/evm` | `/v1/evm/swaps` | +| `/dexes/evm` | `/v1/evm/dexes` | +| `/ohlc/prices/evm/:contract` | _(removed)_ | +| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | +| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | +| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | +| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | +| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | +| `/nft/activities/evm` | `/v1/evm/nft/transfers` | +| `/nft/sales/evm` | `/v1/evm/nft/sales` | + +**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. + +**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. + +--- + +#### 2.2 New EVM native balances endpoint + +Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. + +Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. + +--- + +#### 2.3 SVM Endpoints + +Consolidated under `/v1/svm/*` + +| Old Endpoint | New Endpoint | +| ------------------------ | ------------------------- | +| `/balances/svm` | `/v1/svm/balances` | +| `/balances/native/svm` | `/v1/svm/balances/native` | +| `/holders/svm/:contract` | `/v1/svm/holders` | +| `/tokens/svm/:mint` | `/v1/svm/tokens` | +| `/transfers/svm` | `/v1/svm/transfers` | +| `/pools/svm` | `/v1/svm/pools` | +| `/swaps/svm` | `/v1/svm/swaps` | +| `/dexes/svm` | `/v1/svm/dexes` | +| `/owner/svm/:account` | `/v1/svm/owner` | +| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | + +## 📝 Parameter Changes + +### 3. Path Parameters → Query Parameters + +All path parameters have been moved to query parameters. + +**Before:** + +```bash +GET /balances/evm/:address +GET /holders/evm/:contract +GET /nft/items/evm/contract/:contract/token_id/:token_id +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0x... +GET /v1/evm/holders?network=mainnet&contract=0x... +GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 +``` + +### 4. Standardized Parameter Naming + +All query parameters have been standardized to use snake_case naming convention. + +| Old Parameter | New Parameter | Notes | +| --- | --- | --- | +| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | +| `anyAddress` | `address` | Matches either `from` or `to` address | +| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | +| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | +| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | +| `endTime` | `end_time` | Default: `9999999999` | +| - | `start_block` | New parameter, default: `0` | +| - | `end_block` | New parameter, default: `9999999999` | +| - | `include_null_balances` | New parameter, default: `false` | +| `tx_hash` | `transaction_id` | - | +| `token` | `input_token`, `output_token` | More explicit for pool queries | +| `pool` | `amm_pool` | - | +| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | + +**Important:** The `network_id` parameter has been renamed to `network`. + +**Important:** `matic` network has been renamed to `polygon`. + +### 5. Batched Parameters + +Many parameters now support batching - accepting single values or comma-separated strings. + +**Supported Batched Parameters:** + +- `address`, `from_address`, `to_address` +- `contract`, `token_id` +- `factory`, `pool` +- `owner`, `token_account`, `mint` +- `transaction_id`, `signature` + +**Examples:** + +```console +## Single value +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 + +## Comma-separated, single parameter +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 + +## Repeated parameter values +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +### 6. New Parameters + +#### `include_null_balances` + +Added to balance endpoints to optionally include zero/null balances. + +```bash +?include_null_balances=true +``` + +**Default:** `false` + +## 🔄 Response Changes + +### 7. Pagination Changes + +Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. + +**Before:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2, + "next_page": 3, + "total_pages": 10 + }, + "total_results": 1234 +} +``` + +**After:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2 + } +} +``` + +**Removed fields:** + +- `next_page` +- `total_pages` +- `total_results` + +**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. + +### 8. Removed Parameters + +The following deprecated parameters have been removed: + +- `orderBy` - Results are now ordered by timestamp/block by default +- `orderDirection` - Always descending (newest first) + +### 9. Cached Queries + +Queries are now cached on the ClickHouse side for better performance. + +You can specifically request to not use the cache by setting the `Cache-Control` header to `no-cache`. + +#### Example + +**Cache** + +```console +$ curl -s 'https://token-api.thegraph.com/v1/...' | jq .statistics +{ + "bytes_read": 221, + "rows_read": 1, + "elapsed": 0.002212065 +} +``` + +**No cache** + +```console +$ curl -s 'http://localhost:8000/v1/...' --header 'Cache-Control: no-cache' | jq .statistics +{ + "bytes_read": 14621174348, + "rows_read": 223244390, + "elapsed": 0.971064066 +} +``` + +## 📚 Example Migrations + +### Example 1: Get Token Balances + +**Before:** + +```bash +GET /token/balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +### Example 2: Get NFT Items + +**Before:** + +```bash +GET /nft/items/evm/contract/0xbd3531da5cf5857e7cfaa92426877b022e612cf8/token_id/5712?network_id=mainnet +``` + +**After:** + +```bash +GET /v1/evm/nft/items?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&token_id=5712 +``` + +### Example 3: Get Token Transfers with Time Filter + +**Before:** + +```bash +GET /token/transfers/evm?network_id=mainnet&from=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&startTime=1735689600&endTime=1767225600 +``` + +**After:** + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&start_time=1735689600&end_time=1767225600 +``` + +### Example 4: Get NFT Transfer Activities + +**Before:** + +```bash +GET /nft/activities/evm?network_id=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&anyAddress=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +**After:** + +```bash +GET /v1/evm/nft/transfers?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +### Example 5: Get Pool OHLC Data + +**Before:** + +```bash +GET /token/ohlc/pools/evm/0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640?network_id=mainnet&interval=1h&startTime=1735689600 +``` + +**After:** + +```bash +GET /v1/evm/pools/ohlc?network=mainnet&pool=0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640&interval=1h&start_time=1735689600 +``` + +### Example 6: Batched Query (New Feature) + +Query balances for multiple contracts in a single request: + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +Query transfers from multiple addresses: + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xabc...,0xdef...,0x123...&start_time=1735689600 +``` + +## ⚠️ Important Notes + +1. **Migration Notes:** The old endpoints were deprecated and removed on **October 30, 2025**. Please ensure all integrations have been migrated to the new Token API v1 endpoints. + +2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. + +3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. + +4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/uk/token-api/upgrade-to-v1.mdx b/website/src/pages/uk/token-api/upgrade-to-v1.mdx deleted file mode 100644 index fbe09101eaa5..000000000000 --- a/website/src/pages/uk/token-api/upgrade-to-v1.mdx +++ /dev/null @@ -1,254 +0,0 @@ ---- -title: Upgrade to v1 ---- - -This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. - -**Note** - -- `EVM` = Ethereum Virtual Machine - -Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). - -- `SVM` = Solana Virtual Machine - -Used to describe endpoints supporting Solana (currently the only SVM chain supported). - -## 🔑 Breaking Changes Summary - -### 1. **API Versioning** - -All endpoints now use the `/v1` prefix. - -**Before:** - -``` -GET /balances/evm -GET /nft/items/contract/:contract/token_id/:token_id -``` - -**After:** - -``` -GET /v1/evm/balances -GET /v1/evm/nft/items -``` - -### 2. **Route Structure Reorganization** - -#### 2.1 EVM Endpoints - -Consolidated under `/v1/evm/*` - -| Old Endpoint | New Endpoint | -| ------------------------------------------------------ | ----------------------------- | -| `/balances/evm` | `/v1/evm/balances` | -| `/historical/balances/evm` | `/v1/evm/balances/historical` | -| `/holders/evm/:contract` | `/v1/evm/holders` | -| `/tokens/evm/:contract` | `/v1/evm/tokens` | -| `/transfers/evm` | `/v1/evm/transfers` | -| `/pools/evm` | `/v1/evm/pools` | -| `/swaps/evm` | `/v1/evm/swaps` | -| `/dexes/evm` | `/v1/evm/dexes` | -| `/ohlc/prices/evm/:contract` | _(removed)_ | -| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | -| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | -| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | -| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | -| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | -| `/nft/activities/evm` | `/v1/evm/nft/transfers` | -| `/nft/sales/evm` | `/v1/evm/nft/sales` | - -**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. - -**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. - ---- - -#### 2.2 New EVM native balances endpoint - -Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. - -Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. - ---- - -#### 2.3 SVM Endpoints - -Consolidated under `/v1/svm/*` - -| Old Endpoint | New Endpoint | -| ------------------------ | ------------------------- | -| `/balances/svm` | `/v1/svm/balances` | -| `/balances/native/svm` | `/v1/svm/balances/native` | -| `/holders/svm/:contract` | `/v1/svm/holders` | -| `/tokens/svm/:mint` | `/v1/svm/tokens` | -| `/transfers/svm` | `/v1/svm/transfers` | -| `/pools/svm` | `/v1/svm/pools` | -| `/swaps/svm` | `/v1/svm/swaps` | -| `/dexes/svm` | `/v1/svm/dexes` | -| `/owner/svm/:account` | `/v1/svm/owner` | -| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | - -## 📝 Parameter Changes - -### 3. **Path Parameters → Query Parameters** - -All path parameters have been moved to query parameters. - -**Before:** - -```bash -GET /balances/evm/:address -GET /holders/evm/:contract -GET /nft/items/evm/contract/:contract/token_id/:token_id -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0x... -GET /v1/evm/holders?network=mainnet&contract=0x... -GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 -``` - -### 4. **Standardized Parameter Naming** - -All query parameters have been standardized to use snake_case naming convention. - -| Old Parameter | New Parameter | Notes | -| --- | --- | --- | -| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | -| `anyAddress` | `address` | Matches either `from` or `to` address | -| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | -| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | -| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | -| `endTime` | `end_time` | Default: `9999999999` | -| - | `start_block` | New parameter, default: `0` | -| - | `end_block` | New parameter, default: `9999999999` | -| - | `include_null_balances` | New parameter, default: `false` | -| `tx_hash` | `transaction_id` | - | -| `token` | `input_token`, `output_token` | More explicit for pool queries | -| `pool` | `amm_pool` | - | -| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | - -**Important:** The `network_id` parameter has been renamed to `network`. - -**Important:** `matic` network has been renamed to `polygon`. - -### 5. **Batched Parameters** - -Many parameters now support batching - accepting single values or comma-separated strings. - -**Supported Batched Parameters:** - -- `address`, `from_address`, `to_address` -- `contract`, `token_id` -- `factory`, `pool` -- `owner`, `token_account`, `mint` -- `transaction_id`, `signature` - -**Examples:** - -```console -# Single value -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 - -# Comma-separated, single parameter -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 - -# Repeated parameter values -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -### 6. **New Parameters** - -#### `include_null_balances` - -Added to balance endpoints to optionally include zero/null balances. - -```bash -?include_null_balances=true -``` - -**Default:** `false` - -## 🔄 Response Changes - -### 7. **Pagination Changes** - -Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. - -**Before:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2, - "next_page": 3, - "total_pages": 10 - }, - "total_results": 1234 -} -``` - -**After:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2 - } -} -``` - -**Removed fields:** - -- `next_page` -- `total_pages` -- `total_results` - -**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. - -### 8. **Removed Parameters** - -The following deprecated parameters have been removed: - -- `orderBy` - Results are now ordered by timestamp/block by default -- `orderDirection` - Always descending (newest first) - -## 📚 Example Migrations - -### Old vs New: Get Token Balances - -**Before:** - -```bash -GET /balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -### New Feature: Batched Queries - -Query balances for multiple contracts in a single request: - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -## ⚠️ Important Notes - -1. **Backward Compatibility:** The old endpoints are deprecated and will be removed in the future. Migrate by **Oct 30, 2025**. - -2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. - -3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. - -4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/ur/index.json b/website/src/pages/ur/index.json index 4d97eec9b52d..cd886bb5f4f0 100644 --- a/website/src/pages/ur/index.json +++ b/website/src/pages/ur/index.json @@ -2,7 +2,7 @@ "title": "Home", "hero": { "title": "The Graph Docs", - "description": "The Graph is a blockchain data solution that powers applications, analytics, and AI on 90+ chains. The Graph's core products include the Token API for web3 apps, Subgraphs for indexing smart contracts, and Substreams for real-time and historical data streaming.", + "description": "The Graph is a blockchain data solution that powers applications, analytics, and AI on 80+ chains. The Graph's core products include the Token API for web3 apps, Subgraphs for indexing smart contracts, and Substreams for real-time and historical data streaming.", "cta1": "How The Graph works", "cta2": "Build your first subgraph" }, diff --git a/website/src/pages/ur/subgraphs/guides/_meta.js b/website/src/pages/ur/subgraphs/guides/_meta.js index fd5608dcceb2..1c081848ea08 100644 --- a/website/src/pages/ur/subgraphs/guides/_meta.js +++ b/website/src/pages/ur/subgraphs/guides/_meta.js @@ -2,7 +2,6 @@ export default { 'subgraph-composition': '', 'subgraph-debug-forking': '', near: '', - grafting: '', 'subgraph-uncrashable': '', 'transfer-to-the-graph': '', diff --git a/website/src/pages/ur/token-api/_meta.js b/website/src/pages/ur/token-api/_meta.js index a8624da52e7f..9588f70cec53 100644 --- a/website/src/pages/ur/token-api/_meta.js +++ b/website/src/pages/ur/token-api/_meta.js @@ -11,6 +11,6 @@ export default { 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', 'endpoint-pricing': '', + guides: titles['guides'] ?? '', faq: '', - 'upgrade-to-v1': '', } diff --git a/website/src/pages/ur/token-api/guides/_meta-titles.json b/website/src/pages/ur/token-api/guides/_meta-titles.json new file mode 100644 index 000000000000..cd93dcc0fc0b --- /dev/null +++ b/website/src/pages/ur/token-api/guides/_meta-titles.json @@ -0,0 +1,4 @@ +{ + "gpt": "Create Custom GPTS", + "upgrade-to-v1": "" +} diff --git a/website/src/pages/ur/token-api/guides/_meta.js b/website/src/pages/ur/token-api/guides/_meta.js new file mode 100644 index 000000000000..e5aaaadd78f2 --- /dev/null +++ b/website/src/pages/ur/token-api/guides/_meta.js @@ -0,0 +1,4 @@ +export default { + gpt: '', + 'upgrade-to-v1': '', +} diff --git a/website/src/pages/ur/token-api/guides/gpt.mdx b/website/src/pages/ur/token-api/guides/gpt.mdx new file mode 100644 index 000000000000..564d013dea20 --- /dev/null +++ b/website/src/pages/ur/token-api/guides/gpt.mdx @@ -0,0 +1,121 @@ +--- +title: How the Token API Powers Custom GPTs +sidebarTitle: Create Custom GPTs +--- + +## Overview + +The Token API is a pre-indexed blockchain data service that provides real-time access to token balances, metadata, prices, liquidity, and volume across multiple chains. Developers use its REST endpoints to build wallets, trading dashboards, DeFi analytics, and AI systems without maintaining their own indexing stack. Custom GPTs can connect directly to the Token API's OpenAPI schema. + +The Token API enables developers to build **Custom GPTs** to reason over live blockchain data inside ChatGPT that can reason over and respond with live blockchain data directly inside ChatGPT. + +## What the Token API Enables in Custom GPTs + +When a Custom GPT is wired to the Token API, it gains access to a machine-readable schema and authenticated endpoints. Developers can use this to: + +- **Query real-time onchain data**: Balances, token prices, liquidity, and transaction history. +- **Automate domain-specific tasks**: Portfolio tracking, accounting, reconciliation, and market analysis. +- **Power AI agents with verifiable blockchain context**: Use the same data sources dapps rely on. + +Because the Token API provides a machine-readable schema and authenticated requests, it serves as a structured data layer that enables GPT-5 agents to combine natural language reasoning with live onchain data from The Graph. + +## When to Use the Token API for Custom GPTs + +Use the Token API when your GPT needs repeatable, domain-specific behavior grounded in blockchain data. This is most effective when the GPT performs the same type of task frequently or enforces a workflow you define. For one-off or exploratory questions, standard ChatGPT prompts are sufficient. + +## Choosing a Use Case + +Start with a clear, narrow objective, then expand as needed. Common patterns include: + +- **Accounting GPT**: Onchain accounting, tax tagging, and portfolio reconciliation. +- **Trading GPT**: Liquidity, pricing, and volume analysis for trading strategies. +- **Protocol Tracking GPT**: Real-time monitoring of transaction activity and liquidity pools. + +A focused initial goal such as “Retrieve token balances and prices for a wallet” makes it easier to configure reliable behavior before adding complex workflows. + +## Requirements + +| Requirement | Description | +| ---------------------- | -------------------------------------------------------- | +| ChatGPT 5 | Custom GPT creation requires GPT-5 tier or Pro. | +| Token API Subscription | Sign up at [The Graph Market](https://thegraph.market./) | +| Token API Key | Available in your dashboard as the Authentication JWT. | + +## Setting Up a Custom GPT + +Below is an explanatory outline of what happens during setup. This section provides conceptual understanding. + +### Create Custom GPT + +1. Visit chat.openai.com/gpts in your browser. 2, Click Create (top right). +2. Under Configure (in the top left panel), set up your GPT's personality and scope. + +### Configure Your GPT + +You define the GPT's role, scope, and metadata so it knows what it is designed to do. This includes: + +- **Name and Description**: Helps users discover your GPT. + - For example: **Name**: Token Tracker GPT **Description**: An onchain analytics assistant that retrieves live token balances, prices, and liquidity data using The Graph's Token API. +- **Instructions**: Tells the GPT what tasks it should perform using the Token API. + - For example: You are a blockchain data assistant retrieving onchain token data from The Graph's Token API. Use endpoints to fetch balances, liquidity, and price history across EVM chains. Present results in tables with token symbols, prices, and USD values. +- **Knowledge**: Optional context files such as wallet references, accounting rules, or code snippets. +- **New Action**: At the bottom, click “Create new action” to connect your GPT to the Token API. + +### Connect the Token API + +To enable live blockchain queries inside ChatGPT, you connect the GPT to the Token API through: + +#### Authentication + +1. Set Authentication to API Key → Bearer. +2. Open [The Graph Market](https://thegraph.market./) and copy your Authentication JWT from your dashboard. +3. Paste the token into the ChatGPT prompt where the field shows [HIDDEN]. + +#### Schema + +1. Above the Schema box, click Import from URL. +2. Paste: https://token-api.thegraph.com/openapi +3. Click Import. You'll now see endpoints like: + - `getV1EvmTokens` + - `getV1EvmDexes` + - `getV1EvmBalances` +4. Click Test on one (for example `getV1EvmDexes`) to verify connection. + +##### Privacy + +1. At the bottom, under Privacy, paste: https://pinax.network/en/legal/privacy + +### Privacy + +You can attach a privacy policy URL such as: https://pinax.network/en/legal/privacy + +## Example Prompt Patterns + +These examples help illustrate how a GPT reasons over Token API data. + +### Wallet and Portfolio + +Get the total USD balance for a wallet across multiple chains, returning token name, symbol, balance, and price. + +### Trading Analysis + +Compare USDC and DAI liquidity across Uniswap and Curve. Return the top 5 pools by TVL. + +### Accounting + +List all ERC-20 transfers for this address in the last 30 days. Group by token and total incoming/outgoing volume. + +## Best Practices + +| Tip | Why It Matters | +| --------------------------------- | ---------------------------------------------------------------------- | +| Scope your GPT narrowly first | Simplifies debugging and validates schema integration. | +| Use clear role instructions | Helps the GPT choose the right endpoints and avoid assumptions. | +| Name endpoints explicitly | Improves routing accuracy when fetching balances, prices, or DEX data. | +| Combine with code | Enables custom parsing or logic for complex workflows. | +| Add Subgraph or Substream context | Provides richer analytics when combined with Token API data. | + +## FAQs & Resources + +- Builders Office Hours (October 23, 2025) +- Watch the full session: https://x.com/i/broadcasts/1mrGmBzBarNJy diff --git a/website/src/pages/ur/token-api/guides/upgrade-to-v1.mdx b/website/src/pages/ur/token-api/guides/upgrade-to-v1.mdx new file mode 100644 index 000000000000..e2a7ccf973fa --- /dev/null +++ b/website/src/pages/ur/token-api/guides/upgrade-to-v1.mdx @@ -0,0 +1,346 @@ +--- +title: Upgrade to v1 +--- + +This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. + +**Note** + +- `EVM` = Ethereum Virtual Machine + +Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). + +- `SVM` = Solana Virtual Machine + +Used to describe endpoints supporting Solana (currently the only SVM chain supported). + +## 🔑 Breaking Changes Summary + +### 1. API Versioning + +All endpoints now use the `/v1` prefix. + +**Before:** + +``` +GET /balances/evm +GET /nft/items/contract/:contract/token_id/:token_id +``` + +**After:** + +``` +GET /v1/evm/balances +GET /v1/evm/nft/items +``` + +### 2. Route Structure Reorganization + +#### 2.1 EVM Endpoints + +Consolidated under `/v1/evm/*` + +| Old Endpoint | New Endpoint | +| ------------------------------------------------------ | ----------------------------- | +| `/balances/evm` | `/v1/evm/balances` | +| `/historical/balances/evm` | `/v1/evm/balances/historical` | +| `/holders/evm/:contract` | `/v1/evm/holders` | +| `/tokens/evm/:contract` | `/v1/evm/tokens` | +| `/transfers/evm` | `/v1/evm/transfers` | +| `/pools/evm` | `/v1/evm/pools` | +| `/swaps/evm` | `/v1/evm/swaps` | +| `/dexes/evm` | `/v1/evm/dexes` | +| `/ohlc/prices/evm/:contract` | _(removed)_ | +| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | +| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | +| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | +| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | +| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | +| `/nft/activities/evm` | `/v1/evm/nft/transfers` | +| `/nft/sales/evm` | `/v1/evm/nft/sales` | + +**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. + +**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. + +--- + +#### 2.2 New EVM native balances endpoint + +Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. + +Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. + +--- + +#### 2.3 SVM Endpoints + +Consolidated under `/v1/svm/*` + +| Old Endpoint | New Endpoint | +| ------------------------ | ------------------------- | +| `/balances/svm` | `/v1/svm/balances` | +| `/balances/native/svm` | `/v1/svm/balances/native` | +| `/holders/svm/:contract` | `/v1/svm/holders` | +| `/tokens/svm/:mint` | `/v1/svm/tokens` | +| `/transfers/svm` | `/v1/svm/transfers` | +| `/pools/svm` | `/v1/svm/pools` | +| `/swaps/svm` | `/v1/svm/swaps` | +| `/dexes/svm` | `/v1/svm/dexes` | +| `/owner/svm/:account` | `/v1/svm/owner` | +| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | + +## 📝 Parameter Changes + +### 3. Path Parameters → Query Parameters + +All path parameters have been moved to query parameters. + +**Before:** + +```bash +GET /balances/evm/:address +GET /holders/evm/:contract +GET /nft/items/evm/contract/:contract/token_id/:token_id +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0x... +GET /v1/evm/holders?network=mainnet&contract=0x... +GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 +``` + +### 4. Standardized Parameter Naming + +All query parameters have been standardized to use snake_case naming convention. + +| Old Parameter | New Parameter | Notes | +| --- | --- | --- | +| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | +| `anyAddress` | `address` | Matches either `from` or `to` address | +| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | +| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | +| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | +| `endTime` | `end_time` | Default: `9999999999` | +| - | `start_block` | New parameter, default: `0` | +| - | `end_block` | New parameter, default: `9999999999` | +| - | `include_null_balances` | New parameter, default: `false` | +| `tx_hash` | `transaction_id` | - | +| `token` | `input_token`, `output_token` | More explicit for pool queries | +| `pool` | `amm_pool` | - | +| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | + +**Important:** The `network_id` parameter has been renamed to `network`. + +**Important:** `matic` network has been renamed to `polygon`. + +### 5. Batched Parameters + +Many parameters now support batching - accepting single values or comma-separated strings. + +**Supported Batched Parameters:** + +- `address`, `from_address`, `to_address` +- `contract`, `token_id` +- `factory`, `pool` +- `owner`, `token_account`, `mint` +- `transaction_id`, `signature` + +**Examples:** + +```console +## Single value +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 + +## Comma-separated, single parameter +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 + +## Repeated parameter values +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +### 6. New Parameters + +#### `include_null_balances` + +Added to balance endpoints to optionally include zero/null balances. + +```bash +?include_null_balances=true +``` + +**Default:** `false` + +## 🔄 Response Changes + +### 7. Pagination Changes + +Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. + +**Before:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2, + "next_page": 3, + "total_pages": 10 + }, + "total_results": 1234 +} +``` + +**After:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2 + } +} +``` + +**Removed fields:** + +- `next_page` +- `total_pages` +- `total_results` + +**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. + +### 8. Removed Parameters + +The following deprecated parameters have been removed: + +- `orderBy` - Results are now ordered by timestamp/block by default +- `orderDirection` - Always descending (newest first) + +### 9. Cached Queries + +Queries are now cached on the ClickHouse side for better performance. + +You can specifically request to not use the cache by setting the `Cache-Control` header to `no-cache`. + +#### Example + +**Cache** + +```console +$ curl -s 'https://token-api.thegraph.com/v1/...' | jq .statistics +{ + "bytes_read": 221, + "rows_read": 1, + "elapsed": 0.002212065 +} +``` + +**No cache** + +```console +$ curl -s 'http://localhost:8000/v1/...' --header 'Cache-Control: no-cache' | jq .statistics +{ + "bytes_read": 14621174348, + "rows_read": 223244390, + "elapsed": 0.971064066 +} +``` + +## 📚 Example Migrations + +### Example 1: Get Token Balances + +**Before:** + +```bash +GET /token/balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +### Example 2: Get NFT Items + +**Before:** + +```bash +GET /nft/items/evm/contract/0xbd3531da5cf5857e7cfaa92426877b022e612cf8/token_id/5712?network_id=mainnet +``` + +**After:** + +```bash +GET /v1/evm/nft/items?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&token_id=5712 +``` + +### Example 3: Get Token Transfers with Time Filter + +**Before:** + +```bash +GET /token/transfers/evm?network_id=mainnet&from=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&startTime=1735689600&endTime=1767225600 +``` + +**After:** + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&start_time=1735689600&end_time=1767225600 +``` + +### Example 4: Get NFT Transfer Activities + +**Before:** + +```bash +GET /nft/activities/evm?network_id=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&anyAddress=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +**After:** + +```bash +GET /v1/evm/nft/transfers?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +### Example 5: Get Pool OHLC Data + +**Before:** + +```bash +GET /token/ohlc/pools/evm/0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640?network_id=mainnet&interval=1h&startTime=1735689600 +``` + +**After:** + +```bash +GET /v1/evm/pools/ohlc?network=mainnet&pool=0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640&interval=1h&start_time=1735689600 +``` + +### Example 6: Batched Query (New Feature) + +Query balances for multiple contracts in a single request: + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +Query transfers from multiple addresses: + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xabc...,0xdef...,0x123...&start_time=1735689600 +``` + +## ⚠️ Important Notes + +1. **Migration Notes:** The old endpoints were deprecated and removed on **October 30, 2025**. Please ensure all integrations have been migrated to the new Token API v1 endpoints. + +2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. + +3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. + +4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/ur/token-api/upgrade-to-v1.mdx b/website/src/pages/ur/token-api/upgrade-to-v1.mdx deleted file mode 100644 index fbe09101eaa5..000000000000 --- a/website/src/pages/ur/token-api/upgrade-to-v1.mdx +++ /dev/null @@ -1,254 +0,0 @@ ---- -title: Upgrade to v1 ---- - -This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. - -**Note** - -- `EVM` = Ethereum Virtual Machine - -Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). - -- `SVM` = Solana Virtual Machine - -Used to describe endpoints supporting Solana (currently the only SVM chain supported). - -## 🔑 Breaking Changes Summary - -### 1. **API Versioning** - -All endpoints now use the `/v1` prefix. - -**Before:** - -``` -GET /balances/evm -GET /nft/items/contract/:contract/token_id/:token_id -``` - -**After:** - -``` -GET /v1/evm/balances -GET /v1/evm/nft/items -``` - -### 2. **Route Structure Reorganization** - -#### 2.1 EVM Endpoints - -Consolidated under `/v1/evm/*` - -| Old Endpoint | New Endpoint | -| ------------------------------------------------------ | ----------------------------- | -| `/balances/evm` | `/v1/evm/balances` | -| `/historical/balances/evm` | `/v1/evm/balances/historical` | -| `/holders/evm/:contract` | `/v1/evm/holders` | -| `/tokens/evm/:contract` | `/v1/evm/tokens` | -| `/transfers/evm` | `/v1/evm/transfers` | -| `/pools/evm` | `/v1/evm/pools` | -| `/swaps/evm` | `/v1/evm/swaps` | -| `/dexes/evm` | `/v1/evm/dexes` | -| `/ohlc/prices/evm/:contract` | _(removed)_ | -| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | -| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | -| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | -| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | -| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | -| `/nft/activities/evm` | `/v1/evm/nft/transfers` | -| `/nft/sales/evm` | `/v1/evm/nft/sales` | - -**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. - -**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. - ---- - -#### 2.2 New EVM native balances endpoint - -Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. - -Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. - ---- - -#### 2.3 SVM Endpoints - -Consolidated under `/v1/svm/*` - -| Old Endpoint | New Endpoint | -| ------------------------ | ------------------------- | -| `/balances/svm` | `/v1/svm/balances` | -| `/balances/native/svm` | `/v1/svm/balances/native` | -| `/holders/svm/:contract` | `/v1/svm/holders` | -| `/tokens/svm/:mint` | `/v1/svm/tokens` | -| `/transfers/svm` | `/v1/svm/transfers` | -| `/pools/svm` | `/v1/svm/pools` | -| `/swaps/svm` | `/v1/svm/swaps` | -| `/dexes/svm` | `/v1/svm/dexes` | -| `/owner/svm/:account` | `/v1/svm/owner` | -| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | - -## 📝 Parameter Changes - -### 3. **Path Parameters → Query Parameters** - -All path parameters have been moved to query parameters. - -**Before:** - -```bash -GET /balances/evm/:address -GET /holders/evm/:contract -GET /nft/items/evm/contract/:contract/token_id/:token_id -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0x... -GET /v1/evm/holders?network=mainnet&contract=0x... -GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 -``` - -### 4. **Standardized Parameter Naming** - -All query parameters have been standardized to use snake_case naming convention. - -| Old Parameter | New Parameter | Notes | -| --- | --- | --- | -| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | -| `anyAddress` | `address` | Matches either `from` or `to` address | -| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | -| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | -| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | -| `endTime` | `end_time` | Default: `9999999999` | -| - | `start_block` | New parameter, default: `0` | -| - | `end_block` | New parameter, default: `9999999999` | -| - | `include_null_balances` | New parameter, default: `false` | -| `tx_hash` | `transaction_id` | - | -| `token` | `input_token`, `output_token` | More explicit for pool queries | -| `pool` | `amm_pool` | - | -| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | - -**Important:** The `network_id` parameter has been renamed to `network`. - -**Important:** `matic` network has been renamed to `polygon`. - -### 5. **Batched Parameters** - -Many parameters now support batching - accepting single values or comma-separated strings. - -**Supported Batched Parameters:** - -- `address`, `from_address`, `to_address` -- `contract`, `token_id` -- `factory`, `pool` -- `owner`, `token_account`, `mint` -- `transaction_id`, `signature` - -**Examples:** - -```console -# Single value -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 - -# Comma-separated, single parameter -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 - -# Repeated parameter values -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -### 6. **New Parameters** - -#### `include_null_balances` - -Added to balance endpoints to optionally include zero/null balances. - -```bash -?include_null_balances=true -``` - -**Default:** `false` - -## 🔄 Response Changes - -### 7. **Pagination Changes** - -Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. - -**Before:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2, - "next_page": 3, - "total_pages": 10 - }, - "total_results": 1234 -} -``` - -**After:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2 - } -} -``` - -**Removed fields:** - -- `next_page` -- `total_pages` -- `total_results` - -**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. - -### 8. **Removed Parameters** - -The following deprecated parameters have been removed: - -- `orderBy` - Results are now ordered by timestamp/block by default -- `orderDirection` - Always descending (newest first) - -## 📚 Example Migrations - -### Old vs New: Get Token Balances - -**Before:** - -```bash -GET /balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -### New Feature: Batched Queries - -Query balances for multiple contracts in a single request: - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -## ⚠️ Important Notes - -1. **Backward Compatibility:** The old endpoints are deprecated and will be removed in the future. Migrate by **Oct 30, 2025**. - -2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. - -3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. - -4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/vi/index.json b/website/src/pages/vi/index.json index 776370dc027c..39668153a643 100644 --- a/website/src/pages/vi/index.json +++ b/website/src/pages/vi/index.json @@ -2,7 +2,7 @@ "title": "Home", "hero": { "title": "The Graph Docs", - "description": "The Graph is a blockchain data solution that powers applications, analytics, and AI on 90+ chains. The Graph's core products include the Token API for web3 apps, Subgraphs for indexing smart contracts, and Substreams for real-time and historical data streaming.", + "description": "The Graph is a blockchain data solution that powers applications, analytics, and AI on 80+ chains. The Graph's core products include the Token API for web3 apps, Subgraphs for indexing smart contracts, and Substreams for real-time and historical data streaming.", "cta1": "How The Graph works", "cta2": "Build your first subgraph" }, diff --git a/website/src/pages/vi/subgraphs/guides/_meta.js b/website/src/pages/vi/subgraphs/guides/_meta.js index fd5608dcceb2..1c081848ea08 100644 --- a/website/src/pages/vi/subgraphs/guides/_meta.js +++ b/website/src/pages/vi/subgraphs/guides/_meta.js @@ -2,7 +2,6 @@ export default { 'subgraph-composition': '', 'subgraph-debug-forking': '', near: '', - grafting: '', 'subgraph-uncrashable': '', 'transfer-to-the-graph': '', diff --git a/website/src/pages/vi/token-api/_meta.js b/website/src/pages/vi/token-api/_meta.js index a8624da52e7f..9588f70cec53 100644 --- a/website/src/pages/vi/token-api/_meta.js +++ b/website/src/pages/vi/token-api/_meta.js @@ -11,6 +11,6 @@ export default { 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', 'endpoint-pricing': '', + guides: titles['guides'] ?? '', faq: '', - 'upgrade-to-v1': '', } diff --git a/website/src/pages/vi/token-api/guides/_meta-titles.json b/website/src/pages/vi/token-api/guides/_meta-titles.json new file mode 100644 index 000000000000..cd93dcc0fc0b --- /dev/null +++ b/website/src/pages/vi/token-api/guides/_meta-titles.json @@ -0,0 +1,4 @@ +{ + "gpt": "Create Custom GPTS", + "upgrade-to-v1": "" +} diff --git a/website/src/pages/vi/token-api/guides/_meta.js b/website/src/pages/vi/token-api/guides/_meta.js new file mode 100644 index 000000000000..e5aaaadd78f2 --- /dev/null +++ b/website/src/pages/vi/token-api/guides/_meta.js @@ -0,0 +1,4 @@ +export default { + gpt: '', + 'upgrade-to-v1': '', +} diff --git a/website/src/pages/vi/token-api/guides/gpt.mdx b/website/src/pages/vi/token-api/guides/gpt.mdx new file mode 100644 index 000000000000..564d013dea20 --- /dev/null +++ b/website/src/pages/vi/token-api/guides/gpt.mdx @@ -0,0 +1,121 @@ +--- +title: How the Token API Powers Custom GPTs +sidebarTitle: Create Custom GPTs +--- + +## Overview + +The Token API is a pre-indexed blockchain data service that provides real-time access to token balances, metadata, prices, liquidity, and volume across multiple chains. Developers use its REST endpoints to build wallets, trading dashboards, DeFi analytics, and AI systems without maintaining their own indexing stack. Custom GPTs can connect directly to the Token API's OpenAPI schema. + +The Token API enables developers to build **Custom GPTs** to reason over live blockchain data inside ChatGPT that can reason over and respond with live blockchain data directly inside ChatGPT. + +## What the Token API Enables in Custom GPTs + +When a Custom GPT is wired to the Token API, it gains access to a machine-readable schema and authenticated endpoints. Developers can use this to: + +- **Query real-time onchain data**: Balances, token prices, liquidity, and transaction history. +- **Automate domain-specific tasks**: Portfolio tracking, accounting, reconciliation, and market analysis. +- **Power AI agents with verifiable blockchain context**: Use the same data sources dapps rely on. + +Because the Token API provides a machine-readable schema and authenticated requests, it serves as a structured data layer that enables GPT-5 agents to combine natural language reasoning with live onchain data from The Graph. + +## When to Use the Token API for Custom GPTs + +Use the Token API when your GPT needs repeatable, domain-specific behavior grounded in blockchain data. This is most effective when the GPT performs the same type of task frequently or enforces a workflow you define. For one-off or exploratory questions, standard ChatGPT prompts are sufficient. + +## Choosing a Use Case + +Start with a clear, narrow objective, then expand as needed. Common patterns include: + +- **Accounting GPT**: Onchain accounting, tax tagging, and portfolio reconciliation. +- **Trading GPT**: Liquidity, pricing, and volume analysis for trading strategies. +- **Protocol Tracking GPT**: Real-time monitoring of transaction activity and liquidity pools. + +A focused initial goal such as “Retrieve token balances and prices for a wallet” makes it easier to configure reliable behavior before adding complex workflows. + +## Requirements + +| Requirement | Description | +| ---------------------- | -------------------------------------------------------- | +| ChatGPT 5 | Custom GPT creation requires GPT-5 tier or Pro. | +| Token API Subscription | Sign up at [The Graph Market](https://thegraph.market./) | +| Token API Key | Available in your dashboard as the Authentication JWT. | + +## Setting Up a Custom GPT + +Below is an explanatory outline of what happens during setup. This section provides conceptual understanding. + +### Create Custom GPT + +1. Visit chat.openai.com/gpts in your browser. 2, Click Create (top right). +2. Under Configure (in the top left panel), set up your GPT's personality and scope. + +### Configure Your GPT + +You define the GPT's role, scope, and metadata so it knows what it is designed to do. This includes: + +- **Name and Description**: Helps users discover your GPT. + - For example: **Name**: Token Tracker GPT **Description**: An onchain analytics assistant that retrieves live token balances, prices, and liquidity data using The Graph's Token API. +- **Instructions**: Tells the GPT what tasks it should perform using the Token API. + - For example: You are a blockchain data assistant retrieving onchain token data from The Graph's Token API. Use endpoints to fetch balances, liquidity, and price history across EVM chains. Present results in tables with token symbols, prices, and USD values. +- **Knowledge**: Optional context files such as wallet references, accounting rules, or code snippets. +- **New Action**: At the bottom, click “Create new action” to connect your GPT to the Token API. + +### Connect the Token API + +To enable live blockchain queries inside ChatGPT, you connect the GPT to the Token API through: + +#### Authentication + +1. Set Authentication to API Key → Bearer. +2. Open [The Graph Market](https://thegraph.market./) and copy your Authentication JWT from your dashboard. +3. Paste the token into the ChatGPT prompt where the field shows [HIDDEN]. + +#### Schema + +1. Above the Schema box, click Import from URL. +2. Paste: https://token-api.thegraph.com/openapi +3. Click Import. You'll now see endpoints like: + - `getV1EvmTokens` + - `getV1EvmDexes` + - `getV1EvmBalances` +4. Click Test on one (for example `getV1EvmDexes`) to verify connection. + +##### Privacy + +1. At the bottom, under Privacy, paste: https://pinax.network/en/legal/privacy + +### Privacy + +You can attach a privacy policy URL such as: https://pinax.network/en/legal/privacy + +## Example Prompt Patterns + +These examples help illustrate how a GPT reasons over Token API data. + +### Wallet and Portfolio + +Get the total USD balance for a wallet across multiple chains, returning token name, symbol, balance, and price. + +### Trading Analysis + +Compare USDC and DAI liquidity across Uniswap and Curve. Return the top 5 pools by TVL. + +### Accounting + +List all ERC-20 transfers for this address in the last 30 days. Group by token and total incoming/outgoing volume. + +## Best Practices + +| Tip | Why It Matters | +| --------------------------------- | ---------------------------------------------------------------------- | +| Scope your GPT narrowly first | Simplifies debugging and validates schema integration. | +| Use clear role instructions | Helps the GPT choose the right endpoints and avoid assumptions. | +| Name endpoints explicitly | Improves routing accuracy when fetching balances, prices, or DEX data. | +| Combine with code | Enables custom parsing or logic for complex workflows. | +| Add Subgraph or Substream context | Provides richer analytics when combined with Token API data. | + +## FAQs & Resources + +- Builders Office Hours (October 23, 2025) +- Watch the full session: https://x.com/i/broadcasts/1mrGmBzBarNJy diff --git a/website/src/pages/vi/token-api/guides/upgrade-to-v1.mdx b/website/src/pages/vi/token-api/guides/upgrade-to-v1.mdx new file mode 100644 index 000000000000..e2a7ccf973fa --- /dev/null +++ b/website/src/pages/vi/token-api/guides/upgrade-to-v1.mdx @@ -0,0 +1,346 @@ +--- +title: Upgrade to v1 +--- + +This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. + +**Note** + +- `EVM` = Ethereum Virtual Machine + +Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). + +- `SVM` = Solana Virtual Machine + +Used to describe endpoints supporting Solana (currently the only SVM chain supported). + +## 🔑 Breaking Changes Summary + +### 1. API Versioning + +All endpoints now use the `/v1` prefix. + +**Before:** + +``` +GET /balances/evm +GET /nft/items/contract/:contract/token_id/:token_id +``` + +**After:** + +``` +GET /v1/evm/balances +GET /v1/evm/nft/items +``` + +### 2. Route Structure Reorganization + +#### 2.1 EVM Endpoints + +Consolidated under `/v1/evm/*` + +| Old Endpoint | New Endpoint | +| ------------------------------------------------------ | ----------------------------- | +| `/balances/evm` | `/v1/evm/balances` | +| `/historical/balances/evm` | `/v1/evm/balances/historical` | +| `/holders/evm/:contract` | `/v1/evm/holders` | +| `/tokens/evm/:contract` | `/v1/evm/tokens` | +| `/transfers/evm` | `/v1/evm/transfers` | +| `/pools/evm` | `/v1/evm/pools` | +| `/swaps/evm` | `/v1/evm/swaps` | +| `/dexes/evm` | `/v1/evm/dexes` | +| `/ohlc/prices/evm/:contract` | _(removed)_ | +| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | +| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | +| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | +| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | +| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | +| `/nft/activities/evm` | `/v1/evm/nft/transfers` | +| `/nft/sales/evm` | `/v1/evm/nft/sales` | + +**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. + +**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. + +--- + +#### 2.2 New EVM native balances endpoint + +Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. + +Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. + +--- + +#### 2.3 SVM Endpoints + +Consolidated under `/v1/svm/*` + +| Old Endpoint | New Endpoint | +| ------------------------ | ------------------------- | +| `/balances/svm` | `/v1/svm/balances` | +| `/balances/native/svm` | `/v1/svm/balances/native` | +| `/holders/svm/:contract` | `/v1/svm/holders` | +| `/tokens/svm/:mint` | `/v1/svm/tokens` | +| `/transfers/svm` | `/v1/svm/transfers` | +| `/pools/svm` | `/v1/svm/pools` | +| `/swaps/svm` | `/v1/svm/swaps` | +| `/dexes/svm` | `/v1/svm/dexes` | +| `/owner/svm/:account` | `/v1/svm/owner` | +| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | + +## 📝 Parameter Changes + +### 3. Path Parameters → Query Parameters + +All path parameters have been moved to query parameters. + +**Before:** + +```bash +GET /balances/evm/:address +GET /holders/evm/:contract +GET /nft/items/evm/contract/:contract/token_id/:token_id +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0x... +GET /v1/evm/holders?network=mainnet&contract=0x... +GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 +``` + +### 4. Standardized Parameter Naming + +All query parameters have been standardized to use snake_case naming convention. + +| Old Parameter | New Parameter | Notes | +| --- | --- | --- | +| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | +| `anyAddress` | `address` | Matches either `from` or `to` address | +| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | +| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | +| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | +| `endTime` | `end_time` | Default: `9999999999` | +| - | `start_block` | New parameter, default: `0` | +| - | `end_block` | New parameter, default: `9999999999` | +| - | `include_null_balances` | New parameter, default: `false` | +| `tx_hash` | `transaction_id` | - | +| `token` | `input_token`, `output_token` | More explicit for pool queries | +| `pool` | `amm_pool` | - | +| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | + +**Important:** The `network_id` parameter has been renamed to `network`. + +**Important:** `matic` network has been renamed to `polygon`. + +### 5. Batched Parameters + +Many parameters now support batching - accepting single values or comma-separated strings. + +**Supported Batched Parameters:** + +- `address`, `from_address`, `to_address` +- `contract`, `token_id` +- `factory`, `pool` +- `owner`, `token_account`, `mint` +- `transaction_id`, `signature` + +**Examples:** + +```console +## Single value +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 + +## Comma-separated, single parameter +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 + +## Repeated parameter values +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +### 6. New Parameters + +#### `include_null_balances` + +Added to balance endpoints to optionally include zero/null balances. + +```bash +?include_null_balances=true +``` + +**Default:** `false` + +## 🔄 Response Changes + +### 7. Pagination Changes + +Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. + +**Before:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2, + "next_page": 3, + "total_pages": 10 + }, + "total_results": 1234 +} +``` + +**After:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2 + } +} +``` + +**Removed fields:** + +- `next_page` +- `total_pages` +- `total_results` + +**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. + +### 8. Removed Parameters + +The following deprecated parameters have been removed: + +- `orderBy` - Results are now ordered by timestamp/block by default +- `orderDirection` - Always descending (newest first) + +### 9. Cached Queries + +Queries are now cached on the ClickHouse side for better performance. + +You can specifically request to not use the cache by setting the `Cache-Control` header to `no-cache`. + +#### Example + +**Cache** + +```console +$ curl -s 'https://token-api.thegraph.com/v1/...' | jq .statistics +{ + "bytes_read": 221, + "rows_read": 1, + "elapsed": 0.002212065 +} +``` + +**No cache** + +```console +$ curl -s 'http://localhost:8000/v1/...' --header 'Cache-Control: no-cache' | jq .statistics +{ + "bytes_read": 14621174348, + "rows_read": 223244390, + "elapsed": 0.971064066 +} +``` + +## 📚 Example Migrations + +### Example 1: Get Token Balances + +**Before:** + +```bash +GET /token/balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +### Example 2: Get NFT Items + +**Before:** + +```bash +GET /nft/items/evm/contract/0xbd3531da5cf5857e7cfaa92426877b022e612cf8/token_id/5712?network_id=mainnet +``` + +**After:** + +```bash +GET /v1/evm/nft/items?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&token_id=5712 +``` + +### Example 3: Get Token Transfers with Time Filter + +**Before:** + +```bash +GET /token/transfers/evm?network_id=mainnet&from=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&startTime=1735689600&endTime=1767225600 +``` + +**After:** + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&start_time=1735689600&end_time=1767225600 +``` + +### Example 4: Get NFT Transfer Activities + +**Before:** + +```bash +GET /nft/activities/evm?network_id=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&anyAddress=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +**After:** + +```bash +GET /v1/evm/nft/transfers?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +### Example 5: Get Pool OHLC Data + +**Before:** + +```bash +GET /token/ohlc/pools/evm/0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640?network_id=mainnet&interval=1h&startTime=1735689600 +``` + +**After:** + +```bash +GET /v1/evm/pools/ohlc?network=mainnet&pool=0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640&interval=1h&start_time=1735689600 +``` + +### Example 6: Batched Query (New Feature) + +Query balances for multiple contracts in a single request: + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +Query transfers from multiple addresses: + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xabc...,0xdef...,0x123...&start_time=1735689600 +``` + +## ⚠️ Important Notes + +1. **Migration Notes:** The old endpoints were deprecated and removed on **October 30, 2025**. Please ensure all integrations have been migrated to the new Token API v1 endpoints. + +2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. + +3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. + +4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/vi/token-api/upgrade-to-v1.mdx b/website/src/pages/vi/token-api/upgrade-to-v1.mdx deleted file mode 100644 index fbe09101eaa5..000000000000 --- a/website/src/pages/vi/token-api/upgrade-to-v1.mdx +++ /dev/null @@ -1,254 +0,0 @@ ---- -title: Upgrade to v1 ---- - -This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. - -**Note** - -- `EVM` = Ethereum Virtual Machine - -Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). - -- `SVM` = Solana Virtual Machine - -Used to describe endpoints supporting Solana (currently the only SVM chain supported). - -## 🔑 Breaking Changes Summary - -### 1. **API Versioning** - -All endpoints now use the `/v1` prefix. - -**Before:** - -``` -GET /balances/evm -GET /nft/items/contract/:contract/token_id/:token_id -``` - -**After:** - -``` -GET /v1/evm/balances -GET /v1/evm/nft/items -``` - -### 2. **Route Structure Reorganization** - -#### 2.1 EVM Endpoints - -Consolidated under `/v1/evm/*` - -| Old Endpoint | New Endpoint | -| ------------------------------------------------------ | ----------------------------- | -| `/balances/evm` | `/v1/evm/balances` | -| `/historical/balances/evm` | `/v1/evm/balances/historical` | -| `/holders/evm/:contract` | `/v1/evm/holders` | -| `/tokens/evm/:contract` | `/v1/evm/tokens` | -| `/transfers/evm` | `/v1/evm/transfers` | -| `/pools/evm` | `/v1/evm/pools` | -| `/swaps/evm` | `/v1/evm/swaps` | -| `/dexes/evm` | `/v1/evm/dexes` | -| `/ohlc/prices/evm/:contract` | _(removed)_ | -| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | -| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | -| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | -| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | -| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | -| `/nft/activities/evm` | `/v1/evm/nft/transfers` | -| `/nft/sales/evm` | `/v1/evm/nft/sales` | - -**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. - -**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. - ---- - -#### 2.2 New EVM native balances endpoint - -Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. - -Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. - ---- - -#### 2.3 SVM Endpoints - -Consolidated under `/v1/svm/*` - -| Old Endpoint | New Endpoint | -| ------------------------ | ------------------------- | -| `/balances/svm` | `/v1/svm/balances` | -| `/balances/native/svm` | `/v1/svm/balances/native` | -| `/holders/svm/:contract` | `/v1/svm/holders` | -| `/tokens/svm/:mint` | `/v1/svm/tokens` | -| `/transfers/svm` | `/v1/svm/transfers` | -| `/pools/svm` | `/v1/svm/pools` | -| `/swaps/svm` | `/v1/svm/swaps` | -| `/dexes/svm` | `/v1/svm/dexes` | -| `/owner/svm/:account` | `/v1/svm/owner` | -| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | - -## 📝 Parameter Changes - -### 3. **Path Parameters → Query Parameters** - -All path parameters have been moved to query parameters. - -**Before:** - -```bash -GET /balances/evm/:address -GET /holders/evm/:contract -GET /nft/items/evm/contract/:contract/token_id/:token_id -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0x... -GET /v1/evm/holders?network=mainnet&contract=0x... -GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 -``` - -### 4. **Standardized Parameter Naming** - -All query parameters have been standardized to use snake_case naming convention. - -| Old Parameter | New Parameter | Notes | -| --- | --- | --- | -| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | -| `anyAddress` | `address` | Matches either `from` or `to` address | -| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | -| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | -| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | -| `endTime` | `end_time` | Default: `9999999999` | -| - | `start_block` | New parameter, default: `0` | -| - | `end_block` | New parameter, default: `9999999999` | -| - | `include_null_balances` | New parameter, default: `false` | -| `tx_hash` | `transaction_id` | - | -| `token` | `input_token`, `output_token` | More explicit for pool queries | -| `pool` | `amm_pool` | - | -| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | - -**Important:** The `network_id` parameter has been renamed to `network`. - -**Important:** `matic` network has been renamed to `polygon`. - -### 5. **Batched Parameters** - -Many parameters now support batching - accepting single values or comma-separated strings. - -**Supported Batched Parameters:** - -- `address`, `from_address`, `to_address` -- `contract`, `token_id` -- `factory`, `pool` -- `owner`, `token_account`, `mint` -- `transaction_id`, `signature` - -**Examples:** - -```console -# Single value -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 - -# Comma-separated, single parameter -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 - -# Repeated parameter values -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -### 6. **New Parameters** - -#### `include_null_balances` - -Added to balance endpoints to optionally include zero/null balances. - -```bash -?include_null_balances=true -``` - -**Default:** `false` - -## 🔄 Response Changes - -### 7. **Pagination Changes** - -Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. - -**Before:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2, - "next_page": 3, - "total_pages": 10 - }, - "total_results": 1234 -} -``` - -**After:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2 - } -} -``` - -**Removed fields:** - -- `next_page` -- `total_pages` -- `total_results` - -**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. - -### 8. **Removed Parameters** - -The following deprecated parameters have been removed: - -- `orderBy` - Results are now ordered by timestamp/block by default -- `orderDirection` - Always descending (newest first) - -## 📚 Example Migrations - -### Old vs New: Get Token Balances - -**Before:** - -```bash -GET /balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -### New Feature: Batched Queries - -Query balances for multiple contracts in a single request: - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -## ⚠️ Important Notes - -1. **Backward Compatibility:** The old endpoints are deprecated and will be removed in the future. Migrate by **Oct 30, 2025**. - -2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. - -3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. - -4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/zh/index.json b/website/src/pages/zh/index.json index f0e93d47203a..5b990df49b59 100644 --- a/website/src/pages/zh/index.json +++ b/website/src/pages/zh/index.json @@ -2,7 +2,7 @@ "title": "主页", "hero": { "title": "The Graph 文档", - "description": "The Graph is a blockchain data solution that powers applications, analytics, and AI on 90+ chains. The Graph's core products include the Token API for web3 apps, Subgraphs for indexing smart contracts, and Substreams for real-time and historical data streaming.", + "description": "The Graph is a blockchain data solution that powers applications, analytics, and AI on 80+ chains. The Graph's core products include the Token API for web3 apps, Subgraphs for indexing smart contracts, and Substreams for real-time and historical data streaming.", "cta1": "The Graph 是如何工作的", "cta2": "创建你的第一个子图" }, diff --git a/website/src/pages/zh/subgraphs/guides/_meta.js b/website/src/pages/zh/subgraphs/guides/_meta.js index fd5608dcceb2..1c081848ea08 100644 --- a/website/src/pages/zh/subgraphs/guides/_meta.js +++ b/website/src/pages/zh/subgraphs/guides/_meta.js @@ -2,7 +2,6 @@ export default { 'subgraph-composition': '', 'subgraph-debug-forking': '', near: '', - grafting: '', 'subgraph-uncrashable': '', 'transfer-to-the-graph': '', diff --git a/website/src/pages/zh/token-api/_meta.js b/website/src/pages/zh/token-api/_meta.js index a8624da52e7f..9588f70cec53 100644 --- a/website/src/pages/zh/token-api/_meta.js +++ b/website/src/pages/zh/token-api/_meta.js @@ -11,6 +11,6 @@ export default { 'tvm-dexs': titles['tvm-dexs'] ?? '', monitoring: titles['monitoring'] ?? '', 'endpoint-pricing': '', + guides: titles['guides'] ?? '', faq: '', - 'upgrade-to-v1': '', } diff --git a/website/src/pages/zh/token-api/guides/_meta-titles.json b/website/src/pages/zh/token-api/guides/_meta-titles.json new file mode 100644 index 000000000000..cd93dcc0fc0b --- /dev/null +++ b/website/src/pages/zh/token-api/guides/_meta-titles.json @@ -0,0 +1,4 @@ +{ + "gpt": "Create Custom GPTS", + "upgrade-to-v1": "" +} diff --git a/website/src/pages/zh/token-api/guides/_meta.js b/website/src/pages/zh/token-api/guides/_meta.js new file mode 100644 index 000000000000..e5aaaadd78f2 --- /dev/null +++ b/website/src/pages/zh/token-api/guides/_meta.js @@ -0,0 +1,4 @@ +export default { + gpt: '', + 'upgrade-to-v1': '', +} diff --git a/website/src/pages/zh/token-api/guides/gpt.mdx b/website/src/pages/zh/token-api/guides/gpt.mdx new file mode 100644 index 000000000000..564d013dea20 --- /dev/null +++ b/website/src/pages/zh/token-api/guides/gpt.mdx @@ -0,0 +1,121 @@ +--- +title: How the Token API Powers Custom GPTs +sidebarTitle: Create Custom GPTs +--- + +## Overview + +The Token API is a pre-indexed blockchain data service that provides real-time access to token balances, metadata, prices, liquidity, and volume across multiple chains. Developers use its REST endpoints to build wallets, trading dashboards, DeFi analytics, and AI systems without maintaining their own indexing stack. Custom GPTs can connect directly to the Token API's OpenAPI schema. + +The Token API enables developers to build **Custom GPTs** to reason over live blockchain data inside ChatGPT that can reason over and respond with live blockchain data directly inside ChatGPT. + +## What the Token API Enables in Custom GPTs + +When a Custom GPT is wired to the Token API, it gains access to a machine-readable schema and authenticated endpoints. Developers can use this to: + +- **Query real-time onchain data**: Balances, token prices, liquidity, and transaction history. +- **Automate domain-specific tasks**: Portfolio tracking, accounting, reconciliation, and market analysis. +- **Power AI agents with verifiable blockchain context**: Use the same data sources dapps rely on. + +Because the Token API provides a machine-readable schema and authenticated requests, it serves as a structured data layer that enables GPT-5 agents to combine natural language reasoning with live onchain data from The Graph. + +## When to Use the Token API for Custom GPTs + +Use the Token API when your GPT needs repeatable, domain-specific behavior grounded in blockchain data. This is most effective when the GPT performs the same type of task frequently or enforces a workflow you define. For one-off or exploratory questions, standard ChatGPT prompts are sufficient. + +## Choosing a Use Case + +Start with a clear, narrow objective, then expand as needed. Common patterns include: + +- **Accounting GPT**: Onchain accounting, tax tagging, and portfolio reconciliation. +- **Trading GPT**: Liquidity, pricing, and volume analysis for trading strategies. +- **Protocol Tracking GPT**: Real-time monitoring of transaction activity and liquidity pools. + +A focused initial goal such as “Retrieve token balances and prices for a wallet” makes it easier to configure reliable behavior before adding complex workflows. + +## Requirements + +| Requirement | Description | +| ---------------------- | -------------------------------------------------------- | +| ChatGPT 5 | Custom GPT creation requires GPT-5 tier or Pro. | +| Token API Subscription | Sign up at [The Graph Market](https://thegraph.market./) | +| Token API Key | Available in your dashboard as the Authentication JWT. | + +## Setting Up a Custom GPT + +Below is an explanatory outline of what happens during setup. This section provides conceptual understanding. + +### Create Custom GPT + +1. Visit chat.openai.com/gpts in your browser. 2, Click Create (top right). +2. Under Configure (in the top left panel), set up your GPT's personality and scope. + +### Configure Your GPT + +You define the GPT's role, scope, and metadata so it knows what it is designed to do. This includes: + +- **Name and Description**: Helps users discover your GPT. + - For example: **Name**: Token Tracker GPT **Description**: An onchain analytics assistant that retrieves live token balances, prices, and liquidity data using The Graph's Token API. +- **Instructions**: Tells the GPT what tasks it should perform using the Token API. + - For example: You are a blockchain data assistant retrieving onchain token data from The Graph's Token API. Use endpoints to fetch balances, liquidity, and price history across EVM chains. Present results in tables with token symbols, prices, and USD values. +- **Knowledge**: Optional context files such as wallet references, accounting rules, or code snippets. +- **New Action**: At the bottom, click “Create new action” to connect your GPT to the Token API. + +### Connect the Token API + +To enable live blockchain queries inside ChatGPT, you connect the GPT to the Token API through: + +#### Authentication + +1. Set Authentication to API Key → Bearer. +2. Open [The Graph Market](https://thegraph.market./) and copy your Authentication JWT from your dashboard. +3. Paste the token into the ChatGPT prompt where the field shows [HIDDEN]. + +#### Schema + +1. Above the Schema box, click Import from URL. +2. Paste: https://token-api.thegraph.com/openapi +3. Click Import. You'll now see endpoints like: + - `getV1EvmTokens` + - `getV1EvmDexes` + - `getV1EvmBalances` +4. Click Test on one (for example `getV1EvmDexes`) to verify connection. + +##### Privacy + +1. At the bottom, under Privacy, paste: https://pinax.network/en/legal/privacy + +### Privacy + +You can attach a privacy policy URL such as: https://pinax.network/en/legal/privacy + +## Example Prompt Patterns + +These examples help illustrate how a GPT reasons over Token API data. + +### Wallet and Portfolio + +Get the total USD balance for a wallet across multiple chains, returning token name, symbol, balance, and price. + +### Trading Analysis + +Compare USDC and DAI liquidity across Uniswap and Curve. Return the top 5 pools by TVL. + +### Accounting + +List all ERC-20 transfers for this address in the last 30 days. Group by token and total incoming/outgoing volume. + +## Best Practices + +| Tip | Why It Matters | +| --------------------------------- | ---------------------------------------------------------------------- | +| Scope your GPT narrowly first | Simplifies debugging and validates schema integration. | +| Use clear role instructions | Helps the GPT choose the right endpoints and avoid assumptions. | +| Name endpoints explicitly | Improves routing accuracy when fetching balances, prices, or DEX data. | +| Combine with code | Enables custom parsing or logic for complex workflows. | +| Add Subgraph or Substream context | Provides richer analytics when combined with Token API data. | + +## FAQs & Resources + +- Builders Office Hours (October 23, 2025) +- Watch the full session: https://x.com/i/broadcasts/1mrGmBzBarNJy diff --git a/website/src/pages/zh/token-api/guides/upgrade-to-v1.mdx b/website/src/pages/zh/token-api/guides/upgrade-to-v1.mdx new file mode 100644 index 000000000000..e2a7ccf973fa --- /dev/null +++ b/website/src/pages/zh/token-api/guides/upgrade-to-v1.mdx @@ -0,0 +1,346 @@ +--- +title: Upgrade to v1 +--- + +This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. + +**Note** + +- `EVM` = Ethereum Virtual Machine + +Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). + +- `SVM` = Solana Virtual Machine + +Used to describe endpoints supporting Solana (currently the only SVM chain supported). + +## 🔑 Breaking Changes Summary + +### 1. API Versioning + +All endpoints now use the `/v1` prefix. + +**Before:** + +``` +GET /balances/evm +GET /nft/items/contract/:contract/token_id/:token_id +``` + +**After:** + +``` +GET /v1/evm/balances +GET /v1/evm/nft/items +``` + +### 2. Route Structure Reorganization + +#### 2.1 EVM Endpoints + +Consolidated under `/v1/evm/*` + +| Old Endpoint | New Endpoint | +| ------------------------------------------------------ | ----------------------------- | +| `/balances/evm` | `/v1/evm/balances` | +| `/historical/balances/evm` | `/v1/evm/balances/historical` | +| `/holders/evm/:contract` | `/v1/evm/holders` | +| `/tokens/evm/:contract` | `/v1/evm/tokens` | +| `/transfers/evm` | `/v1/evm/transfers` | +| `/pools/evm` | `/v1/evm/pools` | +| `/swaps/evm` | `/v1/evm/swaps` | +| `/dexes/evm` | `/v1/evm/dexes` | +| `/ohlc/prices/evm/:contract` | _(removed)_ | +| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | +| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | +| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | +| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | +| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | +| `/nft/activities/evm` | `/v1/evm/nft/transfers` | +| `/nft/sales/evm` | `/v1/evm/nft/sales` | + +**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. + +**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. + +--- + +#### 2.2 New EVM native balances endpoint + +Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. + +Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. + +--- + +#### 2.3 SVM Endpoints + +Consolidated under `/v1/svm/*` + +| Old Endpoint | New Endpoint | +| ------------------------ | ------------------------- | +| `/balances/svm` | `/v1/svm/balances` | +| `/balances/native/svm` | `/v1/svm/balances/native` | +| `/holders/svm/:contract` | `/v1/svm/holders` | +| `/tokens/svm/:mint` | `/v1/svm/tokens` | +| `/transfers/svm` | `/v1/svm/transfers` | +| `/pools/svm` | `/v1/svm/pools` | +| `/swaps/svm` | `/v1/svm/swaps` | +| `/dexes/svm` | `/v1/svm/dexes` | +| `/owner/svm/:account` | `/v1/svm/owner` | +| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | + +## 📝 Parameter Changes + +### 3. Path Parameters → Query Parameters + +All path parameters have been moved to query parameters. + +**Before:** + +```bash +GET /balances/evm/:address +GET /holders/evm/:contract +GET /nft/items/evm/contract/:contract/token_id/:token_id +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0x... +GET /v1/evm/holders?network=mainnet&contract=0x... +GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 +``` + +### 4. Standardized Parameter Naming + +All query parameters have been standardized to use snake_case naming convention. + +| Old Parameter | New Parameter | Notes | +| --- | --- | --- | +| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | +| `anyAddress` | `address` | Matches either `from` or `to` address | +| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | +| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | +| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | +| `endTime` | `end_time` | Default: `9999999999` | +| - | `start_block` | New parameter, default: `0` | +| - | `end_block` | New parameter, default: `9999999999` | +| - | `include_null_balances` | New parameter, default: `false` | +| `tx_hash` | `transaction_id` | - | +| `token` | `input_token`, `output_token` | More explicit for pool queries | +| `pool` | `amm_pool` | - | +| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | + +**Important:** The `network_id` parameter has been renamed to `network`. + +**Important:** `matic` network has been renamed to `polygon`. + +### 5. Batched Parameters + +Many parameters now support batching - accepting single values or comma-separated strings. + +**Supported Batched Parameters:** + +- `address`, `from_address`, `to_address` +- `contract`, `token_id` +- `factory`, `pool` +- `owner`, `token_account`, `mint` +- `transaction_id`, `signature` + +**Examples:** + +```console +## Single value +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 + +## Comma-separated, single parameter +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 + +## Repeated parameter values +?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +### 6. New Parameters + +#### `include_null_balances` + +Added to balance endpoints to optionally include zero/null balances. + +```bash +?include_null_balances=true +``` + +**Default:** `false` + +## 🔄 Response Changes + +### 7. Pagination Changes + +Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. + +**Before:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2, + "next_page": 3, + "total_pages": 10 + }, + "total_results": 1234 +} +``` + +**After:** + +```json +{ + "pagination": { + "previous_page": 1, + "current_page": 2 + } +} +``` + +**Removed fields:** + +- `next_page` +- `total_pages` +- `total_results` + +**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. + +### 8. Removed Parameters + +The following deprecated parameters have been removed: + +- `orderBy` - Results are now ordered by timestamp/block by default +- `orderDirection` - Always descending (newest first) + +### 9. Cached Queries + +Queries are now cached on the ClickHouse side for better performance. + +You can specifically request to not use the cache by setting the `Cache-Control` header to `no-cache`. + +#### Example + +**Cache** + +```console +$ curl -s 'https://token-api.thegraph.com/v1/...' | jq .statistics +{ + "bytes_read": 221, + "rows_read": 1, + "elapsed": 0.002212065 +} +``` + +**No cache** + +```console +$ curl -s 'http://localhost:8000/v1/...' --header 'Cache-Control: no-cache' | jq .statistics +{ + "bytes_read": 14621174348, + "rows_read": 223244390, + "elapsed": 0.971064066 +} +``` + +## 📚 Example Migrations + +### Example 1: Get Token Balances + +**Before:** + +```bash +GET /token/balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +**After:** + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +``` + +### Example 2: Get NFT Items + +**Before:** + +```bash +GET /nft/items/evm/contract/0xbd3531da5cf5857e7cfaa92426877b022e612cf8/token_id/5712?network_id=mainnet +``` + +**After:** + +```bash +GET /v1/evm/nft/items?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&token_id=5712 +``` + +### Example 3: Get Token Transfers with Time Filter + +**Before:** + +```bash +GET /token/transfers/evm?network_id=mainnet&from=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&startTime=1735689600&endTime=1767225600 +``` + +**After:** + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&start_time=1735689600&end_time=1767225600 +``` + +### Example 4: Get NFT Transfer Activities + +**Before:** + +```bash +GET /nft/activities/evm?network_id=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&anyAddress=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +**After:** + +```bash +GET /v1/evm/nft/transfers?network=mainnet&contract=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045 +``` + +### Example 5: Get Pool OHLC Data + +**Before:** + +```bash +GET /token/ohlc/pools/evm/0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640?network_id=mainnet&interval=1h&startTime=1735689600 +``` + +**After:** + +```bash +GET /v1/evm/pools/ohlc?network=mainnet&pool=0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640&interval=1h&start_time=1735689600 +``` + +### Example 6: Batched Query (New Feature) + +Query balances for multiple contracts in a single request: + +```bash +GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +``` + +Query transfers from multiple addresses: + +```bash +GET /v1/evm/transfers?network=mainnet&from_address=0xabc...,0xdef...,0x123...&start_time=1735689600 +``` + +## ⚠️ Important Notes + +1. **Migration Notes:** The old endpoints were deprecated and removed on **October 30, 2025**. Please ensure all integrations have been migrated to the new Token API v1 endpoints. + +2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. + +3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. + +4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. diff --git a/website/src/pages/zh/token-api/upgrade-to-v1.mdx b/website/src/pages/zh/token-api/upgrade-to-v1.mdx deleted file mode 100644 index fbe09101eaa5..000000000000 --- a/website/src/pages/zh/token-api/upgrade-to-v1.mdx +++ /dev/null @@ -1,254 +0,0 @@ ---- -title: Upgrade to v1 ---- - -This guide covers the migration from the legacy API structure to the new v1 API. The refactoring introduces versioned endpoints, standardized query parameters, improved batching support, and consistent naming conventions. - -**Note** - -- `EVM` = Ethereum Virtual Machine - -Used to describe endpoints supporting EVM-based chains (e.g. `base`, `bsc`, `mainnet`, ...). - -- `SVM` = Solana Virtual Machine - -Used to describe endpoints supporting Solana (currently the only SVM chain supported). - -## 🔑 Breaking Changes Summary - -### 1. **API Versioning** - -All endpoints now use the `/v1` prefix. - -**Before:** - -``` -GET /balances/evm -GET /nft/items/contract/:contract/token_id/:token_id -``` - -**After:** - -``` -GET /v1/evm/balances -GET /v1/evm/nft/items -``` - -### 2. **Route Structure Reorganization** - -#### 2.1 EVM Endpoints - -Consolidated under `/v1/evm/*` - -| Old Endpoint | New Endpoint | -| ------------------------------------------------------ | ----------------------------- | -| `/balances/evm` | `/v1/evm/balances` | -| `/historical/balances/evm` | `/v1/evm/balances/historical` | -| `/holders/evm/:contract` | `/v1/evm/holders` | -| `/tokens/evm/:contract` | `/v1/evm/tokens` | -| `/transfers/evm` | `/v1/evm/transfers` | -| `/pools/evm` | `/v1/evm/pools` | -| `/swaps/evm` | `/v1/evm/swaps` | -| `/dexes/evm` | `/v1/evm/dexes` | -| `/ohlc/prices/evm/:contract` | _(removed)_ | -| `/ohlc/pools/evm/:pool` | `/v1/evm/pools/ohlc` | -| `/nft/ownerships/evm/:address` | `/v1/evm/nft/ownerships` | -| `/nft/collections/evm/:contract` | `/v1/evm/nft/collections` | -| `/nft/items/evm/contract/:contract/token_id/:token_id` | `/v1/evm/nft/items` | -| `/nft/holders/evm/:contract` | `/v1/evm/nft/holders` | -| `/nft/activities/evm` | `/v1/evm/nft/transfers` | -| `/nft/sales/evm` | `/v1/evm/nft/sales` | - -**Important:** The NFT endpoint `/nft/activities` has been renamed to `/v1/evm/nft/transfers` to better reflect its purpose. - -**Important:** The EVM Token OHLCV Data endpoint `/ohlc/prices/evm/{contract}` has been removed. You can use `/v1/evm/pools` to find stablecoin pairs for your contract and `/v1/evm/pools/ohlc` for OHLCV data for that pair. - ---- - -#### 2.2 New EVM native balances endpoint - -Native balances for EVM chains can be found under `/v1/evm/balances/native`. They will not show up in the `/v1/evm/balances` endpoint. - -Other endpoints can still use native token under the `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` contract. - ---- - -#### 2.3 SVM Endpoints - -Consolidated under `/v1/svm/*` - -| Old Endpoint | New Endpoint | -| ------------------------ | ------------------------- | -| `/balances/svm` | `/v1/svm/balances` | -| `/balances/native/svm` | `/v1/svm/balances/native` | -| `/holders/svm/:contract` | `/v1/svm/holders` | -| `/tokens/svm/:mint` | `/v1/svm/tokens` | -| `/transfers/svm` | `/v1/svm/transfers` | -| `/pools/svm` | `/v1/svm/pools` | -| `/swaps/svm` | `/v1/svm/swaps` | -| `/dexes/svm` | `/v1/svm/dexes` | -| `/owner/svm/:account` | `/v1/svm/owner` | -| `/ohlc/pools/svm/:pool` | `/v1/svm/pools/ohlc` | - -## 📝 Parameter Changes - -### 3. **Path Parameters → Query Parameters** - -All path parameters have been moved to query parameters. - -**Before:** - -```bash -GET /balances/evm/:address -GET /holders/evm/:contract -GET /nft/items/evm/contract/:contract/token_id/:token_id -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0x... -GET /v1/evm/holders?network=mainnet&contract=0x... -GET /v1/evm/nft/items?network=mainnet&contract=0x...&token_id=5712 -``` - -### 4. **Standardized Parameter Naming** - -All query parameters have been standardized to use snake_case naming convention. - -| Old Parameter | New Parameter | Notes | -| --- | --- | --- | -| `network_id` | `network` | Renamed, `matic` has also been renamed to `polygon` | -| `anyAddress` | `address` | Matches either `from` or `to` address | -| `from`, `fromAddress`, `offererAddress` | `from_address`, `offerer` | - | -| `to`, `toAddress`, `recipientAddress` | `to_address`, `recipient` | - | -| `startTime` | `start_time` | Default: `1735689600` (`2025-01-01`) | -| `endTime` | `end_time` | Default: `9999999999` | -| - | `start_block` | New parameter, default: `0` | -| - | `end_block` | New parameter, default: `9999999999` | -| - | `include_null_balances` | New parameter, default: `false` | -| `tx_hash` | `transaction_id` | - | -| `token` | `input_token`, `output_token` | More explicit for pool queries | -| `pool` | `amm_pool` | - | -| `orderBy`, `orderDirection` | _(removed)_ | Always sorted by most recent timestamp first | - -**Important:** The `network_id` parameter has been renamed to `network`. - -**Important:** `matic` network has been renamed to `polygon`. - -### 5. **Batched Parameters** - -Many parameters now support batching - accepting single values or comma-separated strings. - -**Supported Batched Parameters:** - -- `address`, `from_address`, `to_address` -- `contract`, `token_id` -- `factory`, `pool` -- `owner`, `token_account`, `mint` -- `transaction_id`, `signature` - -**Examples:** - -```console -# Single value -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 - -# Comma-separated, single parameter -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 - -# Repeated parameter values -?contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&contract=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -### 6. **New Parameters** - -#### `include_null_balances` - -Added to balance endpoints to optionally include zero/null balances. - -```bash -?include_null_balances=true -``` - -**Default:** `false` - -## 🔄 Response Changes - -### 7. **Pagination Changes** - -Pagination responses have been simplified. The API no longer computes total result counts due to performance and accuracy considerations when working with ClickHouse views and materialized tables. - -**Before:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2, - "next_page": 3, - "total_pages": 10 - }, - "total_results": 1234 -} -``` - -**After:** - -```json -{ - "pagination": { - "previous_page": 1, - "current_page": 2 - } -} -``` - -**Removed fields:** - -- `next_page` -- `total_pages` -- `total_results` - -**Important:** To retrieve all results, continue incrementing the `page` parameter until the API returns an empty `data` array. This indicates you've reached the end of the results. - -### 8. **Removed Parameters** - -The following deprecated parameters have been removed: - -- `orderBy` - Results are now ordered by timestamp/block by default -- `orderDirection` - Always descending (newest first) - -## 📚 Example Migrations - -### Old vs New: Get Token Balances - -**Before:** - -```bash -GET /balances/evm/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?network_id=mainnet&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -**After:** - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -``` - -### New Feature: Batched Queries - -Query balances for multiple contracts in a single request: - -```bash -GET /v1/evm/balances?network=mainnet&address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -``` - -## ⚠️ Important Notes - -1. **Backward Compatibility:** The old endpoints are deprecated and will be removed in the future. Migrate by **Oct 30, 2025**. - -2. **Default Sorting:** All results are now sorted by timestamp (descending) by default. Custom sorting is no longer supported. - -3. **Pagination:** Continue paging through results by incrementing the `page` parameter until you receive an empty `data` array. The API no longer provides total counts due to performance optimizations with ClickHouse. - -4. **Time Defaults:** If you previously relied on fetching all historical data without time filters, note that `start_time` now defaults to `2025-01-01`. Adjust accordingly if you need earlier data. From c717bc6c7d378060c85e1844e8b5d5a30c95d339 Mon Sep 17 00:00:00 2001 From: benface Date: Sat, 13 Dec 2025 16:54:31 -0500 Subject: [PATCH 13/14] Run `pnpm check:fix` --- website/src/components/CodeTabs.tsx | 24 +++++++++---------- website/src/layout/Layout.tsx | 2 +- .../src/pages/ar/token-api/endpoints/_meta.js | 4 ++-- .../pages/ar/token-api/endpoints/support.mdx | 1 - .../src/pages/cs/token-api/endpoints/_meta.js | 4 ++-- .../pages/cs/token-api/endpoints/support.mdx | 1 - .../src/pages/de/token-api/endpoints/_meta.js | 4 ++-- .../pages/de/token-api/endpoints/support.mdx | 1 - .../src/pages/en/token-api/endpoints/_meta.js | 4 ++-- .../pages/en/token-api/endpoints/support.mdx | 1 - .../src/pages/en/token-api/quick-start.mdx | 17 ++++++------- .../src/pages/es/token-api/endpoints/_meta.js | 4 ++-- .../pages/es/token-api/endpoints/support.mdx | 1 - .../src/pages/fr/token-api/endpoints/_meta.js | 4 ++-- .../pages/fr/token-api/endpoints/support.mdx | 1 - .../src/pages/hi/token-api/endpoints/_meta.js | 4 ++-- .../pages/hi/token-api/endpoints/support.mdx | 1 - .../src/pages/it/token-api/endpoints/_meta.js | 4 ++-- .../pages/it/token-api/endpoints/support.mdx | 1 - .../src/pages/ja/token-api/endpoints/_meta.js | 4 ++-- .../pages/ja/token-api/endpoints/support.mdx | 1 - .../src/pages/ko/token-api/endpoints/_meta.js | 4 ++-- .../pages/ko/token-api/endpoints/support.mdx | 1 - .../src/pages/mr/token-api/endpoints/_meta.js | 4 ++-- .../pages/mr/token-api/endpoints/support.mdx | 1 - .../src/pages/nl/token-api/endpoints/_meta.js | 4 ++-- .../pages/nl/token-api/endpoints/support.mdx | 1 - .../src/pages/pl/token-api/endpoints/_meta.js | 4 ++-- .../pages/pl/token-api/endpoints/support.mdx | 1 - .../src/pages/pt/token-api/endpoints/_meta.js | 4 ++-- .../pages/pt/token-api/endpoints/support.mdx | 1 - .../src/pages/ro/token-api/endpoints/_meta.js | 4 ++-- .../pages/ro/token-api/endpoints/support.mdx | 1 - .../src/pages/ru/token-api/endpoints/_meta.js | 4 ++-- .../pages/ru/token-api/endpoints/support.mdx | 1 - .../src/pages/sv/token-api/endpoints/_meta.js | 4 ++-- .../pages/sv/token-api/endpoints/support.mdx | 1 - .../src/pages/tr/token-api/endpoints/_meta.js | 4 ++-- .../pages/tr/token-api/endpoints/support.mdx | 1 - .../src/pages/uk/token-api/endpoints/_meta.js | 4 ++-- .../pages/uk/token-api/endpoints/support.mdx | 1 - .../src/pages/ur/token-api/endpoints/_meta.js | 4 ++-- .../pages/ur/token-api/endpoints/support.mdx | 1 - .../src/pages/vi/token-api/endpoints/_meta.js | 4 ++-- .../pages/vi/token-api/endpoints/support.mdx | 1 - .../src/pages/zh/token-api/endpoints/_meta.js | 4 ++-- .../pages/zh/token-api/endpoints/support.mdx | 1 - 47 files changed, 66 insertions(+), 87 deletions(-) diff --git a/website/src/components/CodeTabs.tsx b/website/src/components/CodeTabs.tsx index 72655067cd8a..6d24f7ce06b6 100644 --- a/website/src/components/CodeTabs.tsx +++ b/website/src/components/CodeTabs.tsx @@ -1,38 +1,38 @@ -import { Children, isValidElement, useState } from 'react'; +import { Children, isValidElement, useState } from 'react' export function CodeTabs({ children, defaultIndex = 0 }: { children: React.ReactNode; defaultIndex?: number }) { - const tabs = Children.toArray(children).filter(isValidElement); + const tabs = Children.toArray(children).filter(isValidElement) - const [activeIndex, setActiveIndex] = useState(defaultIndex); + const [activeIndex, setActiveIndex] = useState(defaultIndex) return ( -

+
{/* tab labels */} -
+
{tabs.map((tab: any, i: number) => { - const label = tab.props.label ?? `Tab ${i + 1}`; + const label = tab.props.label ?? `Tab ${i + 1}` return ( - ); + ) })}
{/* active tab contents */}
{tabs[activeIndex]}
- ); + ) } export function CodeTab({ children }: { children: React.ReactNode }) { - return
{children}
; -} \ No newline at end of file + return
{children}
+} diff --git a/website/src/layout/Layout.tsx b/website/src/layout/Layout.tsx index edbc737a6f2a..bfa7572f734d 100644 --- a/website/src/layout/Layout.tsx +++ b/website/src/layout/Layout.tsx @@ -5,7 +5,6 @@ import { NextSeo, type NextSeoProps } from 'next-seo' import type { NextraThemeLayoutProps } from 'nextra' import { useFSRoute, useRouter } from 'nextra/hooks' import { MDXProvider } from 'nextra/mdx' -import { CodeTabs, CodeTab } from "@/components/CodeTabs" import { normalizePages } from 'nextra/normalize-pages' import { type ComponentProps, @@ -65,6 +64,7 @@ import { Table, VideoEmbed, } from '@/components' +import { CodeTab, CodeTabs } from '@/components/CodeTabs' import { useI18n } from '@/i18n' import { MDXContent } from './MDXContent' diff --git a/website/src/pages/ar/token-api/endpoints/_meta.js b/website/src/pages/ar/token-api/endpoints/_meta.js index 33c169163213..c85dabe30711 100644 --- a/website/src/pages/ar/token-api/endpoints/_meta.js +++ b/website/src/pages/ar/token-api/endpoints/_meta.js @@ -1,4 +1,4 @@ export default { - 'pricing': '', - 'support': '', + pricing: '', + support: '', } diff --git a/website/src/pages/ar/token-api/endpoints/support.mdx b/website/src/pages/ar/token-api/endpoints/support.mdx index 652f7457f9b2..50f825afdfd6 100644 --- a/website/src/pages/ar/token-api/endpoints/support.mdx +++ b/website/src/pages/ar/token-api/endpoints/support.mdx @@ -21,4 +21,3 @@ import { Check } from '@edgeandnode/gds/icons' | Tron Mainnet | | | ❌ Unsupported | A full list of chain support for The Graph services can be found [here](/supported-networks/). - diff --git a/website/src/pages/cs/token-api/endpoints/_meta.js b/website/src/pages/cs/token-api/endpoints/_meta.js index 33c169163213..c85dabe30711 100644 --- a/website/src/pages/cs/token-api/endpoints/_meta.js +++ b/website/src/pages/cs/token-api/endpoints/_meta.js @@ -1,4 +1,4 @@ export default { - 'pricing': '', - 'support': '', + pricing: '', + support: '', } diff --git a/website/src/pages/cs/token-api/endpoints/support.mdx b/website/src/pages/cs/token-api/endpoints/support.mdx index 652f7457f9b2..50f825afdfd6 100644 --- a/website/src/pages/cs/token-api/endpoints/support.mdx +++ b/website/src/pages/cs/token-api/endpoints/support.mdx @@ -21,4 +21,3 @@ import { Check } from '@edgeandnode/gds/icons' | Tron Mainnet | | | ❌ Unsupported | A full list of chain support for The Graph services can be found [here](/supported-networks/). - diff --git a/website/src/pages/de/token-api/endpoints/_meta.js b/website/src/pages/de/token-api/endpoints/_meta.js index 33c169163213..c85dabe30711 100644 --- a/website/src/pages/de/token-api/endpoints/_meta.js +++ b/website/src/pages/de/token-api/endpoints/_meta.js @@ -1,4 +1,4 @@ export default { - 'pricing': '', - 'support': '', + pricing: '', + support: '', } diff --git a/website/src/pages/de/token-api/endpoints/support.mdx b/website/src/pages/de/token-api/endpoints/support.mdx index 652f7457f9b2..50f825afdfd6 100644 --- a/website/src/pages/de/token-api/endpoints/support.mdx +++ b/website/src/pages/de/token-api/endpoints/support.mdx @@ -21,4 +21,3 @@ import { Check } from '@edgeandnode/gds/icons' | Tron Mainnet | | | ❌ Unsupported | A full list of chain support for The Graph services can be found [here](/supported-networks/). - diff --git a/website/src/pages/en/token-api/endpoints/_meta.js b/website/src/pages/en/token-api/endpoints/_meta.js index 33c169163213..c85dabe30711 100644 --- a/website/src/pages/en/token-api/endpoints/_meta.js +++ b/website/src/pages/en/token-api/endpoints/_meta.js @@ -1,4 +1,4 @@ export default { - 'pricing': '', - 'support': '', + pricing: '', + support: '', } diff --git a/website/src/pages/en/token-api/endpoints/support.mdx b/website/src/pages/en/token-api/endpoints/support.mdx index 652f7457f9b2..50f825afdfd6 100644 --- a/website/src/pages/en/token-api/endpoints/support.mdx +++ b/website/src/pages/en/token-api/endpoints/support.mdx @@ -21,4 +21,3 @@ import { Check } from '@edgeandnode/gds/icons' | Tron Mainnet | | | ❌ Unsupported | A full list of chain support for The Graph services can be found [here](/supported-networks/). - diff --git a/website/src/pages/en/token-api/quick-start.mdx b/website/src/pages/en/token-api/quick-start.mdx index ab48c5e1cb50..0cf77accddcc 100644 --- a/website/src/pages/en/token-api/quick-start.mdx +++ b/website/src/pages/en/token-api/quick-start.mdx @@ -7,8 +7,7 @@ The Graph's Token API lets you access both live and historical data for tokens a ## Gain access -Make sure you already have an account on [The Graph Market](https://thegraph.com) and an **"API TOKEN (Authentication JWT)"** -from the [Dashboard](https://thegraph.market/dashboard). +Make sure you already have an account on [The Graph Market](https://thegraph.com) and an **"API TOKEN (Authentication JWT)"** from the [Dashboard](https://thegraph.market/dashboard). ## Use authenticated routes @@ -45,7 +44,7 @@ Raw API endpoints are authenticated using a header, and the TypeScript Node.js S "https://token-api.thegraph.com/v1/evm/balances?network=mainnet&address=0x2a0c0dbecc7e4d658f48e01e3fa353f44050c208", headers={"Authorization": "Bearer YOUR_TOKEN"}, ) - + print(res.json()) ``` @@ -58,20 +57,20 @@ Raw API endpoints are authenticated using a header, and the TypeScript Node.js S "encoding/json" "net/http" ) - + func main() { req, _ := http.NewRequest("GET", "https://token-api.thegraph.com/v1/evm/balances?network=mainnet&address=0x2a0c0dbecc7e4d658f48e01e3fa353f44050c208", nil, ) req.Header.Set("Authorization", "Bearer YOUR_TOKEN") - + res, _ := http.DefaultClient.Do(req) defer res.Body.Close() - + var data any json.NewDecoder(res.Body).Decode(&data) - + fmt.Printf("%#v\n", data) } ``` @@ -87,17 +86,19 @@ Raw API endpoints are authenticated using a header, and the TypeScript Node.js S .bearer_auth("YOUR_TOKEN") .send() .await?; - + println!("{}", res.text().await?); Ok(()) } ``` + ## What's next? Explore the most popular endpoints: + - [EVM Transfers](/token-api/evm-tokens/transfers/) - [Solana Swaps](/token-api/svm-dexs/swaps/) - [EVM Token Holders](/token-api/evm-tokens/holders/) diff --git a/website/src/pages/es/token-api/endpoints/_meta.js b/website/src/pages/es/token-api/endpoints/_meta.js index 33c169163213..c85dabe30711 100644 --- a/website/src/pages/es/token-api/endpoints/_meta.js +++ b/website/src/pages/es/token-api/endpoints/_meta.js @@ -1,4 +1,4 @@ export default { - 'pricing': '', - 'support': '', + pricing: '', + support: '', } diff --git a/website/src/pages/es/token-api/endpoints/support.mdx b/website/src/pages/es/token-api/endpoints/support.mdx index 652f7457f9b2..50f825afdfd6 100644 --- a/website/src/pages/es/token-api/endpoints/support.mdx +++ b/website/src/pages/es/token-api/endpoints/support.mdx @@ -21,4 +21,3 @@ import { Check } from '@edgeandnode/gds/icons' | Tron Mainnet | | | ❌ Unsupported | A full list of chain support for The Graph services can be found [here](/supported-networks/). - diff --git a/website/src/pages/fr/token-api/endpoints/_meta.js b/website/src/pages/fr/token-api/endpoints/_meta.js index 33c169163213..c85dabe30711 100644 --- a/website/src/pages/fr/token-api/endpoints/_meta.js +++ b/website/src/pages/fr/token-api/endpoints/_meta.js @@ -1,4 +1,4 @@ export default { - 'pricing': '', - 'support': '', + pricing: '', + support: '', } diff --git a/website/src/pages/fr/token-api/endpoints/support.mdx b/website/src/pages/fr/token-api/endpoints/support.mdx index 652f7457f9b2..50f825afdfd6 100644 --- a/website/src/pages/fr/token-api/endpoints/support.mdx +++ b/website/src/pages/fr/token-api/endpoints/support.mdx @@ -21,4 +21,3 @@ import { Check } from '@edgeandnode/gds/icons' | Tron Mainnet | | | ❌ Unsupported | A full list of chain support for The Graph services can be found [here](/supported-networks/). - diff --git a/website/src/pages/hi/token-api/endpoints/_meta.js b/website/src/pages/hi/token-api/endpoints/_meta.js index 33c169163213..c85dabe30711 100644 --- a/website/src/pages/hi/token-api/endpoints/_meta.js +++ b/website/src/pages/hi/token-api/endpoints/_meta.js @@ -1,4 +1,4 @@ export default { - 'pricing': '', - 'support': '', + pricing: '', + support: '', } diff --git a/website/src/pages/hi/token-api/endpoints/support.mdx b/website/src/pages/hi/token-api/endpoints/support.mdx index 652f7457f9b2..50f825afdfd6 100644 --- a/website/src/pages/hi/token-api/endpoints/support.mdx +++ b/website/src/pages/hi/token-api/endpoints/support.mdx @@ -21,4 +21,3 @@ import { Check } from '@edgeandnode/gds/icons' | Tron Mainnet | | | ❌ Unsupported | A full list of chain support for The Graph services can be found [here](/supported-networks/). - diff --git a/website/src/pages/it/token-api/endpoints/_meta.js b/website/src/pages/it/token-api/endpoints/_meta.js index 33c169163213..c85dabe30711 100644 --- a/website/src/pages/it/token-api/endpoints/_meta.js +++ b/website/src/pages/it/token-api/endpoints/_meta.js @@ -1,4 +1,4 @@ export default { - 'pricing': '', - 'support': '', + pricing: '', + support: '', } diff --git a/website/src/pages/it/token-api/endpoints/support.mdx b/website/src/pages/it/token-api/endpoints/support.mdx index 652f7457f9b2..50f825afdfd6 100644 --- a/website/src/pages/it/token-api/endpoints/support.mdx +++ b/website/src/pages/it/token-api/endpoints/support.mdx @@ -21,4 +21,3 @@ import { Check } from '@edgeandnode/gds/icons' | Tron Mainnet | | | ❌ Unsupported | A full list of chain support for The Graph services can be found [here](/supported-networks/). - diff --git a/website/src/pages/ja/token-api/endpoints/_meta.js b/website/src/pages/ja/token-api/endpoints/_meta.js index 33c169163213..c85dabe30711 100644 --- a/website/src/pages/ja/token-api/endpoints/_meta.js +++ b/website/src/pages/ja/token-api/endpoints/_meta.js @@ -1,4 +1,4 @@ export default { - 'pricing': '', - 'support': '', + pricing: '', + support: '', } diff --git a/website/src/pages/ja/token-api/endpoints/support.mdx b/website/src/pages/ja/token-api/endpoints/support.mdx index 652f7457f9b2..50f825afdfd6 100644 --- a/website/src/pages/ja/token-api/endpoints/support.mdx +++ b/website/src/pages/ja/token-api/endpoints/support.mdx @@ -21,4 +21,3 @@ import { Check } from '@edgeandnode/gds/icons' | Tron Mainnet | | | ❌ Unsupported | A full list of chain support for The Graph services can be found [here](/supported-networks/). - diff --git a/website/src/pages/ko/token-api/endpoints/_meta.js b/website/src/pages/ko/token-api/endpoints/_meta.js index 33c169163213..c85dabe30711 100644 --- a/website/src/pages/ko/token-api/endpoints/_meta.js +++ b/website/src/pages/ko/token-api/endpoints/_meta.js @@ -1,4 +1,4 @@ export default { - 'pricing': '', - 'support': '', + pricing: '', + support: '', } diff --git a/website/src/pages/ko/token-api/endpoints/support.mdx b/website/src/pages/ko/token-api/endpoints/support.mdx index 652f7457f9b2..50f825afdfd6 100644 --- a/website/src/pages/ko/token-api/endpoints/support.mdx +++ b/website/src/pages/ko/token-api/endpoints/support.mdx @@ -21,4 +21,3 @@ import { Check } from '@edgeandnode/gds/icons' | Tron Mainnet | | | ❌ Unsupported | A full list of chain support for The Graph services can be found [here](/supported-networks/). - diff --git a/website/src/pages/mr/token-api/endpoints/_meta.js b/website/src/pages/mr/token-api/endpoints/_meta.js index 33c169163213..c85dabe30711 100644 --- a/website/src/pages/mr/token-api/endpoints/_meta.js +++ b/website/src/pages/mr/token-api/endpoints/_meta.js @@ -1,4 +1,4 @@ export default { - 'pricing': '', - 'support': '', + pricing: '', + support: '', } diff --git a/website/src/pages/mr/token-api/endpoints/support.mdx b/website/src/pages/mr/token-api/endpoints/support.mdx index 652f7457f9b2..50f825afdfd6 100644 --- a/website/src/pages/mr/token-api/endpoints/support.mdx +++ b/website/src/pages/mr/token-api/endpoints/support.mdx @@ -21,4 +21,3 @@ import { Check } from '@edgeandnode/gds/icons' | Tron Mainnet | | | ❌ Unsupported | A full list of chain support for The Graph services can be found [here](/supported-networks/). - diff --git a/website/src/pages/nl/token-api/endpoints/_meta.js b/website/src/pages/nl/token-api/endpoints/_meta.js index 33c169163213..c85dabe30711 100644 --- a/website/src/pages/nl/token-api/endpoints/_meta.js +++ b/website/src/pages/nl/token-api/endpoints/_meta.js @@ -1,4 +1,4 @@ export default { - 'pricing': '', - 'support': '', + pricing: '', + support: '', } diff --git a/website/src/pages/nl/token-api/endpoints/support.mdx b/website/src/pages/nl/token-api/endpoints/support.mdx index 652f7457f9b2..50f825afdfd6 100644 --- a/website/src/pages/nl/token-api/endpoints/support.mdx +++ b/website/src/pages/nl/token-api/endpoints/support.mdx @@ -21,4 +21,3 @@ import { Check } from '@edgeandnode/gds/icons' | Tron Mainnet | | | ❌ Unsupported | A full list of chain support for The Graph services can be found [here](/supported-networks/). - diff --git a/website/src/pages/pl/token-api/endpoints/_meta.js b/website/src/pages/pl/token-api/endpoints/_meta.js index 33c169163213..c85dabe30711 100644 --- a/website/src/pages/pl/token-api/endpoints/_meta.js +++ b/website/src/pages/pl/token-api/endpoints/_meta.js @@ -1,4 +1,4 @@ export default { - 'pricing': '', - 'support': '', + pricing: '', + support: '', } diff --git a/website/src/pages/pl/token-api/endpoints/support.mdx b/website/src/pages/pl/token-api/endpoints/support.mdx index 652f7457f9b2..50f825afdfd6 100644 --- a/website/src/pages/pl/token-api/endpoints/support.mdx +++ b/website/src/pages/pl/token-api/endpoints/support.mdx @@ -21,4 +21,3 @@ import { Check } from '@edgeandnode/gds/icons' | Tron Mainnet | | | ❌ Unsupported | A full list of chain support for The Graph services can be found [here](/supported-networks/). - diff --git a/website/src/pages/pt/token-api/endpoints/_meta.js b/website/src/pages/pt/token-api/endpoints/_meta.js index 33c169163213..c85dabe30711 100644 --- a/website/src/pages/pt/token-api/endpoints/_meta.js +++ b/website/src/pages/pt/token-api/endpoints/_meta.js @@ -1,4 +1,4 @@ export default { - 'pricing': '', - 'support': '', + pricing: '', + support: '', } diff --git a/website/src/pages/pt/token-api/endpoints/support.mdx b/website/src/pages/pt/token-api/endpoints/support.mdx index 652f7457f9b2..50f825afdfd6 100644 --- a/website/src/pages/pt/token-api/endpoints/support.mdx +++ b/website/src/pages/pt/token-api/endpoints/support.mdx @@ -21,4 +21,3 @@ import { Check } from '@edgeandnode/gds/icons' | Tron Mainnet | | | ❌ Unsupported | A full list of chain support for The Graph services can be found [here](/supported-networks/). - diff --git a/website/src/pages/ro/token-api/endpoints/_meta.js b/website/src/pages/ro/token-api/endpoints/_meta.js index 33c169163213..c85dabe30711 100644 --- a/website/src/pages/ro/token-api/endpoints/_meta.js +++ b/website/src/pages/ro/token-api/endpoints/_meta.js @@ -1,4 +1,4 @@ export default { - 'pricing': '', - 'support': '', + pricing: '', + support: '', } diff --git a/website/src/pages/ro/token-api/endpoints/support.mdx b/website/src/pages/ro/token-api/endpoints/support.mdx index 652f7457f9b2..50f825afdfd6 100644 --- a/website/src/pages/ro/token-api/endpoints/support.mdx +++ b/website/src/pages/ro/token-api/endpoints/support.mdx @@ -21,4 +21,3 @@ import { Check } from '@edgeandnode/gds/icons' | Tron Mainnet | | | ❌ Unsupported | A full list of chain support for The Graph services can be found [here](/supported-networks/). - diff --git a/website/src/pages/ru/token-api/endpoints/_meta.js b/website/src/pages/ru/token-api/endpoints/_meta.js index 33c169163213..c85dabe30711 100644 --- a/website/src/pages/ru/token-api/endpoints/_meta.js +++ b/website/src/pages/ru/token-api/endpoints/_meta.js @@ -1,4 +1,4 @@ export default { - 'pricing': '', - 'support': '', + pricing: '', + support: '', } diff --git a/website/src/pages/ru/token-api/endpoints/support.mdx b/website/src/pages/ru/token-api/endpoints/support.mdx index 652f7457f9b2..50f825afdfd6 100644 --- a/website/src/pages/ru/token-api/endpoints/support.mdx +++ b/website/src/pages/ru/token-api/endpoints/support.mdx @@ -21,4 +21,3 @@ import { Check } from '@edgeandnode/gds/icons' | Tron Mainnet | | | ❌ Unsupported | A full list of chain support for The Graph services can be found [here](/supported-networks/). - diff --git a/website/src/pages/sv/token-api/endpoints/_meta.js b/website/src/pages/sv/token-api/endpoints/_meta.js index 33c169163213..c85dabe30711 100644 --- a/website/src/pages/sv/token-api/endpoints/_meta.js +++ b/website/src/pages/sv/token-api/endpoints/_meta.js @@ -1,4 +1,4 @@ export default { - 'pricing': '', - 'support': '', + pricing: '', + support: '', } diff --git a/website/src/pages/sv/token-api/endpoints/support.mdx b/website/src/pages/sv/token-api/endpoints/support.mdx index 652f7457f9b2..50f825afdfd6 100644 --- a/website/src/pages/sv/token-api/endpoints/support.mdx +++ b/website/src/pages/sv/token-api/endpoints/support.mdx @@ -21,4 +21,3 @@ import { Check } from '@edgeandnode/gds/icons' | Tron Mainnet | | | ❌ Unsupported | A full list of chain support for The Graph services can be found [here](/supported-networks/). - diff --git a/website/src/pages/tr/token-api/endpoints/_meta.js b/website/src/pages/tr/token-api/endpoints/_meta.js index 33c169163213..c85dabe30711 100644 --- a/website/src/pages/tr/token-api/endpoints/_meta.js +++ b/website/src/pages/tr/token-api/endpoints/_meta.js @@ -1,4 +1,4 @@ export default { - 'pricing': '', - 'support': '', + pricing: '', + support: '', } diff --git a/website/src/pages/tr/token-api/endpoints/support.mdx b/website/src/pages/tr/token-api/endpoints/support.mdx index 652f7457f9b2..50f825afdfd6 100644 --- a/website/src/pages/tr/token-api/endpoints/support.mdx +++ b/website/src/pages/tr/token-api/endpoints/support.mdx @@ -21,4 +21,3 @@ import { Check } from '@edgeandnode/gds/icons' | Tron Mainnet | | | ❌ Unsupported | A full list of chain support for The Graph services can be found [here](/supported-networks/). - diff --git a/website/src/pages/uk/token-api/endpoints/_meta.js b/website/src/pages/uk/token-api/endpoints/_meta.js index 33c169163213..c85dabe30711 100644 --- a/website/src/pages/uk/token-api/endpoints/_meta.js +++ b/website/src/pages/uk/token-api/endpoints/_meta.js @@ -1,4 +1,4 @@ export default { - 'pricing': '', - 'support': '', + pricing: '', + support: '', } diff --git a/website/src/pages/uk/token-api/endpoints/support.mdx b/website/src/pages/uk/token-api/endpoints/support.mdx index 652f7457f9b2..50f825afdfd6 100644 --- a/website/src/pages/uk/token-api/endpoints/support.mdx +++ b/website/src/pages/uk/token-api/endpoints/support.mdx @@ -21,4 +21,3 @@ import { Check } from '@edgeandnode/gds/icons' | Tron Mainnet | | | ❌ Unsupported | A full list of chain support for The Graph services can be found [here](/supported-networks/). - diff --git a/website/src/pages/ur/token-api/endpoints/_meta.js b/website/src/pages/ur/token-api/endpoints/_meta.js index 33c169163213..c85dabe30711 100644 --- a/website/src/pages/ur/token-api/endpoints/_meta.js +++ b/website/src/pages/ur/token-api/endpoints/_meta.js @@ -1,4 +1,4 @@ export default { - 'pricing': '', - 'support': '', + pricing: '', + support: '', } diff --git a/website/src/pages/ur/token-api/endpoints/support.mdx b/website/src/pages/ur/token-api/endpoints/support.mdx index 652f7457f9b2..50f825afdfd6 100644 --- a/website/src/pages/ur/token-api/endpoints/support.mdx +++ b/website/src/pages/ur/token-api/endpoints/support.mdx @@ -21,4 +21,3 @@ import { Check } from '@edgeandnode/gds/icons' | Tron Mainnet | | | ❌ Unsupported | A full list of chain support for The Graph services can be found [here](/supported-networks/). - diff --git a/website/src/pages/vi/token-api/endpoints/_meta.js b/website/src/pages/vi/token-api/endpoints/_meta.js index 33c169163213..c85dabe30711 100644 --- a/website/src/pages/vi/token-api/endpoints/_meta.js +++ b/website/src/pages/vi/token-api/endpoints/_meta.js @@ -1,4 +1,4 @@ export default { - 'pricing': '', - 'support': '', + pricing: '', + support: '', } diff --git a/website/src/pages/vi/token-api/endpoints/support.mdx b/website/src/pages/vi/token-api/endpoints/support.mdx index 652f7457f9b2..50f825afdfd6 100644 --- a/website/src/pages/vi/token-api/endpoints/support.mdx +++ b/website/src/pages/vi/token-api/endpoints/support.mdx @@ -21,4 +21,3 @@ import { Check } from '@edgeandnode/gds/icons' | Tron Mainnet | | | ❌ Unsupported | A full list of chain support for The Graph services can be found [here](/supported-networks/). - diff --git a/website/src/pages/zh/token-api/endpoints/_meta.js b/website/src/pages/zh/token-api/endpoints/_meta.js index 33c169163213..c85dabe30711 100644 --- a/website/src/pages/zh/token-api/endpoints/_meta.js +++ b/website/src/pages/zh/token-api/endpoints/_meta.js @@ -1,4 +1,4 @@ export default { - 'pricing': '', - 'support': '', + pricing: '', + support: '', } diff --git a/website/src/pages/zh/token-api/endpoints/support.mdx b/website/src/pages/zh/token-api/endpoints/support.mdx index 652f7457f9b2..50f825afdfd6 100644 --- a/website/src/pages/zh/token-api/endpoints/support.mdx +++ b/website/src/pages/zh/token-api/endpoints/support.mdx @@ -21,4 +21,3 @@ import { Check } from '@edgeandnode/gds/icons' | Tron Mainnet | | | ❌ Unsupported | A full list of chain support for The Graph services can be found [here](/supported-networks/). - From cff112d91e43453e9c4570718130ef45260ae8ce Mon Sep 17 00:00:00 2001 From: benface Date: Sun, 14 Dec 2025 15:04:08 -0500 Subject: [PATCH 14/14] =?UTF-8?q?Replace=20`CodeTabs`=20with=20GDS?= =?UTF-8?q?=E2=80=99s=20`CodeBlock.Tabs`?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- website/src/components/CodeBlock.tsx | 17 +- website/src/components/CodeTabs.tsx | 38 ----- website/src/layout/Layout.tsx | 6 +- .../src/pages/en/token-api/quick-start.mdx | 149 +++++++++--------- 4 files changed, 91 insertions(+), 119 deletions(-) delete mode 100644 website/src/components/CodeTabs.tsx diff --git a/website/src/components/CodeBlock.tsx b/website/src/components/CodeBlock.tsx index 2c3d9183e80b..8b7b21c9c15b 100644 --- a/website/src/components/CodeBlock.tsx +++ b/website/src/components/CodeBlock.tsx @@ -28,10 +28,25 @@ export const CodeBlock = ({ className, children, ...props }: CodeBlockProps) => 1} - className={classNames(['graph-docs-not-markdown --:my-8 --:last:mb-0 -:is-[li>*]:my-4', className])} + className={classNames([ + `graph-docs-not-markdown + --:not-in-group/code-block-tabs:my-8 + --:not-in-group/code-block-tabs:last:mb-0 + -:not-in-group/code-block-tabs:is-[li>*]:my-4`, + className, + ])} {...(props as ComponentProps<'div'>)} > {code} ) } + +export const CodeBlockTabs = ({ className, ...props }: ComponentProps) => { + return ( + *]:my-4', className])} + {...props} + /> + ) +} diff --git a/website/src/components/CodeTabs.tsx b/website/src/components/CodeTabs.tsx deleted file mode 100644 index 6d24f7ce06b6..000000000000 --- a/website/src/components/CodeTabs.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import { Children, isValidElement, useState } from 'react' - -export function CodeTabs({ children, defaultIndex = 0 }: { children: React.ReactNode; defaultIndex?: number }) { - const tabs = Children.toArray(children).filter(isValidElement) - - const [activeIndex, setActiveIndex] = useState(defaultIndex) - - return ( -
- {/* tab labels */} -
- {tabs.map((tab: any, i: number) => { - const label = tab.props.label ?? `Tab ${i + 1}` - return ( - - ) - })} -
- - {/* active tab contents */} -
{tabs[activeIndex]}
-
- ) -} - -export function CodeTab({ children }: { children: React.ReactNode }) { - return
{children}
-} diff --git a/website/src/layout/Layout.tsx b/website/src/layout/Layout.tsx index bfa7572f734d..a1b5311a6ca7 100644 --- a/website/src/layout/Layout.tsx +++ b/website/src/layout/Layout.tsx @@ -56,6 +56,7 @@ import { import { Callout, CodeBlock, + CodeBlockTabs, DocSearch, Heading, Image, @@ -64,7 +65,6 @@ import { Table, VideoEmbed, } from '@/components' -import { CodeTab, CodeTabs } from '@/components/CodeTabs' import { useI18n } from '@/i18n' import { MDXContent } from './MDXContent' @@ -611,12 +611,12 @@ export default function Layout({ pageOpts, children }: NextraThemeLayoutProps {children} diff --git a/website/src/pages/en/token-api/quick-start.mdx b/website/src/pages/en/token-api/quick-start.mdx index 0cf77accddcc..d415adea02bd 100644 --- a/website/src/pages/en/token-api/quick-start.mdx +++ b/website/src/pages/en/token-api/quick-start.mdx @@ -13,87 +13,82 @@ Make sure you already have an account on [The Graph Market](https://thegraph.com Raw API endpoints are authenticated using a header, and the TypeScript Node.js SDK accepts the token as a configuration option. - - - ```shell - curl --request GET \ - --url "https://token-api.thegraph.com/v1/evm/balances?network=mainnet&address=0x2a0c0dbecc7e4d658f48e01e3fa353f44050c208" \ - --header 'Accept: application/json' \ - --header 'Authorization: Bearer YOUR_TOKEN' - ``` - - - ```typescript - import {EVMChains, TokenAPI} from "@pinax/token-api"; - - const client = new TokenAPI({ - apiToken: process.env.TOKEN_API_KEY || "" - }); - - const result = await client.evm.tokens.getBalances({ - network: EVMChains.Ethereum, - address: ['0x2a0c0dbecc7e4d658f48e01e3fa353f44050c208'] - }) - ``` - - - ```python - import requests - - res = requests.get( + + + ```shell + curl --request GET \ + --url "https://token-api.thegraph.com/v1/evm/balances?network=mainnet&address=0x2a0c0dbecc7e4d658f48e01e3fa353f44050c208" \ + --header 'Accept: application/json' \ + --header 'Authorization: Bearer YOUR_TOKEN' + ``` + + ```typescript + import {EVMChains, TokenAPI} from "@pinax/token-api"; + + const client = new TokenAPI({ + apiToken: process.env.TOKEN_API_KEY || "" + }); + + const result = await client.evm.tokens.getBalances({ + network: EVMChains.Ethereum, + address: ['0x2a0c0dbecc7e4d658f48e01e3fa353f44050c208'] + }) + ``` + + ```python + import requests + + res = requests.get( + "https://token-api.thegraph.com/v1/evm/balances?network=mainnet&address=0x2a0c0dbecc7e4d658f48e01e3fa353f44050c208", + headers={"Authorization": "Bearer YOUR_TOKEN"}, + ) + + print(res.json()) + ``` + + ```go + package main + + import ( + "fmt" + "encoding/json" + "net/http" + ) + + func main() { + req, _ := http.NewRequest("GET", "https://token-api.thegraph.com/v1/evm/balances?network=mainnet&address=0x2a0c0dbecc7e4d658f48e01e3fa353f44050c208", - headers={"Authorization": "Bearer YOUR_TOKEN"}, + nil, ) + req.Header.Set("Authorization", "Bearer YOUR_TOKEN") - print(res.json()) - ``` - - - ```go - package main - - import ( - "fmt" - "encoding/json" - "net/http" - ) + res, _ := http.DefaultClient.Do(req) + defer res.Body.Close() + + var data any + json.NewDecoder(res.Body).Decode(&data) + + fmt.Printf("%#v\n", data) + } + ``` + + ```rust + use reqwest::Client; + + #[tokio::main] + async fn main() -> reqwest::Result<()> { + let res = Client::new() + .get("https://token-api.thegraph.com/v1/evm/balances?network=mainnet&address=0x2a0c0dbecc7e4d658f48e01e3fa353f44050c208") + .bearer_auth("YOUR_TOKEN") + .send() + .await?; + + println!("{}", res.text().await?); + Ok(()) + } + ``` - func main() { - req, _ := http.NewRequest("GET", - "https://token-api.thegraph.com/v1/evm/balances?network=mainnet&address=0x2a0c0dbecc7e4d658f48e01e3fa353f44050c208", - nil, - ) - req.Header.Set("Authorization", "Bearer YOUR_TOKEN") - - res, _ := http.DefaultClient.Do(req) - defer res.Body.Close() - - var data any - json.NewDecoder(res.Body).Decode(&data) - - fmt.Printf("%#v\n", data) - } - ``` - - - ```rust - use reqwest::Client; - - #[tokio::main] - async fn main() -> reqwest::Result<()> { - let res = Client::new() - .get("https://token-api.thegraph.com/v1/evm/balances?network=mainnet&address=0x2a0c0dbecc7e4d658f48e01e3fa353f44050c208") - .bearer_auth("YOUR_TOKEN") - .send() - .await?; - - println!("{}", res.text().await?); - Ok(()) - } - ``` - - - + ## What's next?